@mui/x-date-pickers 8.0.0-alpha.4 → 8.0.0-alpha.6

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 (205) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/DatePicker/DatePickerToolbar.d.ts +1 -2
  3. package/DatePicker/DatePickerToolbar.js +6 -17
  4. package/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  5. package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
  6. package/DateTimePicker/DateTimePickerTabs.js +6 -13
  7. package/DateTimePicker/DateTimePickerToolbar.d.ts +8 -4
  8. package/DateTimePicker/DateTimePickerToolbar.js +13 -24
  9. package/DateTimePicker/shared.d.ts +2 -2
  10. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +2 -3
  11. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
  12. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +1 -2
  13. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
  14. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  15. package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
  16. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
  17. package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
  18. package/MonthCalendar/MonthCalendar.d.ts +1 -1
  19. package/MonthCalendar/MonthCalendar.js +31 -11
  20. package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
  21. package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
  22. package/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  23. package/MonthCalendar/index.d.ts +0 -3
  24. package/MonthCalendar/index.js +1 -2
  25. package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
  26. package/MonthCalendar/monthCalendarClasses.js +1 -1
  27. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  28. package/PickersActionBar/PickersActionBar.d.ts +0 -4
  29. package/PickersActionBar/PickersActionBar.js +12 -13
  30. package/PickersLayout/PickersLayout.d.ts +2 -2
  31. package/PickersLayout/PickersLayout.js +1 -11
  32. package/PickersLayout/PickersLayout.types.d.ts +12 -14
  33. package/PickersLayout/usePickerLayout.d.ts +2 -2
  34. package/PickersLayout/usePickerLayout.js +3 -18
  35. package/PickersSectionList/PickersSectionList.js +21 -16
  36. package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
  37. package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
  38. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  39. package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
  40. package/PickersTextField/PickersInput/PickersInput.js +20 -14
  41. package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
  42. package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  43. package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
  44. package/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  45. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
  46. package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
  47. package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  48. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  49. package/PickersTextField/PickersTextField.js +75 -62
  50. package/PickersTextField/PickersTextField.types.d.ts +43 -4
  51. package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
  52. package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  53. package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
  54. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
  55. package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
  56. package/TimeClock/Clock.d.ts +4 -0
  57. package/TimeClock/Clock.js +9 -6
  58. package/TimeClock/TimeClock.js +21 -4
  59. package/TimePicker/TimePicker.types.d.ts +2 -2
  60. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  61. package/TimePicker/TimePickerToolbar.js +6 -20
  62. package/YearCalendar/YearCalendar.js +46 -13
  63. package/YearCalendar/YearCalendar.types.d.ts +2 -2
  64. package/YearCalendar/YearCalendarButton.d.ts +23 -0
  65. package/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  66. package/YearCalendar/index.d.ts +0 -3
  67. package/YearCalendar/index.js +1 -2
  68. package/YearCalendar/yearCalendarClasses.d.ts +7 -1
  69. package/YearCalendar/yearCalendarClasses.js +1 -1
  70. package/hooks/index.d.ts +1 -0
  71. package/hooks/index.js +2 -1
  72. package/hooks/usePickerActionsContext.d.ts +5 -0
  73. package/hooks/usePickerActionsContext.js +16 -0
  74. package/hooks/usePickerContext.d.ts +3 -1
  75. package/hooks/usePickerContext.js +0 -1
  76. package/index.js +1 -1
  77. package/internals/components/PickerProvider.d.ts +11 -6
  78. package/internals/components/PickerProvider.js +12 -6
  79. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  80. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
  81. package/internals/components/PickersModalDialog.d.ts +1 -3
  82. package/internals/components/PickersModalDialog.js +9 -3
  83. package/internals/components/PickersPopper.d.ts +1 -3
  84. package/internals/components/PickersPopper.js +11 -6
  85. package/internals/components/PickersToolbar.d.ts +3 -3
  86. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
  87. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +5 -5
  88. package/internals/hooks/useFieldOwnerState.d.ts +1 -0
  89. package/internals/hooks/useFieldOwnerState.js +6 -2
  90. package/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
  91. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +5 -5
  92. package/internals/hooks/usePicker/usePicker.js +1 -3
  93. package/internals/hooks/usePicker/usePicker.types.d.ts +2 -2
  94. package/internals/hooks/usePicker/usePickerProvider.js +5 -4
  95. package/internals/hooks/usePicker/usePickerValue.js +46 -64
  96. package/internals/hooks/usePicker/usePickerValue.types.d.ts +38 -17
  97. package/internals/hooks/usePicker/usePickerViews.d.ts +15 -4
  98. package/internals/hooks/usePicker/usePickerViews.js +9 -7
  99. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +4 -4
  100. package/internals/index.d.ts +4 -4
  101. package/internals/index.js +1 -1
  102. package/internals/models/props/tabs.d.ts +0 -13
  103. package/internals/models/props/toolbar.d.ts +1 -16
  104. package/models/fields.d.ts +11 -1
  105. package/modern/DatePicker/DatePickerToolbar.js +6 -17
  106. package/modern/DateTimePicker/DateTimePickerTabs.js +6 -13
  107. package/modern/DateTimePicker/DateTimePickerToolbar.js +13 -24
  108. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
  109. package/modern/MonthCalendar/MonthCalendar.js +31 -11
  110. package/modern/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  111. package/modern/MonthCalendar/index.js +1 -2
  112. package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
  113. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  114. package/modern/PickersActionBar/PickersActionBar.js +12 -13
  115. package/modern/PickersLayout/PickersLayout.js +1 -11
  116. package/modern/PickersLayout/usePickerLayout.js +3 -18
  117. package/modern/PickersSectionList/PickersSectionList.js +21 -16
  118. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  119. package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
  120. package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  121. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  122. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  123. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  124. package/modern/PickersTextField/PickersTextField.js +75 -62
  125. package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  126. package/modern/TimeClock/Clock.js +9 -6
  127. package/modern/TimeClock/TimeClock.js +21 -4
  128. package/modern/TimePicker/TimePickerToolbar.js +6 -20
  129. package/modern/YearCalendar/YearCalendar.js +46 -13
  130. package/modern/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  131. package/modern/YearCalendar/index.js +1 -2
  132. package/modern/YearCalendar/yearCalendarClasses.js +1 -1
  133. package/modern/hooks/index.js +2 -1
  134. package/modern/hooks/usePickerActionsContext.js +16 -0
  135. package/modern/hooks/usePickerContext.js +0 -1
  136. package/modern/index.js +1 -1
  137. package/modern/internals/components/PickerProvider.js +12 -6
  138. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  139. package/modern/internals/components/PickersModalDialog.js +9 -3
  140. package/modern/internals/components/PickersPopper.js +11 -6
  141. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
  142. package/modern/internals/hooks/useFieldOwnerState.js +6 -2
  143. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
  144. package/modern/internals/hooks/usePicker/usePicker.js +1 -3
  145. package/modern/internals/hooks/usePicker/usePickerProvider.js +5 -4
  146. package/modern/internals/hooks/usePicker/usePickerValue.js +46 -64
  147. package/modern/internals/hooks/usePicker/usePickerViews.js +9 -7
  148. package/modern/internals/index.js +1 -1
  149. package/node/DatePicker/DatePickerToolbar.js +6 -17
  150. package/node/DateTimePicker/DateTimePickerTabs.js +6 -13
  151. package/node/DateTimePicker/DateTimePickerToolbar.js +14 -25
  152. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
  153. package/node/MonthCalendar/MonthCalendar.js +31 -11
  154. package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  155. package/node/MonthCalendar/index.js +1 -8
  156. package/node/MonthCalendar/monthCalendarClasses.js +1 -1
  157. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  158. package/node/PickersActionBar/PickersActionBar.js +12 -13
  159. package/node/PickersLayout/PickersLayout.js +1 -11
  160. package/node/PickersLayout/usePickerLayout.js +3 -18
  161. package/node/PickersSectionList/PickersSectionList.js +21 -16
  162. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  163. package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
  164. package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  165. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  166. package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  167. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  168. package/node/PickersTextField/PickersTextField.js +75 -62
  169. package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
  170. package/node/TimeClock/Clock.js +9 -6
  171. package/node/TimeClock/TimeClock.js +21 -4
  172. package/node/TimePicker/TimePickerToolbar.js +6 -20
  173. package/node/YearCalendar/YearCalendar.js +45 -12
  174. package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  175. package/node/YearCalendar/index.js +1 -8
  176. package/node/YearCalendar/yearCalendarClasses.js +1 -1
  177. package/node/hooks/index.js +8 -1
  178. package/node/hooks/usePickerActionsContext.js +22 -0
  179. package/node/index.js +1 -1
  180. package/node/internals/components/PickerProvider.js +13 -7
  181. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  182. package/node/internals/components/PickersModalDialog.js +9 -3
  183. package/node/internals/components/PickersPopper.js +11 -6
  184. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
  185. package/node/internals/hooks/useFieldOwnerState.js +6 -2
  186. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
  187. package/node/internals/hooks/usePicker/usePicker.js +1 -3
  188. package/node/internals/hooks/usePicker/usePickerProvider.js +5 -4
  189. package/node/internals/hooks/usePicker/usePickerValue.js +46 -64
  190. package/node/internals/hooks/usePicker/usePickerViews.js +9 -7
  191. package/node/internals/index.js +2 -2
  192. package/package.json +3 -3
  193. package/themeAugmentation/components.d.ts +0 -8
  194. package/themeAugmentation/overrides.d.ts +2 -4
  195. package/themeAugmentation/props.d.ts +4 -7
  196. package/MonthCalendar/PickersMonth.d.ts +0 -28
  197. package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
  198. package/MonthCalendar/pickersMonthClasses.js +0 -5
  199. package/YearCalendar/PickersYear.d.ts +0 -27
  200. package/YearCalendar/pickersYearClasses.d.ts +0 -13
  201. package/YearCalendar/pickersYearClasses.js +0 -5
  202. package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
  203. package/modern/YearCalendar/pickersYearClasses.js +0 -5
  204. package/node/MonthCalendar/pickersMonthClasses.js +0 -12
  205. package/node/YearCalendar/pickersYearClasses.js +0 -12
@@ -59,8 +59,6 @@ const useDesktopPicker = _ref => {
59
59
  const labelId = (0, _useId.default)();
60
60
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
61
61
  const {
62
- open,
63
- actions,
64
62
  hasUIView,
65
63
  layoutProps,
66
64
  providerProps,
@@ -92,7 +90,11 @@ const useDesktopPicker = _ref => {
92
90
  externalSlotProps: innerSlotProps?.openPickerButton,
93
91
  additionalProps: {
94
92
  disabled: disabled || readOnly,
95
- onClick: open ? actions.onClose : actions.onOpen,
93
+ // This direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
94
+ onClick: event => {
95
+ event.preventDefault();
96
+ providerProps.contextValue.setOpen(prevOpen => !prevOpen);
97
+ },
96
98
  'aria-label': getOpenDialogAriaText(pickerFieldProps.value),
97
99
  edge: inputAdornmentProps.position
98
100
  },
@@ -128,7 +130,7 @@ const useDesktopPicker = _ref => {
128
130
  sx,
129
131
  label,
130
132
  name,
131
- focused: open ? true : undefined
133
+ focused: providerProps.contextValue.open ? true : undefined
132
134
  }, isToolbarHidden && {
133
135
  id: labelId
134
136
  }, !!inputRef && {
@@ -177,12 +179,10 @@ const useDesktopPicker = _ref => {
177
179
  slots: slotsForField,
178
180
  slotProps: slotProps,
179
181
  unstableFieldRef: handleFieldRef
180
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersPopper.PickersPopper, (0, _extends2.default)({
182
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersPopper.PickersPopper, {
181
183
  role: "dialog",
182
184
  placement: "bottom-start",
183
- anchorEl: containerRef.current
184
- }, actions, {
185
- open: open,
185
+ anchorEl: containerRef.current,
186
186
  slots: slots,
187
187
  slotProps: slotProps,
188
188
  shouldRestoreFocus: shouldRestoreFocus,
@@ -192,7 +192,7 @@ const useDesktopPicker = _ref => {
192
192
  slotProps: slotProps,
193
193
  children: renderCurrentView()
194
194
  }))
195
- }))]
195
+ })]
196
196
  }));
197
197
  return {
198
198
  renderPicker
@@ -8,13 +8,17 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useFieldOwnerState = useFieldOwnerState;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _RtlProvider = require("@mui/system/RtlProvider");
11
12
  var _usePickerPrivateContext = require("./usePickerPrivateContext");
12
13
  function useFieldOwnerState(parameters) {
13
14
  const {
14
15
  ownerState: pickerOwnerState
15
16
  } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
17
+ const isRtl = (0, _RtlProvider.useRtl)();
16
18
  return React.useMemo(() => (0, _extends2.default)({}, pickerOwnerState, {
17
19
  isFieldDisabled: parameters.disabled ?? false,
18
- isFieldReadOnly: parameters.readOnly ?? false
19
- }), [pickerOwnerState, parameters.disabled, parameters.readOnly]);
20
+ isFieldReadOnly: parameters.readOnly ?? false,
21
+ isFieldRequired: parameters.required ?? false,
22
+ fieldDirection: isRtl ? 'rtl' : 'ltr'
23
+ }), [pickerOwnerState, parameters.disabled, parameters.readOnly, parameters.required, isRtl]);
20
24
  }
@@ -53,8 +53,6 @@ const useMobilePicker = _ref => {
53
53
  const labelId = (0, _useId.default)();
54
54
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
55
55
  const {
56
- open,
57
- actions,
58
56
  layoutProps,
59
57
  providerProps,
60
58
  renderCurrentView,
@@ -93,8 +91,12 @@ const useMobilePicker = _ref => {
93
91
  }, isToolbarHidden && {
94
92
  id: labelId
95
93
  }, !(disabled || readOnly) && {
96
- onClick: actions.onOpen,
97
- onKeyDown: (0, _utils.onSpaceOrEnter)(actions.onOpen)
94
+ // These direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
95
+ onClick: event => {
96
+ event.preventDefault();
97
+ providerProps.contextValue.setOpen(true);
98
+ },
99
+ onKeyDown: (0, _utils.onSpaceOrEnter)(() => providerProps.contextValue.setOpen(true))
98
100
  }, !!inputRef && {
99
101
  inputRef
100
102
  }),
@@ -131,8 +133,7 @@ const useMobilePicker = _ref => {
131
133
  slots: slotsForField,
132
134
  slotProps: slotProps,
133
135
  unstableFieldRef: handleFieldRef
134
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersModalDialog.PickersModalDialog, (0, _extends2.default)({}, actions, {
135
- open: open,
136
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersModalDialog.PickersModalDialog, {
136
137
  slots: slots,
137
138
  slotProps: slotProps,
138
139
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
@@ -140,7 +141,7 @@ const useMobilePicker = _ref => {
140
141
  slotProps: slotProps,
141
142
  children: renderCurrentView()
142
143
  }))
143
- }))]
144
+ })]
144
145
  }));
145
146
  return {
146
147
  renderPicker
@@ -52,15 +52,13 @@ const usePicker = ({
52
52
  });
53
53
  return {
54
54
  // Picker value
55
- open: pickerValueResponse.open,
56
- actions: pickerValueResponse.actions,
57
55
  fieldProps: pickerValueResponse.fieldProps,
58
56
  // Picker views
59
57
  renderCurrentView: pickerViewsResponse.renderCurrentView,
60
58
  hasUIView: pickerViewsResponse.provider.hasUIView,
61
59
  shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,
62
60
  // Picker layout
63
- layoutProps: (0, _extends2.default)({}, pickerViewsResponse.layoutProps, pickerValueResponse.layoutProps),
61
+ layoutProps: (0, _extends2.default)({}, pickerValueResponse.layoutProps),
64
62
  // Picker provider
65
63
  providerProps,
66
64
  // Picker owner state
@@ -63,18 +63,19 @@ function usePickerProvider(parameters) {
63
63
  pickerOrientation: orientation,
64
64
  pickerVariant: variant
65
65
  }), [utils, valueManager, paramsFromUsePickerValue.value, paramsFromUsePickerValue.contextValue.open, orientation, variant, props.disabled, props.readOnly]);
66
- const contextValue = React.useMemo(() => (0, _extends2.default)({}, paramsFromUsePickerValue.contextValue, {
66
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, {
67
67
  disabled: props.disabled ?? false,
68
68
  readOnly: props.readOnly ?? false,
69
69
  variant,
70
70
  orientation
71
- }), [paramsFromUsePickerValue.contextValue, variant, orientation, props.disabled, props.readOnly]);
72
- const privateContextValue = React.useMemo(() => ({
71
+ }), [paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, variant, orientation, props.disabled, props.readOnly]);
72
+ const privateContextValue = React.useMemo(() => (0, _extends2.default)({}, paramsFromUsePickerValue.privateContextValue, {
73
73
  ownerState
74
- }), [ownerState]);
74
+ }), [paramsFromUsePickerValue, ownerState]);
75
75
  return {
76
76
  localeText,
77
77
  contextValue,
78
+ actionsContextValue: paramsFromUsePickerValue.actionsContextValue,
78
79
  privateContextValue
79
80
  };
80
81
  }
@@ -259,49 +259,6 @@ const usePickerValue = ({
259
259
  hasBeenModifiedSinceMount: true
260
260
  }));
261
261
  }
262
- const handleClear = (0, _useEventCallback.default)(() => {
263
- updateDate({
264
- value: valueManager.emptyValue,
265
- name: 'setValueFromAction',
266
- pickerAction: 'clear'
267
- });
268
- });
269
- const handleAccept = (0, _useEventCallback.default)(() => {
270
- updateDate({
271
- value: dateState.lastPublishedValue,
272
- name: 'setValueFromAction',
273
- pickerAction: 'accept'
274
- });
275
- });
276
- const handleDismiss = (0, _useEventCallback.default)(() => {
277
- updateDate({
278
- value: dateState.lastPublishedValue,
279
- name: 'setValueFromAction',
280
- pickerAction: 'dismiss'
281
- });
282
- });
283
- const handleCancel = (0, _useEventCallback.default)(() => {
284
- updateDate({
285
- value: dateState.lastCommittedValue,
286
- name: 'setValueFromAction',
287
- pickerAction: 'cancel'
288
- });
289
- });
290
- const handleSetToday = (0, _useEventCallback.default)(() => {
291
- updateDate({
292
- value: valueManager.getTodayValue(utils, timezone, valueType),
293
- name: 'setValueFromAction',
294
- pickerAction: 'today'
295
- });
296
- });
297
- const handleOpen = (0, _useEventCallback.default)(event => {
298
- event.preventDefault();
299
- setOpen(true);
300
- });
301
- const handleClose = (0, _useEventCallback.default)(event => {
302
- event?.preventDefault();
303
- setOpen(false);
304
- });
305
262
  const handleChange = (0, _useEventCallback.default)((newValue, selectionState = 'partial') => updateDate({
306
263
  name: 'setValueFromView',
307
264
  value: newValue,
@@ -318,15 +275,6 @@ const usePickerValue = ({
318
275
  value: newValue,
319
276
  context
320
277
  }));
321
- const actions = {
322
- onClear: handleClear,
323
- onAccept: handleAccept,
324
- onDismiss: handleDismiss,
325
- onCancel: handleCancel,
326
- onSetToday: handleSetToday,
327
- onOpen: handleOpen,
328
- onClose: handleClose
329
- };
330
278
  const fieldResponse = {
331
279
  value: dateState.draft,
332
280
  onChange: handleChangeFromField
@@ -335,8 +283,8 @@ const usePickerValue = ({
335
283
  const viewResponse = {
336
284
  value: valueWithoutError,
337
285
  onChange: handleChange,
338
- onClose: handleClose,
339
- open
286
+ open,
287
+ setOpen
340
288
  };
341
289
  const isValid = testedValue => {
342
290
  const error = validator({
@@ -347,28 +295,62 @@ const usePickerValue = ({
347
295
  });
348
296
  return !valueManager.hasError(error);
349
297
  };
350
- const layoutResponse = (0, _extends2.default)({}, actions, {
298
+ const layoutResponse = {
351
299
  value: valueWithoutError,
352
300
  onChange: handleChange,
353
301
  onSelectShortcut: handleSelectShortcut,
354
302
  isValid
303
+ };
304
+ const clearValue = (0, _useEventCallback.default)(() => updateDate({
305
+ value: valueManager.emptyValue,
306
+ name: 'setValueFromAction',
307
+ pickerAction: 'clear'
308
+ }));
309
+ const setValueToToday = (0, _useEventCallback.default)(() => updateDate({
310
+ value: valueManager.getTodayValue(utils, timezone, valueType),
311
+ name: 'setValueFromAction',
312
+ pickerAction: 'today'
313
+ }));
314
+ const acceptValueChanges = (0, _useEventCallback.default)(() => updateDate({
315
+ value: dateState.lastPublishedValue,
316
+ name: 'setValueFromAction',
317
+ pickerAction: 'accept'
318
+ }));
319
+ const cancelValueChanges = (0, _useEventCallback.default)(() => updateDate({
320
+ value: dateState.lastCommittedValue,
321
+ name: 'setValueFromAction',
322
+ pickerAction: 'cancel'
323
+ }));
324
+ const dismissViews = (0, _useEventCallback.default)(() => {
325
+ updateDate({
326
+ value: dateState.lastPublishedValue,
327
+ name: 'setValueFromAction',
328
+ pickerAction: 'dismiss'
329
+ });
355
330
  });
356
- const contextValue = React.useMemo(() => {
357
- return {
358
- open,
359
- setOpen
360
- };
361
- }, [open, setOpen]);
331
+ const actionsContextValue = React.useMemo(() => ({
332
+ setOpen,
333
+ clearValue,
334
+ setValueToToday,
335
+ acceptValueChanges,
336
+ cancelValueChanges
337
+ }), [setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
338
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, actionsContextValue, {
339
+ open
340
+ }), [actionsContextValue, open]);
341
+ const privateContextValue = React.useMemo(() => ({
342
+ dismissViews
343
+ }), [dismissViews]);
362
344
  const providerParams = {
363
345
  value: valueWithoutError,
364
- contextValue
346
+ contextValue,
347
+ actionsContextValue,
348
+ privateContextValue
365
349
  };
366
350
  return {
367
- open,
368
351
  fieldProps: fieldResponse,
369
352
  viewProps: viewResponse,
370
353
  layoutProps: layoutResponse,
371
- actions,
372
354
  provider: providerParams
373
355
  };
374
356
  };
@@ -38,8 +38,9 @@ const usePickerViews = ({
38
38
  }) => {
39
39
  const {
40
40
  onChange,
41
+ value,
41
42
  open,
42
- onClose
43
+ setOpen
43
44
  } = propsFromPickerValue;
44
45
  const {
45
46
  view: inView,
@@ -99,7 +100,7 @@ const usePickerViews = ({
99
100
  (0, _useEnhancedEffect.default)(() => {
100
101
  // Handle case of `DateTimePicker` without time renderers
101
102
  if (currentViewMode === 'field' && open) {
102
- onClose();
103
+ setOpen(false);
103
104
  setTimeout(() => {
104
105
  fieldRef?.current?.setSelectedSections(view);
105
106
  // focusing the input before the range selection is done
@@ -130,18 +131,18 @@ const usePickerViews = ({
130
131
  setFocusedView(newView, true);
131
132
  }, [open]); // eslint-disable-line react-hooks/exhaustive-deps
132
133
 
133
- const layoutProps = {
134
+ const contextValue = React.useMemo(() => ({
134
135
  views,
135
136
  view: popperView,
136
137
  onViewChange: setView
137
- };
138
+ }), [views, popperView, setView]);
138
139
  const providerParams = {
139
140
  hasUIView,
140
- views
141
+ views,
142
+ contextValue
141
143
  };
142
144
  return {
143
145
  shouldRestoreFocus,
144
- layoutProps,
145
146
  provider: providerParams,
146
147
  renderCurrentView: () => {
147
148
  if (popperView == null) {
@@ -151,9 +152,10 @@ const usePickerViews = ({
151
152
  if (renderer == null) {
152
153
  return null;
153
154
  }
154
- const rendererProps = (0, _extends2.default)({}, propsToForwardToView, additionalViewProps, propsFromPickerValue, {
155
+ const rendererProps = (0, _extends2.default)({}, propsToForwardToView, additionalViewProps, {
155
156
  views,
156
157
  timezone,
158
+ value,
157
159
  onChange: setValueAndGoToNextView,
158
160
  view: popperView,
159
161
  onViewChange: setView,
@@ -21,10 +21,10 @@ Object.defineProperty(exports, "DIALOG_WIDTH", {
21
21
  return _dimensions.DIALOG_WIDTH;
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "DateTimePickerToolbarForceDesktopVariant", {
24
+ Object.defineProperty(exports, "DateTimePickerToolbarOverrideContext", {
25
25
  enumerable: true,
26
26
  get: function () {
27
- return _DateTimePickerToolbar.DateTimePickerToolbarForceDesktopVariant;
27
+ return _DateTimePickerToolbar.DateTimePickerToolbarOverrideContext;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "DayCalendar", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "8.0.0-alpha.4",
3
+ "version": "8.0.0-alpha.6",
4
4
  "description": "The community edition of the Date and Time Picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -37,11 +37,11 @@
37
37
  "dependencies": {
38
38
  "@babel/runtime": "^7.26.0",
39
39
  "@mui/utils": "^5.16.6 || ^6.0.0",
40
- "@types/react-transition-group": "^4.4.11",
40
+ "@types/react-transition-group": "^4.4.12",
41
41
  "clsx": "^2.1.1",
42
42
  "prop-types": "^15.8.1",
43
43
  "react-transition-group": "^4.4.5",
44
- "@mui/x-internals": "8.0.0-alpha.2"
44
+ "@mui/x-internals": "8.0.0-alpha.6"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",
@@ -78,10 +78,6 @@ export interface PickerComponents<Theme = unknown> {
78
78
  defaultProps?: ComponentsProps['MuiPickersFadeTransitionGroup'];
79
79
  styleOverrides?: ComponentsOverrides<Theme>['MuiPickersFadeTransitionGroup'];
80
80
  };
81
- MuiPickersMonth?: {
82
- defaultProps?: ComponentsProps['MuiPickersMonth'];
83
- styleOverrides?: ComponentsOverrides<Theme>['MuiPickersMonth'];
84
- };
85
81
  MuiPickersPopper?: {
86
82
  defaultProps?: ComponentsProps['MuiPickersPopper'];
87
83
  styleOverrides?: ComponentsOverrides<Theme>['MuiPickersPopper'];
@@ -106,10 +102,6 @@ export interface PickerComponents<Theme = unknown> {
106
102
  defaultProps?: ComponentsProps['MuiPickersLayout'];
107
103
  styleOverrides?: ComponentsOverrides<Theme>['MuiPickersLayout'];
108
104
  };
109
- MuiPickersYear?: {
110
- defaultProps?: ComponentsProps['MuiPickersYear'];
111
- styleOverrides?: ComponentsOverrides<Theme>['MuiPickersYear'];
112
- };
113
105
  MuiTimeClock?: {
114
106
  defaultProps?: ComponentsProps['MuiTimeClock'];
115
107
  styleOverrides?: ComponentsOverrides<Theme>['MuiTimeClock'];
@@ -12,9 +12,9 @@ import {
12
12
  TimeClockClassKey,
13
13
  ClockPointerClassKey,
14
14
  } from '../TimeClock';
15
- import { MonthCalendarClassKey, PickersMonthClassKey } from '../MonthCalendar';
15
+ import { MonthCalendarClassKey } from '../MonthCalendar';
16
16
  import { PickersDayClassKey } from '../PickersDay';
17
- import { PickersYearClassKey, YearCalendarClassKey } from '../YearCalendar';
17
+ import { YearCalendarClassKey } from '../YearCalendar';
18
18
  import { PickersLayoutClassKey } from '../PickersLayout';
19
19
  import { DatePickerToolbarClassKey } from '../DatePicker';
20
20
  import { TimePickerToolbarClassKey } from '../TimePicker';
@@ -58,13 +58,11 @@ export interface PickersComponentNameToClassKey {
58
58
  MuiPickersDay: PickersDayClassKey;
59
59
  MuiPickersFadeTransitionGroup: PickersFadeTransitionGroupClassKey;
60
60
  MuiPickersLayout: PickersLayoutClassKey;
61
- MuiPickersMonth: PickersMonthClassKey;
62
61
  MuiPickersPopper: PickersPopperClassKey;
63
62
  MuiPickersSlideTransition: PickersSlideTransitionClassKey;
64
63
  MuiPickersToolbar: PickersToolbarClassKey;
65
64
  MuiPickersToolbarButton: PickersToolbarButtonClassKey;
66
65
  MuiPickersToolbarText: PickersToolbarTextClassKey;
67
- MuiPickersYear: PickersYearClassKey;
68
66
  MuiTimeClock: TimeClockClassKey;
69
67
  MuiTimePickerToolbar: TimePickerToolbarClassKey;
70
68
  MuiYearCalendar: YearCalendarClassKey;
@@ -5,9 +5,9 @@ import {
5
5
  } from '../DateCalendar';
6
6
  import { DayCalendarSkeletonProps } from '../DayCalendarSkeleton';
7
7
  import { ClockNumberProps, TimeClockProps, ClockPointerProps, ClockProps } from '../TimeClock';
8
- import { ExportedPickersMonthProps, MonthCalendarProps } from '../MonthCalendar';
8
+ import { MonthCalendarProps } from '../MonthCalendar';
9
9
  import { PickersDayProps } from '../PickersDay';
10
- import { ExportedPickersYearProps, YearCalendarProps } from '../YearCalendar';
10
+ import { YearCalendarProps } from '../YearCalendar';
11
11
  import { DateFieldProps } from '../DateField';
12
12
  import { LocalizationProviderProps } from '../LocalizationProvider';
13
13
  import { PickersLayoutProps } from '../PickersLayout';
@@ -17,7 +17,6 @@ import { PickerPopperProps } from '../internals/components/PickersPopper';
17
17
  import { PickersToolbarProps } from '../internals/components/PickersToolbar';
18
18
  import { PickersToolbarButtonProps } from '../internals/components/PickersToolbarButton';
19
19
  import { ExportedPickersToolbarTextProps } from '../internals/components/PickersToolbarText';
20
- import { DateOrTimeView } from '../models';
21
20
 
22
21
  import { DatePickerProps } from '../DatePicker';
23
22
  import { ExportedDatePickerToolbarProps } from '../DatePicker/DatePickerToolbar';
@@ -75,14 +74,12 @@ export interface PickersComponentsPropsList {
75
74
  MuiPickersCalendarHeader: ExportedPickersCalendarHeaderProps;
76
75
  MuiPickersDay: PickersDayProps;
77
76
  MuiPickersFadeTransitionGroup: PickersFadeTransitionGroupProps;
78
- MuiPickersMonth: ExportedPickersMonthProps;
79
77
  MuiPickersPopper: PickerPopperProps;
80
78
  MuiPickersSlideTransition: ExportedSlideTransitionProps;
81
- MuiPickersToolbar: PickersToolbarProps<PickerValidValue, DateOrTimeView>;
79
+ MuiPickersToolbar: PickersToolbarProps<PickerValidValue>;
82
80
  MuiPickersToolbarButton: PickersToolbarButtonProps;
83
81
  MuiPickersToolbarText: ExportedPickersToolbarTextProps;
84
- MuiPickersLayout: PickersLayoutProps<PickerValidValue, DateOrTimeView>;
85
- MuiPickersYear: ExportedPickersYearProps;
82
+ MuiPickersLayout: PickersLayoutProps<PickerValidValue>;
86
83
  MuiTimeClock: TimeClockProps;
87
84
  MuiTimeField: TimeFieldProps<any>;
88
85
  MuiTimePickerToolbar: ExportedTimePickerToolbarProps;
@@ -1,28 +0,0 @@
1
- import * as React from 'react';
2
- import { PickersMonthClasses } from './pickersMonthClasses';
3
- import { MonthCalendarSlotProps, MonthCalendarSlots } from './MonthCalendar.types';
4
- export interface ExportedPickersMonthProps {
5
- classes?: Partial<PickersMonthClasses>;
6
- }
7
- export interface PickersMonthProps extends ExportedPickersMonthProps {
8
- 'aria-current'?: React.AriaAttributes['aria-current'];
9
- 'aria-label'?: React.AriaAttributes['aria-label'];
10
- autoFocus: boolean;
11
- children: React.ReactNode;
12
- className?: string;
13
- disabled?: boolean;
14
- onClick: (event: React.MouseEvent, month: number) => void;
15
- onKeyDown: (event: React.KeyboardEvent, month: number) => void;
16
- onFocus: (event: React.FocusEvent, month: number) => void;
17
- onBlur: (event: React.FocusEvent, month: number) => void;
18
- selected?: boolean;
19
- value: number;
20
- tabIndex: number;
21
- monthsPerRow: 3 | 4;
22
- slots?: MonthCalendarSlots;
23
- slotProps?: MonthCalendarSlotProps;
24
- }
25
- /**
26
- * @ignore - do not document.
27
- */
28
- export declare const PickersMonth: React.NamedExoticComponent<PickersMonthProps>;
@@ -1,13 +0,0 @@
1
- export interface PickersMonthClasses {
2
- /** Styles applied to the root element. */
3
- root: string;
4
- /** Styles applied to the month button element. */
5
- monthButton: string;
6
- /** Styles applied to a disabled month button element. */
7
- disabled: string;
8
- /** Styles applied to a selected month button element. */
9
- selected: string;
10
- }
11
- export type PickersMonthClassKey = keyof PickersMonthClasses;
12
- export declare function getPickersMonthUtilityClass(slot: string): string;
13
- export declare const pickersMonthClasses: Record<keyof PickersMonthClasses, string>;
@@ -1,5 +0,0 @@
1
- import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
- export function getPickersMonthUtilityClass(slot) {
3
- return generateUtilityClass('MuiPickersMonth', slot);
4
- }
5
- export const pickersMonthClasses = generateUtilityClasses('MuiPickersMonth', ['root', 'monthButton', 'disabled', 'selected']);
@@ -1,27 +0,0 @@
1
- import * as React from 'react';
2
- import { PickersYearClasses } from './pickersYearClasses';
3
- import { YearCalendarSlotProps, YearCalendarSlots } from './YearCalendar.types';
4
- export interface ExportedPickersYearProps {
5
- classes?: Partial<PickersYearClasses>;
6
- }
7
- export interface PickersYearProps extends ExportedPickersYearProps {
8
- 'aria-current'?: React.AriaAttributes['aria-current'];
9
- autoFocus?: boolean;
10
- children: React.ReactNode;
11
- className?: string;
12
- disabled?: boolean;
13
- onClick: (event: React.MouseEvent, year: number) => void;
14
- onKeyDown: (event: React.KeyboardEvent, year: number) => void;
15
- onFocus: (event: React.FocusEvent, year: number) => void;
16
- onBlur: (event: React.FocusEvent, year: number) => void;
17
- selected: boolean;
18
- value: number;
19
- tabIndex: number;
20
- yearsPerRow: 3 | 4;
21
- slots?: YearCalendarSlots;
22
- slotProps?: YearCalendarSlotProps;
23
- }
24
- /**
25
- * @ignore - internal component.
26
- */
27
- export declare const PickersYear: React.NamedExoticComponent<PickersYearProps>;
@@ -1,13 +0,0 @@
1
- export interface PickersYearClasses {
2
- /** Styles applied to the root element. */
3
- root: string;
4
- /** Styles applied to the year button element. */
5
- yearButton: string;
6
- /** Styles applied to a selected year button element. */
7
- selected: string;
8
- /** Styles applied to a disabled year button element. */
9
- disabled: string;
10
- }
11
- export type PickersYearClassKey = keyof PickersYearClasses;
12
- export declare function getPickersYearUtilityClass(slot: string): string;
13
- export declare const pickersYearClasses: Record<keyof PickersYearClasses, string>;
@@ -1,5 +0,0 @@
1
- import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
- export function getPickersYearUtilityClass(slot) {
3
- return generateUtilityClass('MuiPickersYear', slot);
4
- }
5
- export const pickersYearClasses = generateUtilityClasses('MuiPickersYear', ['root', 'yearButton', 'selected', 'disabled']);
@@ -1,5 +0,0 @@
1
- import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
- export function getPickersMonthUtilityClass(slot) {
3
- return generateUtilityClass('MuiPickersMonth', slot);
4
- }
5
- export const pickersMonthClasses = generateUtilityClasses('MuiPickersMonth', ['root', 'monthButton', 'disabled', 'selected']);
@@ -1,5 +0,0 @@
1
- import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
- export function getPickersYearUtilityClass(slot) {
3
- return generateUtilityClass('MuiPickersYear', slot);
4
- }
5
- export const pickersYearClasses = generateUtilityClasses('MuiPickersYear', ['root', 'yearButton', 'selected', 'disabled']);
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getPickersMonthUtilityClass = getPickersMonthUtilityClass;
7
- exports.pickersMonthClasses = void 0;
8
- var _utils = require("@mui/utils");
9
- function getPickersMonthUtilityClass(slot) {
10
- return (0, _utils.unstable_generateUtilityClass)('MuiPickersMonth', slot);
11
- }
12
- const pickersMonthClasses = exports.pickersMonthClasses = (0, _utils.unstable_generateUtilityClasses)('MuiPickersMonth', ['root', 'monthButton', 'disabled', 'selected']);
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getPickersYearUtilityClass = getPickersYearUtilityClass;
7
- exports.pickersYearClasses = void 0;
8
- var _utils = require("@mui/utils");
9
- function getPickersYearUtilityClass(slot) {
10
- return (0, _utils.unstable_generateUtilityClass)('MuiPickersYear', slot);
11
- }
12
- const pickersYearClasses = exports.pickersYearClasses = (0, _utils.unstable_generateUtilityClasses)('MuiPickersYear', ['root', 'yearButton', 'selected', 'disabled']);