@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
@@ -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,18 +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
- var _palette;
23
23
  const light = theme.palette.mode === 'light';
24
24
  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';
25
25
  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';
26
26
  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';
27
27
  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';
28
- return _extends({
28
+ return {
29
29
  backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,
30
30
  borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
31
31
  borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
@@ -45,83 +45,136 @@ const PickersFilledInputRoot = styled(PickersInputBaseRoot, {
45
45
  },
46
46
  [`&.${pickersFilledInputClasses.disabled}`]: {
47
47
  backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground
48
- }
49
- }, !ownerState.disableUnderline && {
50
- '&::after': {
51
- borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,
52
- left: 0,
53
- bottom: 0,
54
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
55
- content: '""',
56
- position: 'absolute',
57
- right: 0,
58
- transform: 'scaleX(0)',
59
- transition: theme.transitions.create('transform', {
60
- duration: theme.transitions.duration.shorter,
61
- easing: theme.transitions.easing.easeOut
62
- }),
63
- pointerEvents: 'none' // Transparent to the hover style.
64
- },
65
- [`&.${pickersFilledInputClasses.focused}:after`]: {
66
- // translateX(0) is a workaround for Safari transform scale bug
67
- // See https://github.com/mui/material-ui/issues/31766
68
- transform: 'scaleX(1) translateX(0)'
69
48
  },
70
- [`&.${pickersFilledInputClasses.error}`]: {
71
- '&:before, &:after': {
72
- 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
+ }
73
61
  }
74
- },
75
- '&::before': {
76
- borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
77
- left: 0,
78
- bottom: 0,
79
- // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
80
- content: '"\\00a0"',
81
- position: 'absolute',
82
- right: 0,
83
- transition: theme.transitions.create('border-bottom-color', {
84
- duration: theme.transitions.duration.shorter
85
- }),
86
- pointerEvents: 'none' // Transparent to the hover style.
87
- },
88
- [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: {
89
- borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
90
- },
91
- [`&.${pickersFilledInputClasses.disabled}:before`]: {
92
- borderBottomStyle: 'dotted'
93
- }
94
- }, ownerState.startAdornment && {
95
- paddingLeft: 12
96
- }, ownerState.endAdornment && {
97
- paddingRight: 12
98
- });
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
+ };
99
127
  });
100
128
  const PickersFilledSectionsContainer = styled(PickersInputBaseSectionsContainer, {
101
129
  name: 'MuiPickersFilledInput',
102
130
  slot: 'sectionsContainer',
103
131
  overridesResolver: (props, styles) => styles.sectionsContainer
104
- })(({
105
- ownerState
106
- }) => _extends({
132
+ })({
107
133
  paddingTop: 25,
108
134
  paddingRight: 12,
109
135
  paddingBottom: 8,
110
- paddingLeft: 12
111
- }, ownerState.size === 'small' && {
112
- paddingTop: 21,
113
- paddingBottom: 4
114
- }, ownerState.startAdornment && {
115
- paddingLeft: 0
116
- }, ownerState.endAdornment && {
117
- paddingRight: 0
118
- }, ownerState.hiddenLabel && {
119
- paddingTop: 16,
120
- paddingBottom: 17
121
- }, ownerState.hiddenLabel && ownerState.size === 'small' && {
122
- paddingTop: 8,
123
- paddingBottom: 9
124
- }));
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
+ });
125
178
  const useUtilityClasses = ownerState => {
126
179
  const {
127
180
  classes,
@@ -144,18 +197,24 @@ const PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledI
144
197
  });
145
198
  const {
146
199
  label,
200
+ disableUnderline = false,
147
201
  ownerState: ownerStateProp
148
202
  } = props,
149
203
  other = _objectWithoutPropertiesLoose(props, _excluded);
150
204
  const muiFormControl = useFormControl();
151
205
  const ownerState = _extends({}, props, ownerStateProp, muiFormControl, {
152
- color: (muiFormControl == null ? void 0 : muiFormControl.color) || 'primary'
206
+ color: muiFormControl?.color || 'primary'
153
207
  });
154
208
  const classes = useUtilityClasses(ownerState);
155
209
  return /*#__PURE__*/_jsx(PickersInputBase, _extends({
156
210
  slots: {
157
211
  root: PickersFilledInputRoot,
158
212
  input: PickersFilledSectionsContainer
213
+ },
214
+ slotProps: {
215
+ root: {
216
+ disableUnderline
217
+ }
159
218
  }
160
219
  }, other, {
161
220
  label: label,
@@ -221,6 +280,11 @@ process.env.NODE_ENV !== "production" ? PickersFilledInput.propTypes = {
221
280
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
222
281
  })
223
282
  })]),
283
+ /**
284
+ * The props used for each component slot.
285
+ * @default {}
286
+ */
287
+ slotProps: PropTypes.object,
224
288
  /**
225
289
  * The components used for each slot inside.
226
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,12 +118,14 @@ 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, {
111
- color: (muiFormControl == null ? void 0 : muiFormControl.color) || 'primary'
127
+ disableUnderline,
128
+ color: muiFormControl?.color || 'primary'
112
129
  });
113
130
  const classes = useUtilityClasses(ownerState);
114
131
  return /*#__PURE__*/_jsx(PickersInputBase, _extends({
@@ -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
  *
@@ -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 = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "renderSuffix", "slots", "contentEditable", "tabIndex", "onInput", "onPaste", "onKeyDown", "fullWidth", "name", "readOnly", "inputProps", "inputRef", "sectionListRef"];
3
+ const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "renderSuffix", "slots", "slotProps", "contentEditable", "tabIndex", "onInput", "onPaste", "onKeyDown", "fullWidth", "name", "readOnly", "inputProps", "inputRef", "sectionListRef"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useFormControl } from '@mui/material/FormControl';
@@ -9,6 +9,7 @@ import useForkRef from '@mui/utils/useForkRef';
9
9
  import { refType } from '@mui/utils';
10
10
  import composeClasses from '@mui/utils/composeClasses';
11
11
  import capitalize from '@mui/utils/capitalize';
12
+ import { useSlotProps } from '@mui/base/utils';
12
13
  import visuallyHidden from '@mui/utils/visuallyHidden';
13
14
  import { pickersInputBaseClasses, getPickersInputBaseUtilityClass } from './pickersInputBaseClasses';
14
15
  import { Unstable_PickersSectionList as PickersSectionList, Unstable_PickersSectionListRoot as PickersSectionListRoot, Unstable_PickersSectionListSection as PickersSectionListSection, Unstable_PickersSectionListSectionSeparator as PickersSectionListSectionSeparator, Unstable_PickersSectionListSectionContent as PickersSectionListSectionContent } from '../../PickersSectionList';
@@ -20,8 +21,7 @@ export const PickersInputBaseRoot = styled('div', {
20
21
  slot: 'Root',
21
22
  overridesResolver: (props, styles) => styles.root
22
23
  })(({
23
- theme,
24
- ownerState
24
+ theme
25
25
  }) => _extends({}, theme.typography.body1, {
26
26
  color: (theme.vars || theme).palette.text.primary,
27
27
  cursor: 'text',
@@ -32,17 +32,22 @@ export const PickersInputBaseRoot = styled('div', {
32
32
  position: 'relative',
33
33
  boxSizing: 'border-box',
34
34
  // Prevent padding issue with fullWidth.
35
- letterSpacing: `${round(0.15 / 16)}em`
36
- }, ownerState.fullWidth && {
37
- width: '100%'
35
+ letterSpacing: `${round(0.15 / 16)}em`,
36
+ variants: [{
37
+ props: {
38
+ fullWidth: true
39
+ },
40
+ style: {
41
+ width: '100%'
42
+ }
43
+ }]
38
44
  }));
39
45
  export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot, {
40
46
  name: 'MuiPickersInputBase',
41
47
  slot: 'SectionsContainer',
42
48
  overridesResolver: (props, styles) => styles.sectionsContainer
43
49
  })(({
44
- theme,
45
- ownerState
50
+ theme
46
51
  }) => _extends({
47
52
  padding: '4px 0 5px',
48
53
  fontFamily: theme.typography.fontFamily,
@@ -57,19 +62,41 @@ export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot,
57
62
  letterSpacing: 'inherit',
58
63
  // Baseline behavior
59
64
  width: '182px'
60
- }, ownerState.size === 'small' && {
61
- paddingTop: 1
62
65
  }, theme.direction === 'rtl' && {
63
66
  textAlign: 'right /*! @noflip */'
64
- }, !(ownerState.adornedStart || ownerState.focused || ownerState.filled) && _extends({
65
- color: 'currentColor'
66
- }, ownerState.label == null && (theme.vars ? {
67
- opacity: theme.vars.opacity.inputPlaceholder
68
- } : {
69
- opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
70
- }), ownerState.label != null && {
71
- opacity: 0
72
- })));
67
+ }, {
68
+ variants: [{
69
+ props: {
70
+ size: 'small'
71
+ },
72
+ style: {
73
+ paddingTop: 1
74
+ }
75
+ }, {
76
+ props: {
77
+ adornedStart: false,
78
+ focused: false,
79
+ filled: false
80
+ },
81
+ style: {
82
+ color: 'currentColor',
83
+ opacity: 0
84
+ }
85
+ }, {
86
+ // Can't use the object notation because label can be null or undefined
87
+ props: ({
88
+ adornedStart,
89
+ focused,
90
+ filled,
91
+ label
92
+ }) => !adornedStart && !focused && !filled && label == null,
93
+ style: theme.vars ? {
94
+ opacity: theme.vars.opacity.inputPlaceholder
95
+ } : {
96
+ opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
97
+ }
98
+ }]
99
+ }));
73
100
  const PickersInputBaseSection = styled(PickersSectionListSection, {
74
101
  name: 'MuiPickersInputBase',
75
102
  slot: 'Section',
@@ -153,6 +180,7 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
153
180
  startAdornment,
154
181
  renderSuffix,
155
182
  slots,
183
+ slotProps,
156
184
  contentEditable,
157
185
  tabIndex,
158
186
  onInput,
@@ -167,20 +195,19 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
167
195
  other = _objectWithoutPropertiesLoose(props, _excluded);
168
196
  const rootRef = React.useRef(null);
169
197
  const handleRootRef = useForkRef(ref, rootRef);
170
- const handleInputRef = useForkRef(inputProps == null ? void 0 : inputProps.ref, inputRef);
198
+ const handleInputRef = useForkRef(inputProps?.ref, inputRef);
171
199
  const muiFormControl = useFormControl();
172
200
  if (!muiFormControl) {
173
201
  throw new Error('MUI X: PickersInputBase should always be used inside a PickersTextField component');
174
202
  }
175
203
  const handleInputFocus = event => {
176
- var _muiFormControl$onFoc;
177
204
  // Fix a bug with IE11 where the focus/blur events are triggered
178
205
  // while the component is disabled.
179
206
  if (muiFormControl.disabled) {
180
207
  event.stopPropagation();
181
208
  return;
182
209
  }
183
- (_muiFormControl$onFoc = muiFormControl.onFocus) == null || _muiFormControl$onFoc.call(muiFormControl, event);
210
+ muiFormControl.onFocus?.(event);
184
211
  };
185
212
  React.useEffect(() => {
186
213
  if (muiFormControl) {
@@ -199,13 +226,20 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
199
226
  }, [muiFormControl, areAllSectionsEmpty]);
200
227
  const ownerState = _extends({}, props, muiFormControl);
201
228
  const classes = useUtilityClasses(ownerState);
202
- const InputRoot = (slots == null ? void 0 : slots.root) || PickersInputBaseRoot;
203
- const InputSectionsContainer = (slots == null ? void 0 : slots.input) || PickersInputBaseSectionsContainer;
204
- return /*#__PURE__*/_jsxs(InputRoot, _extends({}, other, {
229
+ const InputRoot = slots?.root || PickersInputBaseRoot;
230
+ const inputRootProps = useSlotProps({
231
+ elementType: InputRoot,
232
+ externalSlotProps: slotProps?.root,
233
+ externalForwardedProps: other,
234
+ additionalProps: {
235
+ 'aria-invalid': muiFormControl.error,
236
+ ref: handleRootRef
237
+ },
205
238
  className: classes.root,
206
- ownerState: ownerState,
207
- "aria-invalid": muiFormControl.error,
208
- ref: handleRootRef,
239
+ ownerState
240
+ });
241
+ const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer;
242
+ return /*#__PURE__*/_jsxs(InputRoot, _extends({}, inputRootProps, {
209
243
  children: [startAdornment, /*#__PURE__*/_jsx(PickersSectionList, {
210
244
  sectionListRef: sectionListRef,
211
245
  elements: elements,
@@ -308,6 +342,11 @@ process.env.NODE_ENV !== "production" ? PickersInputBase.propTypes = {
308
342
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
309
343
  })
310
344
  })]),
345
+ /**
346
+ * The props used for each component slot.
347
+ * @default {}
348
+ */
349
+ slotProps: PropTypes.object,
311
350
  /**
312
351
  * The components used for each slot inside.
313
352
  *
@@ -48,4 +48,11 @@ export interface PickersInputBaseProps extends Omit<BoxProps, keyof PickersInput
48
48
  root?: React.ElementType;
49
49
  input?: React.ElementType;
50
50
  };
51
+ /**
52
+ * The props used for each component slot.
53
+ * @default {}
54
+ */
55
+ slotProps?: {
56
+ root?: any;
57
+ };
51
58
  }