@@ -74,26 +74,15 @@ export function DataTableRouterForm<TData, TValue>({
7474 columnsConfig : filterColumnConfigs ,
7575 options : dtfOptions ,
7676 faceted : dtfFacetedData ,
77- // initialFilters: urlState.filters, // Assuming an initialFilters prop if available for first load
77+ filters : urlState . filters , // Use URL filters as the source of truth
78+ onFiltersChange : ( newFilters ) => {
79+ // Update URL state when filters change
80+ setUrlState ( { filters : newFilters as BazzaFiltersState , page : 0 } ) ;
81+ } ,
7882 } ) ;
7983
80- // Sync Bazza internal filters TO URL
81- useEffect ( ( ) => {
82- // Avoid loop if urlState.filters already matches dtfInternalFilters
83- // Deep comparison might be needed if objects are complex
84- if ( JSON . stringify ( dtfInternalFilters ) !== JSON . stringify ( urlState . filters ) ) {
85- setUrlState ( { filters : dtfInternalFilters as BazzaFiltersState , page : 0 } ) ;
86- }
87- } , [ dtfInternalFilters , urlState . filters , setUrlState ] ) ;
88-
8984 // Sync URL filters TO Bazza internal filters (e.g., on back/forward nav)
90- useEffect ( ( ) => {
91- // Check if an action to set filters exists, e.g., dtfActions.setFiltersState
92- if ( dtfActions . setFiltersState && JSON . stringify ( urlState . filters ) !== JSON . stringify ( dtfInternalFilters ) ) {
93- dtfActions . setFiltersState ( urlState . filters ) ;
94- }
95- // This effect should also handle initial hydration if `initialFilters` prop wasn't used/available
96- } , [ urlState . filters , dtfActions , dtfInternalFilters ] ) ;
85+ // This is now handled by the controlled state pattern with filters and onFiltersChange
9786
9887 // Sync RHF state if urlState changes (e.g., back/forward, external link)
9988 useEffect ( ( ) => {
@@ -167,11 +156,8 @@ export function DataTableRouterForm<TData, TValue>({
167156 } ;
168157
169158 const handleResetFiltersAndSearch = ( ) => {
170- if ( dtfActions . setFiltersState ) {
171- dtfActions . setFiltersState ( [ ] ) ; // Reset Bazza UI filters
172- } else if ( dtfActions . clearAllFilters ) {
173- // Alternative action name
174- dtfActions . clearAllFilters ( ) ;
159+ if ( dtfActions . removeAllFilters ) {
160+ dtfActions . removeAllFilters ( ) ; // Use the action from useDataTableFilters
175161 }
176162 // Then update URL, which will also clear Bazza filters via the effect if setFiltersState was not called
177163 setUrlState ( {
0 commit comments