aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Settings/SettingCheckboxToggle.svelte
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-10-28 15:32:46 -0700
committerFuwn <[email protected]>2024-10-28 15:32:46 -0700
commit39b677404558ae3b7eb34e818d7ca308f62f9cb0 (patch)
tree7f19fca39ecd4237e3c0d1aef2d8e9fa3cec7845 /src/lib/Settings/SettingCheckboxToggle.svelte
parentfeat(graphql): paged badges query (diff)
downloaddue.moe-svelte-5.tar.xz
due.moe-svelte-5.zip
feat: update to svelte 5svelte-5
Diffstat (limited to 'src/lib/Settings/SettingCheckboxToggle.svelte')
-rw-r--r--src/lib/Settings/SettingCheckboxToggle.svelte56
1 files changed, 38 insertions, 18 deletions
diff --git a/src/lib/Settings/SettingCheckboxToggle.svelte b/src/lib/Settings/SettingCheckboxToggle.svelte
index 6a16edec..85dbfcdc 100644
--- a/src/lib/Settings/SettingCheckboxToggle.svelte
+++ b/src/lib/Settings/SettingCheckboxToggle.svelte
@@ -1,4 +1,6 @@
<script lang="ts">
+ import { run } from 'svelte/legacy';
+
import settings, { type Settings } from '$stores/settings';
type BooleanSettingsKeys<T> = {
@@ -6,19 +8,37 @@
};
type SettingsBooleanKeys = BooleanSettingsKeys<Settings>;
- export let sectionBreak = false;
- export let disabled = false;
- export let text: string | (() => string);
- export let setting: SettingsBooleanKeys[keyof SettingsBooleanKeys];
- export let lineBreak = true;
- export let onChange: () => void = () => {
- return;
- };
- export let invert = false;
- export let id: string | null = null;
-
- $: checked = setting ? (invert ? !$settings[setting] : $settings[setting]) : false;
- $: field = text instanceof Function ? text() : text;
+ interface Props {
+ sectionBreak?: boolean;
+ disabled?: boolean;
+ text: string | (() => string);
+ setting: SettingsBooleanKeys[keyof SettingsBooleanKeys];
+ lineBreak?: boolean;
+ onChange?: () => void;
+ invert?: boolean;
+ id?: string | null;
+ children?: import('svelte').Snippet;
+ }
+
+ let {
+ sectionBreak = false,
+ disabled = false,
+ text,
+ setting,
+ lineBreak = true,
+ onChange = () => {
+ return;
+ },
+ invert = false,
+ id = null,
+ children
+ }: Props = $props();
+
+ let checked = $state(false);
+ run(() => {
+ checked = setting ? (invert ? !$settings[setting] : $settings[setting]) : false;
+ });
+ let field = $derived(text instanceof Function ? text() : text);
// const toggler = (key: keyof Settings) => [
// () =>
@@ -53,11 +73,11 @@
};
</script>
-<input type="checkbox" on:change={check} bind:checked {id} />
+<input type="checkbox" onchange={check} bind:checked {id} />
<span
- on:click={flip}
- on:keydown={() => {
+ onclick={flip}
+ onkeydown={() => {
return;
}}
role="button"
@@ -72,12 +92,12 @@
{/if}
</span>
-<slot />
+{@render children?.()}
{#if lineBreak}
<br />
{/if}
{#if sectionBreak}
- <p />
+ <p></p>
{/if}