import React, { Fragment, useState } from "react"; import { Combobox, Transition } from "@headlessui/react"; import { debounce } from "@/utils/utils"; const SmartSearch = ({ selectedData, setSelectedData, data, field, field2, errorField, getData, setError, type, multiple = false }) => { const [query, setQuery] = useState(""); return ( { setSelectedData(item); setError(errorField, { type: "manual", message: null }); }} disabled={type ? true : false} multiple={multiple} >
!field2 ? multiple ? item.map((it) => it[field]).join(",") : item[field] : item !== undefined && item[field] !== "" ? multiple ? item.map((it) => `${item[field]} - ${item[field2]}`) : `${item[field]} - ${item[field2]}` : "" } onChange={(event) => { setQuery(event.target.value); let searchValue = event.target.value; if (multiple) { let splitResult = searchValue.split(","); let index = splitResult.length > 1 ? splitResult.length - 1 : 0; searchValue = splitResult[index]; } debounce(() => getData(1, 10, { [field]: searchValue.trim() })); if (event.target.value === "") { const emptyParam = { [field]: "" }; if (field2) { emptyParam[field2] = ""; } setSelectedData(multiple ? [] : { ...emptyParam }); } }} />
setQuery("")} > {data && data.length === 0 && query !== "" ? (
Nothing found.
) : ( data && data.map((item) => ( `relative normal-case cursor-default select-none py-2 pl-10 pr-4 ${active ? "bg-teal-600 text-white" : "text-gray-900"}`} value={item} > {({ selected }) => ( <> {!field2 ? item[field] : `${item[field]} - ${item[field2]}`} )} )) )}
); }; export default SmartSearch;