@@ -8,12 +8,22 @@ 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' ;
1828
1929const defaultPagination = < DefaultPagination /> ;
@@ -49,7 +59,12 @@ const defaultPagination = <DefaultPagination />;
4959 * </Edit>
5060 * );
5161 */
52- export const DatagridInput = ( props : DatagridInputProps ) => {
62+ export const DatagridInput = ( inProps : DatagridInputProps ) => {
63+ const props = useThemeProps ( {
64+ props : inProps ,
65+ name : PREFIX ,
66+ } ) ;
67+
5368 const {
5469 choices,
5570 className,
@@ -121,7 +136,7 @@ export const DatagridInput = (props: DatagridInputProps) => {
121136 ]
122137 ) ;
123138 return (
124- < div className = { clsx ( 'ra-input' , `ra-input-${ source } ` , className ) } >
139+ < Root className = { clsx ( 'ra-input' , `ra-input-${ source } ` , className ) } >
125140 { /* @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'." */ }
126141 < ListContextProvider value = { listContext } >
127142 { filters ? (
@@ -153,7 +168,7 @@ export const DatagridInput = (props: DatagridInputProps) => {
153168 error = { fieldState . error ?. message || fetchError ?. message }
154169 />
155170 </ ListContextProvider >
156- </ div >
171+ </ Root >
157172 ) ;
158173} ;
159174
@@ -169,3 +184,29 @@ export type DatagridInputProps = Omit<
169184 filters ?: ReactElement | ReactElement [ ] ;
170185 pagination ?: ReactElement | false ;
171186 } ;
187+
188+ const PREFIX = 'RaDatagridInput' ;
189+
190+ const Root = styled ( 'div' , {
191+ name : PREFIX ,
192+ overridesResolver : ( props , styles ) => styles . root ,
193+ } ) ( { } ) ;
194+
195+ declare module '@mui/material/styles' {
196+ interface ComponentNameToClassKey {
197+ [ PREFIX ] : 'root' ;
198+ }
199+
200+ interface ComponentsPropsList {
201+ [ PREFIX ] : Partial < DatagridInputProps > ;
202+ }
203+
204+ interface Components {
205+ [ PREFIX ] ?: {
206+ defaultProps ?: ComponentsPropsList [ typeof PREFIX ] ;
207+ styleOverrides ?: ComponentsOverrides <
208+ Omit < Theme , 'components' >
209+ > [ typeof PREFIX ] ;
210+ } ;
211+ }
212+ }
0 commit comments