From 9ab5fcf5a1dd3cb89b9e871d83efd79ce212bc72 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Wed, 16 Apr 2025 19:18:28 +0700 Subject: [PATCH] handle debounce on search municipio --- .../master/municipios/blocks/ListToolbar.tsx | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/pages/master/municipios/blocks/ListToolbar.tsx b/src/pages/master/municipios/blocks/ListToolbar.tsx index 140850c..f5f046d 100644 --- a/src/pages/master/municipios/blocks/ListToolbar.tsx +++ b/src/pages/master/municipios/blocks/ListToolbar.tsx @@ -1,7 +1,7 @@ import { DefaultTooltip, KeenIcon, useDataGrid } from '@/components'; import { useManageMunicipiosContext } from '../hooks/useManageMunicipiosContext'; import { Button } from '@/components/ui/button'; -import { useCallback, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { toast } from 'sonner'; const ListToolbar = () => { @@ -9,8 +9,15 @@ const ListToolbar = () => { const { handleAddDialog, handleSearchDialog } = useManageMunicipiosContext(); const [searchName, setSearchName] = useState(''); const [isLoading, setIsLoading] = useState(false); - const [searchValue, setSearchValue] = useState(''); + const [searchValue, setSearchValue] = useState((table.getColumn('name')?.getFilterValue() as string) ?? ''); + useEffect(() => { + const timer = setTimeout(() => { + table.getColumn('name')?.setFilterValue(searchValue); + }, 200); + + return () => clearTimeout(timer); + }, [searchValue, table]); const handleFilterData = useCallback(() => { try { table.getColumn('name')?.setFilterValue(searchName); @@ -20,37 +27,20 @@ const ListToolbar = () => { } }, [searchName, table]); - const handleKeyDown = (event: React.KeyboardEvent) => { - if (event.key === 'Enter') { - handleSearch(); - } - }; - - const handleSearch = () => { - table.getColumn('name')?.setFilterValue(searchValue); - table.setPageIndex(0); - }; - return (
-