@mui/x-date-pickers 7.0.0 → 7.1.1

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 (157) hide show
  1. package/CHANGELOG.md +246 -4
  2. package/DateCalendar/DateCalendar.js +1 -1
  3. package/DateCalendar/DayCalendar.d.ts +1 -1
  4. package/DateField/DateField.js +1 -1
  5. package/DatePicker/DatePicker.js +1 -1
  6. package/DatePicker/DatePickerToolbar.js +11 -6
  7. package/DateTimeField/DateTimeField.js +2 -2
  8. package/DateTimeField/DateTimeField.types.d.ts +1 -1
  9. package/DateTimePicker/DateTimePicker.js +2 -2
  10. package/DateTimePicker/DateTimePickerToolbar.js +97 -45
  11. package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  12. package/DesktopDatePicker/DesktopDatePicker.js +1 -1
  13. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  14. package/DesktopTimePicker/DesktopTimePicker.js +1 -1
  15. package/DigitalClock/DigitalClock.js +15 -7
  16. package/MobileDatePicker/MobileDatePicker.js +1 -1
  17. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  18. package/MobileTimePicker/MobileTimePicker.js +1 -1
  19. package/MonthCalendar/PickersMonth.js +12 -6
  20. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  21. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  22. package/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  23. package/PickersDay/PickersDay.js +30 -15
  24. package/PickersLayout/PickersLayout.js +31 -17
  25. package/PickersShortcuts/PickersShortcuts.d.ts +1 -1
  26. package/PickersShortcuts/PickersShortcuts.js +1 -1
  27. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  28. package/PickersTextField/PickersInput/PickersInput.js +76 -54
  29. package/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  30. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
  31. package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  32. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  33. package/README.md +1 -1
  34. package/StaticDatePicker/StaticDatePicker.js +1 -1
  35. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  36. package/StaticTimePicker/StaticTimePicker.js +1 -1
  37. package/TimeClock/Clock.js +48 -35
  38. package/TimeClock/ClockNumber.js +12 -7
  39. package/TimeClock/ClockPointer.js +23 -13
  40. package/TimeClock/TimeClock.js +1 -1
  41. package/TimeField/TimeField.js +2 -2
  42. package/TimeField/TimeField.types.d.ts +1 -1
  43. package/TimePicker/TimePicker.js +1 -1
  44. package/TimePicker/TimePickerToolbar.js +25 -16
  45. package/YearCalendar/PickersYear.js +12 -6
  46. package/index.js +1 -1
  47. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  48. package/internals/components/PickersPopper.js +12 -8
  49. package/internals/components/PickersToolbar.js +39 -18
  50. package/internals/hooks/useField/useField.js +4 -2
  51. package/internals/hooks/useField/useField.types.d.ts +2 -1
  52. package/internals/hooks/useField/useFieldV6TextField.js +10 -3
  53. package/internals/models/props/clock.d.ts +1 -1
  54. package/locales/faIR.js +7 -8
  55. package/locales/itIT.js +16 -20
  56. package/locales/ptBR.js +14 -17
  57. package/locales/ukUA.js +15 -19
  58. package/locales/zhHK.js +14 -17
  59. package/modern/DateCalendar/DateCalendar.js +1 -1
  60. package/modern/DateField/DateField.js +1 -1
  61. package/modern/DatePicker/DatePicker.js +1 -1
  62. package/modern/DatePicker/DatePickerToolbar.js +11 -6
  63. package/modern/DateTimeField/DateTimeField.js +2 -2
  64. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  65. package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
  66. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  67. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  68. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  69. package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -1
  70. package/modern/DigitalClock/DigitalClock.js +15 -7
  71. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  72. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  73. package/modern/MobileTimePicker/MobileTimePicker.js +1 -1
  74. package/modern/MonthCalendar/PickersMonth.js +12 -6
  75. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  76. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  77. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  78. package/modern/PickersDay/PickersDay.js +30 -15
  79. package/modern/PickersLayout/PickersLayout.js +31 -17
  80. package/modern/PickersShortcuts/PickersShortcuts.js +1 -1
  81. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  82. package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
  83. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  84. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  85. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  86. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  87. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  88. package/modern/StaticTimePicker/StaticTimePicker.js +1 -1
  89. package/modern/TimeClock/Clock.js +48 -35
  90. package/modern/TimeClock/ClockNumber.js +12 -7
  91. package/modern/TimeClock/ClockPointer.js +23 -13
  92. package/modern/TimeClock/TimeClock.js +1 -1
  93. package/modern/TimeField/TimeField.js +2 -2
  94. package/modern/TimePicker/TimePicker.js +1 -1
  95. package/modern/TimePicker/TimePickerToolbar.js +25 -16
  96. package/modern/YearCalendar/PickersYear.js +12 -6
  97. package/modern/index.js +1 -1
  98. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  99. package/modern/internals/components/PickersPopper.js +12 -8
  100. package/modern/internals/components/PickersToolbar.js +39 -18
  101. package/modern/internals/hooks/useField/useField.js +4 -2
  102. package/modern/internals/hooks/useField/useFieldV6TextField.js +10 -3
  103. package/modern/locales/faIR.js +7 -8
  104. package/modern/locales/itIT.js +16 -20
  105. package/modern/locales/ptBR.js +14 -17
  106. package/modern/locales/ukUA.js +15 -19
  107. package/modern/locales/zhHK.js +14 -17
  108. package/node/DateCalendar/DateCalendar.js +1 -1
  109. package/node/DateField/DateField.js +1 -1
  110. package/node/DatePicker/DatePicker.js +1 -1
  111. package/node/DatePicker/DatePickerToolbar.js +11 -6
  112. package/node/DateTimeField/DateTimeField.js +2 -2
  113. package/node/DateTimePicker/DateTimePicker.js +2 -2
  114. package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
  115. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  116. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  117. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  118. package/node/DesktopTimePicker/DesktopTimePicker.js +1 -1
  119. package/node/DigitalClock/DigitalClock.js +15 -7
  120. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  121. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  122. package/node/MobileTimePicker/MobileTimePicker.js +1 -1
  123. package/node/MonthCalendar/PickersMonth.js +12 -6
  124. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  125. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  126. package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  127. package/node/PickersDay/PickersDay.js +30 -15
  128. package/node/PickersLayout/PickersLayout.js +31 -17
  129. package/node/PickersShortcuts/PickersShortcuts.js +1 -1
  130. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  131. package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
  132. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  133. package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  134. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  135. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  137. package/node/StaticTimePicker/StaticTimePicker.js +1 -1
  138. package/node/TimeClock/Clock.js +48 -35
  139. package/node/TimeClock/ClockNumber.js +12 -7
  140. package/node/TimeClock/ClockPointer.js +23 -13
  141. package/node/TimeClock/TimeClock.js +1 -1
  142. package/node/TimeField/TimeField.js +2 -2
  143. package/node/TimePicker/TimePicker.js +1 -1
  144. package/node/TimePicker/TimePickerToolbar.js +25 -16
  145. package/node/YearCalendar/PickersYear.js +12 -6
  146. package/node/index.js +1 -1
  147. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  148. package/node/internals/components/PickersPopper.js +12 -8
  149. package/node/internals/components/PickersToolbar.js +39 -18
  150. package/node/internals/hooks/useField/useField.js +4 -2
  151. package/node/internals/hooks/useField/useFieldV6TextField.js +10 -3
  152. package/node/locales/faIR.js +7 -8
  153. package/node/locales/itIT.js +16 -20
  154. package/node/locales/ptBR.js +14 -17
  155. package/node/locales/ukUA.js +15 -19
  156. package/node/locales/zhHK.js +14 -17
  157. package/package.json +2 -2
@@ -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',
@@ -266,7 +274,7 @@ process.env.NODE_ENV !== "production" ? DigitalClock.propTypes = {
266
274
  // ----------------------------------------------------------------------
267
275
  /**
268
276
  * 12h/24h view for hour selection clock.
269
- * @default `utils.is12HourCycleInCurrentLocale()`
277
+ * @default utils.is12HourCycleInCurrentLocale()
270
278
  */
271
279
  ampm: PropTypes.bool,
272
280
  /**
@@ -83,7 +83,7 @@ MobileDatePicker.propTypes = {
83
83
  * Formats the day of week displayed in the calendar header.
84
84
  * @param {TDate} date The date of the day of week provided by the adapter.
85
85
  * @returns {string} The name to display.
86
- * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
86
+ * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
87
87
  */
88
88
  dayOfWeekFormatter: PropTypes.func,
89
89
  /**
@@ -78,7 +78,7 @@ MobileDateTimePicker.propTypes = {
78
78
  // ----------------------------------------------------------------------
79
79
  /**
80
80
  * 12h/24h view for hour selection clock.
81
- * @default `utils.is12HourCycleInCurrentLocale()`
81
+ * @default utils.is12HourCycleInCurrentLocale()
82
82
  */
83
83
  ampm: PropTypes.bool,
84
84
  /**
@@ -103,7 +103,7 @@ MobileDateTimePicker.propTypes = {
103
103
  * Formats the day of week displayed in the calendar header.
104
104
  * @param {TDate} date The date of the day of week provided by the adapter.
105
105
  * @returns {string} The name to display.
106
- * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
106
+ * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
107
107
  */
108
108
  dayOfWeekFormatter: PropTypes.func,
109
109
  /**
@@ -71,7 +71,7 @@ MobileTimePicker.propTypes = {
71
71
  // ----------------------------------------------------------------------
72
72
  /**
73
73
  * 12h/24h view for hour selection clock.
74
- * @default `utils.is12HourCycleInCurrentLocale()`
74
+ * @default utils.is12HourCycleInCurrentLocale()
75
75
  */
76
76
  ampm: PropTypes.bool,
77
77
  /**
@@ -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',
@@ -331,7 +331,7 @@ process.env.NODE_ENV !== "production" ? MultiSectionDigitalClock.propTypes = {
331
331
  // ----------------------------------------------------------------------
332
332
  /**
333
333
  * 12h/24h view for hour selection clock.
334
- * @default `utils.is12HourCycleInCurrentLocale()`
334
+ * @default utils.is12HourCycleInCurrentLocale()
335
335
  */
336
336
  ampm: PropTypes.bool,
337
337
  /**
@@ -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 --------------------------------
@@ -13,7 +13,7 @@ export interface ExportedPickersShortcutProps<TValue> extends Omit<ListProps, 'o
13
13
  /**
14
14
  * Ordered array of shortcuts to display.
15
15
  * If empty, does not display the shortcuts.
16
- * @default `[]`
16
+ * @default []
17
17
  */
18
18
  items?: PickersShortcutsItem<TValue>[];
19
19
  /**
@@ -91,7 +91,7 @@ process.env.NODE_ENV !== "production" ? PickersShortcuts.propTypes = {
91
91
  /**
92
92
  * Ordered array of shortcuts to display.
93
93
  * If empty, does not display the shortcuts.
94
- * @default `[]`
94
+ * @default []
95
95
  */
96
96
  items: PropTypes.arrayOf(PropTypes.shape({
97
97
  getValue: PropTypes.func.isRequired,
@@ -1,10 +1,11 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["label", "autoFocus", "ownerState"];
3
+ const _excluded = ["label", "autoFocus", "disableUnderline", "ownerState"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useFormControl } from '@mui/material/FormControl';
7
7
  import { styled, useThemeProps } from '@mui/material/styles';
8
+ import { shouldForwardProp } from '@mui/system';
8
9
  import { refType } from '@mui/utils';
9
10
  import composeClasses from '@mui/utils/composeClasses';
10
11
  import { pickersFilledInputClasses, getPickersFilledInputUtilityClass } from './pickersFilledInputClasses';
@@ -14,17 +15,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
14
15
  const PickersFilledInputRoot = styled(PickersInputBaseRoot, {
15
16
  name: 'MuiPickersFilledInput',
16
17
  slot: 'Root',
17
- overridesResolver: (props, styles) => styles.root
18
+ overridesResolver: (props, styles) => styles.root,
19
+ shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'disableUnderline'
18
20
  })(({
19
- theme,
20
- ownerState
21
+ theme
21
22
  }) => {
22
23
  const light = theme.palette.mode === 'light';
23
24
  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';
24
25
  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';
25
26
  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';
26
27
  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';
27
- return _extends({
28
+ return {
28
29
  backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,
29
30
  borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
30
31
  borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
@@ -44,83 +45,136 @@ const PickersFilledInputRoot = styled(PickersInputBaseRoot, {
44
45
  },
45
46
  [`&.${pickersFilledInputClasses.disabled}`]: {
46
47
  backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground
47
- }
48
- }, !ownerState.disableUnderline && {
49
- '&::after': {
50
- borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color || 'primary']?.main}`,
51
- left: 0,
52
- bottom: 0,
53
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
54
- content: '""',
55
- position: 'absolute',
56
- right: 0,
57
- transform: 'scaleX(0)',
58
- transition: theme.transitions.create('transform', {
59
- duration: theme.transitions.duration.shorter,
60
- easing: theme.transitions.easing.easeOut
61
- }),
62
- pointerEvents: 'none' // Transparent to the hover style.
63
- },
64
- [`&.${pickersFilledInputClasses.focused}:after`]: {
65
- // translateX(0) is a workaround for Safari transform scale bug
66
- // See https://github.com/mui/material-ui/issues/31766
67
- transform: 'scaleX(1) translateX(0)'
68
48
  },
69
- [`&.${pickersFilledInputClasses.error}`]: {
70
- '&:before, &:after': {
71
- borderBottomColor: (theme.vars || theme).palette.error.main
49
+ variants: [...Object.keys((theme.vars ?? theme).palette)
50
+ // @ts-ignore
51
+ .filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
52
+ props: {
53
+ color,
54
+ disableUnderline: false
55
+ },
56
+ style: {
57
+ '&::after': {
58
+ // @ts-ignore
59
+ borderBottom: `2px solid ${(theme.vars || theme).palette[color]?.main}`
60
+ }
72
61
  }
73
- },
74
- '&::before': {
75
- borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
76
- left: 0,
77
- bottom: 0,
78
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
79
- content: '"\\00a0"',
80
- position: 'absolute',
81
- right: 0,
82
- transition: theme.transitions.create('border-bottom-color', {
83
- duration: theme.transitions.duration.shorter
84
- }),
85
- pointerEvents: 'none' // Transparent to the hover style.
86
- },
87
- [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: {
88
- borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
89
- },
90
- [`&.${pickersFilledInputClasses.disabled}:before`]: {
91
- borderBottomStyle: 'dotted'
92
- }
93
- }, ownerState.startAdornment && {
94
- paddingLeft: 12
95
- }, ownerState.endAdornment && {
96
- paddingRight: 12
97
- });
62
+ })), {
63
+ props: {
64
+ disableUnderline: false
65
+ },
66
+ style: {
67
+ '&::after': {
68
+ left: 0,
69
+ bottom: 0,
70
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
71
+ content: '""',
72
+ position: 'absolute',
73
+ right: 0,
74
+ transform: 'scaleX(0)',
75
+ transition: theme.transitions.create('transform', {
76
+ duration: theme.transitions.duration.shorter,
77
+ easing: theme.transitions.easing.easeOut
78
+ }),
79
+ pointerEvents: 'none' // Transparent to the hover style.
80
+ },
81
+ [`&.${pickersFilledInputClasses.focused}:after`]: {
82
+ // translateX(0) is a workaround for Safari transform scale bug
83
+ // See https://github.com/mui/material-ui/issues/31766
84
+ transform: 'scaleX(1) translateX(0)'
85
+ },
86
+ [`&.${pickersFilledInputClasses.error}`]: {
87
+ '&:before, &:after': {
88
+ borderBottomColor: (theme.vars || theme).palette.error.main
89
+ }
90
+ },
91
+ '&::before': {
92
+ borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
93
+ left: 0,
94
+ bottom: 0,
95
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
96
+ content: '"\\00a0"',
97
+ position: 'absolute',
98
+ right: 0,
99
+ transition: theme.transitions.create('border-bottom-color', {
100
+ duration: theme.transitions.duration.shorter
101
+ }),
102
+ pointerEvents: 'none' // Transparent to the hover style.
103
+ },
104
+ [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: {
105
+ borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
106
+ },
107
+ [`&.${pickersFilledInputClasses.disabled}:before`]: {
108
+ borderBottomStyle: 'dotted'
109
+ }
110
+ }
111
+ }, {
112
+ props: ({
113
+ startAdornment
114
+ }) => !!startAdornment,
115
+ style: {
116
+ paddingLeft: 12
117
+ }
118
+ }, {
119
+ props: ({
120
+ endAdornment
121
+ }) => !!endAdornment,
122
+ style: {
123
+ paddingRight: 12
124
+ }
125
+ }]
126
+ };
98
127
  });
99
128
  const PickersFilledSectionsContainer = styled(PickersInputBaseSectionsContainer, {
100
129
  name: 'MuiPickersFilledInput',
101
130
  slot: 'sectionsContainer',
102
131
  overridesResolver: (props, styles) => styles.sectionsContainer
103
- })(({
104
- ownerState
105
- }) => _extends({
132
+ })({
106
133
  paddingTop: 25,
107
134
  paddingRight: 12,
108
135
  paddingBottom: 8,
109
- paddingLeft: 12
110
- }, ownerState.size === 'small' && {
111
- paddingTop: 21,
112
- paddingBottom: 4
113
- }, ownerState.startAdornment && {
114
- paddingLeft: 0
115
- }, ownerState.endAdornment && {
116
- paddingRight: 0
117
- }, ownerState.hiddenLabel && {
118
- paddingTop: 16,
119
- paddingBottom: 17
120
- }, ownerState.hiddenLabel && ownerState.size === 'small' && {
121
- paddingTop: 8,
122
- paddingBottom: 9
123
- }));
136
+ paddingLeft: 12,
137
+ variants: [{
138
+ props: {
139
+ size: 'small'
140
+ },
141
+ style: {
142
+ paddingTop: 21,
143
+ paddingBottom: 4
144
+ }
145
+ }, {
146
+ props: ({
147
+ startAdornment
148
+ }) => !!startAdornment,
149
+ style: {
150
+ paddingLeft: 0
151
+ }
152
+ }, {
153
+ props: ({
154
+ endAdornment
155
+ }) => !!endAdornment,
156
+ style: {
157
+ paddingRight: 0
158
+ }
159
+ }, {
160
+ props: {
161
+ hiddenLabel: true
162
+ },
163
+ style: {
164
+ paddingTop: 16,
165
+ paddingBottom: 17
166
+ }
167
+ }, {
168
+ props: {
169
+ hiddenLabel: true,
170
+ size: 'small'
171
+ },
172
+ style: {
173
+ paddingTop: 8,
174
+ paddingBottom: 9
175
+ }
176
+ }]
177
+ });
124
178
  const useUtilityClasses = ownerState => {
125
179
  const {
126
180
  classes,
@@ -143,6 +197,7 @@ const PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledI
143
197
  });
144
198
  const {
145
199
  label,
200
+ disableUnderline = false,
146
201
  ownerState: ownerStateProp
147
202
  } = props,
148
203
  other = _objectWithoutPropertiesLoose(props, _excluded);
@@ -155,6 +210,11 @@ const PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledI
155
210
  slots: {
156
211
  root: PickersFilledInputRoot,
157
212
  input: PickersFilledSectionsContainer
213
+ },
214
+ slotProps: {
215
+ root: {
216
+ disableUnderline
217
+ }
158
218
  }
159
219
  }, other, {
160
220
  label: label,
@@ -220,6 +280,11 @@ process.env.NODE_ENV !== "production" ? PickersFilledInput.propTypes = {
220
280
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
221
281
  })
222
282
  })]),
283
+ /**
284
+ * The props used for each component slot.
285
+ * @default {}
286
+ */
287
+ slotProps: PropTypes.object,
223
288
  /**
224
289
  * The components used for each slot inside.
225
290
  *