@mui/x-date-pickers 7.0.0-beta.7 → 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 (209) hide show
  1. package/AdapterDateFns/AdapterDateFns.js +1 -1
  2. package/AdapterDateFnsBase/AdapterDateFnsBase.js +1 -2
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +2 -4
  4. package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
  5. package/AdapterDayjs/AdapterDayjs.js +2 -4
  6. package/AdapterLuxon/AdapterLuxon.js +12 -9
  7. package/AdapterMoment/AdapterMoment.js +5 -6
  8. package/CHANGELOG.md +266 -12
  9. package/DateCalendar/DateCalendar.js +14 -16
  10. package/DateCalendar/DayCalendar.js +5 -6
  11. package/DateField/DateField.js +3 -4
  12. package/DatePicker/DatePicker.js +1 -1
  13. package/DatePicker/DatePickerToolbar.js +11 -6
  14. package/DatePicker/shared.d.ts +2 -1
  15. package/DatePicker/shared.js +3 -5
  16. package/DateTimeField/DateTimeField.js +3 -4
  17. package/DateTimePicker/DateTimePicker.js +1 -1
  18. package/DateTimePicker/DateTimePickerToolbar.js +98 -46
  19. package/DateTimePicker/shared.d.ts +2 -1
  20. package/DateTimePicker/shared.js +11 -13
  21. package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  22. package/DesktopDatePicker/DesktopDatePicker.js +7 -11
  23. package/DesktopDateTimePicker/DesktopDateTimePicker.js +72 -37
  24. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +12 -0
  25. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  26. package/DesktopDateTimePicker/index.d.ts +1 -0
  27. package/DesktopDateTimePicker/index.js +2 -1
  28. package/DesktopTimePicker/DesktopTimePicker.js +8 -12
  29. package/DigitalClock/DigitalClock.js +16 -9
  30. package/LocalizationProvider/LocalizationProvider.js +1 -2
  31. package/MobileDatePicker/MobileDatePicker.js +6 -10
  32. package/MobileDateTimePicker/MobileDateTimePicker.js +8 -12
  33. package/MobileTimePicker/MobileTimePicker.js +6 -10
  34. package/MonthCalendar/MonthCalendar.js +4 -4
  35. package/MonthCalendar/PickersMonth.js +13 -8
  36. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  37. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +1 -1
  38. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +16 -9
  39. package/PickersActionBar/PickersActionBar.js +1 -1
  40. package/PickersCalendarHeader/PickersCalendarHeader.js +17 -14
  41. package/PickersDay/PickersDay.js +30 -15
  42. package/PickersLayout/PickersLayout.js +31 -17
  43. package/PickersLayout/usePickerLayout.js +8 -9
  44. package/PickersSectionList/PickersSectionList.js +9 -11
  45. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +138 -74
  46. package/PickersTextField/PickersInput/PickersInput.js +77 -55
  47. package/PickersTextField/PickersInputBase/PickersInputBase.js +67 -28
  48. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
  49. package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  50. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +33 -14
  51. package/README.md +1 -1
  52. package/StaticDatePicker/StaticDatePicker.js +4 -5
  53. package/StaticDateTimePicker/StaticDateTimePicker.js +6 -7
  54. package/StaticTimePicker/StaticTimePicker.js +3 -4
  55. package/TimeClock/Clock.js +48 -35
  56. package/TimeClock/ClockNumber.js +12 -7
  57. package/TimeClock/ClockPointer.js +23 -13
  58. package/TimeClock/TimeClock.js +1 -1
  59. package/TimeField/TimeField.js +2 -3
  60. package/TimePicker/TimePickerToolbar.js +25 -16
  61. package/TimePicker/shared.d.ts +2 -1
  62. package/TimePicker/shared.js +5 -7
  63. package/YearCalendar/PickersYear.js +12 -6
  64. package/YearCalendar/YearCalendar.js +5 -6
  65. package/hooks/useClearableField.js +6 -7
  66. package/index.js +1 -1
  67. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +19 -15
  68. package/internals/components/PickersModalDialog.js +6 -7
  69. package/internals/components/PickersPopper.js +25 -24
  70. package/internals/components/PickersToolbar.js +42 -24
  71. package/internals/hooks/date-helpers-hooks.js +1 -1
  72. package/internals/hooks/defaultizedFieldProps.js +15 -18
  73. package/internals/hooks/useClockReferenceDate.js +1 -1
  74. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  75. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +11 -12
  76. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  77. package/internals/hooks/useField/buildSectionsFromFormat.js +35 -31
  78. package/internals/hooks/useField/useField.js +6 -4
  79. package/internals/hooks/useField/useField.types.d.ts +1 -0
  80. package/internals/hooks/useField/useField.utils.js +4 -7
  81. package/internals/hooks/useField/useFieldCharacterEditing.js +1 -2
  82. package/internals/hooks/useField/useFieldState.js +1 -1
  83. package/internals/hooks/useField/useFieldV6TextField.js +17 -18
  84. package/internals/hooks/useField/useFieldV7TextField.js +9 -11
  85. package/internals/hooks/useMobilePicker/useMobilePicker.js +7 -8
  86. package/internals/hooks/useOpenState.js +1 -1
  87. package/internals/hooks/usePicker/index.d.ts +1 -0
  88. package/internals/hooks/usePicker/usePickerViews.d.ts +4 -2
  89. package/internals/hooks/usePicker/usePickerViews.js +1 -2
  90. package/internals/hooks/useStaticPicker/useStaticPicker.js +13 -17
  91. package/internals/hooks/useValueWithTimezone.js +5 -6
  92. package/internals/hooks/useViews.js +3 -4
  93. package/internals/index.d.ts +1 -1
  94. package/internals/models/validation.d.ts +1 -1
  95. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +3 -3
  96. package/internals/utils/date-time-utils.js +2 -5
  97. package/internals/utils/fields.js +1 -1
  98. package/internals/utils/getDefaultReferenceDate.js +2 -6
  99. package/internals/utils/views.js +1 -1
  100. package/locales/csCZ.js +1 -4
  101. package/locales/daDK.js +1 -4
  102. package/locales/deDE.js +1 -4
  103. package/locales/huHU.js +1 -4
  104. package/locales/itIT.js +16 -20
  105. package/locales/jaJP.js +1 -4
  106. package/locales/roRO.js +1 -4
  107. package/locales/skSK.js +1 -4
  108. package/locales/zhHK.js +14 -17
  109. package/modern/AdapterLuxon/AdapterLuxon.js +9 -4
  110. package/modern/DateCalendar/DateCalendar.js +1 -1
  111. package/modern/DateField/DateField.js +1 -1
  112. package/modern/DatePicker/DatePicker.js +1 -1
  113. package/modern/DatePicker/DatePickerToolbar.js +11 -6
  114. package/modern/DateTimeField/DateTimeField.js +1 -1
  115. package/modern/DateTimePicker/DateTimePicker.js +1 -1
  116. package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
  117. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  118. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  119. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +64 -25
  120. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  121. package/modern/DesktopDateTimePicker/index.js +2 -1
  122. package/modern/DigitalClock/DigitalClock.js +14 -6
  123. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  124. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  125. package/modern/MonthCalendar/PickersMonth.js +12 -6
  126. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  127. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  128. package/modern/PickersDay/PickersDay.js +30 -15
  129. package/modern/PickersLayout/PickersLayout.js +31 -17
  130. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  131. package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
  132. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  133. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  134. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  135. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  137. package/modern/TimeClock/Clock.js +48 -35
  138. package/modern/TimeClock/ClockNumber.js +12 -7
  139. package/modern/TimeClock/ClockPointer.js +23 -13
  140. package/modern/TimePicker/TimePickerToolbar.js +25 -16
  141. package/modern/YearCalendar/PickersYear.js +12 -6
  142. package/modern/index.js +1 -1
  143. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  144. package/modern/internals/components/PickersPopper.js +13 -9
  145. package/modern/internals/components/PickersToolbar.js +39 -18
  146. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  147. package/modern/internals/hooks/useField/useField.js +4 -2
  148. package/modern/internals/hooks/useField/useFieldV6TextField.js +8 -3
  149. package/modern/internals/hooks/useField/useFieldV7TextField.js +1 -1
  150. package/modern/internals/hooks/useOpenState.js +1 -1
  151. package/modern/internals/utils/fields.js +1 -1
  152. package/modern/locales/itIT.js +16 -20
  153. package/modern/locales/zhHK.js +14 -17
  154. package/node/AdapterLuxon/AdapterLuxon.js +9 -4
  155. package/node/DateCalendar/DateCalendar.js +1 -1
  156. package/node/DateField/DateField.js +1 -1
  157. package/node/DatePicker/DatePicker.js +1 -1
  158. package/node/DatePicker/DatePickerToolbar.js +11 -6
  159. package/node/DateTimeField/DateTimeField.js +1 -1
  160. package/node/DateTimePicker/DateTimePicker.js +1 -1
  161. package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
  162. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  163. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  164. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +63 -25
  165. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +108 -0
  166. package/node/DesktopDateTimePicker/index.js +8 -1
  167. package/node/DigitalClock/DigitalClock.js +14 -6
  168. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  169. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  170. package/node/MonthCalendar/PickersMonth.js +12 -6
  171. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  172. package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  173. package/node/PickersDay/PickersDay.js +30 -15
  174. package/node/PickersLayout/PickersLayout.js +31 -17
  175. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  176. package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
  177. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  178. package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  179. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  180. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  181. package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  182. package/node/TimeClock/Clock.js +48 -35
  183. package/node/TimeClock/ClockNumber.js +12 -7
  184. package/node/TimeClock/ClockPointer.js +23 -13
  185. package/node/TimePicker/TimePickerToolbar.js +25 -16
  186. package/node/YearCalendar/PickersYear.js +12 -6
  187. package/node/index.js +1 -1
  188. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  189. package/node/internals/components/PickersPopper.js +13 -9
  190. package/node/internals/components/PickersToolbar.js +39 -18
  191. package/node/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  192. package/node/internals/hooks/useField/useField.js +4 -2
  193. package/node/internals/hooks/useField/useFieldV6TextField.js +8 -3
  194. package/node/internals/hooks/useField/useFieldV7TextField.js +1 -1
  195. package/node/internals/hooks/useOpenState.js +1 -1
  196. package/node/internals/utils/fields.js +1 -1
  197. package/node/locales/itIT.js +16 -20
  198. package/node/locales/zhHK.js +14 -17
  199. package/package.json +5 -5
  200. package/timeViewRenderers/timeViewRenderers.js +1 -1
  201. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +0 -15
  202. package/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -163
  203. package/dateTimeViewRenderers/index.d.ts +0 -2
  204. package/dateTimeViewRenderers/index.js +0 -1
  205. package/dateTimeViewRenderers/package.json +0 -6
  206. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -162
  207. package/modern/dateTimeViewRenderers/index.js +0 -1
  208. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -171
  209. package/node/dateTimeViewRenderers/index.js +0 -12
@@ -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 --------------------------------
@@ -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
  *
@@ -1,6 +1,6 @@
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';
@@ -16,70 +16,85 @@ const PickersInputRoot = styled(PickersInputBaseRoot, {
16
16
  slot: 'Root',
17
17
  overridesResolver: (props, styles) => styles.root
18
18
  })(({
19
- theme,
20
- ownerState
19
+ theme
21
20
  }) => {
22
21
  const light = theme.palette.mode === 'light';
23
22
  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';
24
23
  if (theme.vars) {
25
24
  bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;
26
25
  }
27
- return _extends({
26
+ return {
28
27
  'label + &': {
29
28
  marginTop: 16
30
- }
31
- }, !ownerState.disableUnderline && {
32
- '&::after': {
33
- background: 'red',
34
- // @ts-ignore
35
- borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,
36
- left: 0,
37
- bottom: 0,
38
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
39
- content: '""',
40
- position: 'absolute',
41
- right: 0,
42
- transform: 'scaleX(0)',
43
- transition: theme.transitions.create('transform', {
44
- duration: theme.transitions.duration.shorter,
45
- easing: theme.transitions.easing.easeOut
46
- }),
47
- pointerEvents: 'none' // Transparent to the hover style.
48
- },
49
- [`&.${pickersInputClasses.focused}:after`]: {
50
- // translateX(0) is a workaround for Safari transform scale bug
51
- // See https://github.com/mui/material-ui/issues/31766
52
- transform: 'scaleX(1) translateX(0)'
53
29
  },
54
- [`&.${pickersInputClasses.error}`]: {
55
- '&:before, &:after': {
56
- borderBottomColor: (theme.vars || theme).palette.error.main
30
+ variants: [...Object.keys((theme.vars ?? theme).palette)
31
+ // @ts-ignore
32
+ .filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
33
+ props: {
34
+ color
35
+ },
36
+ style: {
37
+ '&::after': {
38
+ // @ts-ignore
39
+ borderBottom: `2px solid ${(theme.vars || theme).palette[color].main}`
40
+ }
57
41
  }
58
- },
59
- '&::before': {
60
- borderBottom: `1px solid ${bottomLineColor}`,
61
- left: 0,
62
- bottom: 0,
63
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
64
- content: '"\\00a0"',
65
- position: 'absolute',
66
- right: 0,
67
- transition: theme.transitions.create('border-bottom-color', {
68
- duration: theme.transitions.duration.shorter
69
- }),
70
- pointerEvents: 'none' // Transparent to the hover style.
71
- },
72
- [`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: {
73
- borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,
74
- // Reset on touch devices, it doesn't add specificity
75
- '@media (hover: none)': {
76
- borderBottom: `1px solid ${bottomLineColor}`
42
+ })), {
43
+ props: {
44
+ disableUnderline: false
45
+ },
46
+ style: {
47
+ '&::after': {
48
+ background: 'red',
49
+ left: 0,
50
+ bottom: 0,
51
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
52
+ content: '""',
53
+ position: 'absolute',
54
+ right: 0,
55
+ transform: 'scaleX(0)',
56
+ transition: theme.transitions.create('transform', {
57
+ duration: theme.transitions.duration.shorter,
58
+ easing: theme.transitions.easing.easeOut
59
+ }),
60
+ pointerEvents: 'none' // Transparent to the hover style.
61
+ },
62
+ [`&.${pickersInputClasses.focused}:after`]: {
63
+ // translateX(0) is a workaround for Safari transform scale bug
64
+ // See https://github.com/mui/material-ui/issues/31766
65
+ transform: 'scaleX(1) translateX(0)'
66
+ },
67
+ [`&.${pickersInputClasses.error}`]: {
68
+ '&:before, &:after': {
69
+ borderBottomColor: (theme.vars || theme).palette.error.main
70
+ }
71
+ },
72
+ '&::before': {
73
+ borderBottom: `1px solid ${bottomLineColor}`,
74
+ left: 0,
75
+ bottom: 0,
76
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
77
+ content: '"\\00a0"',
78
+ position: 'absolute',
79
+ right: 0,
80
+ transition: theme.transitions.create('border-bottom-color', {
81
+ duration: theme.transitions.duration.shorter
82
+ }),
83
+ pointerEvents: 'none' // Transparent to the hover style.
84
+ },
85
+ [`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: {
86
+ borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,
87
+ // Reset on touch devices, it doesn't add specificity
88
+ '@media (hover: none)': {
89
+ borderBottom: `1px solid ${bottomLineColor}`
90
+ }
91
+ },
92
+ [`&.${pickersInputClasses.disabled}:before`]: {
93
+ borderBottomStyle: 'dotted'
94
+ }
77
95
  }
78
- },
79
- [`&.${pickersInputClasses.disabled}:before`]: {
80
- borderBottomStyle: 'dotted'
81
- }
82
- });
96
+ }]
97
+ };
83
98
  });
84
99
  const useUtilityClasses = ownerState => {
85
100
  const {
@@ -103,11 +118,13 @@ const PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(inProps
103
118
  });
104
119
  const {
105
120
  label,
121
+ disableUnderline = false,
106
122
  ownerState: ownerStateProp
107
123
  } = props,
108
124
  other = _objectWithoutPropertiesLoose(props, _excluded);
109
125
  const muiFormControl = useFormControl();
110
126
  const ownerState = _extends({}, props, ownerStateProp, muiFormControl, {
127
+ disableUnderline,
111
128
  color: muiFormControl?.color || 'primary'
112
129
  });
113
130
  const classes = useUtilityClasses(ownerState);
@@ -178,6 +195,11 @@ process.env.NODE_ENV !== "production" ? PickersInput.propTypes = {
178
195
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
179
196
  })
180
197
  })]),
198
+ /**
199
+ * The props used for each component slot.
200
+ * @default {}
201
+ */
202
+ slotProps: PropTypes.object,
181
203
  /**
182
204
  * The components used for each slot inside.
183
205
  *