Skip to content

Commit 822f3a0

Browse files
[pickers] Use new ownerState object in DateTimePickerTabs and DateTimeRangePickerTabs
1 parent 340acbd commit 822f3a0

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerTabs.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
BaseTabsProps,
1212
ExportedBaseTabsProps,
1313
isDatePickerView,
14+
usePickerPrivateContext,
1415
} from '@mui/x-date-pickers/internals';
1516
import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
1617
import IconButton from '@mui/material/IconButton';
@@ -21,6 +22,7 @@ import {
2122
} from './dateTimeRangePickerTabsClasses';
2223
import { UseRangePositionResponse } from '../internals/hooks/useRangePosition';
2324
import { RangePosition } from '../models';
25+
import { PickerOwnerState } from '@mui/x-date-pickers';
2426

2527
type TabValue = 'start-date' | 'start-time' | 'end-date' | 'end-time';
2628

@@ -67,8 +69,7 @@ export interface DateTimeRangePickerTabsProps
6769
BaseTabsProps<DateOrTimeViewWithMeridiem>,
6870
Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {}
6971

70-
const useUtilityClasses = (ownerState: DateTimeRangePickerTabsProps) => {
71-
const { classes } = ownerState;
72+
const useUtilityClasses = (classes: Partial<DateTimeRangePickerTabsClasses> | undefined) => {
7273
const slots = {
7374
root: ['root'],
7475
tabButton: ['tabButton'],
@@ -83,7 +84,7 @@ const DateTimeRangePickerTabsRoot = styled('div', {
8384
name: 'MuiDateTimeRangePickerTabs',
8485
slot: 'Root',
8586
overridesResolver: (_, styles) => styles.root,
86-
})<{ ownerState: DateTimeRangePickerTabsProps }>(({ theme }) => ({
87+
})<{ ownerState: PickerOwnerState }>(({ theme }) => ({
8788
display: 'flex',
8889
justifyContent: 'space-between',
8990
alignItems: 'center',
@@ -120,11 +121,13 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(
120121
rangePosition,
121122
onRangePositionChange,
122123
className,
124+
classes: classesProp,
123125
sx,
124126
} = props;
125127

126128
const translations = usePickerTranslations();
127-
const classes = useUtilityClasses(props);
129+
const { ownerState } = usePickerPrivateContext();
130+
const classes = useUtilityClasses(classesProp);
128131
const value = React.useMemo(() => viewToTab(view, rangePosition), [view, rangePosition]);
129132
const isPreviousHidden = value === 'start-date';
130133
const isNextHidden = value === 'end-time';
@@ -175,7 +178,7 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(
175178

176179
return (
177180
<DateTimeRangePickerTabsRoot
178-
ownerState={props}
181+
ownerState={ownerState}
179182
className={clsx(classes.root, className)}
180183
sx={sx}
181184
>

packages/x-date-pickers/src/DateTimePicker/DateTimePickerTabs.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import {
1515
} from './dateTimePickerTabsClasses';
1616
import { BaseTabsProps, ExportedBaseTabsProps } from '../internals/models/props/tabs';
1717
import { isDatePickerView } from '../internals/utils/date-utils';
18+
import { usePickerPrivateContext } from '../internals/hooks/usePickerPrivateContext';
19+
import { PickerOwnerState } from '../models/pickers';
1820

1921
type TabValue = 'date' | 'time';
2022

@@ -60,8 +62,7 @@ export interface DateTimePickerTabsProps
6062
extends ExportedDateTimePickerTabsProps,
6163
BaseTabsProps<DateOrTimeViewWithMeridiem> {}
6264

63-
const useUtilityClasses = (ownerState: DateTimePickerTabsProps) => {
64-
const { classes } = ownerState;
65+
const useUtilityClasses = (classes: Partial<DateTimePickerTabsClasses> | undefined) => {
6566
const slots = {
6667
root: ['root'],
6768
};
@@ -73,7 +74,7 @@ const DateTimePickerTabsRoot = styled(Tabs, {
7374
name: 'MuiDateTimePickerTabs',
7475
slot: 'Root',
7576
overridesResolver: (_, styles) => styles.root,
76-
})<{ ownerState: DateTimePickerTabsProps }>(({ theme }) => ({
77+
})<{ ownerState: PickerOwnerState }>(({ theme }) => ({
7778
boxShadow: `0 -1px 0 0 inset ${(theme.vars || theme).palette.divider}`,
7879
'&:last-child': {
7980
boxShadow: `0 1px 0 0 inset ${(theme.vars || theme).palette.divider}`,
@@ -103,11 +104,13 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps: DateTimePickerTa
103104
view,
104105
hidden = typeof window === 'undefined' || window.innerHeight < 667,
105106
className,
107+
classes: classesProp,
106108
sx,
107109
} = props;
108110

109111
const translations = usePickerTranslations();
110-
const classes = useUtilityClasses(props);
112+
const { ownerState } = usePickerPrivateContext();
113+
const classes = useUtilityClasses(classesProp);
111114

112115
const handleChange = (event: React.SyntheticEvent, value: TabValue) => {
113116
onViewChange(tabToView(value));
@@ -119,7 +122,7 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps: DateTimePickerTa
119122

120123
return (
121124
<DateTimePickerTabsRoot
122-
ownerState={props}
125+
ownerState={ownerState}
123126
variant="fullWidth"
124127
value={viewToTab(view)}
125128
onChange={handleChange}

0 commit comments

Comments
 (0)