pronounscc/frontend/src/lib/components/StatusIcon.svelte

25 lines
849 B
Svelte
Raw Normal View History

2023-03-11 01:36:30 +01:00
<script lang="ts">
import { Icon, Tooltip } from "sveltestrap";
import type { CustomPreference, CustomPreferences } from "$lib/api/entities";
import defaultPreferences from "$lib/api/default_preferences";
2023-03-11 01:36:30 +01:00
export let preferences: CustomPreferences;
export let status: string;
export let className: string | null = null;
2023-03-11 01:36:30 +01:00
let mergedPreferences: CustomPreferences;
$: mergedPreferences = Object.assign(defaultPreferences, preferences);
2023-03-11 01:36:30 +01:00
let currentPreference: CustomPreference;
$: currentPreference =
status in mergedPreferences ? mergedPreferences[status] : defaultPreferences.missing;
2023-03-11 01:36:30 +01:00
let iconElement: HTMLElement;
</script>
<span bind:this={iconElement} tabindex={0}
><Icon name={currentPreference.icon} class={className} /></span
>
<Tooltip target={iconElement} placement="top">{currentPreference.tooltip}</Tooltip>