@@ -8,13 +8,24 @@ import {
88 useChoicesContext ,
99 useInput ,
1010} from 'ra-core' ;
11+ import {
12+ ComponentsOverrides ,
13+ styled ,
14+ useThemeProps ,
15+ } from '@mui/material/styles' ;
16+
1117import { CommonInputProps } from './CommonInputProps' ;
1218import { InputHelperText } from './InputHelperText' ;
1319import { SupportCreateSuggestionOptions } from './useSupportCreateSuggestion' ;
14- import { Datagrid , DatagridProps } from '../list/datagrid' ;
15- import { FilterButton , FilterForm } from '../list/filter' ;
16- import { FilterContext } from '../list/FilterContext' ;
20+ import {
21+ Datagrid ,
22+ DatagridProps ,
23+ FilterButton ,
24+ FilterForm ,
25+ FilterContext ,
26+ } from '../list' ;
1727import { Pagination as DefaultPagination } from '../list/pagination' ;
28+ import { sanitizeInputRestProps } from './sanitizeInputRestProps' ;
1829
1930const defaultPagination = < DefaultPagination /> ;
2031
@@ -49,7 +60,12 @@ const defaultPagination = <DefaultPagination />;
4960 * </Edit>
5061 * );
5162 */
52- export const DatagridInput = ( props : DatagridInputProps ) => {
63+ export const DatagridInput = ( inProps : DatagridInputProps ) => {
64+ const props = useThemeProps ( {
65+ props : inProps ,
66+ name : PREFIX ,
67+ } ) ;
68+
5369 const {
5470 choices,
5571 className,
@@ -121,7 +137,7 @@ export const DatagridInput = (props: DatagridInputProps) => {
121137 ]
122138 ) ;
123139 return (
124- < div className = { clsx ( 'ra-input' , `ra-input-${ source } ` , className ) } >
140+ < Root className = { clsx ( 'ra-input' , `ra-input-${ source } ` , className ) } >
125141 { /* @ts -ignore FIXME cannot find another way to fix this error: "Types of property 'isPending' are incompatible: Type 'boolean' is not assignable to type 'false'." */ }
126142 < ListContextProvider value = { listContext } >
127143 { filters ? (
@@ -145,15 +161,15 @@ export const DatagridInput = (props: DatagridInputProps) => {
145161 ) : null }
146162 { ! fieldState . error && ! fetchError && (
147163 < >
148- < Datagrid { ...rest } />
164+ < Datagrid { ...sanitizeInputRestProps ( rest ) } />
149165 { pagination !== false && pagination }
150166 </ >
151167 ) }
152168 < InputHelperText
153169 error = { fieldState . error ?. message || fetchError ?. message }
154170 />
155171 </ ListContextProvider >
156- </ div >
172+ </ Root >
157173 ) ;
158174} ;
159175
@@ -169,3 +185,29 @@ export type DatagridInputProps = Omit<
169185 filters ?: ReactElement | ReactElement [ ] ;
170186 pagination ?: ReactElement | false ;
171187 } ;
188+
189+ const PREFIX = 'RaDatagridInput' ;
190+
191+ const Root = styled ( 'div' , {
192+ name : PREFIX ,
193+ overridesResolver : ( props , styles ) => styles . root ,
194+ } ) ( { } ) ;
195+
196+ declare module '@mui/material/styles' {
197+ interface ComponentNameToClassKey {
198+ [ PREFIX ] : 'root' ;
199+ }
200+
201+ interface ComponentsPropsList {
202+ [ PREFIX ] : Partial < DatagridInputProps > ;
203+ }
204+
205+ interface Components {
206+ [ PREFIX ] ?: {
207+ defaultProps ?: ComponentsPropsList [ typeof PREFIX ] ;
208+ styleOverrides ?: ComponentsOverrides <
209+ Omit < Theme , 'components' >
210+ > [ typeof PREFIX ] ;
211+ } ;
212+ }
213+ }
0 commit comments