@@ -8,7 +8,11 @@ import {
88 ReactNode ,
99} from 'react' ;
1010import PropTypes from 'prop-types' ;
11- import { useListContext , useResourceContext } from 'ra-core' ;
11+ import {
12+ ListFilterContextValue ,
13+ useListContext ,
14+ useResourceContext ,
15+ } from 'ra-core' ;
1216import { FormProvider , useForm } from 'react-hook-form' ;
1317import classnames from 'classnames' ;
1418import lodashSet from 'lodash/set' ;
@@ -89,20 +93,25 @@ FilterFormBase.propTypes = {
8993
9094const sanitizeRestProps = ( {
9195 displayedFilters,
96+ filterValues,
97+ hideFilter,
98+ setFilters,
9299 resource,
93100 ...props
94101} : Partial < FilterFormProps > ) => props ;
95102
96- export interface FilterFormProps
97- extends Omit < HtmlHTMLAttributes < HTMLFormElement > , 'children' > {
98- className ?: string ;
99- resource ?: string ;
100- displayedFilters : any ;
101- filters : ReactNode [ ] ;
102- initialValues ?: any ;
103- margin ?: 'none' | 'normal' | 'dense' ;
104- variant ?: 'standard' | 'outlined' | 'filled' ;
105- }
103+ export type FilterFormProps = Omit <
104+ HtmlHTMLAttributes < HTMLFormElement > ,
105+ 'children'
106+ > &
107+ Partial < ListFilterContextValue > & {
108+ className ?: string ;
109+ resource ?: string ;
110+ filters : ReactNode [ ] ;
111+ initialValues ?: any ;
112+ margin ?: 'none' | 'normal' | 'dense' ;
113+ variant ?: 'standard' | 'outlined' | 'filled' ;
114+ } ;
106115
107116export const mergeInitialValuesWithDefaultValues = (
108117 initialValues ,
@@ -141,13 +150,18 @@ export const FilterForm = props => {
141150 defaultValues : mergedInitialValuesWithDefaultValues ,
142151 } ) ;
143152
153+ const handleChange = values => {
154+ setFilters ( values , displayedFilters ) ;
155+ } ;
156+
144157 return (
145158 < FormProvider { ...form } >
146159 < FilterFormBase
147- onChange = { ( ) => setFilters ( form . getValues ( ) , displayedFilters ) }
148- onSubmit = { form . handleSubmit ( handleFormSubmit ) }
160+ onChange = { form . handleSubmit ( handleChange ) }
161+ onSubmit = { handleFormSubmit }
149162 filters = { filters }
150163 initialValues = { mergedInitialValuesWithDefaultValues }
164+ { ...props }
151165 />
152166 </ FormProvider >
153167 ) ;
0 commit comments