21 lines
575 B
TypeScript
21 lines
575 B
TypeScript
import {useState, useMemo} from "react";
|
|
import Input from "@/components/Low/Input";
|
|
import {search} from "@/utils/search";
|
|
|
|
export function useListSearch<T>(fields: string[][], rows: T[]) {
|
|
const [text, setText] = useState("");
|
|
|
|
const renderSearch = () => <Input label="Search" type="text" name="search" onChange={setText} placeholder="Enter search text" value={text} />;
|
|
|
|
const updatedRows = useMemo(() => {
|
|
if (text.length > 0) return search(text, fields, rows);
|
|
return rows;
|
|
}, [fields, rows, text]);
|
|
|
|
return {
|
|
text,
|
|
rows: updatedRows,
|
|
renderSearch,
|
|
};
|
|
}
|