371f731e30
* Add description input to fields dialog QLineEdit seems like the best option, as it saves space and motivates users to keep their descriptions concise. * Add setDescriptions to note initialization script Went for the extra function instead of including it in setFields to prevent potential add-on breakages. * Add tooltip next to field name if description is set * Refactor code according to suggestions Set default tooltip placement to right instead of bottom Use .get() for fld["description"] Fix tab order in fields dialog Swap out abbreviation "desc" for full length name to keep consistency * Update Protobuf and Rust for description Add description to notetypes.proto and schema11 Co-authored-by: RumovZ <RumovZ@users.noreply.github.com> * Fix tooltips not updating with description Remove redundant variable tooltipOptions Update previousTooltip within reactive function * Move LabelDescription out of LabelName Co-authored-by: Henrik Giesel <hgiesel@users.noreply.github.com> * Decrease icon size and fix alignment Co-Authored-By: Henrik Giesel <hengiesel@gmail.com> * the new key needs to be cleared from fields, not the notetype itself Co-authored-by: RumovZ <RumovZ@users.noreply.github.com> Co-authored-by: Henrik Giesel <hengiesel@gmail.com> Co-authored-by: Damien Elmes <gpg@ankiweb.net>
61 lines
1.6 KiB
Svelte
61 lines
1.6 KiB
Svelte
<!--
|
|
Copyright: Ankitects Pty Ltd and contributors
|
|
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
-->
|
|
<script lang="ts">
|
|
import { onDestroy } from "svelte";
|
|
import Tooltip from "bootstrap/js/dist/tooltip";
|
|
|
|
type TriggerType =
|
|
| "hover focus"
|
|
| "click"
|
|
| "hover"
|
|
| "focus"
|
|
| "manual"
|
|
| "click hover"
|
|
| "click focus"
|
|
| "click hover focus";
|
|
|
|
export let tooltip: string;
|
|
export let trigger: TriggerType = "hover focus";
|
|
|
|
export let placement: "auto" | "top" | "bottom" | "left" | "right" = "top";
|
|
export let html = true;
|
|
export let offset: Tooltip.Offset = [0, 0];
|
|
export let showDelay = 0;
|
|
export let hideDelay = 0;
|
|
|
|
let tooltipObject: Tooltip;
|
|
function createTooltip(element: HTMLElement): void {
|
|
element.title = tooltip;
|
|
tooltipObject = new Tooltip(element, {
|
|
placement,
|
|
html,
|
|
offset,
|
|
delay: { show: showDelay, hide: hideDelay },
|
|
trigger,
|
|
});
|
|
}
|
|
|
|
onDestroy(() => tooltipObject?.dispose());
|
|
|
|
// hack to update field description tooltips
|
|
let previousTooltip: string = tooltip;
|
|
$: if (tooltip !== previousTooltip) {
|
|
previousTooltip = tooltip;
|
|
let element: HTMLElement = tooltipObject["_element"];
|
|
tooltipObject.dispose();
|
|
createTooltip(element);
|
|
}
|
|
</script>
|
|
|
|
<slot {createTooltip} {tooltipObject} />
|
|
|
|
<style lang="scss">
|
|
/* tooltip is inserted under the body tag
|
|
/* long tooltips can cause x-overflow */
|
|
:global(body) {
|
|
overflow-x: hidden;
|
|
}
|
|
</style>
|