@mui/x-date-pickers 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/DatePicker/DatePickerToolbar.js +11 -6
  3. package/DateTimePicker/DateTimePickerToolbar.js +97 -45
  4. package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  5. package/DigitalClock/DigitalClock.js +14 -6
  6. package/MonthCalendar/PickersMonth.js +12 -6
  7. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  8. package/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  9. package/PickersDay/PickersDay.js +30 -15
  10. package/PickersLayout/PickersLayout.js +31 -17
  11. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  12. package/PickersTextField/PickersInput/PickersInput.js +76 -54
  13. package/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  14. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
  15. package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  16. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  17. package/TimeClock/Clock.js +48 -35
  18. package/TimeClock/ClockNumber.js +12 -7
  19. package/TimeClock/ClockPointer.js +23 -13
  20. package/TimePicker/TimePickerToolbar.js +25 -16
  21. package/YearCalendar/PickersYear.js +12 -6
  22. package/index.js +1 -1
  23. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  24. package/internals/components/PickersPopper.js +12 -8
  25. package/internals/components/PickersToolbar.js +39 -18
  26. package/internals/hooks/useField/useField.js +4 -2
  27. package/internals/hooks/useField/useField.types.d.ts +1 -0
  28. package/internals/hooks/useField/useFieldV6TextField.js +8 -3
  29. package/locales/itIT.js +16 -20
  30. package/locales/zhHK.js +14 -17
  31. package/modern/DatePicker/DatePickerToolbar.js +11 -6
  32. package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
  33. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  34. package/modern/DigitalClock/DigitalClock.js +14 -6
  35. package/modern/MonthCalendar/PickersMonth.js +12 -6
  36. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  37. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  38. package/modern/PickersDay/PickersDay.js +30 -15
  39. package/modern/PickersLayout/PickersLayout.js +31 -17
  40. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  41. package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
  42. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  43. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  44. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  45. package/modern/TimeClock/Clock.js +48 -35
  46. package/modern/TimeClock/ClockNumber.js +12 -7
  47. package/modern/TimeClock/ClockPointer.js +23 -13
  48. package/modern/TimePicker/TimePickerToolbar.js +25 -16
  49. package/modern/YearCalendar/PickersYear.js +12 -6
  50. package/modern/index.js +1 -1
  51. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  52. package/modern/internals/components/PickersPopper.js +12 -8
  53. package/modern/internals/components/PickersToolbar.js +39 -18
  54. package/modern/internals/hooks/useField/useField.js +4 -2
  55. package/modern/internals/hooks/useField/useFieldV6TextField.js +8 -3
  56. package/modern/locales/itIT.js +16 -20
  57. package/modern/locales/zhHK.js +14 -17
  58. package/node/DatePicker/DatePickerToolbar.js +11 -6
  59. package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
  60. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  61. package/node/DigitalClock/DigitalClock.js +14 -6
  62. package/node/MonthCalendar/PickersMonth.js +12 -6
  63. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  64. package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  65. package/node/PickersDay/PickersDay.js +30 -15
  66. package/node/PickersLayout/PickersLayout.js +31 -17
  67. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  68. package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
  69. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  70. package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  71. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  72. package/node/TimeClock/Clock.js +48 -35
  73. package/node/TimeClock/ClockNumber.js +12 -7
  74. package/node/TimeClock/ClockPointer.js +23 -13
  75. package/node/TimePicker/TimePickerToolbar.js +25 -16
  76. package/node/YearCalendar/PickersYear.js +12 -6
  77. package/node/index.js +1 -1
  78. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  79. package/node/internals/components/PickersPopper.js +12 -8
  80. package/node/internals/components/PickersToolbar.js +39 -18
  81. package/node/internals/hooks/useField/useField.js +4 -2
  82. package/node/internals/hooks/useField/useFieldV6TextField.js +8 -3
  83. package/node/locales/itIT.js +16 -20
  84. package/node/locales/zhHK.js +14 -17
  85. package/package.json +1 -1
@@ -202,9 +202,11 @@ export const useField = params => {
202
202
  event.preventDefault();
203
203
  onClear?.(event, ...args);
204
204
  clearValue();
205
- setSelectedSections(sectionOrder.startIndex);
206
- if (!interactions.isFieldFocused) {
205
+ if (!interactions.isFieldFocused()) {
206
+ // setSelectedSections is called internally
207
207
  interactions.focusField(0);
208
+ } else {
209
+ setSelectedSections(sectionOrder.startIndex);
208
210
  }
209
211
  });
210
212
  const commonForwardedProps = {
@@ -124,6 +124,7 @@ export interface UseFieldV6ForwardedProps {
124
124
  onClick?: React.MouseEventHandler;
125
125
  onFocus?: () => void;
126
126
  onPaste?: React.ClipboardEventHandler<HTMLDivElement>;
127
+ placeholder?: string;
127
128
  }
128
129
  interface UseFieldV6AdditionalProps extends Required<Pick<React.InputHTMLAttributes<HTMLInputElement>, 'inputMode' | 'placeholder' | 'value' | 'onChange' | 'autoComplete'>> {
129
130
  enableAccessibleFieldDOMStructure: false;
@@ -43,7 +43,8 @@ export const useFieldV6TextField = params => {
43
43
  onClick,
44
44
  onPaste,
45
45
  onBlur,
46
- inputRef: inputRefProp
46
+ inputRef: inputRefProp,
47
+ placeholder: inPlaceholder
47
48
  },
48
49
  internalProps: {
49
50
  readOnly = false
@@ -127,7 +128,6 @@ export const useFieldV6TextField = params => {
127
128
  }), [inputRef, parsedSelectedSections, sections, setSelectedSections]);
128
129
  const syncSelectionFromDOM = () => {
129
130
  if (readOnly) {
130
- setSelectedSections(null);
131
131
  return;
132
132
  }
133
133
  const browserStartIndex = inputRef.current.selectionStart ?? 0;
@@ -275,7 +275,12 @@ export const useFieldV6TextField = params => {
275
275
  sectionIndex: activeSectionIndex
276
276
  });
277
277
  });
278
- const placeholder = React.useMemo(() => fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL), [fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRTL]);
278
+ const placeholder = React.useMemo(() => {
279
+ if (inPlaceholder) {
280
+ return inPlaceholder;
281
+ }
282
+ return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL);
283
+ }, [inPlaceholder, fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRTL]);
279
284
  const valueStr = React.useMemo(() => state.tempValueStrAndroid ?? fieldValueManager.getV6InputValueFromSections(state.sections, localizedDigits, isRTL), [state.sections, fieldValueManager, state.tempValueStrAndroid, localizedDigits, isRTL]);
280
285
  React.useEffect(() => {
281
286
  // Select all the sections when focused on mount (`autoFocus = true` on the input)
package/locales/itIT.js CHANGED
@@ -16,11 +16,10 @@ const itITPickers = {
16
16
  // DateRange labels
17
17
  start: 'Inizio',
18
18
  end: 'Fine',
19
- // startDate: 'Start date',
20
- // startTime: 'Start time',
21
- // endDate: 'End date',
22
- // endTime: 'End time',
23
-
19
+ startDate: 'Data di inizio',
20
+ startTime: 'Ora di inizio',
21
+ endDate: 'Data di fine',
22
+ endTime: 'Ora di fine',
24
23
  // Action bar
25
24
  cancelButtonLabel: 'Cancellare',
26
25
  clearButtonLabel: 'Sgomberare',
@@ -46,8 +45,7 @@ const itITPickers = {
46
45
  // Open picker labels
47
46
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli la data, la data selezionata è ${utils.format(value, 'fullDate')}` : 'Scegli la data',
48
47
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli l'ora, l'ora selezionata è ${utils.format(value, 'fullTime')}` : "Scegli l'ora",
49
- // fieldClearLabel: 'Clear value',
50
-
48
+ fieldClearLabel: 'Cancella valore',
51
49
  // Table labels
52
50
  timeTableLabel: "scegli un'ora",
53
51
  dateTableLabel: 'scegli una data',
@@ -55,23 +53,21 @@ const itITPickers = {
55
53
  fieldYearPlaceholder: params => 'A'.repeat(params.digitAmount),
56
54
  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
57
55
  fieldDayPlaceholder: () => 'GG',
58
- // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
56
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'GGGG' : 'GG',
59
57
  fieldHoursPlaceholder: () => 'hh',
60
58
  fieldMinutesPlaceholder: () => 'mm',
61
59
  fieldSecondsPlaceholder: () => 'ss',
62
- fieldMeridiemPlaceholder: () => 'aa'
63
-
60
+ fieldMeridiemPlaceholder: () => 'aa',
64
61
  // View names
65
- // year: 'Year',
66
- // month: 'Month',
67
- // day: 'Day',
68
- // weekDay: 'Week day',
69
- // hours: 'Hours',
70
- // minutes: 'Minutes',
71
- // seconds: 'Seconds',
72
- // meridiem: 'Meridiem',
73
-
62
+ year: 'Anno',
63
+ month: 'Mese',
64
+ day: 'Giorno',
65
+ weekDay: 'Giorno della settimana',
66
+ hours: 'Ore',
67
+ minutes: 'Minuti',
68
+ seconds: 'Secondi',
69
+ meridiem: 'Meridiano',
74
70
  // Common
75
- // empty: 'Empty',
71
+ empty: 'Vuoto'
76
72
  };
77
73
  export const itIT = getPickersLocalization(itITPickers);
package/locales/zhHK.js CHANGED
@@ -16,11 +16,10 @@ const zhHKPickers = {
16
16
  // DateRange labels
17
17
  start: '開始',
18
18
  end: '結束',
19
- // startDate: 'Start date',
20
- // startTime: 'Start time',
21
- // endDate: 'End date',
22
- // endTime: 'End time',
23
-
19
+ startDate: '開始日期',
20
+ startTime: '開始時間',
21
+ endDate: '結束日期',
22
+ endTime: '結束時間',
24
23
  // Action bar
25
24
  cancelButtonLabel: '取消',
26
25
  clearButtonLabel: '清除',
@@ -59,19 +58,17 @@ const zhHKPickers = {
59
58
  fieldHoursPlaceholder: () => 'hh',
60
59
  fieldMinutesPlaceholder: () => 'mm',
61
60
  fieldSecondsPlaceholder: () => 'ss',
62
- fieldMeridiemPlaceholder: () => 'aa'
63
-
61
+ fieldMeridiemPlaceholder: () => 'aa',
64
62
  // View names
65
- // year: 'Year',
66
- // month: 'Month',
67
- // day: 'Day',
68
- // weekDay: 'Week day',
69
- // hours: 'Hours',
70
- // minutes: 'Minutes',
71
- // seconds: 'Seconds',
72
- // meridiem: 'Meridiem',
73
-
63
+ year: '',
64
+ month: '',
65
+ day: '',
66
+ weekDay: '星期',
67
+ hours: '小時',
68
+ minutes: '分鐘',
69
+ seconds: '',
70
+ meridiem: '子午線',
74
71
  // Common
75
- // empty: 'Empty',
72
+ empty: '空值'
76
73
  };
77
74
  export const zhHK = getPickersLocalization(zhHKPickers);
@@ -1,5 +1,5 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["value", "isLandscape", "onChange", "toolbarFormat", "toolbarPlaceholder", "views", "className", "onViewChange", "view"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
@@ -31,11 +31,16 @@ const DatePickerToolbarTitle = styled(Typography, {
31
31
  name: 'MuiDatePickerToolbar',
32
32
  slot: 'Title',
33
33
  overridesResolver: (_, styles) => styles.title
34
- })(({
35
- ownerState
36
- }) => _extends({}, ownerState.isLandscape && {
37
- margin: 'auto 16px auto auto'
38
- }));
34
+ })({
35
+ variants: [{
36
+ props: {
37
+ isLandscape: true
38
+ },
39
+ style: {
40
+ margin: 'auto 16px auto auto'
41
+ }
42
+ }]
43
+ });
39
44
  /**
40
45
  * Demos:
41
46
  *
@@ -40,20 +40,41 @@ const DateTimePickerToolbarRoot = styled(PickersToolbar, {
40
40
  slot: 'Root',
41
41
  overridesResolver: (props, styles) => styles.root
42
42
  })(({
43
- theme,
44
- ownerState
45
- }) => _extends({
46
- paddingLeft: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 24 : 16,
47
- paddingRight: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 0 : 16,
48
- borderBottom: ownerState.toolbarVariant === 'desktop' ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
49
- borderRight: ownerState.toolbarVariant === 'desktop' && ownerState.isLandscape ? `1px solid ${(theme.vars || theme).palette.divider}` : undefined,
43
+ theme
44
+ }) => ({
45
+ paddingLeft: 16,
46
+ paddingRight: 16,
50
47
  justifyContent: 'space-around',
51
- position: 'relative'
52
- }, ownerState.toolbarVariant === 'desktop' && {
53
- [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: {
54
- color: (theme.vars || theme).palette.primary.main,
55
- fontWeight: theme.typography.fontWeightBold
56
- }
48
+ position: 'relative',
49
+ variants: [{
50
+ props: {
51
+ toolbarVariant: 'desktop'
52
+ },
53
+ style: {
54
+ borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,
55
+ [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: {
56
+ color: (theme.vars || theme).palette.primary.main,
57
+ fontWeight: theme.typography.fontWeightBold
58
+ }
59
+ }
60
+ }, {
61
+ props: {
62
+ toolbarVariant: 'desktop',
63
+ isLandscape: true
64
+ },
65
+ style: {
66
+ borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
67
+ }
68
+ }, {
69
+ props: {
70
+ toolbarVariant: 'desktop',
71
+ isLandscape: false
72
+ },
73
+ style: {
74
+ paddingLeft: 24,
75
+ paddingRight: 0
76
+ }
77
+ }]
57
78
  }));
58
79
  DateTimePickerToolbarRoot.propTypes = {
59
80
  // ----------------------------- Warning --------------------------------
@@ -86,19 +107,35 @@ const DateTimePickerToolbarTimeContainer = styled('div', {
86
107
  slot: 'TimeContainer',
87
108
  overridesResolver: (props, styles) => styles.timeContainer
88
109
  })(({
89
- theme,
90
- ownerState
110
+ theme
91
111
  }) => {
92
- const direction = ownerState.isLandscape && ownerState.toolbarVariant !== 'desktop' ? 'column' : 'row';
93
112
  return _extends({
94
113
  display: 'flex',
95
- flexDirection: direction
96
- }, ownerState.toolbarVariant === 'desktop' && _extends({}, !ownerState.isLandscape && {
97
- gap: 9,
98
- marginRight: 4,
99
- alignSelf: 'flex-end'
100
- }), theme.direction === 'rtl' && {
101
- flexDirection: `${direction}-reverse`
114
+ flexDirection: 'row'
115
+ }, theme.direction === 'rtl' && {
116
+ flexDirection: 'row-reverse'
117
+ }, {
118
+ variants: [{
119
+ props: ({
120
+ isLandscape,
121
+ toolbarVariant
122
+ }) => isLandscape && toolbarVariant !== 'desktop',
123
+ style: _extends({
124
+ flexDirection: 'column'
125
+ }, theme.direction === 'rtl' && {
126
+ flexDirection: 'column-reverse'
127
+ })
128
+ }, {
129
+ props: {
130
+ toolbarVariant: 'desktop',
131
+ isLandscape: false
132
+ },
133
+ style: {
134
+ gap: 9,
135
+ marginRight: 4,
136
+ alignSelf: 'flex-end'
137
+ }
138
+ }]
102
139
  });
103
140
  });
104
141
  const DateTimePickerToolbarTimeDigitsContainer = styled('div', {
@@ -106,14 +143,20 @@ const DateTimePickerToolbarTimeDigitsContainer = styled('div', {
106
143
  slot: 'TimeDigitsContainer',
107
144
  overridesResolver: (props, styles) => styles.timeDigitsContainer
108
145
  })(({
109
- theme,
110
- ownerState
146
+ theme
111
147
  }) => _extends({
112
148
  display: 'flex'
113
- }, ownerState.toolbarVariant === 'desktop' && {
114
- gap: 1.5
115
149
  }, theme.direction === 'rtl' && {
116
150
  flexDirection: 'row-reverse'
151
+ }, {
152
+ variants: [{
153
+ props: {
154
+ toolbarVariant: 'desktop'
155
+ },
156
+ style: {
157
+ gap: 1.5
158
+ }
159
+ }]
117
160
  }));
118
161
  DateTimePickerToolbarTimeContainer.propTypes = {
119
162
  // ----------------------------- Warning --------------------------------
@@ -128,12 +171,18 @@ const DateTimePickerToolbarSeparator = styled(PickersToolbarText, {
128
171
  name: 'MuiDateTimePickerToolbar',
129
172
  slot: 'Separator',
130
173
  overridesResolver: (props, styles) => styles.separator
131
- })(({
132
- ownerState
133
- }) => ({
134
- margin: ownerState.toolbarVariant === 'desktop' ? 0 : '0 4px 0 2px',
135
- cursor: 'default'
136
- }));
174
+ })({
175
+ margin: '0 4px 0 2px',
176
+ cursor: 'default',
177
+ variants: [{
178
+ props: {
179
+ toolbarVariant: 'desktop'
180
+ },
181
+ style: {
182
+ margin: 0
183
+ }
184
+ }]
185
+ });
137
186
 
138
187
  // Taken from TimePickerToolbar
139
188
  const DateTimePickerToolbarAmPmSelection = styled('div', {
@@ -144,23 +193,26 @@ const DateTimePickerToolbarAmPmSelection = styled('div', {
144
193
  }, {
145
194
  [`&.${dateTimePickerToolbarClasses.ampmLandscape}`]: styles.ampmLandscape
146
195
  }, styles.ampmSelection]
147
- })(({
148
- ownerState
149
- }) => _extends({
196
+ })({
150
197
  display: 'flex',
151
198
  flexDirection: 'column',
152
199
  marginRight: 'auto',
153
- marginLeft: 12
154
- }, ownerState.isLandscape && {
155
- margin: '4px 0 auto',
156
- flexDirection: 'row',
157
- justifyContent: 'space-around',
158
- width: '100%'
159
- }, {
200
+ marginLeft: 12,
160
201
  [`& .${dateTimePickerToolbarClasses.ampmLabel}`]: {
161
202
  fontSize: 17
162
- }
163
- }));
203
+ },
204
+ variants: [{
205
+ props: {
206
+ isLandscape: true
207
+ },
208
+ style: {
209
+ margin: '4px 0 auto',
210
+ flexDirection: 'row',
211
+ justifyContent: 'space-around',
212
+ width: '100%'
213
+ }
214
+ }]
215
+ });
164
216
 
165
217
  /**
166
218
  * Demos:
@@ -1,5 +1,5 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
@@ -41,13 +41,17 @@ const DayCalendarSkeletonDay = styled(Skeleton, {
41
41
  name: 'MuiDayCalendarSkeleton',
42
42
  slot: 'DaySkeleton',
43
43
  overridesResolver: (props, styles) => styles.daySkeleton
44
- })(({
45
- ownerState
46
- }) => _extends({
47
- margin: `0 ${DAY_MARGIN}px`
48
- }, ownerState.day === 0 && {
49
- visibility: 'hidden'
50
- }));
44
+ })({
45
+ margin: `0 ${DAY_MARGIN}px`,
46
+ variants: [{
47
+ props: {
48
+ day: 0
49
+ },
50
+ style: {
51
+ visibility: 'hidden'
52
+ }
53
+ }]
54
+ });
51
55
  DayCalendarSkeletonDay.propTypes = {
52
56
  // ----------------------------- Warning --------------------------------
53
57
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -36,16 +36,24 @@ const DigitalClockRoot = styled(PickerViewRoot, {
36
36
  name: 'MuiDigitalClock',
37
37
  slot: 'Root',
38
38
  overridesResolver: (props, styles) => styles.root
39
- })(({
40
- ownerState
41
- }) => ({
39
+ })({
42
40
  overflowY: 'auto',
43
41
  width: '100%',
44
42
  '@media (prefers-reduced-motion: no-preference)': {
45
- scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto'
43
+ scrollBehavior: 'auto'
46
44
  },
47
- maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT
48
- }));
45
+ maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT,
46
+ variants: [{
47
+ props: {
48
+ alreadyRendered: true
49
+ },
50
+ style: {
51
+ '@media (prefers-reduced-motion: no-preference)': {
52
+ scrollBehavior: 'smooth'
53
+ }
54
+ }
55
+ }]
56
+ });
49
57
  const DigitalClockList = styled(MenuList, {
50
58
  name: 'MuiDigitalClock',
51
59
  slot: 'List',
@@ -22,14 +22,20 @@ const PickersMonthRoot = styled('div', {
22
22
  name: 'MuiPickersMonth',
23
23
  slot: 'Root',
24
24
  overridesResolver: (_, styles) => [styles.root]
25
- })(({
26
- ownerState
27
- }) => ({
28
- flexBasis: ownerState.monthsPerRow === 3 ? '33.3%' : '25%',
25
+ })({
29
26
  display: 'flex',
30
27
  alignItems: 'center',
31
- justifyContent: 'center'
32
- }));
28
+ justifyContent: 'center',
29
+ flexBasis: '33.3%',
30
+ variants: [{
31
+ props: {
32
+ monthsPerRow: 4
33
+ },
34
+ style: {
35
+ flexBasis: '25%'
36
+ }
37
+ }]
38
+ });
33
39
  const PickersMonthButton = styled('button', {
34
40
  name: 'MuiPickersMonth',
35
41
  slot: 'MonthButton',
@@ -26,15 +26,14 @@ const MultiSectionDigitalClockSectionRoot = styled(MenuList, {
26
26
  slot: 'Root',
27
27
  overridesResolver: (_, styles) => styles.root
28
28
  })(({
29
- theme,
30
- ownerState
29
+ theme
31
30
  }) => ({
32
31
  maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT,
33
32
  width: 56,
34
33
  padding: 0,
35
34
  overflow: 'hidden',
36
35
  '@media (prefers-reduced-motion: no-preference)': {
37
- scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto'
36
+ scrollBehavior: 'auto'
38
37
  },
39
38
  '@media (pointer: fine)': {
40
39
  '&:hover': {
@@ -52,7 +51,17 @@ const MultiSectionDigitalClockSectionRoot = styled(MenuList, {
52
51
  content: '""',
53
52
  // subtracting the height of one item, extra margin and borders to make sure the max height is correct
54
53
  height: 'calc(100% - 40px - 6px)'
55
- }
54
+ },
55
+ variants: [{
56
+ props: {
57
+ alreadyRendered: true
58
+ },
59
+ style: {
60
+ '@media (prefers-reduced-motion: no-preference)': {
61
+ scrollBehavior: 'smooth'
62
+ }
63
+ }
64
+ }]
56
65
  }));
57
66
  const MultiSectionDigitalClockSectionItem = styled(MenuItem, {
58
67
  name: 'MuiMultiSectionDigitalClockSection',
@@ -72,15 +72,19 @@ const PickersCalendarHeaderSwitchViewButton = styled(IconButton, {
72
72
  name: 'MuiPickersCalendarHeader',
73
73
  slot: 'SwitchViewButton',
74
74
  overridesResolver: (_, styles) => styles.switchViewButton
75
- })(({
76
- ownerState
77
- }) => _extends({
78
- marginRight: 'auto'
79
- }, ownerState.view === 'year' && {
80
- [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: {
81
- transform: 'rotate(180deg)'
82
- }
83
- }));
75
+ })({
76
+ marginRight: 'auto',
77
+ variants: [{
78
+ props: {
79
+ view: 'year'
80
+ },
81
+ style: {
82
+ [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: {
83
+ transform: 'rotate(180deg)'
84
+ }
85
+ }
86
+ }]
87
+ });
84
88
  const PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDownIcon, {
85
89
  name: 'MuiPickersCalendarHeader',
86
90
  slot: 'SwitchViewIcon',
@@ -30,8 +30,7 @@ const useUtilityClasses = ownerState => {
30
30
  return composeClasses(slots, getPickersDayUtilityClass, classes);
31
31
  };
32
32
  const styleArg = ({
33
- theme,
34
- ownerState
33
+ theme
35
34
  }) => _extends({}, theme.typography.caption, {
36
35
  width: DAY_SIZE,
37
36
  height: DAY_SIZE,
@@ -69,15 +68,33 @@ const styleArg = ({
69
68
  },
70
69
  [`&.${pickersDayClasses.disabled}&.${pickersDayClasses.selected}`]: {
71
70
  opacity: 0.6
72
- }
73
- }, !ownerState.disableMargin && {
74
- margin: `0 ${DAY_MARGIN}px`
75
- }, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {
76
- color: (theme.vars || theme).palette.text.secondary
77
- }, !ownerState.disableHighlightToday && ownerState.today && {
78
- [`&:not(.${pickersDayClasses.selected})`]: {
79
- border: `1px solid ${(theme.vars || theme).palette.text.secondary}`
80
- }
71
+ },
72
+ variants: [{
73
+ props: {
74
+ disableMargin: false
75
+ },
76
+ style: {
77
+ margin: `0 ${DAY_MARGIN}px`
78
+ }
79
+ }, {
80
+ props: {
81
+ outsideCurrentMonth: true,
82
+ showDaysOutsideCurrentMonth: true
83
+ },
84
+ style: {
85
+ color: (theme.vars || theme).palette.text.secondary
86
+ }
87
+ }, {
88
+ props: {
89
+ disableHighlightToday: false,
90
+ today: true
91
+ },
92
+ style: {
93
+ [`&:not(.${pickersDayClasses.selected})`]: {
94
+ border: `1px solid ${(theme.vars || theme).palette.text.secondary}`
95
+ }
96
+ }
97
+ }]
81
98
  });
82
99
  const overridesResolver = (props, styles) => {
83
100
  const {
@@ -95,11 +112,9 @@ const PickersDayFiller = styled('div', {
95
112
  slot: 'Root',
96
113
  overridesResolver
97
114
  })(({
98
- theme,
99
- ownerState
115
+ theme
100
116
  }) => _extends({}, styleArg({
101
- theme,
102
- ownerState
117
+ theme
103
118
  }), {
104
119
  // visibility: 'hidden' does not work here as it hides the element from screen readers as well
105
120
  opacity: 0,
@@ -23,30 +23,44 @@ const PickersLayoutRoot = styled('div', {
23
23
  slot: 'Root',
24
24
  overridesResolver: (props, styles) => styles.root
25
25
  })(({
26
- theme,
27
- ownerState
26
+ theme
28
27
  }) => ({
29
28
  display: 'grid',
30
29
  gridAutoColumns: 'max-content auto max-content',
31
30
  gridAutoRows: 'max-content auto max-content',
32
- [`& .${pickersLayoutClasses.toolbar}`]: ownerState.isLandscape ? {
33
- gridColumn: theme.direction === 'rtl' ? 3 : 1,
34
- gridRow: '2 / 3'
35
- } : {
36
- gridColumn: '2 / 4',
37
- gridRow: 1
38
- },
39
- [`.${pickersLayoutClasses.shortcuts}`]: ownerState.isLandscape ? {
40
- gridColumn: '2 / 4',
41
- gridRow: 1
42
- } : {
43
- gridColumn: theme.direction === 'rtl' ? 3 : 1,
44
- gridRow: '2 / 3'
45
- },
46
31
  [`& .${pickersLayoutClasses.actionBar}`]: {
47
32
  gridColumn: '1 / 4',
48
33
  gridRow: 3
49
- }
34
+ },
35
+ variants: [{
36
+ props: {
37
+ isLandscape: true
38
+ },
39
+ style: {
40
+ [`& .${pickersLayoutClasses.toolbar}`]: {
41
+ gridColumn: theme.direction === 'rtl' ? 3 : 1,
42
+ gridRow: '2 / 3'
43
+ },
44
+ [`.${pickersLayoutClasses.shortcuts}`]: {
45
+ gridColumn: '2 / 4',
46
+ gridRow: 1
47
+ }
48
+ }
49
+ }, {
50
+ props: {
51
+ isLandscape: false
52
+ },
53
+ style: {
54
+ [`& .${pickersLayoutClasses.toolbar}`]: {
55
+ gridColumn: '2 / 4',
56
+ gridRow: 1
57
+ },
58
+ [`& .${pickersLayoutClasses.shortcuts}`]: {
59
+ gridColumn: theme.direction === 'rtl' ? 3 : 1,
60
+ gridRow: '2 / 3'
61
+ }
62
+ }
63
+ }]
50
64
  }));
51
65
  PickersLayoutRoot.propTypes = {
52
66
  // ----------------------------- Warning --------------------------------