import preview from "#.storybook/preview"; import { Component, createSignal } from "solid-js"; import { fn } from "storybook/test"; import SlimSelect from "../../src/ts/components/ui/SlimSelect"; const meta = preview.meta({ title: "UI/SlimSelect", component: SlimSelect as Component, parameters: { layout: "centered", }, tags: ["autodocs"], args: { onChange: fn(), }, }); export const Default = meta.story({ render: () => { const [selected, setSelected] = createSignal("banana"); return (
setSelected(val)} />
); }, }); export const WithValues = meta.story({ render: () => { const [selected, setSelected] = createSignal("15"); return (
setSelected(val)} />
); }, }); export const Multiple = meta.story({ render: () => { const [selected, setSelected] = createSignal(["red", "blue"]); return (
setSelected(val)} />
); }, }); export const MultipleWithAll = meta.story({ render: () => { const [selected, setSelected] = createSignal([ "english", "spanish", "french", ]); return (
setSelected(val)} settings={{ addAllOption: true }} />
); }, }); export const TwoWayBinding = meta.story({ render: () => { const options = [ { value: "apple", text: "Apple" }, { value: "banana", text: "Banana" }, { value: "cherry", text: "Cherry" }, { value: "date", text: "Date" }, ]; const [selected, setSelected] = createSignal("banana"); const buttonStyle = (active: boolean) => ({ padding: "4px 12px", cursor: "pointer", "background-color": active ? "var(--main-color)" : "var(--sub-alt-color)", color: active ? "var(--bg-color)" : "var(--text-color)", border: "none", "border-radius": "4px", }); return (
setSelected(val)} />
{options.map((opt) => ( ))}

Selected: {selected() ?? "none"}

); }, }); export const Searchable = meta.story({ render: () => { const [selected, setSelected] = createSignal(undefined); return (
({ value: `option-${i + 1}`, text: `Option ${i + 1}`, }))} selected={selected()} onChange={(val) => setSelected(val)} settings={{ placeholderText: "Search options..." }} />
); }, });