-
-
Save yinkakun/47d1ae9828576f07d5c919420bbd2a8d to your computer and use it in GitHub Desktop.
Revisions
-
thejoyfuldev created this gist
Jul 4, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,27 @@ import "./styles.css"; import { Person } from "./types"; import { Listbox } from "./listbox/listbox"; import { useForm } from "react-hook-form"; const people: Person[] = [ { id: 1, name: "Durward Reynolds", unavailable: false }, { id: 2, name: "Kenton Towne", unavailable: false }, { id: 3, name: "Therese Wunsch", unavailable: false }, { id: 4, name: "Benedict Kessler", unavailable: true }, { id: 5, name: "Katelyn Rohan", unavailable: false } ]; export default function App() { const { control } = useForm(); return ( <div className="App"> <Listbox name="people" control={control} rules={{ required: true }} people={people} /> </div> ); } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ import { useController, UseControllerProps } from "react-hook-form"; import { Listbox as ListBox } from "@headlessui/react"; import { Person } from "../types"; type Props = { people: Person[]; }; export const Listbox = (props: Props & UseControllerProps) => { const { field: { value, onChange } } = useController(props); const { people } = props; return ( <> <ListBox value={value} onChange={onChange}> <ListBox.Button> {value ? (value as Person).name : "Select Person"} </ListBox.Button> <ListBox.Options> {people.map((person) => ( <ListBox.Option key={person.id} value={person} disabled={person.unavailable} > {person.name} </ListBox.Option> ))} </ListBox.Options> </ListBox> </> ); }; This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,5 @@ export type Person = { id: number; name: string; unavailable: boolean; };