/* This example requires some changes to your config: ``` // tailwind.config.js module.exports = { // ... plugins: [ // ... require('@tailwindcss/forms'), ], } ``` */ import {useMemo, useState} from 'react' import {CheckIcon, ChevronUpDownIcon} from '@heroicons/react/20/solid' import {Combobox} from '@headlessui/react' import {useQuery} from "@tanstack/react-query"; function classNames(...classes: any[]) { return classes.filter(Boolean).join(' ') } export default function Example() { const {data: options} = useQuery({ queryKey: ['obsidian-metadata'], initialData: [], queryFn: async () => { const response = await fetch("http://100.115.154.44:9002/metadata") const fullData: any[] = await response.json(); return fullData.map(md => ({ id: md.relativePath, name: md.fileName })); }, }); const [query, setQuery] = useState('') const [selectedPerson, setSelectedPerson] = useState(null) const filteredOptions = useMemo(() => { return query === '' ? options : options.filter((option) => { return option.name.toLowerCase().includes(query.toLowerCase()) }) }, [query, options]) return ( Assigned to
setQuery(event.target.value)} displayValue={(person: (typeof filteredOptions)[number]) => person?.name} /> {filteredOptions.length > 0 && ( {filteredOptions.map((person) => ( classNames( 'relative cursor-default select-none py-2 pl-3 pr-9', active ? 'bg-indigo-600 text-white' : 'text-gray-900' ) } > {({ active, selected }) => ( <>
{person.name} {person.id}
{selected && ( )} )}
))}
)}
) }