Skip to content

Commit be7823b

Browse files
[DateRangePicker] Migrate PickersToolbarText to emotion (#25983)
* migrate to emotion * replace as with component * run prettier * fix types * add sx props * minor adjustment * move classes to component file * revert useThemeProps and use generic instead * move function to the top * sort asc * help to not forget * default props are private * no need for sx prop on none exported components * use generic for component prop * follow convention * simplify for internal component Co-authored-by: Olivier Tassinari <[email protected]>
1 parent a211e10 commit be7823b

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed
Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,43 @@
11
import * as React from 'react';
22
import clsx from 'clsx';
33
import Typography, { TypographyProps } from '@material-ui/core/Typography';
4-
import { MuiStyles, StyleRules, WithStyles, withStyles } from '@material-ui/core/styles';
5-
import { ExtendMui } from './typings/helpers';
4+
import { experimentalStyled } from '@material-ui/core/styles';
5+
import { generateUtilityClasses } from '@material-ui/unstyled';
66

7-
export interface PickersToolbarTextProps extends ExtendMui<TypographyProps> {
7+
export interface PickersToolbarTextProps extends Omit<TypographyProps, 'classes'> {
88
selected?: boolean;
99
value: React.ReactNode;
1010
}
1111

12-
export type PickersToolbarTextClassKey = 'root' | 'selected';
13-
export const styles: MuiStyles<PickersToolbarTextClassKey> = (
14-
theme,
15-
): StyleRules<PickersToolbarTextClassKey> => {
16-
return {
17-
root: {
18-
transition: theme.transitions.create('color'),
19-
color: theme.palette.text.secondary,
20-
'&$selected': {
21-
color: theme.palette.text.primary,
22-
},
23-
},
24-
selected: {},
25-
};
26-
};
12+
const classes = generateUtilityClasses('PrivatePickersToolbarText', ['selected']);
2713

28-
const PickersToolbarText: React.FC<PickersToolbarTextProps & WithStyles<typeof styles>> = (
29-
props,
30-
) => {
31-
const { className, classes, selected, value, ...other } = props;
14+
const PickersToolbarTextRoot = experimentalStyled(
15+
Typography,
16+
{},
17+
{ skipSx: true },
18+
)<{ component?: React.ElementType }>(({ theme }) => ({
19+
transition: theme.transitions.create('color'),
20+
color: theme.palette.text.secondary,
21+
[`&.${classes.selected}`]: {
22+
color: theme.palette.text.primary,
23+
},
24+
}));
3225

33-
return (
34-
<Typography
35-
className={clsx(classes.root, className, {
36-
[classes.selected]: selected,
37-
})}
38-
component="span"
39-
{...other}
40-
>
41-
{value}
42-
</Typography>
43-
);
44-
};
26+
const PickersToolbarText = React.forwardRef<HTMLSpanElement, PickersToolbarTextProps>(
27+
function PickersToolbarText(props, ref) {
28+
const { className, selected, value, ...other } = props;
4529

46-
export default withStyles(styles, { name: 'PrivatePickersToolbarText' })(PickersToolbarText);
30+
return (
31+
<PickersToolbarTextRoot
32+
ref={ref}
33+
className={clsx({ [classes.selected]: selected }, className)}
34+
component="span"
35+
{...other}
36+
>
37+
{value}
38+
</PickersToolbarTextRoot>
39+
);
40+
},
41+
);
42+
43+
export default PickersToolbarText;

0 commit comments

Comments
 (0)