import { Combobox } from '@headlessui/react' import { LanguageIcon } from '@heroicons/react/20/solid' import { CheckIcon, ChevronUpDownIcon } from '@heroicons/react/24/outline' import { useEffect, useState } from 'react' import classNames from '../../utils/classNames' import getSupportedLanguages from '../../utils/getSupportedLanguages' import { entities } from '../../wailsjs/wailsjs/go/models' type Props = { defaultLanguage?: entities.Language, onSelect?: Function styles?: Partial } const LanguageSelect = (props?: Props) => { const [languages, setLanguages] = useState([]) const [selectedLanguage, setSelectedLanguage] = useState(props?.defaultLanguage) const [query, setQuery] = useState('') const filteredLanguages = query !== '' ? languages.filter(l => l.displayName.toLowerCase().includes(query.toLowerCase())) : languages useEffect(() => { if (languages.length === 0) { getSupportedLanguages().then(response => { setLanguages(response) }) } }) useEffect(() => { setSelectedLanguage(props?.defaultLanguage) }, [props?.defaultLanguage]) const handleLanguageChange = (language: entities.Language) => { if (props?.onSelect) props.onSelect(language) setSelectedLanguage(language) } return
setQuery(event.target.value)} displayValue={(language: entities.Language) => language?.displayName} placeholder='Document Language' style={props?.styles} /> {filteredLanguages.length > 0 && ( {filteredLanguages.map((l) => ( classNames( 'relative cursor-default select-none py-2 pl-3 pr-9', active ? 'bg-indigo-600 text-white' : 'text-gray-900' )}> {({ active, selected }) => <> {l.displayName} {selected && ( )} } ))} )}
} export default LanguageSelect