11import * as React from 'react' ;
22import Typography , { TypographyProps } from '@mui/material/Typography' ;
3+ import {
4+ ComponentsOverrides ,
5+ styled ,
6+ useThemeProps ,
7+ } from '@mui/material/styles' ;
38import { useFieldValue , useTranslate } from 'ra-core' ;
49
510import { sanitizeFieldRestProps } from './sanitizeFieldRestProps' ;
@@ -37,8 +42,13 @@ import { genericMemo } from './genericMemo';
3742const NumberFieldImpl = <
3843 RecordType extends Record < string , any > = Record < string , any > ,
3944> (
40- props : NumberFieldProps < RecordType >
45+ inProps : NumberFieldProps < RecordType >
4146) => {
47+ const props = useThemeProps ( {
48+ props : inProps ,
49+ name : PREFIX ,
50+ } ) ;
51+
4252 const {
4353 className,
4454 emptyText,
@@ -70,7 +80,7 @@ const NumberFieldImpl = <
7080 }
7181
7282 return (
73- < Typography
83+ < StyledTypography
7484 variant = "body2"
7585 component = "span"
7686 className = { className }
@@ -79,7 +89,7 @@ const NumberFieldImpl = <
7989 { hasNumberFormat && typeof value === 'number'
8090 ? value . toLocaleString ( locales , options )
8191 : value }
82- </ Typography >
92+ </ StyledTypography >
8393 ) ;
8494} ;
8595
@@ -107,3 +117,29 @@ const hasNumberFormat = !!(
107117 Intl &&
108118 typeof Intl . NumberFormat === 'function'
109119) ;
120+
121+ const PREFIX = 'RaNumberField' ;
122+
123+ const StyledTypography = styled ( Typography , {
124+ name : PREFIX ,
125+ overridesResolver : ( props , styles ) => styles . root ,
126+ } ) ( { } ) ;
127+
128+ declare module '@mui/material/styles' {
129+ interface ComponentNameToClassKey {
130+ [ PREFIX ] : 'root' ;
131+ }
132+
133+ interface ComponentsPropsList {
134+ [ PREFIX ] : Partial < NumberFieldProps > ;
135+ }
136+
137+ interface Components {
138+ [ PREFIX ] ?: {
139+ defaultProps ?: ComponentsPropsList [ typeof PREFIX ] ;
140+ styleOverrides ?: ComponentsOverrides <
141+ Omit < Theme , 'components' >
142+ > [ typeof PREFIX ] ;
143+ } ;
144+ }
145+ }
0 commit comments