@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
@@ -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
  *
@@ -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,
@@ -199,12 +227,19 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
199
227
  const ownerState = _extends({}, props, muiFormControl);
200
228
  const classes = useUtilityClasses(ownerState);
201
229
  const InputRoot = slots?.root || PickersInputBaseRoot;
202
- const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer;
203
- return /*#__PURE__*/_jsxs(InputRoot, _extends({}, other, {
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
+ },
204
238
  className: classes.root,
205
- ownerState: ownerState,
206
- "aria-invalid": muiFormControl.error,
207
- ref: handleRootRef,
239
+ ownerState
240
+ });
241
+ const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer;
242
+ return /*#__PURE__*/_jsxs(InputRoot, _extends({}, inputRootProps, {
208
243
  children: [startAdornment, /*#__PURE__*/_jsx(PickersSectionList, {
209
244
  sectionListRef: sectionListRef,
210
245
  elements: elements,
@@ -307,6 +342,11 @@ process.env.NODE_ENV !== "production" ? PickersInputBase.propTypes = {
307
342
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
308
343
  })
309
344
  })]),
345
+ /**
346
+ * The props used for each component slot.
347
+ * @default {}
348
+ */
349
+ slotProps: PropTypes.object,
310
350
  /**
311
351
  * The components used for each slot inside.
312
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
  }
@@ -1,5 +1,5 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["children", "className", "label", "notched", "shrink"];
4
4
  import * as React from 'react';
5
5
  import { styled } from '@mui/material/styles';
@@ -37,51 +37,68 @@ const OutlineLabel = styled('span')(({
37
37
  fontSize: 'inherit'
38
38
  }));
39
39
  const OutlineLegend = styled('legend')(({
40
- ownerState,
41
40
  theme
42
- }) => _extends({
41
+ }) => ({
43
42
  float: 'unset',
44
43
  // Fix conflict with bootstrap
45
44
  width: 'auto',
46
45
  // Fix conflict with bootstrap
47
- overflow: 'hidden'
48
- }, !ownerState.withLabel && {
49
- padding: 0,
50
- lineHeight: '11px',
51
- // sync with `height` in `legend` styles
52
- transition: theme.transitions.create('width', {
53
- duration: 150,
54
- easing: theme.transitions.easing.easeOut
55
- })
56
- }, ownerState.withLabel && _extends({
57
- display: 'block',
58
- // Fix conflict with normalize.css and sanitize.css
59
- padding: 0,
60
- height: 11,
61
- // sync with `lineHeight` in `legend` styles
62
- fontSize: '0.75em',
63
- visibility: 'hidden',
64
- maxWidth: 0.01,
65
- transition: theme.transitions.create('max-width', {
66
- duration: 50,
67
- easing: theme.transitions.easing.easeOut
68
- }),
69
- whiteSpace: 'nowrap',
70
- '& > span': {
71
- paddingLeft: 5,
72
- paddingRight: 5,
73
- display: 'inline-block',
74
- opacity: 0,
75
- visibility: 'visible'
76
- }
77
- }, ownerState.notched && {
78
- maxWidth: '100%',
79
- transition: theme.transitions.create('max-width', {
80
- duration: 100,
81
- easing: theme.transitions.easing.easeOut,
82
- delay: 50
83
- })
84
- })));
46
+ overflow: 'hidden',
47
+ // Fix Horizontal scroll when label too long
48
+ variants: [{
49
+ props: {
50
+ withLabel: false
51
+ },
52
+ style: {
53
+ padding: 0,
54
+ lineHeight: '11px',
55
+ // sync with `height` in `legend` styles
56
+ transition: theme.transitions.create('width', {
57
+ duration: 150,
58
+ easing: theme.transitions.easing.easeOut
59
+ })
60
+ }
61
+ }, {
62
+ props: {
63
+ withLabel: true
64
+ },
65
+ style: {
66
+ display: 'block',
67
+ // Fix conflict with normalize.css and sanitize.css
68
+ padding: 0,
69
+ height: 11,
70
+ // sync with `lineHeight` in `legend` styles
71
+ fontSize: '0.75em',
72
+ visibility: 'hidden',
73
+ maxWidth: 0.01,
74
+ transition: theme.transitions.create('max-width', {
75
+ duration: 50,
76
+ easing: theme.transitions.easing.easeOut
77
+ }),
78
+ whiteSpace: 'nowrap',
79
+ '& > span': {
80
+ paddingLeft: 5,
81
+ paddingRight: 5,
82
+ display: 'inline-block',
83
+ opacity: 0,
84
+ visibility: 'visible'
85
+ }
86
+ }
87
+ }, {
88
+ props: {
89
+ withLabel: true,
90
+ notched: true
91
+ },
92
+ style: {
93
+ maxWidth: '100%',
94
+ transition: theme.transitions.create('max-width', {
95
+ duration: 100,
96
+ easing: theme.transitions.easing.easeOut,
97
+ delay: 50
98
+ })
99
+ }
100
+ }]
101
+ }));
85
102
 
86
103
  /**
87
104
  * @ignore - internal component.
@@ -18,8 +18,7 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, {
18
18
  slot: 'Root',
19
19
  overridesResolver: (props, styles) => styles.root
20
20
  })(({
21
- theme,
22
- ownerState
21
+ theme
23
22
  }) => {
24
23
  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';
25
24
  return {
@@ -36,8 +35,6 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, {
36
35
  },
37
36
  [`&.${pickersOutlinedInputClasses.focused} .${pickersOutlinedInputClasses.notchedOutline}`]: {
38
37
  borderStyle: 'solid',
39
- // @ts-ignore
40
- borderColor: (theme.vars || theme).palette[ownerState.color].main,
41
38
  borderWidth: 2
42
39
  },
43
40
  [`&.${pickersOutlinedInputClasses.disabled}`]: {
@@ -50,20 +47,37 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, {
50
47
  },
51
48
  [`&.${pickersOutlinedInputClasses.error} .${pickersOutlinedInputClasses.notchedOutline}`]: {
52
49
  borderColor: (theme.vars || theme).palette.error.main
53
- }
50
+ },
51
+ variants: Object.keys((theme.vars ?? theme).palette)
52
+ // @ts-ignore
53
+ .filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
54
+ props: {
55
+ color
56
+ },
57
+ style: {
58
+ [`&.${pickersOutlinedInputClasses.focused}:not(.${pickersOutlinedInputClasses.error}) .${pickersOutlinedInputClasses.notchedOutline}`]: {
59
+ // @ts-ignore
60
+ borderColor: (theme.vars || theme).palette[color].main
61
+ }
62
+ }
63
+ }))
54
64
  };
55
65
  });
56
66
  const PickersOutlinedInputSectionsContainer = styled(PickersInputBaseSectionsContainer, {
57
67
  name: 'MuiPickersOutlinedInput',
58
68
  slot: 'SectionsContainer',
59
69
  overridesResolver: (props, styles) => styles.sectionsContainer
60
- })(({
61
- ownerState
62
- }) => _extends({
63
- padding: '16.5px 0'
64
- }, ownerState.size === 'small' && {
65
- padding: '8.5px 0'
66
- }));
70
+ })({
71
+ padding: '16.5px 0',
72
+ variants: [{
73
+ props: {
74
+ size: 'small'
75
+ },
76
+ style: {
77
+ padding: '8.5px 0'
78
+ }
79
+ }]
80
+ });
67
81
  const useUtilityClasses = ownerState => {
68
82
  const {
69
83
  classes
@@ -172,6 +186,11 @@ process.env.NODE_ENV !== "production" ? PickersOutlinedInput.propTypes = {
172
186
  getSectionIndexFromDOMElement: PropTypes.func.isRequired
173
187
  })
174
188
  })]),
189
+ /**
190
+ * The props used for each component slot.
191
+ * @default {}
192
+ */
193
+ slotProps: PropTypes.object,
175
194
  /**
176
195
  * The components used for each slot inside.
177
196
  *
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MUI X Date Pickers
2
2
 
3
- This package is the community edition of the date and time picker components.
3
+ This package is the Community plan edition of the Date and Time Picker components.
4
4
  It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components.
5
5
 
6
6
  ## Installation
@@ -64,7 +64,7 @@ StaticDatePicker.propTypes = {
64
64
  * Formats the day of week displayed in the calendar header.
65
65
  * @param {TDate} date The date of the day of week provided by the adapter.
66
66
  * @returns {string} The name to display.
67
- * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
67
+ * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
68
68
  */
69
69
  dayOfWeekFormatter: PropTypes.func,
70
70
  /**
@@ -64,7 +64,7 @@ StaticDateTimePicker.propTypes = {
64
64
  // ----------------------------------------------------------------------
65
65
  /**
66
66
  * 12h/24h view for hour selection clock.
67
- * @default `utils.is12HourCycleInCurrentLocale()`
67
+ * @default utils.is12HourCycleInCurrentLocale()
68
68
  */
69
69
  ampm: PropTypes.bool,
70
70
  /**
@@ -84,7 +84,7 @@ StaticDateTimePicker.propTypes = {
84
84
  * Formats the day of week displayed in the calendar header.
85
85
  * @param {TDate} date The date of the day of week provided by the adapter.
86
86
  * @returns {string} The name to display.
87
- * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
87
+ * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()
88
88
  */
89
89
  dayOfWeekFormatter: PropTypes.func,
90
90
  /**
@@ -56,7 +56,7 @@ StaticTimePicker.propTypes = {
56
56
  // ----------------------------------------------------------------------
57
57
  /**
58
58
  * 12h/24h view for hour selection clock.
59
- * @default `utils.is12HourCycleInCurrentLocale()`
59
+ * @default utils.is12HourCycleInCurrentLocale()
60
60
  */
61
61
  ampm: PropTypes.bool,
62
62
  /**