mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
Implement WithTooltip
This commit is contained in:
parent
11c5476ae3
commit
67e0b67d17
7 changed files with 92 additions and 16 deletions
|
@ -6,7 +6,8 @@
|
||||||
import marked from "marked";
|
import marked from "marked";
|
||||||
import Row from "./Row.svelte";
|
import Row from "./Row.svelte";
|
||||||
import Col from "./Col.svelte";
|
import Col from "./Col.svelte";
|
||||||
import HelpPopup from "./HelpPopup.svelte";
|
import WithTooltip from "./WithTooltip.svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
import CheckBox from "./CheckBox.svelte";
|
import CheckBox from "./CheckBox.svelte";
|
||||||
import RevertButton from "./RevertButton.svelte";
|
import RevertButton from "./RevertButton.svelte";
|
||||||
|
|
||||||
|
@ -18,13 +19,15 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Col>
|
<Col>
|
||||||
<CheckBox bind:value
|
<CheckBox bind:value
|
||||||
><span
|
>{#if markdownTooltip}<WithTooltip
|
||||||
><slot />
|
tooltip={marked(markdownTooltip)}
|
||||||
{#if markdownTooltip}<HelpPopup
|
let:createTooltip
|
||||||
html={marked(markdownTooltip)}
|
>
|
||||||
/>{/if}</span
|
<Label on:mount={(event) => createTooltip(event.detail.span)}
|
||||||
></CheckBox
|
><slot /></Label
|
||||||
>
|
>
|
||||||
|
</WithTooltip>{:else}<Label><slot /></Label>{/if}
|
||||||
|
</CheckBox>
|
||||||
</Col>
|
</Col>
|
||||||
<Col grow={false}>
|
<Col grow={false}>
|
||||||
<RevertButton bind:value {defaultValue} />
|
<RevertButton bind:value {defaultValue} />
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
import marked from "marked";
|
import marked from "marked";
|
||||||
import Row from "./Row.svelte";
|
import Row from "./Row.svelte";
|
||||||
import Col from "./Col.svelte";
|
import Col from "./Col.svelte";
|
||||||
import HelpPopup from "./HelpPopup.svelte";
|
import WithTooltip from "./WithTooltip.svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
import EnumSelector from "./EnumSelector.svelte";
|
import EnumSelector from "./EnumSelector.svelte";
|
||||||
import RevertButton from "./RevertButton.svelte";
|
import RevertButton from "./RevertButton.svelte";
|
||||||
|
|
||||||
|
@ -21,7 +22,11 @@
|
||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col size={7}>
|
<Col size={7}>
|
||||||
<span><slot /><HelpPopup html={marked(markdownTooltip)} /></span>
|
<WithTooltip tooltip={marked(markdownTooltip)} let:createTooltip>
|
||||||
|
<Label on:mount={(event) => createTooltip(event.detail.span)}
|
||||||
|
><slot /></Label
|
||||||
|
>
|
||||||
|
</WithTooltip>
|
||||||
</Col>
|
</Col>
|
||||||
<Col {breakpoint} size={5}>
|
<Col {breakpoint} size={5}>
|
||||||
<EnumSelector bind:value {choices} />
|
<EnumSelector bind:value {choices} />
|
||||||
|
|
17
ts/deckoptions/Label.svelte
Normal file
17
ts/deckoptions/Label.svelte
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<!--
|
||||||
|
Copyright: Ankitects Pty Ltd and contributors
|
||||||
|
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
-->
|
||||||
|
<script lang="ts">
|
||||||
|
import { onMount, createEventDispatcher } from "svelte";
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
let spanRef: HTMLSpanElement;
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
dispatch("mount", { span: spanRef });
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<span bind:this={spanRef}><slot /></span>
|
|
@ -6,7 +6,8 @@
|
||||||
import marked from "marked";
|
import marked from "marked";
|
||||||
import Row from "./Row.svelte";
|
import Row from "./Row.svelte";
|
||||||
import Col from "./Col.svelte";
|
import Col from "./Col.svelte";
|
||||||
import HelpPopup from "./HelpPopup.svelte";
|
import WithTooltip from "./WithTooltip.svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
import SpinBoxFloat from "./SpinBoxFloat.svelte";
|
import SpinBoxFloat from "./SpinBoxFloat.svelte";
|
||||||
import RevertButton from "./RevertButton.svelte";
|
import RevertButton from "./RevertButton.svelte";
|
||||||
|
|
||||||
|
@ -19,7 +20,11 @@
|
||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col size={7}>
|
<Col size={7}>
|
||||||
<span><slot /><HelpPopup html={marked(markdownTooltip)} /></span>
|
<WithTooltip tooltip={marked(markdownTooltip)} let:createTooltip>
|
||||||
|
<Label on:mount={(event) => createTooltip(event.detail.span)}
|
||||||
|
><slot /></Label
|
||||||
|
>
|
||||||
|
</WithTooltip>
|
||||||
</Col>
|
</Col>
|
||||||
<Col size={5}>
|
<Col size={5}>
|
||||||
<SpinBoxFloat bind:value {min} {max} />
|
<SpinBoxFloat bind:value {min} {max} />
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
import marked from "marked";
|
import marked from "marked";
|
||||||
import Row from "./Row.svelte";
|
import Row from "./Row.svelte";
|
||||||
import Col from "./Col.svelte";
|
import Col from "./Col.svelte";
|
||||||
import HelpPopup from "./HelpPopup.svelte";
|
/* import HelpPopup from "./HelpPopup.svelte"; */
|
||||||
|
import WithTooltip from "./WithTooltip.svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
import SpinBox from "./SpinBox.svelte";
|
import SpinBox from "./SpinBox.svelte";
|
||||||
import RevertButton from "./RevertButton.svelte";
|
import RevertButton from "./RevertButton.svelte";
|
||||||
|
|
||||||
|
@ -19,7 +21,11 @@
|
||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col size={7}>
|
<Col size={7}>
|
||||||
<span><slot /><HelpPopup html={marked(markdownTooltip)} /></span>
|
<WithTooltip tooltip={marked(markdownTooltip)} let:createTooltip>
|
||||||
|
<Label on:mount={(event) => createTooltip(event.detail.span)}
|
||||||
|
><slot /></Label
|
||||||
|
>
|
||||||
|
</WithTooltip>
|
||||||
</Col>
|
</Col>
|
||||||
<Col size={5}>
|
<Col size={5}>
|
||||||
<SpinBox bind:value {min} {max} />
|
<SpinBox bind:value {min} {max} />
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
import marked from "marked";
|
import marked from "marked";
|
||||||
import Row from "./Row.svelte";
|
import Row from "./Row.svelte";
|
||||||
import Col from "./Col.svelte";
|
import Col from "./Col.svelte";
|
||||||
import HelpPopup from "./HelpPopup.svelte";
|
import WithTooltip from "./WithTooltip.svelte";
|
||||||
|
import Label from "./Label.svelte";
|
||||||
import StepsInput from "./StepsInput.svelte";
|
import StepsInput from "./StepsInput.svelte";
|
||||||
import RevertButton from "./RevertButton.svelte";
|
import RevertButton from "./RevertButton.svelte";
|
||||||
|
|
||||||
|
@ -17,7 +18,11 @@
|
||||||
|
|
||||||
<Row>
|
<Row>
|
||||||
<Col size={7}>
|
<Col size={7}>
|
||||||
<span><slot /><HelpPopup html={marked(markdownTooltip)} /></span>
|
<WithTooltip tooltip={marked(markdownTooltip)} let:createTooltip>
|
||||||
|
<Label on:mount={(event) => createTooltip(event.detail.span)}
|
||||||
|
><slot /></Label
|
||||||
|
>
|
||||||
|
</WithTooltip>
|
||||||
</Col>
|
</Col>
|
||||||
<Col size={5}>
|
<Col size={5}>
|
||||||
<StepsInput bind:value />
|
<StepsInput bind:value />
|
||||||
|
|
35
ts/deckoptions/WithTooltip.svelte
Normal file
35
ts/deckoptions/WithTooltip.svelte
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
<!--
|
||||||
|
Copyright: Ankitects Pty Ltd and contributors
|
||||||
|
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
-->
|
||||||
|
<script lang="ts">
|
||||||
|
import { getContext } from "svelte";
|
||||||
|
import { nightModeKey } from "components/contextKeys";
|
||||||
|
import Tooltip from "bootstrap/js/dist/tooltip";
|
||||||
|
|
||||||
|
export let tooltip: string;
|
||||||
|
|
||||||
|
function createTooltip(element: HTMLElement): void {
|
||||||
|
element.title = tooltip;
|
||||||
|
new Tooltip(element, {
|
||||||
|
placement: "bottom",
|
||||||
|
html: true,
|
||||||
|
offset: [0, 20],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const nightMode = getContext<boolean>(nightModeKey);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<span class:night-mode={nightMode}><slot {createTooltip} /></span>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
span {
|
||||||
|
text-decoration: underline dashed;
|
||||||
|
text-decoration-color: rgba(0 0 0 / 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.night-mode {
|
||||||
|
text-decoration-color: rgba(255 255 255 / 0.5);
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in a new issue