aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-10-20 16:37:53 -0700
committerFuwn <[email protected]>2023-10-20 16:37:53 -0700
commit68e3b424c838edb07d59e677bc9debd6d5a32fd4 (patch)
tree810386fa71128dea5f50bdb7673207518117eb3e /src/lib
parentfix(settings): round down chapters hint (diff)
downloaddue.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.svelte54
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}