diff --git a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx index 832c484..8c92dbf 100644 --- a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx +++ b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx @@ -52,41 +52,15 @@ const ListToolbar = () => { const { handleAddDialog } = useManageTransferTypeContext(); const [transferTypes, setTransferTypes] = useState([]); const { GetData } = useCallApi(); - const [statusKind, setStatusKind] = useState(''); - const [searchValue, setSearchValue] = useState(''); - const [statusTypes, setStatusTypes] = useState(''); - const [approval, setApproval] = useState(''); + + const [tempSearchValue, setTempSearchValue] = useState(''); + const [tempStatusTypes, setTempStatusTypes] = useState(''); + const [tempApproval, setTempApproval] = useState(''); + const [tempStatusKind, setTempStatusKind] = useState(''); const unique = (arr: string[]) => Array.from(new Set(arr)); const types = unique(transferTypes.map((t) => t.type)); - const handleKeyDown = (event: React.KeyboardEvent) => { - if (event.key === 'Enter') { -table.getColumn('name')?.setFilterValue(`%${searchValue}%`); - table.setPageIndex(0); - } - }; - - useEffect(() => { - const timer = setTimeout(() => { -table.getColumn('name')?.setFilterValue(`%${searchValue}%`); - table.setPageIndex(0); - }, 200); - return () => clearTimeout(timer); - }, [searchValue, table]); - - useEffect(() => { - table.getColumn('type')?.setFilterValue(statusTypes); - }, [statusTypes, table]); - - useEffect(() => { - table.getColumn('status_approval')?.setFilterValue(approval); - }, [approval, table]); - - useEffect(() => { - table.getColumn('status_kind')?.setFilterValue(statusKind); - }, [statusKind, table]); - const fetchTransferTypes = async () => { try { const response = await GetData(`${API_URL}/transactiontype/list`, { @@ -106,11 +80,21 @@ table.getColumn('name')?.setFilterValue(`%${searchValue}%`); fetchTransferTypes(); }, []); + const handleApplyFilter = () => { + table.getColumn('name')?.setFilterValue(tempSearchValue ? `%${tempSearchValue}%` : ''); + + table.getColumn('type')?.setFilterValue(tempStatusTypes); + table.getColumn('status_approval')?.setFilterValue(tempApproval); + table.getColumn('status_kind')?.setFilterValue(tempStatusKind); + + table.setPageIndex(0); + }; + const handleClearFilter = () => { - setSearchValue(''); - setStatusTypes(''); - setApproval(''); - setStatusKind(''); + setTempSearchValue(''); + setTempStatusTypes(''); + setTempApproval(''); + setTempStatusKind(''); table.getColumn('status_kind')?.setFilterValue(''); table.getColumn('name')?.setFilterValue(''); @@ -123,6 +107,27 @@ table.getColumn('name')?.setFilterValue(`%${searchValue}%`); }, 0); }; + const handleRefreshAndClearFilter = () => { + setTempSearchValue(''); + setTempStatusTypes(''); + setTempApproval(''); + setTempStatusKind(''); + + table.getColumn('name')?.setFilterValue(''); + table.getColumn('type')?.setFilterValue(''); + table.getColumn('status_approval')?.setFilterValue(''); + table.getColumn('status_kind')?.setFilterValue(''); + + table.setPageIndex(0); + reload(); + }; + + const handleKeyDown = (event: React.KeyboardEvent) => { + if (event.key === 'Enter') { + handleApplyFilter(); + } + }; + return (
@@ -135,18 +140,18 @@ table.getColumn('name')?.setFilterValue(`%${searchValue}%`); setSearchValue(e.target.value)} - className="input input-sm w-full pl-9 text-ellipsis overflow-hidden" + value={tempSearchValue} + onChange={(e) => setTempSearchValue(e.target.value)} + className="input input-sm w-full pl-9 text-ellipsis overflow-hidden" onKeyDown={handleKeyDown} />
+