Files
svelte-headlessui/src/lib/components/switch/SwitchGroup.svelte
Ryan Gossiaux db9ec57065 Initial commit with files
Still need to fix the imports
2021-12-13 17:13:47 -08:00

36 lines
980 B
Svelte

<script lang="ts" context="module">
export interface StateDefinition {
switchStore: Writable<HTMLButtonElement | null>;
}
</script>
<script lang="ts">
import DescriptionProvider from "./DescriptionProvider.svelte";
import LabelProvider from "./LabelProvider.svelte";
import { setContext } from "svelte";
import { Writable, writable } from "svelte/store";
let switchStore: Writable<HTMLButtonElement | null> = writable(null);
let api: Writable<StateDefinition | undefined> = writable();
setContext("SwitchApi", api);
function onClick() {
if (!$switchStore) return;
$switchStore.click();
$switchStore.focus({ preventScroll: true });
}
$: api.set({
switchStore,
});
</script>
<div {...$$restProps}>
<DescriptionProvider name="Switch.Description">
<LabelProvider name="Switch.Label" {onClick}>
<slot />
</LabelProvider>
</DescriptionProvider>
</div>