diff options
| author | Fuwn <[email protected]> | 2023-10-20 16:37:53 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-20 16:37:53 -0700 |
| commit | 68e3b424c838edb07d59e677bc9debd6d5a32fd4 (patch) | |
| tree | 810386fa71128dea5f50bdb7673207518117eb3e /src/lib | |
| parent | fix(settings): round down chapters hint (diff) | |
| download | due.moe-68e3b424c838edb07d59e677bc9debd6d5a32fd4.tar.xz due.moe-68e3b424c838edb07d59e677bc9debd6d5a32fd4.zip | |
feat(settings): change to checkbox
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Settings/SettingCheckboxToggle.svelte | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/lib/Settings/SettingCheckboxToggle.svelte b/src/lib/Settings/SettingCheckboxToggle.svelte new file mode 100644 index 00000000..ab603278 --- /dev/null +++ b/src/lib/Settings/SettingCheckboxToggle.svelte @@ -0,0 +1,54 @@ +<script lang="ts"> + import settings, { type Settings } from '../../stores/settings'; + + type BooleanSettingsKeys<T> = { + [K in keyof T]: T[K] extends boolean ? K : never; + }; + type SettingsBooleanKeys = BooleanSettingsKeys<Settings>; + + export let sectionBreak = false; + export let disabled = false; + export let text: string; + export let setting: SettingsBooleanKeys[keyof SettingsBooleanKeys]; + + // const toggler = (key: keyof Settings) => [ + // () => + // settings.update((s) => { + // (s[key] as boolean) = true; + + // $settings = s; + + // return s; + // }), + // () => + // settings.update((s) => { + // (s[key] as boolean) = false; + + // $settings = s; + + // return s; + // }) + // ]; + + const check = (e: Event & { currentTarget: EventTarget & HTMLInputElement }): void => { + settings.setKey(setting, (e.target as HTMLInputElement).checked); + }; +</script> + +<input type="checkbox" on:change={check} bind:checked={$settings[setting]} /> + +{#if disabled} + <strike> + {text} + </strike> + <slot /> +{:else} + {text} + <slot /> +{/if} + +<br /> + +{#if sectionBreak} + <p /> +{/if} |