feat: allow disabling setting buttons

This commit is contained in:
Youwen Wu 2024-02-24 17:54:02 -08:00
parent cfdb9094ce
commit 28a4590b86
3 changed files with 15 additions and 6 deletions

View file

@ -4,6 +4,7 @@
@param setting - The setting to be toggled
@param inverted? - If false, the toggle syncs to the setting (toggle = on, setting = true). If true, the toggle syncs to the setting's inverse (toggle = off, setting = true).
@param tooltip - Helpful tooltip for the setting
@param disabled - Whether or not the setting is disabled
@children The setting's label
-->
@ -16,6 +17,7 @@
export let setting: keyof SettingsStoreData
export let inverted: boolean = false
export let tooltip: string = ''
export let disabled: boolean = false
$: value = inverted ? !$settingsStore[setting] : $settingsStore[setting]
@ -24,4 +26,6 @@
}
</script>
<Switch bind:checked={value} on:click={handleClick} {tooltip}><slot /></Switch>
<Switch {disabled} bind:checked={value} on:click={handleClick} {tooltip}
><slot /></Switch
>

View file

@ -3,14 +3,19 @@
export let checked: boolean
export let tooltip: string
export let disabled: boolean = false
</script>
<div class="flex gap-2">
<div
class="flex gap-2"
class:brightness-75={disabled}
class:cursor-not-allowed={disabled}
>
<label class="switch">
<input type="checkbox" bind:checked on:click />
<input type="checkbox" bind:checked on:click {disabled} />
<span class="slider" />
</label>
{#if tooltip !== ''}
{#if tooltip !== '' && !disabled}
<Tooltip content={tooltip} arrow={false}>
<span class="flex-grow text-xl text-slate-100 font-medium"
><slot />

View file

@ -14,7 +14,7 @@
{#if visible}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103 124">
<g out:fade={{ duration: 200 }} opacity="0.3">
<g out:fade={{ duration: 200 }} opacity="0.35">
<path
in:expand={{ duration: 400, delay: 1000, easing: quintOut }}
style="stroke: #ff3e00; fill: #ff3e00; stroke-width: 50;"
@ -22,7 +22,7 @@
/>
<path
in:draw={{ duration: 1000 }}
style="stroke:#ff3e00; stroke-width: 1.5"
style="stroke:#ff3e00; stroke-width: 1.75"
d={inner}
/>
</g>