@mui/x-date-pickers 8.0.0-alpha.0 → 8.0.0-alpha.2

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 (223) hide show
  1. package/AdapterMoment/AdapterMoment.js +10 -0
  2. package/CHANGELOG.md +651 -6
  3. package/DateCalendar/DateCalendar.js +1 -0
  4. package/DateCalendar/DateCalendar.types.d.ts +2 -1
  5. package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  6. package/DateCalendar/PickersSlideTransition.js +12 -5
  7. package/DateCalendar/useCalendarState.d.ts +6 -4
  8. package/DateField/DateField.js +5 -4
  9. package/DateField/DateField.types.d.ts +10 -9
  10. package/DatePicker/DatePicker.types.d.ts +3 -3
  11. package/DatePicker/DatePickerToolbar.d.ts +3 -2
  12. package/DatePicker/DatePickerToolbar.js +0 -12
  13. package/DatePicker/shared.d.ts +6 -5
  14. package/DateTimeField/DateTimeField.js +5 -4
  15. package/DateTimeField/DateTimeField.types.d.ts +10 -10
  16. package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
  17. package/DateTimePicker/DateTimePickerTabs.js +8 -6
  18. package/DateTimePicker/DateTimePickerToolbar.d.ts +3 -4
  19. package/DateTimePicker/DateTimePickerToolbar.js +6 -15
  20. package/DateTimePicker/shared.d.ts +6 -6
  21. package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  22. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -1
  23. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -33
  24. package/DigitalClock/DigitalClock.js +1 -0
  25. package/MonthCalendar/MonthCalendar.js +1 -0
  26. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
  27. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
  28. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
  29. package/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  30. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +3 -4
  31. package/PickersLayout/PickersLayout.d.ts +7 -5
  32. package/PickersLayout/PickersLayout.js +22 -39
  33. package/PickersLayout/PickersLayout.types.d.ts +14 -15
  34. package/PickersLayout/usePickerLayout.d.ts +5 -4
  35. package/PickersLayout/usePickerLayout.js +20 -17
  36. package/PickersShortcuts/PickersShortcuts.d.ts +7 -6
  37. package/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
  38. package/PickersTextField/PickersTextField.js +2 -2
  39. package/README.md +9 -6
  40. package/TimeClock/Clock.js +1 -0
  41. package/TimeClock/TimeClock.js +1 -0
  42. package/TimeField/TimeField.js +5 -4
  43. package/TimeField/TimeField.types.d.ts +10 -10
  44. package/TimePicker/TimePicker.types.d.ts +3 -3
  45. package/TimePicker/TimePickerToolbar.d.ts +2 -3
  46. package/TimePicker/TimePickerToolbar.js +6 -15
  47. package/TimePicker/shared.d.ts +6 -6
  48. package/YearCalendar/YearCalendar.js +1 -0
  49. package/hooks/useParsedFormat.d.ts +2 -2
  50. package/hooks/useParsedFormat.js +1 -1
  51. package/hooks/useSplitFieldProps.d.ts +3 -3
  52. package/index.js +1 -1
  53. package/internals/components/PickerProvider.d.ts +26 -0
  54. package/internals/components/PickerProvider.js +3 -1
  55. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  56. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
  57. package/internals/components/PickersToolbar.d.ts +3 -3
  58. package/internals/components/PickersToolbar.js +2 -4
  59. package/internals/hooks/useClockReferenceDate.d.ts +2 -1
  60. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
  61. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +14 -14
  62. package/internals/hooks/useField/useField.d.ts +3 -3
  63. package/internals/hooks/useField/useField.types.d.ts +46 -46
  64. package/internals/hooks/useField/useField.utils.d.ts +4 -3
  65. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
  66. package/internals/hooks/useField/useFieldState.d.ts +9 -8
  67. package/internals/hooks/useField/useFieldState.js +1 -1
  68. package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
  69. package/internals/hooks/useField/useFieldV7TextField.js +2 -1
  70. package/internals/hooks/useFieldOwnerState.d.ts +6 -0
  71. package/internals/hooks/useFieldOwnerState.js +12 -0
  72. package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
  73. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +11 -11
  74. package/internals/hooks/usePicker/usePicker.d.ts +3 -3
  75. package/internals/hooks/usePicker/usePicker.js +10 -19
  76. package/internals/hooks/usePicker/usePicker.types.d.ts +8 -8
  77. package/internals/hooks/usePicker/usePickerProvider.d.ts +21 -6
  78. package/internals/hooks/usePicker/usePickerProvider.js +61 -5
  79. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
  80. package/internals/hooks/usePicker/usePickerValue.js +18 -7
  81. package/internals/hooks/usePicker/usePickerValue.types.d.ts +32 -30
  82. package/internals/hooks/usePicker/usePickerViews.d.ts +11 -10
  83. package/internals/hooks/usePicker/usePickerViews.js +1 -0
  84. package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
  85. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -6
  86. package/internals/hooks/useValueWithTimezone.d.ts +20 -15
  87. package/internals/hooks/useValueWithTimezone.js +13 -1
  88. package/internals/hooks/useViews.d.ts +5 -5
  89. package/internals/index.d.ts +5 -3
  90. package/internals/index.js +1 -0
  91. package/internals/models/common.d.ts +2 -1
  92. package/internals/models/fields.d.ts +6 -1
  93. package/internals/models/pickers.d.ts +1 -0
  94. package/internals/models/pickers.js +1 -0
  95. package/internals/models/props/basePickerProps.d.ts +4 -3
  96. package/internals/models/props/time.d.ts +2 -1
  97. package/internals/models/props/toolbar.d.ts +2 -2
  98. package/internals/models/value.d.ts +9 -0
  99. package/internals/utils/date-utils.d.ts +3 -3
  100. package/internals/utils/valueManagers.d.ts +4 -3
  101. package/locales/nlNL.js +7 -7
  102. package/models/adapters.d.ts +4 -4
  103. package/models/common.d.ts +1 -0
  104. package/models/fields.d.ts +19 -6
  105. package/models/pickers.d.ts +18 -0
  106. package/models/validation.d.ts +2 -1
  107. package/modern/AdapterMoment/AdapterMoment.js +10 -0
  108. package/modern/DateCalendar/DateCalendar.js +1 -0
  109. package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  110. package/modern/DateCalendar/PickersSlideTransition.js +12 -5
  111. package/modern/DateField/DateField.js +5 -4
  112. package/modern/DatePicker/DatePickerToolbar.js +0 -12
  113. package/modern/DateTimeField/DateTimeField.js +5 -4
  114. package/modern/DateTimePicker/DateTimePickerTabs.js +8 -6
  115. package/modern/DateTimePicker/DateTimePickerToolbar.js +6 -15
  116. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  117. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -33
  118. package/modern/DigitalClock/DigitalClock.js +1 -0
  119. package/modern/MonthCalendar/MonthCalendar.js +1 -0
  120. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
  121. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  122. package/modern/PickersLayout/PickersLayout.js +22 -39
  123. package/modern/PickersLayout/usePickerLayout.js +20 -17
  124. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
  125. package/modern/PickersTextField/PickersTextField.js +2 -2
  126. package/modern/TimeClock/Clock.js +1 -0
  127. package/modern/TimeClock/TimeClock.js +1 -0
  128. package/modern/TimeField/TimeField.js +5 -4
  129. package/modern/TimePicker/TimePickerToolbar.js +6 -15
  130. package/modern/YearCalendar/YearCalendar.js +1 -0
  131. package/modern/hooks/useParsedFormat.js +1 -1
  132. package/modern/index.js +1 -1
  133. package/modern/internals/components/PickerProvider.js +3 -1
  134. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  135. package/modern/internals/components/PickersToolbar.js +2 -4
  136. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
  137. package/modern/internals/hooks/useField/useFieldState.js +1 -1
  138. package/modern/internals/hooks/useField/useFieldV7TextField.js +2 -1
  139. package/modern/internals/hooks/useFieldOwnerState.js +12 -0
  140. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
  141. package/modern/internals/hooks/usePicker/usePicker.js +10 -19
  142. package/modern/internals/hooks/usePicker/usePickerProvider.js +61 -5
  143. package/modern/internals/hooks/usePicker/usePickerValue.js +18 -7
  144. package/modern/internals/hooks/usePicker/usePickerViews.js +1 -0
  145. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
  146. package/modern/internals/hooks/useValueWithTimezone.js +13 -1
  147. package/modern/internals/index.js +1 -0
  148. package/modern/internals/models/pickers.js +1 -0
  149. package/modern/locales/nlNL.js +7 -7
  150. package/modern/validation/useValidation.js +1 -1
  151. package/modern/validation/validateDate.js +8 -0
  152. package/modern/validation/validateDateTime.js +8 -0
  153. package/modern/validation/validateTime.js +8 -0
  154. package/node/AdapterMoment/AdapterMoment.js +10 -0
  155. package/node/DateCalendar/DateCalendar.js +1 -0
  156. package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  157. package/node/DateCalendar/PickersSlideTransition.js +12 -5
  158. package/node/DateField/DateField.js +5 -4
  159. package/node/DatePicker/DatePickerToolbar.js +0 -12
  160. package/node/DateTimeField/DateTimeField.js +5 -4
  161. package/node/DateTimePicker/DateTimePickerTabs.js +8 -6
  162. package/node/DateTimePicker/DateTimePickerToolbar.js +6 -15
  163. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  164. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +11 -34
  165. package/node/DigitalClock/DigitalClock.js +1 -0
  166. package/node/MonthCalendar/MonthCalendar.js +1 -0
  167. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
  168. package/node/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  169. package/node/PickersLayout/PickersLayout.js +22 -39
  170. package/node/PickersLayout/usePickerLayout.js +20 -17
  171. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
  172. package/node/PickersTextField/PickersTextField.js +2 -2
  173. package/node/TimeClock/Clock.js +1 -0
  174. package/node/TimeClock/TimeClock.js +1 -0
  175. package/node/TimeField/TimeField.js +5 -4
  176. package/node/TimePicker/TimePickerToolbar.js +6 -15
  177. package/node/YearCalendar/YearCalendar.js +1 -0
  178. package/node/hooks/useParsedFormat.js +1 -1
  179. package/node/index.js +1 -1
  180. package/node/internals/components/PickerProvider.js +3 -1
  181. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  182. package/node/internals/components/PickersToolbar.js +2 -4
  183. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
  184. package/node/internals/hooks/useField/useFieldState.js +1 -1
  185. package/node/internals/hooks/useField/useFieldV7TextField.js +2 -1
  186. package/node/internals/hooks/useFieldOwnerState.js +20 -0
  187. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
  188. package/node/internals/hooks/usePicker/usePicker.js +11 -19
  189. package/node/internals/hooks/usePicker/usePickerProvider.js +64 -5
  190. package/node/internals/hooks/usePicker/usePickerValue.js +18 -6
  191. package/node/internals/hooks/usePicker/usePickerViews.js +1 -0
  192. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
  193. package/node/internals/hooks/useValueWithTimezone.js +13 -1
  194. package/node/internals/index.js +7 -0
  195. package/node/internals/models/pickers.js +5 -0
  196. package/node/locales/nlNL.js +7 -7
  197. package/node/validation/useValidation.js +1 -1
  198. package/node/validation/validateDate.js +8 -0
  199. package/node/validation/validateDateTime.js +8 -0
  200. package/node/validation/validateTime.js +8 -0
  201. package/package.json +4 -4
  202. package/themeAugmentation/overrides.d.ts +1 -1
  203. package/themeAugmentation/props.d.ts +3 -2
  204. package/validation/useValidation.d.ts +7 -6
  205. package/validation/useValidation.js +1 -1
  206. package/validation/validateDate.d.ts +12 -3
  207. package/validation/validateDate.js +8 -0
  208. package/validation/validateDateTime.d.ts +12 -4
  209. package/validation/validateDateTime.js +8 -0
  210. package/validation/validateTime.d.ts +12 -3
  211. package/validation/validateTime.js +8 -0
  212. package/internals/hooks/useIsLandscape.d.ts +0 -4
  213. package/internals/hooks/useIsLandscape.js +0 -35
  214. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -33
  215. package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
  216. package/internals/hooks/usePicker/usePickerOwnerState.d.ts +0 -10
  217. package/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
  218. package/modern/internals/hooks/useIsLandscape.js +0 -35
  219. package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
  220. package/modern/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
  221. package/node/internals/hooks/useIsLandscape.js +0 -43
  222. package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -41
  223. package/node/internals/hooks/usePicker/usePickerOwnerState.js +0 -23
@@ -14,14 +14,14 @@ var _styles = require("@mui/material/styles");
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
15
  var _pickersLayoutClasses = require("./pickersLayoutClasses");
16
16
  var _usePickerLayout = _interopRequireDefault(require("./usePickerLayout"));
17
+ var _usePickerContext = require("../hooks/usePickerContext");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
- const useUtilityClasses = ownerState => {
19
+ const useUtilityClasses = (classes, ownerState) => {
19
20
  const {
20
- isLandscape,
21
- classes
21
+ pickerOrientation
22
22
  } = ownerState;
23
23
  const slots = {
24
- root: ['root', isLandscape && 'landscape'],
24
+ root: ['root', pickerOrientation === 'landscape' && 'landscape'],
25
25
  contentWrapper: ['contentWrapper']
26
26
  };
27
27
  return (0, _composeClasses.default)(slots, _pickersLayoutClasses.getPickersLayoutUtilityClass, classes);
@@ -40,7 +40,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
40
40
  },
41
41
  variants: [{
42
42
  props: {
43
- isLandscape: true
43
+ pickerOrientation: 'landscape'
44
44
  },
45
45
  style: {
46
46
  [`& .${_pickersLayoutClasses.pickersLayoutClasses.toolbar}`]: {
@@ -54,7 +54,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
54
54
  }
55
55
  }, {
56
56
  props: {
57
- isLandscape: true,
57
+ pickerOrientation: 'landscape',
58
58
  isRtl: true
59
59
  },
60
60
  style: {
@@ -64,7 +64,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
64
64
  }
65
65
  }, {
66
66
  props: {
67
- isLandscape: false
67
+ pickerOrientation: 'portrait'
68
68
  },
69
69
  style: {
70
70
  [`& .${_pickersLayoutClasses.pickersLayoutClasses.toolbar}`]: {
@@ -78,7 +78,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
78
78
  }
79
79
  }, {
80
80
  props: {
81
- isLandscape: false,
81
+ pickerOrientation: 'portrait',
82
82
  isRtl: true
83
83
  },
84
84
  style: {
@@ -117,23 +117,28 @@ const PickersLayout = exports.PickersLayout = /*#__PURE__*/React.forwardRef(func
117
117
  content,
118
118
  tabs,
119
119
  actionBar,
120
- shortcuts
120
+ shortcuts,
121
+ ownerState
121
122
  } = (0, _usePickerLayout.default)(props);
123
+ const {
124
+ orientation,
125
+ variant
126
+ } = (0, _usePickerContext.usePickerContext)();
122
127
  const {
123
128
  sx,
124
129
  className,
125
- isLandscape,
126
- wrapperVariant
130
+ classes: classesProp
127
131
  } = props;
128
- const classes = useUtilityClasses(props);
132
+ const classes = useUtilityClasses(classesProp, ownerState);
129
133
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(PickersLayoutRoot, {
130
134
  ref: ref,
131
135
  sx: sx,
132
136
  className: (0, _clsx.default)(classes.root, className),
133
- ownerState: props,
134
- children: [isLandscape ? shortcuts : toolbar, isLandscape ? toolbar : shortcuts, /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersLayoutContentWrapper, {
137
+ ownerState: ownerState,
138
+ children: [orientation === 'landscape' ? shortcuts : toolbar, orientation === 'landscape' ? toolbar : shortcuts, /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersLayoutContentWrapper, {
135
139
  className: classes.contentWrapper,
136
- children: wrapperVariant === 'desktop' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
140
+ ownerState: ownerState,
141
+ children: variant === 'desktop' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
137
142
  children: [content, tabs]
138
143
  }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
139
144
  children: [tabs, content]
@@ -152,17 +157,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
152
157
  */
153
158
  classes: _propTypes.default.object,
154
159
  className: _propTypes.default.string,
155
- /**
156
- * If `true`, the component is disabled.
157
- * When disabled, the value cannot be changed and no interaction is possible.
158
- * @default false
159
- */
160
- disabled: _propTypes.default.bool,
161
- isLandscape: _propTypes.default.bool.isRequired,
162
- /**
163
- * `true` if the application is in right-to-left direction.
164
- */
165
- isRtl: _propTypes.default.bool.isRequired,
166
160
  isValid: _propTypes.default.func.isRequired,
167
161
  onAccept: _propTypes.default.func.isRequired,
168
162
  onCancel: _propTypes.default.func.isRequired,
@@ -174,16 +168,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
174
168
  onSelectShortcut: _propTypes.default.func.isRequired,
175
169
  onSetToday: _propTypes.default.func.isRequired,
176
170
  onViewChange: _propTypes.default.func.isRequired,
177
- /**
178
- * Force rendering in particular orientation.
179
- */
180
- orientation: _propTypes.default.oneOf(['landscape', 'portrait']),
181
- /**
182
- * If `true`, the component is read-only.
183
- * When read-only, the value cannot be changed but the user can interact with the interface.
184
- * @default false
185
- */
186
- readOnly: _propTypes.default.bool,
187
171
  /**
188
172
  * The props used for each component slot.
189
173
  * @default {}
@@ -198,8 +182,7 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
198
182
  * The system prop that allows defining system overrides as well as additional CSS styles.
199
183
  */
200
184
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
201
- value: _propTypes.default.any,
185
+ value: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
202
186
  view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
203
- views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired,
204
- wrapperVariant: _propTypes.default.oneOf(['desktop', 'mobile'])
187
+ views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
205
188
  } : void 0;
@@ -11,20 +11,22 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
+ var _RtlProvider = require("@mui/system/RtlProvider");
14
15
  var _PickersActionBar = require("../PickersActionBar");
15
16
  var _pickersLayoutClasses = require("./pickersLayoutClasses");
16
17
  var _PickersShortcuts = require("../PickersShortcuts");
17
18
  var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
19
+ var _hooks = require("../hooks");
18
20
  var _jsxRuntime = require("react/jsx-runtime");
19
21
  function toolbarHasView(toolbarProps) {
20
22
  return toolbarProps.view !== null;
21
23
  }
22
24
  const useUtilityClasses = (classes, ownerState) => {
23
25
  const {
24
- isLandscape
26
+ pickerOrientation
25
27
  } = ownerState;
26
28
  const slots = {
27
- root: ['root', isLandscape && 'landscape'],
29
+ root: ['root', pickerOrientation === 'landscape' && 'landscape'],
28
30
  contentWrapper: ['contentWrapper'],
29
31
  toolbar: ['toolbar'],
30
32
  actionBar: ['actionBar'],
@@ -36,10 +38,14 @@ const useUtilityClasses = (classes, ownerState) => {
36
38
  };
37
39
  const usePickerLayout = props => {
38
40
  const {
39
- ownerState: pickersOwnerState
41
+ ownerState: pickerOwnerState
40
42
  } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
41
43
  const {
42
- wrapperVariant,
44
+ variant,
45
+ orientation
46
+ } = (0, _hooks.usePickerContext)();
47
+ const isRtl = (0, _RtlProvider.useRtl)();
48
+ const {
43
49
  onAccept,
44
50
  onClear,
45
51
  onCancel,
@@ -51,9 +57,6 @@ const usePickerLayout = props => {
51
57
  onChange,
52
58
  onSelectShortcut,
53
59
  isValid,
54
- isLandscape,
55
- disabled,
56
- readOnly,
57
60
  children,
58
61
  slots,
59
62
  slotProps,
@@ -63,9 +66,8 @@ const usePickerLayout = props => {
63
66
  // - For pickers value: PickerValidDate | null
64
67
  // - For range pickers value: [PickerValidDate | null, PickerValidDate | null]
65
68
  } = props;
66
- const ownerState = (0, _extends2.default)({}, pickersOwnerState, {
67
- wrapperVariant,
68
- isLandscape
69
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
70
+ isRtl
69
71
  });
70
72
  const classes = useUtilityClasses(classesProp, ownerState);
71
73
 
@@ -79,7 +81,7 @@ const usePickerLayout = props => {
79
81
  onClear,
80
82
  onCancel,
81
83
  onSetToday,
82
- actions: wrapperVariant === 'desktop' ? [] : ['cancel', 'accept']
84
+ actions: variant === 'desktop' ? [] : ['cancel', 'accept']
83
85
  },
84
86
  className: classes.actionBar,
85
87
  ownerState
@@ -92,14 +94,13 @@ const usePickerLayout = props => {
92
94
  elementType: Toolbar,
93
95
  externalSlotProps: slotProps?.toolbar,
94
96
  additionalProps: {
95
- isLandscape,
97
+ isLandscape: orientation === 'landscape',
98
+ // Will be removed in a follow up PR?
96
99
  onChange,
97
100
  value,
98
101
  view,
99
102
  onViewChange,
100
- views,
101
- disabled,
102
- readOnly
103
+ views
103
104
  },
104
105
  className: classes.toolbar,
105
106
  ownerState
@@ -124,7 +125,8 @@ const usePickerLayout = props => {
124
125
  externalSlotProps: slotProps?.shortcuts,
125
126
  additionalProps: {
126
127
  isValid,
127
- isLandscape,
128
+ isLandscape: orientation === 'landscape',
129
+ // Will be removed in a follow up PR?
128
130
  onChange: onSelectShortcut
129
131
  },
130
132
  className: classes.shortcuts,
@@ -136,7 +138,8 @@ const usePickerLayout = props => {
136
138
  content,
137
139
  tabs,
138
140
  actionBar,
139
- shortcuts
141
+ shortcuts,
142
+ ownerState
140
143
  };
141
144
  };
142
145
  var _default = exports.default = usePickerLayout;
@@ -22,7 +22,7 @@ var _RtlProvider = require("@mui/system/RtlProvider");
22
22
  var _pickersInputBaseClasses = require("./pickersInputBaseClasses");
23
23
  var _PickersSectionList = require("../../PickersSectionList");
24
24
  var _jsxRuntime = require("react/jsx-runtime");
25
- 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"];
25
+ 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", "onFocus", "onBlur"];
26
26
  const round = value => Math.round(value * 1e5) / 1e5;
27
27
  const PickersInputBaseRoot = exports.PickersInputBaseRoot = (0, _styles.styled)('div', {
28
28
  name: 'MuiPickersInputBase',
@@ -202,7 +202,9 @@ const PickersInputBase = exports.PickersInputBase = /*#__PURE__*/React.forwardRe
202
202
  readOnly,
203
203
  inputProps,
204
204
  inputRef,
205
- sectionListRef
205
+ sectionListRef,
206
+ onFocus,
207
+ onBlur
206
208
  } = props,
207
209
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
208
210
  const rootRef = React.useRef(null);
@@ -214,13 +216,12 @@ const PickersInputBase = exports.PickersInputBase = /*#__PURE__*/React.forwardRe
214
216
  throw new Error('MUI X: PickersInputBase should always be used inside a PickersTextField component');
215
217
  }
216
218
  const handleInputFocus = event => {
217
- // Fix a bug with IE11 where the focus/blur events are triggered
218
- // while the component is disabled.
219
- if (muiFormControl.disabled) {
220
- event.stopPropagation();
221
- return;
222
- }
223
219
  muiFormControl.onFocus?.(event);
220
+ onFocus?.(event);
221
+ };
222
+ const handleInputBlur = event => {
223
+ muiFormControl.onBlur?.(event);
224
+ onBlur?.(event);
224
225
  };
225
226
  React.useEffect(() => {
226
227
  if (muiFormControl) {
@@ -262,7 +263,7 @@ const PickersInputBase = exports.PickersInputBase = /*#__PURE__*/React.forwardRe
262
263
  tabIndex: tabIndex,
263
264
  className: classes.sectionsContainer,
264
265
  onFocus: handleInputFocus,
265
- onBlur: muiFormControl.onBlur,
266
+ onBlur: handleInputBlur,
266
267
  onInput: onInput,
267
268
  onPaste: onPaste,
268
269
  onKeyDown: onKeyDown,
@@ -112,8 +112,6 @@ const PickersTextField = exports.PickersTextField = /*#__PURE__*/React.forwardRe
112
112
  className: (0, _clsx.default)(classes.root, className),
113
113
  ref: handleRootRef,
114
114
  focused: focused,
115
- onFocus: onFocus,
116
- onBlur: onBlur,
117
115
  disabled: disabled,
118
116
  variant: variant,
119
117
  error: error,
@@ -135,6 +133,8 @@ const PickersTextField = exports.PickersTextField = /*#__PURE__*/React.forwardRe
135
133
  onKeyUp: onKeyUp,
136
134
  onInput: onInput,
137
135
  onPaste: onPaste,
136
+ onFocus: onFocus,
137
+ onBlur: onBlur,
138
138
  endAdornment: endAdornment,
139
139
  startAdornment: startAdornment,
140
140
  tabIndex: tabIndex,
@@ -230,6 +230,7 @@ function Clock(inProps) {
230
230
  setTime(event, 'finish');
231
231
  isMoving.current = false;
232
232
  }
233
+ event.preventDefault();
233
234
  };
234
235
  const handleMouseMove = event => {
235
236
  // event.buttons & PRIMARY_MOUSE_BUTTON
@@ -114,6 +114,7 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
114
114
  timezone: timezoneProp,
115
115
  value: valueProp,
116
116
  defaultValue,
117
+ referenceDate: referenceDateProp,
117
118
  onChange,
118
119
  valueManager: _valueManagers.singleItemValueManager
119
120
  });
@@ -19,6 +19,7 @@ var _useTimeField = require("./useTimeField");
19
19
  var _hooks = require("../hooks");
20
20
  var _PickersTextField = require("../PickersTextField");
21
21
  var _convertFieldResponseIntoMuiTextFieldProps = require("../internals/utils/convertFieldResponseIntoMuiTextFieldProps");
22
+ var _useFieldOwnerState = require("../internals/hooks/useFieldOwnerState");
22
23
  var _jsxRuntime = require("react/jsx-runtime");
23
24
  const _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
24
25
  /**
@@ -43,7 +44,7 @@ const TimeField = exports.TimeField = /*#__PURE__*/React.forwardRef(function Tim
43
44
  inputProps
44
45
  } = themeProps,
45
46
  other = (0, _objectWithoutPropertiesLoose2.default)(themeProps, _excluded);
46
- const ownerState = themeProps;
47
+ const ownerState = (0, _useFieldOwnerState.useFieldOwnerState)(themeProps);
47
48
  const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure === false ? _TextField.default : _PickersTextField.PickersTextField);
48
49
  const textFieldProps = (0, _useSlotProps.default)({
49
50
  elementType: TextField,
@@ -275,10 +276,10 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
275
276
  */
276
277
  shouldDisableTime: _propTypes.default.func,
277
278
  /**
278
- * If `true`, the format will respect the leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
279
- * If `false`, the format will always add leading zeroes (e.g: on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
279
+ * If `true`, the format will respect the leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
280
+ * If `false`, the format will always add leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
280
281
  *
281
- * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (e.g: "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
282
+ * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (for example "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
282
283
  *
283
284
  * Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.
284
285
  * If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\u200e/g, '')`.
@@ -24,8 +24,9 @@ var _useUtils = require("../internals/hooks/useUtils");
24
24
  var _dateHelpersHooks = require("../internals/hooks/date-helpers-hooks");
25
25
  var _timePickerToolbarClasses = require("./timePickerToolbarClasses");
26
26
  var _dateUtils = require("../internals/utils/date-utils");
27
+ var _hooks = require("../hooks");
27
28
  var _jsxRuntime = require("react/jsx-runtime");
28
- const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "view", "onViewChange", "views", "disabled", "readOnly", "className"];
29
+ const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "view", "onViewChange", "views", "className"];
29
30
  const useUtilityClasses = ownerState => {
30
31
  const {
31
32
  isLandscape,
@@ -135,14 +136,16 @@ function TimePickerToolbar(inProps) {
135
136
  view,
136
137
  onViewChange,
137
138
  views,
138
- disabled,
139
- readOnly,
140
139
  className
141
140
  } = props,
142
141
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
143
142
  const utils = (0, _useUtils.useUtils)();
144
143
  const translations = (0, _usePickerTranslations.usePickerTranslations)();
145
144
  const isRtl = (0, _RtlProvider.useRtl)();
145
+ const {
146
+ disabled,
147
+ readOnly
148
+ } = (0, _hooks.usePickerContext)();
146
149
  const showAmPmControl = Boolean(ampm && !ampmInClock && views.includes('hours'));
147
150
  const {
148
151
  meridiemMode,
@@ -223,12 +226,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
223
226
  */
224
227
  classes: _propTypes.default.object,
225
228
  className: _propTypes.default.string,
226
- /**
227
- * If `true`, the component is disabled.
228
- * When disabled, the value cannot be changed and no interaction is possible.
229
- * @default false
230
- */
231
- disabled: _propTypes.default.bool,
232
229
  /**
233
230
  * If `true`, show the toolbar even in desktop mode.
234
231
  * @default `true` for Desktop, `false` for Mobile.
@@ -242,12 +239,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
242
239
  * @param {TView} view The view to open
243
240
  */
244
241
  onViewChange: _propTypes.default.func.isRequired,
245
- /**
246
- * If `true`, the component is read-only.
247
- * When read-only, the value cannot be changed but the user can interact with the interface.
248
- * @default false
249
- */
250
- readOnly: _propTypes.default.bool,
251
242
  /**
252
243
  * The system prop that allows defining system overrides as well as additional CSS styles.
253
244
  */
@@ -111,6 +111,7 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
111
111
  timezone: timezoneProp,
112
112
  value: valueProp,
113
113
  defaultValue,
114
+ referenceDate: referenceDateProp,
114
115
  onChange,
115
116
  valueManager: _valueManagers.singleItemValueManager
116
117
  });
@@ -14,7 +14,7 @@ var _useField = require("../internals/hooks/useField/useField.utils");
14
14
  var _usePickerTranslations = require("./usePickerTranslations");
15
15
  /**
16
16
  * Returns the parsed format to be rendered in the field when there is no value or in other parts of the Picker.
17
- * This format is localized (e.g: `AAAA` for the year with the French locale) and cannot be parsed by your date library.
17
+ * This format is localized (for example `AAAA` for the year with the French locale) and cannot be parsed by your date library.
18
18
  * @param {object} The parameters needed to build the placeholder.
19
19
  * @param {string} params.format Format of the date to use.
20
20
  * @param {'dense' | 'spacious'} params.formatDensity Density of the format (setting `formatDensity` to `"spacious"` will add a space before and after each `/`, `-` and `.` character).
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v8.0.0-alpha.0
2
+ * @mui/x-date-pickers v8.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -15,7 +15,9 @@ const PickerPrivateContext = exports.PickerPrivateContext = /*#__PURE__*/React.c
15
15
  isPickerDisabled: false,
16
16
  isPickerReadOnly: false,
17
17
  isPickerValueEmpty: false,
18
- isPickerOpen: false
18
+ isPickerOpen: false,
19
+ pickerVariant: 'desktop',
20
+ pickerOrientation: 'portrait'
19
21
  }
20
22
  });
21
23
 
@@ -18,8 +18,9 @@ var _useSlotProps3 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
18
18
  var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
19
19
  var _icons = require("../../../icons");
20
20
  var _pickersArrowSwitcherClasses = require("./pickersArrowSwitcherClasses");
21
+ var _usePickerPrivateContext = require("../../hooks/usePickerPrivateContext");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
- const _excluded = ["children", "className", "slots", "slotProps", "isNextDisabled", "isNextHidden", "onGoToNext", "nextLabel", "isPreviousDisabled", "isPreviousHidden", "onGoToPrevious", "previousLabel", "labelId"],
23
+ const _excluded = ["children", "className", "slots", "slotProps", "isNextDisabled", "isNextHidden", "onGoToNext", "nextLabel", "isPreviousDisabled", "isPreviousHidden", "onGoToPrevious", "previousLabel", "labelId", "classes"],
23
24
  _excluded2 = ["ownerState"],
24
25
  _excluded3 = ["ownerState"];
25
26
  const PickersArrowSwitcherRoot = (0, _styles.styled)('div', {
@@ -52,10 +53,7 @@ const PickersArrowSwitcherButton = (0, _styles.styled)(_IconButton.default, {
52
53
  }
53
54
  }]
54
55
  });
55
- const useUtilityClasses = ownerState => {
56
- const {
57
- classes
58
- } = ownerState;
56
+ const useUtilityClasses = classes => {
59
57
  const slots = {
60
58
  root: ['root'],
61
59
  spacer: ['spacer'],
@@ -86,11 +84,14 @@ const PickersArrowSwitcher = exports.PickersArrowSwitcher = /*#__PURE__*/React.f
86
84
  isPreviousHidden,
87
85
  onGoToPrevious,
88
86
  previousLabel,
89
- labelId
87
+ labelId,
88
+ classes: classesProp
90
89
  } = props,
91
90
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
92
- const ownerState = props;
93
- const classes = useUtilityClasses(ownerState);
91
+ const {
92
+ ownerState
93
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
94
+ const classes = useUtilityClasses(classesProp);
94
95
  const nextProps = {
95
96
  isDisabled: isNextDisabled,
96
97
  isHidden: isNextHidden,
@@ -116,7 +117,7 @@ const PickersArrowSwitcher = exports.PickersArrowSwitcher = /*#__PURE__*/React.f
116
117
  onClick: previousProps.goTo
117
118
  },
118
119
  ownerState: (0, _extends2.default)({}, ownerState, {
119
- hidden: previousProps.isHidden
120
+ hidden: previousProps.isHidden ?? false
120
121
  }),
121
122
  className: (0, _clsx.default)(classes.button, classes.previousIconButton)
122
123
  });
@@ -133,7 +134,7 @@ const PickersArrowSwitcher = exports.PickersArrowSwitcher = /*#__PURE__*/React.f
133
134
  onClick: nextProps.goTo
134
135
  },
135
136
  ownerState: (0, _extends2.default)({}, ownerState, {
136
- hidden: nextProps.isHidden
137
+ hidden: nextProps.isHidden ?? false
137
138
  }),
138
139
  className: (0, _clsx.default)(classes.button, classes.nextIconButton)
139
140
  });
@@ -18,13 +18,11 @@ var _jsxRuntime = require("react/jsx-runtime");
18
18
  const _excluded = ["children", "className", "toolbarTitle", "hidden", "titleId", "isLandscape", "classes", "landscapeDirection"];
19
19
  const useUtilityClasses = ownerState => {
20
20
  const {
21
- classes,
22
- isLandscape
21
+ classes
23
22
  } = ownerState;
24
23
  const slots = {
25
24
  root: ['root'],
26
- content: ['content'],
27
- penIconButton: ['penIconButton', isLandscape && 'penIconButtonLandscape']
25
+ content: ['content']
28
26
  };
29
27
  return (0, _composeClasses.default)(slots, _pickersToolbarClasses.getPickersToolbarUtilityClass, classes);
30
28
  };
@@ -74,7 +74,7 @@ const useDesktopPicker = _ref => {
74
74
  localeText,
75
75
  autoFocusView: true,
76
76
  additionalViewProps: {},
77
- wrapperVariant: 'desktop'
77
+ variant: 'desktop'
78
78
  }));
79
79
  const InputAdornment = slots.inputAdornment ?? _InputAdornment.default;
80
80
  const _useSlotProps = (0, _useSlotProps3.default)({
@@ -49,6 +49,7 @@ const useFieldState = params => {
49
49
  timezone: timezoneProp,
50
50
  value: valueProp,
51
51
  defaultValue,
52
+ referenceDate: referenceDateProp,
52
53
  onChange,
53
54
  valueManager
54
55
  });
@@ -71,7 +72,6 @@ const useFieldState = params => {
71
72
  const stateWithoutReferenceDate = {
72
73
  sections,
73
74
  value: valueFromTheOutside,
74
- referenceValue: valueManager.emptyValue,
75
75
  tempValueStrAndroid: null
76
76
  };
77
77
  const granularity = (0, _getDefaultReferenceDate.getSectionTypeGranularity)(sections);
@@ -206,8 +206,9 @@ const useFieldV7TextField = params => {
206
206
  if (focused || !sectionListRef.current) {
207
207
  return;
208
208
  }
209
+ const activeElement = (0, _utils.getActiveElement)(document);
209
210
  setFocused(true);
210
- const isFocusInsideASection = sectionListRef.current.getSectionIndexFromDOMElement((0, _utils.getActiveElement)(document)) != null;
211
+ const isFocusInsideASection = sectionListRef.current.getSectionIndexFromDOMElement(activeElement) != null;
211
212
  if (!isFocusInsideASection) {
212
213
  setSelectedSections(sectionOrder.startIndex);
213
214
  }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useFieldOwnerState = useFieldOwnerState;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _usePickerPrivateContext = require("./usePickerPrivateContext");
12
+ function useFieldOwnerState(parameters) {
13
+ const {
14
+ ownerState: pickerOwnerState
15
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
16
+ return React.useMemo(() => (0, _extends2.default)({}, pickerOwnerState, {
17
+ isFieldDisabled: parameters.disabled ?? false,
18
+ isFieldReadOnly: parameters.readOnly ?? false
19
+ }), [pickerOwnerState, parameters.disabled, parameters.readOnly]);
20
+ }
@@ -66,7 +66,7 @@ const useMobilePicker = _ref => {
66
66
  localeText,
67
67
  autoFocusView: true,
68
68
  additionalViewProps: {},
69
- wrapperVariant: 'mobile'
69
+ variant: 'mobile'
70
70
  }));
71
71
  const Field = slots.field;
72
72
  const fieldProps = (0, _useSlotProps.default)({