import { Meta, ReactRenderer } from "@storybook/react-vite"; import { useState } from "react"; import { NotificationsProvider } from "../notification"; import { Button } from "../button"; import { SimpleAutocomplete } from "./SimpleAutocomplete"; import { Autocomplete } from "./Autocomplete"; import { LazyAutocomplete } from "./LazyAutocomplete"; import { Option } from "../select-legacy"; import { PartialStoryFn } from "storybook/internal/types"; import { handleChangeSearchValue, options } from "./_fixtures"; const meta = { title: "Components/Autocomplete", component: Autocomplete, decorators: [ (Story) => ( ), ] as ((story: PartialStoryFn) => React.JSX.Element)[], } satisfies Meta; export default meta; export const Simple = () => { const [selection, setSelection] = useState(null); const [readOnly, setReadOnly] = useState(false); function handleClick(action: "random" | "unknown" | "unselect") { switch (action) { case "random": setSelection(options[Math.floor(Math.random() * options.length)]); break; case "unknown": setSelection({ value: "unknown", label: "Unknown", }); break; case "unselect": setSelection(null); break; } } return ( <> sélection : {selection && selection.label} handleClick("random")}>select random handleClick("unknown")}>select Unknown handleClick("unselect")}>unselect setReadOnly((r) => !r)}>toggle readonly > ); }; export const Lazy = () => { const [selection, setSelection] = useState(null); const [readOnly, setReadOnly] = useState(false); function handleClick(action: "random" | "unknown" | "unselect") { switch (action) { case "unknown": setSelection({ value: "unknown", label: "Unknown", }); break; case "unselect": setSelection(null); break; } } return ( <> autoFocus={true} clearSearchButton={true} icon={true} selection={selection} debounce={500} readOnly={readOnly} onChangeSelection={setSelection} onChangeSearchValueCallback={handleChangeSearchValue} /> sélection : {selection && selection.label} handleClick("unknown")} className="mr-2"> select Unknown handleClick("unselect")}>unselect setReadOnly((r) => !r)}>toggle readonly > ); };