anki/ts/editor/FieldDescription.svelte
2022-11-28 09:17:39 +10:00

53 lines
1.4 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 { directionKey, fontFamilyKey, fontSizeKey } from "@tslib/context-keys";
import { getContext } from "svelte";
import type { Readable } from "svelte/store";
import { context } from "./EditingArea.svelte";
const { content } = context.get();
const fontFamily = getContext<Readable<string>>(fontFamilyKey);
const fontSize = getContext<Readable<number>>(fontSizeKey);
const direction = getContext<Readable<"ltr" | "rtl">>(directionKey);
$: empty = $content.length === 0;
</script>
{#if empty}
<div
class="field-description"
style:font-family={$fontFamily}
style:font-size="{$fontSize}px"
style:direction={$direction}
>
<slot />
</div>
{/if}
<style>
.field-description {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
color: var(--fg-subtle);
pointer-events: none;
/* Stay a on single line */
white-space: nowrap;
text-overflow: ellipsis;
/* The field description is placed absolutely on top of the editor field */
/* So we need to make sure it does not escape the editor field if the */
/* description is too long */
overflow: hidden;
}
</style>