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 const useListSearch = (fields: string[][], rows: any[]) => { 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); } }) }) }, [fields, rows, text]) return { rows: updatedRows, renderSearch, } }