@mui/x-date-pickers 8.0.0-alpha.1 → 8.0.0-alpha.3

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 (165) hide show
  1. package/AdapterMoment/AdapterMoment.js +10 -0
  2. package/CHANGELOG.md +330 -7
  3. package/DateCalendar/DateCalendar.types.d.ts +2 -1
  4. package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  5. package/DateCalendar/PickersSlideTransition.js +12 -5
  6. package/DateCalendar/useCalendarState.d.ts +6 -4
  7. package/DateField/DateField.js +5 -4
  8. package/DateField/DateField.types.d.ts +10 -9
  9. package/DatePicker/DatePicker.types.d.ts +3 -3
  10. package/DatePicker/DatePickerToolbar.d.ts +3 -2
  11. package/DatePicker/shared.d.ts +6 -5
  12. package/DateTimeField/DateTimeField.js +5 -4
  13. package/DateTimeField/DateTimeField.types.d.ts +10 -10
  14. package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
  15. package/DateTimePicker/DateTimePickerTabs.js +8 -6
  16. package/DateTimePicker/DateTimePickerToolbar.d.ts +2 -3
  17. package/DateTimePicker/shared.d.ts +6 -6
  18. package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  19. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -1
  20. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -21
  21. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
  22. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
  23. package/PickersActionBar/PickersActionBar.js +8 -1
  24. package/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  25. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +3 -4
  26. package/PickersLayout/PickersLayout.d.ts +7 -5
  27. package/PickersLayout/PickersLayout.js +22 -27
  28. package/PickersLayout/PickersLayout.types.d.ts +14 -15
  29. package/PickersLayout/usePickerLayout.d.ts +5 -4
  30. package/PickersLayout/usePickerLayout.js +19 -12
  31. package/PickersShortcuts/PickersShortcuts.d.ts +7 -6
  32. package/PickersShortcuts/PickersShortcuts.js +8 -1
  33. package/README.md +7 -4
  34. package/TimeField/TimeField.js +5 -4
  35. package/TimeField/TimeField.types.d.ts +10 -10
  36. package/TimePicker/TimePicker.types.d.ts +3 -3
  37. package/TimePicker/TimePickerToolbar.d.ts +2 -3
  38. package/TimePicker/shared.d.ts +6 -6
  39. package/hooks/useParsedFormat.d.ts +2 -2
  40. package/hooks/useParsedFormat.js +1 -1
  41. package/index.js +1 -1
  42. package/internals/components/PickerProvider.d.ts +2 -15
  43. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  44. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
  45. package/internals/components/PickersToolbar.d.ts +3 -3
  46. package/internals/hooks/useClockReferenceDate.d.ts +2 -1
  47. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +14 -14
  48. package/internals/hooks/useField/useField.d.ts +3 -3
  49. package/internals/hooks/useField/useField.types.d.ts +45 -45
  50. package/internals/hooks/useField/useField.utils.d.ts +4 -3
  51. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
  52. package/internals/hooks/useField/useFieldState.d.ts +9 -8
  53. package/internals/hooks/useField/useFieldState.js +0 -1
  54. package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
  55. package/internals/hooks/useFieldOwnerState.d.ts +6 -0
  56. package/internals/hooks/useFieldOwnerState.js +12 -0
  57. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +11 -11
  58. package/internals/hooks/useOpenState.d.ts +3 -2
  59. package/internals/hooks/useOpenState.js +10 -9
  60. package/internals/hooks/usePicker/usePicker.d.ts +3 -3
  61. package/internals/hooks/usePicker/usePicker.js +4 -10
  62. package/internals/hooks/usePicker/usePicker.types.d.ts +7 -7
  63. package/internals/hooks/usePicker/usePickerProvider.d.ts +5 -6
  64. package/internals/hooks/usePicker/usePickerProvider.js +8 -10
  65. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
  66. package/internals/hooks/usePicker/usePickerValue.js +22 -12
  67. package/internals/hooks/usePicker/usePickerValue.types.d.ts +51 -24
  68. package/internals/hooks/usePicker/usePickerViews.d.ts +10 -10
  69. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -6
  70. package/internals/hooks/useValueWithTimezone.d.ts +5 -4
  71. package/internals/hooks/useViews.d.ts +5 -5
  72. package/internals/index.d.ts +4 -2
  73. package/internals/index.js +1 -0
  74. package/internals/models/fields.d.ts +6 -1
  75. package/internals/models/pickers.d.ts +1 -0
  76. package/internals/models/pickers.js +1 -0
  77. package/internals/models/props/basePickerProps.d.ts +4 -3
  78. package/internals/models/props/time.d.ts +2 -1
  79. package/internals/models/props/toolbar.d.ts +2 -1
  80. package/internals/models/value.d.ts +9 -0
  81. package/internals/utils/date-utils.d.ts +1 -1
  82. package/internals/utils/valueManagers.d.ts +4 -3
  83. package/locales/nlNL.js +7 -7
  84. package/models/adapters.d.ts +4 -4
  85. package/models/fields.d.ts +19 -5
  86. package/models/validation.d.ts +2 -1
  87. package/modern/AdapterMoment/AdapterMoment.js +10 -0
  88. package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  89. package/modern/DateCalendar/PickersSlideTransition.js +12 -5
  90. package/modern/DateField/DateField.js +5 -4
  91. package/modern/DateTimeField/DateTimeField.js +5 -4
  92. package/modern/DateTimePicker/DateTimePickerTabs.js +8 -6
  93. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  94. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -21
  95. package/modern/PickersActionBar/PickersActionBar.js +8 -1
  96. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  97. package/modern/PickersLayout/PickersLayout.js +22 -27
  98. package/modern/PickersLayout/usePickerLayout.js +19 -12
  99. package/modern/PickersShortcuts/PickersShortcuts.js +8 -1
  100. package/modern/TimeField/TimeField.js +5 -4
  101. package/modern/hooks/useParsedFormat.js +1 -1
  102. package/modern/index.js +1 -1
  103. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  104. package/modern/internals/hooks/useField/useFieldState.js +0 -1
  105. package/modern/internals/hooks/useFieldOwnerState.js +12 -0
  106. package/modern/internals/hooks/useOpenState.js +10 -9
  107. package/modern/internals/hooks/usePicker/usePicker.js +4 -10
  108. package/modern/internals/hooks/usePicker/usePickerProvider.js +8 -10
  109. package/modern/internals/hooks/usePicker/usePickerValue.js +22 -12
  110. package/modern/internals/index.js +1 -0
  111. package/modern/internals/models/pickers.js +1 -0
  112. package/modern/locales/nlNL.js +7 -7
  113. package/modern/validation/useValidation.js +1 -1
  114. package/modern/validation/validateDate.js +8 -0
  115. package/modern/validation/validateDateTime.js +8 -0
  116. package/modern/validation/validateTime.js +8 -0
  117. package/node/AdapterMoment/AdapterMoment.js +10 -0
  118. package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
  119. package/node/DateCalendar/PickersSlideTransition.js +12 -5
  120. package/node/DateField/DateField.js +5 -4
  121. package/node/DateTimeField/DateTimeField.js +5 -4
  122. package/node/DateTimePicker/DateTimePickerTabs.js +8 -6
  123. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
  124. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +11 -22
  125. package/node/PickersActionBar/PickersActionBar.js +8 -1
  126. package/node/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
  127. package/node/PickersLayout/PickersLayout.js +22 -27
  128. package/node/PickersLayout/usePickerLayout.js +19 -12
  129. package/node/PickersShortcuts/PickersShortcuts.js +8 -1
  130. package/node/TimeField/TimeField.js +5 -4
  131. package/node/hooks/useParsedFormat.js +1 -1
  132. package/node/index.js +1 -1
  133. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
  134. package/node/internals/hooks/useField/useFieldState.js +0 -1
  135. package/node/internals/hooks/useFieldOwnerState.js +20 -0
  136. package/node/internals/hooks/useOpenState.js +10 -9
  137. package/node/internals/hooks/usePicker/usePicker.js +5 -10
  138. package/node/internals/hooks/usePicker/usePickerProvider.js +9 -11
  139. package/node/internals/hooks/usePicker/usePickerValue.js +22 -11
  140. package/node/internals/index.js +7 -0
  141. package/node/internals/models/pickers.js +5 -0
  142. package/node/locales/nlNL.js +7 -7
  143. package/node/validation/useValidation.js +1 -1
  144. package/node/validation/validateDate.js +8 -0
  145. package/node/validation/validateDateTime.js +8 -0
  146. package/node/validation/validateTime.js +8 -0
  147. package/package.json +2 -2
  148. package/themeAugmentation/overrides.d.ts +1 -1
  149. package/themeAugmentation/props.d.ts +3 -2
  150. package/validation/useValidation.d.ts +7 -6
  151. package/validation/useValidation.js +1 -1
  152. package/validation/validateDate.d.ts +12 -3
  153. package/validation/validateDate.js +8 -0
  154. package/validation/validateDateTime.d.ts +12 -4
  155. package/validation/validateDateTime.js +8 -0
  156. package/validation/validateTime.d.ts +12 -3
  157. package/validation/validateTime.js +8 -0
  158. package/internals/hooks/useIsLandscape.d.ts +0 -4
  159. package/internals/hooks/useIsLandscape.js +0 -35
  160. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -32
  161. package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  162. package/modern/internals/hooks/useIsLandscape.js +0 -35
  163. package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
  164. package/node/internals/hooks/useIsLandscape.js +0 -43
  165. package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -38
@@ -24,13 +24,11 @@ var _icons = require("../icons");
24
24
  var _PickersArrowSwitcher = require("../internals/components/PickersArrowSwitcher");
25
25
  var _dateHelpersHooks = require("../internals/hooks/date-helpers-hooks");
26
26
  var _pickersCalendarHeaderClasses = require("./pickersCalendarHeaderClasses");
27
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
27
28
  var _jsxRuntime = require("react/jsx-runtime");
28
- const _excluded = ["slots", "slotProps", "currentMonth", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onMonthChange", "onViewChange", "view", "reduceAnimations", "views", "labelId", "className", "timezone", "format"],
29
+ const _excluded = ["slots", "slotProps", "currentMonth", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onMonthChange", "onViewChange", "view", "reduceAnimations", "views", "labelId", "className", "classes", "timezone", "format"],
29
30
  _excluded2 = ["ownerState"];
30
- const useUtilityClasses = ownerState => {
31
- const {
32
- classes
33
- } = ownerState;
31
+ const useUtilityClasses = classes => {
34
32
  const slots = {
35
33
  root: ['root'],
36
34
  labelContainer: ['labelContainer'],
@@ -139,12 +137,15 @@ const PickersCalendarHeader = exports.PickersCalendarHeader = /*#__PURE__*/React
139
137
  views,
140
138
  labelId,
141
139
  className,
140
+ classes: classesProp,
142
141
  timezone,
143
142
  format = `${utils.formats.month} ${utils.formats.year}`
144
143
  } = props,
145
144
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
146
- const ownerState = props;
147
- const classes = useUtilityClasses(props);
145
+ const {
146
+ ownerState
147
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
148
+ const classes = useUtilityClasses(classesProp);
148
149
  const SwitchViewButton = slots?.switchViewButton ?? PickersCalendarHeaderSwitchViewButton;
149
150
  const switchViewButtonProps = (0, _useSlotProps2.default)({
150
151
  elementType: SwitchViewButton,
@@ -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,11 +157,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
152
157
  */
153
158
  classes: _propTypes.default.object,
154
159
  className: _propTypes.default.string,
155
- isLandscape: _propTypes.default.bool.isRequired,
156
- /**
157
- * `true` if the application is in right-to-left direction.
158
- */
159
- isRtl: _propTypes.default.bool.isRequired,
160
160
  isValid: _propTypes.default.func.isRequired,
161
161
  onAccept: _propTypes.default.func.isRequired,
162
162
  onCancel: _propTypes.default.func.isRequired,
@@ -168,10 +168,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
168
168
  onSelectShortcut: _propTypes.default.func.isRequired,
169
169
  onSetToday: _propTypes.default.func.isRequired,
170
170
  onViewChange: _propTypes.default.func.isRequired,
171
- /**
172
- * Force rendering in particular orientation.
173
- */
174
- orientation: _propTypes.default.oneOf(['landscape', 'portrait']),
175
171
  /**
176
172
  * The props used for each component slot.
177
173
  * @default {}
@@ -186,8 +182,7 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
186
182
  * The system prop that allows defining system overrides as well as additional CSS styles.
187
183
  */
188
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]),
189
- value: _propTypes.default.any,
185
+ value: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.object]),
190
186
  view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
191
- views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired,
192
- wrapperVariant: _propTypes.default.oneOf(['desktop', 'mobile'])
187
+ views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
193
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,7 +57,6 @@ const usePickerLayout = props => {
51
57
  onChange,
52
58
  onSelectShortcut,
53
59
  isValid,
54
- isLandscape,
55
60
  children,
56
61
  slots,
57
62
  slotProps,
@@ -61,9 +66,8 @@ const usePickerLayout = props => {
61
66
  // - For pickers value: PickerValidDate | null
62
67
  // - For range pickers value: [PickerValidDate | null, PickerValidDate | null]
63
68
  } = props;
64
- const ownerState = (0, _extends2.default)({}, pickersOwnerState, {
65
- wrapperVariant,
66
- isLandscape
69
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
70
+ isRtl
67
71
  });
68
72
  const classes = useUtilityClasses(classesProp, ownerState);
69
73
 
@@ -77,7 +81,7 @@ const usePickerLayout = props => {
77
81
  onClear,
78
82
  onCancel,
79
83
  onSetToday,
80
- actions: wrapperVariant === 'desktop' ? [] : ['cancel', 'accept']
84
+ actions: variant === 'desktop' ? [] : ['cancel', 'accept']
81
85
  },
82
86
  className: classes.actionBar,
83
87
  ownerState
@@ -90,7 +94,8 @@ const usePickerLayout = props => {
90
94
  elementType: Toolbar,
91
95
  externalSlotProps: slotProps?.toolbar,
92
96
  additionalProps: {
93
- isLandscape,
97
+ isLandscape: orientation === 'landscape',
98
+ // Will be removed in a follow up PR?
94
99
  onChange,
95
100
  value,
96
101
  view,
@@ -120,7 +125,8 @@ const usePickerLayout = props => {
120
125
  externalSlotProps: slotProps?.shortcuts,
121
126
  additionalProps: {
122
127
  isValid,
123
- isLandscape,
128
+ isLandscape: orientation === 'landscape',
129
+ // Will be removed in a follow up PR?
124
130
  onChange: onSelectShortcut
125
131
  },
126
132
  className: classes.shortcuts,
@@ -132,7 +138,8 @@ const usePickerLayout = props => {
132
138
  content,
133
139
  tabs,
134
140
  actionBar,
135
- shortcuts
141
+ shortcuts,
142
+ ownerState
136
143
  };
137
144
  };
138
145
  var _default = exports.default = usePickerLayout;
@@ -10,6 +10,7 @@ exports.PickersShortcuts = PickersShortcuts;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
+ var _styles = require("@mui/material/styles");
13
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
14
15
  var _List = _interopRequireDefault(require("@mui/material/List"));
15
16
  var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
@@ -18,6 +19,12 @@ var _dimensions = require("../internals/constants/dimensions");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  const _excluded = ["items", "changeImportance", "isLandscape", "onChange", "isValid"],
20
21
  _excluded2 = ["getValue"];
22
+ const PickersShortcutsRoot = (0, _styles.styled)(_List.default, {
23
+ name: 'MuiPickersLayout',
24
+ slot: 'Shortcuts',
25
+ overridesResolver: (_, styles) => styles.shortcuts
26
+ })({});
27
+
21
28
  /**
22
29
  * Demos:
23
30
  *
@@ -54,7 +61,7 @@ function PickersShortcuts(props) {
54
61
  disabled: !isValid(newValue)
55
62
  });
56
63
  });
57
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_List.default, (0, _extends2.default)({
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersShortcutsRoot, (0, _extends2.default)({
58
65
  dense: true,
59
66
  sx: [{
60
67
  maxHeight: _dimensions.VIEW_HEIGHT,
@@ -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, '')`.
@@ -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.1
2
+ * @mui/x-date-pickers v8.0.0-alpha.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -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
  });
@@ -72,7 +72,6 @@ const useFieldState = params => {
72
72
  const stateWithoutReferenceDate = {
73
73
  sections,
74
74
  value: valueFromTheOutside,
75
- referenceValue: valueManager.emptyValue,
76
75
  tempValueStrAndroid: null
77
76
  };
78
77
  const granularity = (0, _getDefaultReferenceDate.getSectionTypeGranularity)(sections);
@@ -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
+ }
@@ -12,7 +12,7 @@ const useOpenState = ({
12
12
  onClose
13
13
  }) => {
14
14
  const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;
15
- const [openState, setIsOpenState] = React.useState(false);
15
+ const [openState, setOpenState] = React.useState(false);
16
16
 
17
17
  // It is required to update inner state in useEffect in order to avoid situation when
18
18
  // Our component is not mounted yet, but `open` state is set to `true` (for example initially opened)
@@ -21,23 +21,24 @@ const useOpenState = ({
21
21
  if (typeof open !== 'boolean') {
22
22
  throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');
23
23
  }
24
- setIsOpenState(open);
24
+ setOpenState(open);
25
25
  }
26
26
  }, [isControllingOpenProp, open]);
27
- const setIsOpen = React.useCallback(newIsOpen => {
27
+ const setOpen = React.useCallback(action => {
28
+ const newOpen = typeof action === 'function' ? action(openState) : action;
28
29
  if (!isControllingOpenProp) {
29
- setIsOpenState(newIsOpen);
30
+ setOpenState(newOpen);
30
31
  }
31
- if (newIsOpen && onOpen) {
32
+ if (newOpen && onOpen) {
32
33
  onOpen();
33
34
  }
34
- if (!newIsOpen && onClose) {
35
+ if (!newOpen && onClose) {
35
36
  onClose();
36
37
  }
37
- }, [isControllingOpenProp, onOpen, onClose]);
38
+ }, [isControllingOpenProp, onOpen, onClose, openState]);
38
39
  return {
39
- isOpen: openState,
40
- setIsOpen
40
+ open: openState,
41
+ setOpen
41
42
  };
42
43
  };
43
44
  exports.useOpenState = useOpenState;
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.usePicker = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
  var _warning = require("@mui/x-internals/warning");
8
10
  var _usePickerValue = require("./usePickerValue");
9
11
  var _usePickerViews = require("./usePickerViews");
10
- var _usePickerLayoutProps = require("./usePickerLayoutProps");
11
12
  var _usePickerProvider = require("./usePickerProvider");
12
13
  const usePicker = ({
13
14
  props,
@@ -41,19 +42,13 @@ const usePicker = ({
41
42
  propsFromPickerValue: pickerValueResponse.viewProps,
42
43
  rendererInterceptor
43
44
  });
44
- const pickerLayoutResponse = (0, _usePickerLayoutProps.usePickerLayoutProps)({
45
- props,
46
- variant,
47
- propsFromPickerValue: pickerValueResponse.layoutProps,
48
- propsFromPickerViews: pickerViewsResponse.layoutProps
49
- });
50
45
  const providerProps = (0, _usePickerProvider.usePickerProvider)({
51
46
  props,
52
- pickerValueResponse,
53
47
  localeText,
54
48
  valueManager,
55
49
  variant,
56
- views: pickerViewsResponse.views
50
+ views: pickerViewsResponse.views,
51
+ paramsFromUsePickerValue: pickerValueResponse.provider
57
52
  });
58
53
  return {
59
54
  // Picker value
@@ -65,7 +60,7 @@ const usePicker = ({
65
60
  hasUIView: pickerViewsResponse.hasUIView,
66
61
  shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,
67
62
  // Picker layout
68
- layoutProps: pickerLayoutResponse.layoutProps,
63
+ layoutProps: (0, _extends2.default)({}, pickerViewsResponse.layoutProps, pickerValueResponse.layoutProps),
69
64
  // Picker provider
70
65
  providerProps,
71
66
  // Picker owner state
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.usePickerOrientation = void 0;
9
9
  exports.usePickerProvider = usePickerProvider;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
12
13
  var _useUtils = require("../useUtils");
@@ -46,31 +47,28 @@ exports.usePickerOrientation = usePickerOrientation;
46
47
  function usePickerProvider(parameters) {
47
48
  const {
48
49
  props,
49
- pickerValueResponse,
50
50
  valueManager,
51
51
  localeText,
52
52
  variant,
53
- views
53
+ views,
54
+ paramsFromUsePickerValue
54
55
  } = parameters;
55
56
  const utils = (0, _useUtils.useUtils)();
56
57
  const orientation = usePickerOrientation(views, props.orientation);
57
58
  const ownerState = React.useMemo(() => ({
58
- isPickerValueEmpty: valueManager.areValuesEqual(utils, pickerValueResponse.viewProps.value, valueManager.emptyValue),
59
- isPickerOpen: pickerValueResponse.open,
59
+ isPickerValueEmpty: valueManager.areValuesEqual(utils, paramsFromUsePickerValue.value, valueManager.emptyValue),
60
+ isPickerOpen: paramsFromUsePickerValue.contextValue.open,
60
61
  isPickerDisabled: props.disabled ?? false,
61
62
  isPickerReadOnly: props.readOnly ?? false,
62
63
  pickerOrientation: orientation,
63
64
  pickerVariant: variant
64
- }), [utils, valueManager, pickerValueResponse.viewProps.value, pickerValueResponse.open, orientation, variant, props.disabled, props.readOnly]);
65
- const contextValue = React.useMemo(() => ({
66
- onOpen: pickerValueResponse.actions.onOpen,
67
- onClose: pickerValueResponse.actions.onClose,
68
- open: pickerValueResponse.open,
65
+ }), [utils, valueManager, paramsFromUsePickerValue.value, paramsFromUsePickerValue.contextValue.open, orientation, variant, props.disabled, props.readOnly]);
66
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, paramsFromUsePickerValue.contextValue, {
69
67
  disabled: props.disabled ?? false,
70
68
  readOnly: props.readOnly ?? false,
71
69
  variant,
72
70
  orientation
73
- }), [pickerValueResponse.actions.onOpen, pickerValueResponse.actions.onClose, pickerValueResponse.open, variant, orientation, props.disabled, props.readOnly]);
71
+ }), [paramsFromUsePickerValue.contextValue, variant, orientation, props.disabled, props.readOnly]);
74
72
  const privateContextValue = React.useMemo(() => ({
75
73
  ownerState
76
74
  }), [ownerState]);
@@ -158,8 +158,8 @@ const usePickerValue = ({
158
158
  const utils = (0, _useUtils.useUtils)();
159
159
  const adapter = (0, _useUtils.useLocalizationContext)();
160
160
  const {
161
- isOpen,
162
- setIsOpen
161
+ open,
162
+ setOpen
163
163
  } = (0, _useOpenState.useOpenState)(props);
164
164
  const {
165
165
  timezone,
@@ -245,7 +245,7 @@ const usePickerValue = ({
245
245
  onAccept(action.value, getContext());
246
246
  }
247
247
  if (shouldClose) {
248
- setIsOpen(false);
248
+ setOpen(false);
249
249
  }
250
250
  });
251
251
  if (dateState.lastControlledValue !== inValueWithoutRenderTimezone) {
@@ -296,11 +296,11 @@ const usePickerValue = ({
296
296
  });
297
297
  const handleOpen = (0, _useEventCallback.default)(event => {
298
298
  event.preventDefault();
299
- setIsOpen(true);
299
+ setOpen(true);
300
300
  });
301
301
  const handleClose = (0, _useEventCallback.default)(event => {
302
302
  event?.preventDefault();
303
- setIsOpen(false);
303
+ setOpen(false);
304
304
  });
305
305
  const handleChange = (0, _useEventCallback.default)((newValue, selectionState = 'partial') => updateDate({
306
306
  name: 'setValueFromView',
@@ -331,12 +331,12 @@ const usePickerValue = ({
331
331
  value: dateState.draft,
332
332
  onChange: handleChangeFromField
333
333
  };
334
- const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
334
+ const valueWithoutError = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
335
335
  const viewResponse = {
336
- value: viewValue,
336
+ value: valueWithoutError,
337
337
  onChange: handleChange,
338
338
  onClose: handleClose,
339
- open: isOpen
339
+ open
340
340
  };
341
341
  const isValid = testedValue => {
342
342
  const error = validator({
@@ -348,17 +348,28 @@ const usePickerValue = ({
348
348
  return !valueManager.hasError(error);
349
349
  };
350
350
  const layoutResponse = (0, _extends2.default)({}, actions, {
351
- value: viewValue,
351
+ value: valueWithoutError,
352
352
  onChange: handleChange,
353
353
  onSelectShortcut: handleSelectShortcut,
354
354
  isValid
355
355
  });
356
+ const contextValue = React.useMemo(() => {
357
+ return {
358
+ open,
359
+ setOpen
360
+ };
361
+ }, [open, setOpen]);
362
+ const providerParams = {
363
+ value: valueWithoutError,
364
+ contextValue
365
+ };
356
366
  return {
357
- open: isOpen,
367
+ open,
358
368
  fieldProps: fieldResponse,
359
369
  viewProps: viewResponse,
360
370
  layoutProps: layoutResponse,
361
- actions
371
+ actions,
372
+ provider: providerParams
362
373
  };
363
374
  };
364
375
  exports.usePickerValue = usePickerValue;