import {useState, useMemo} from "react"; import Input from "@/components/Low/Input"; /*fields example = [ ['id'], ['companyInformation', 'companyInformation', 'name'] ]*/ const getFieldValue = (fields: string[], data: any): string => { if (fields.length === 0) return data; const [key, ...otherFields] = fields; if (data[key]) return getFieldValue(otherFields, data[key]); return data; }; export function useListSearch(fields: string[][], rows: T[]) { const [text, setText] = useState(""); const renderSearch = () => ; const updatedRows = useMemo(() => { const searchText = text.toLowerCase(); return rows.filter((row) => { return fields.some((fieldsKeys) => { const value = getFieldValue(fieldsKeys, row); if (typeof value === "string") { return value.toLowerCase().includes(searchText); } if (typeof value === "number") { return (value as Number).toString().includes(searchText); } }); }); }, [fields, rows, text]); return { rows: updatedRows, renderSearch, }; }