@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
package/CHANGELOG.md CHANGED
@@ -3,6 +3,77 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.1.0
7
+
8
+ _Mar 28, 2024_
9
+
10
+ We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🚀 Add `resizeThrottleMs` prop (#12556) @romgrk
13
+ - 🌍 Improve Chinese (Hong Kong) (zh-HK) and Italian (it-IT) locale on the Pickers
14
+ - 🐞 Bugfixes
15
+ - 📚 Documentation improvements
16
+
17
+ ### Data Grid
18
+
19
+ #### `@mui/x-data-grid@7.1.0`
20
+
21
+ - [DataGrid] Add `resizeThrottleMs` prop (#12556) @romgrk
22
+ - [DataGrid] Do not publish `rowEditStop` event if row has fields with errors (#11383) @cherniavskii
23
+ - [DataGrid] Fix bug in suspense (#12553) @romgrk
24
+ - [DataGrid] Fix missing class name in the `GridToolbarQuickFilter` component (#12484) @jhawkins11
25
+
26
+ #### `@mui/x-data-grid-pro@7.1.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
27
+
28
+ Same changes as in `@mui/x-data-grid@7.1.0`.
29
+
30
+ #### `@mui/x-data-grid-premium@7.1.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
31
+
32
+ Same changes as in `@mui/x-data-grid-pro@7.1.0`.
33
+
34
+ ### Date and Time Pickers
35
+
36
+ #### `@mui/x-date-pickers@7.1.0`
37
+
38
+ - [fields] Fix placeholder override (#12589) @flaviendelangle
39
+ - [l10n] Improve Chinese (Hong Kong) (zh-HK) locale (#12547) @samchiu90
40
+ - [l10n] Improve Italian (it-IT) locale (#12549) @antomanc
41
+ - [pickers] Prepare compatibility with `@mui/zero-runtime` (stop using `ownerState` in `styled`) (#12003) @flaviendelangle
42
+
43
+ #### `@mui/x-date-pickers-pro@7.1.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
44
+
45
+ Same changes as in `@mui/x-date-pickers@7.1.0`, plus:
46
+
47
+ - [DateRangePicker] Fix selection behavior with single input field when `readOnly` (#12593) @LukasTy
48
+
49
+ ### Charts
50
+
51
+ #### `@mui/x-charts@7.1.0`
52
+
53
+ - [charts] Fix tooltip causing crash on data change (#12571) @Rishi556
54
+
55
+ ### Tree View
56
+
57
+ #### `@mui/x-tree-view@7.1.0`
58
+
59
+ - [TreeView] Do not use outdated version of the state to compute new label first char in `RichTreeView` (#12512) @flaviendelangle
60
+
61
+ ### Docs
62
+
63
+ - [docs] Add example to add a second icon next to the field's opening button (#12524) @flaviendelangle
64
+ - [docs] Add missing note to Data Grid migration guide (#12557) @romgrk
65
+ - [docs] Fix Charts title for SEO (#12545) @oliviertassinari
66
+ - [docs] Fix small typo (#12558) @diogoparente
67
+ - [docs] Improve codemod related documentation (#12582) @MBilalShafi
68
+ - [docs] Reduce noise in migration docs side navigation (#12552) @cherniavskii
69
+ - [docs] Sync static images from core repository (#12525) @LukasTy
70
+
71
+ ### Core
72
+
73
+ - [core] Fix `l10n` script on Windows (#12550) @LukasTy
74
+ - [core] Include `DateTimeRangePicker` tag in `releaseChangelog` (#12526) @LukasTy
75
+ - [core] Upgrade monorepo (#12536) @cherniavskii
76
+
6
77
  ## v7.0.0
7
78
 
8
79
  _Mar 22, 2024_
@@ -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 --------------------------------