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

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 (144) hide show
  1. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +127 -1
  8. package/DateRangeCalendar/DateRangeCalendar.js +9 -7
  9. package/DateRangePicker/DateRangePicker.js +1 -1
  10. package/DateRangePicker/DateRangePicker.types.d.ts +5 -0
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +25 -17
  13. package/DateRangePicker/shared.d.ts +1 -1
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  15. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +3 -4
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  17. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  19. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -3
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  21. package/DateTimeRangePicker/shared.d.ts +2 -2
  22. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +5 -0
  24. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  25. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  26. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  27. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  28. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  29. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  30. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  31. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  32. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  33. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  34. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  35. package/hooks/index.d.ts +1 -0
  36. package/hooks/index.js +1 -0
  37. package/hooks/package.json +6 -0
  38. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  39. package/hooks/usePickerRangePositionContext.js +15 -0
  40. package/index.d.ts +2 -0
  41. package/index.js +4 -2
  42. package/internals/hooks/models/useRangePicker.d.ts +2 -2
  43. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  44. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +3 -5
  45. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +5 -5
  46. package/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  47. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  48. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +3 -5
  49. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +10 -12
  50. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  51. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  52. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -2
  53. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  54. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -2
  55. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  56. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  57. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  58. package/internals/hooks/useRangePosition.d.ts +1 -1
  59. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  60. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +2 -2
  61. package/internals/utils/date-range-manager.js +2 -1
  62. package/internals/utils/releaseInfo.js +1 -1
  63. package/internals/utils/valueManagers.js +7 -7
  64. package/managers/index.d.ts +6 -0
  65. package/managers/index.js +3 -0
  66. package/managers/package.json +6 -0
  67. package/managers/useDateRangeManager.d.ts +15 -0
  68. package/managers/useDateRangeManager.js +31 -0
  69. package/managers/useDateTimeRangeManager.d.ts +15 -0
  70. package/managers/useDateTimeRangeManager.js +31 -0
  71. package/managers/useTimeRangeManager.d.ts +15 -0
  72. package/managers/useTimeRangeManager.js +29 -0
  73. package/models/range.d.ts +0 -1
  74. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  75. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  76. package/modern/DateRangeCalendar/DateRangeCalendar.js +9 -7
  77. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  78. package/modern/DateRangePicker/DateRangePickerToolbar.js +25 -17
  79. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  80. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  81. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  82. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  83. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  84. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  85. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  86. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  87. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  88. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  89. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  90. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  91. package/modern/hooks/index.js +1 -0
  92. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  93. package/modern/index.js +4 -2
  94. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  95. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  96. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  97. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  98. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  99. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  100. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  101. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  102. package/modern/internals/utils/date-range-manager.js +2 -1
  103. package/modern/internals/utils/releaseInfo.js +1 -1
  104. package/modern/internals/utils/valueManagers.js +7 -7
  105. package/modern/managers/index.js +3 -0
  106. package/modern/managers/useDateRangeManager.js +31 -0
  107. package/modern/managers/useDateTimeRangeManager.js +31 -0
  108. package/modern/managers/useTimeRangeManager.js +29 -0
  109. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  110. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  111. package/node/DateRangeCalendar/DateRangeCalendar.js +9 -7
  112. package/node/DateRangePicker/DateRangePicker.js +1 -1
  113. package/node/DateRangePicker/DateRangePickerToolbar.js +24 -16
  114. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  115. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  116. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  117. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  118. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  119. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  120. package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  121. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  122. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +12 -14
  123. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +12 -14
  124. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +12 -14
  125. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  126. package/node/hooks/index.js +12 -0
  127. package/node/hooks/usePickerRangePositionContext.js +22 -0
  128. package/node/index.js +23 -1
  129. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  130. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  131. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  132. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +10 -5
  133. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +11 -6
  134. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +12 -7
  135. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  136. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  137. package/node/internals/utils/date-range-manager.js +2 -1
  138. package/node/internals/utils/releaseInfo.js +1 -1
  139. package/node/internals/utils/valueManagers.js +7 -7
  140. package/node/managers/index.js +26 -0
  141. package/node/managers/useDateRangeManager.js +38 -0
  142. package/node/managers/useDateTimeRangeManager.js +38 -0
  143. package/node/managers/useTimeRangeManager.js +36 -0
  144. package/package.json +5 -5
@@ -1,32 +1,30 @@
1
1
  "use strict";
2
2
  'use client';
3
3
 
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.useSingleInputTimeRangeField = void 0;
9
- var React = _interopRequireWildcard(require("react"));
10
8
  var _internals = require("@mui/x-date-pickers/internals");
11
9
  var _hooks = require("@mui/x-date-pickers/hooks");
12
- var _valueManagers = require("../internals/utils/valueManagers");
13
- var _validation = require("../validation");
14
- const useSingleInputTimeRangeField = inProps => {
15
- const props = (0, _internals.useDefaultizedTimeField)(inProps);
10
+ var _managers = require("../managers");
11
+ const useSingleInputTimeRangeField = props => {
12
+ const manager = (0, _managers.useTimeRangeManager)(props);
16
13
  const {
17
14
  forwardedProps,
18
15
  internalProps
19
16
  } = (0, _hooks.useSplitFieldProps)(props, 'time');
20
- const fieldValueManager = React.useMemo(() => (0, _valueManagers.getRangeFieldValueManager)({
21
- dateSeparator: internalProps.dateSeparator
22
- }), [internalProps.dateSeparator]);
17
+ const internalPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
18
+ manager,
19
+ internalProps
20
+ });
23
21
  return (0, _internals.useField)({
24
22
  forwardedProps,
25
- internalProps,
26
- valueManager: _valueManagers.rangeValueManager,
27
- fieldValueManager,
28
- validator: _validation.validateTimeRange,
29
- valueType: 'time'
23
+ internalProps: internalPropsWithDefaults,
24
+ valueManager: manager.internal_valueManager,
25
+ fieldValueManager: manager.internal_fieldValueManager,
26
+ validator: manager.validator,
27
+ valueType: manager.valueType
30
28
  });
31
29
  };
32
30
  exports.useSingleInputTimeRangeField = useSingleInputTimeRangeField;
@@ -26,9 +26,6 @@ const renderDateRangeViewCalendar = ({
26
26
  shouldDisableDate,
27
27
  reduceAnimations,
28
28
  onMonthChange,
29
- rangePosition,
30
- defaultRangePosition,
31
- onRangePositionChange,
32
29
  calendars,
33
30
  currentMonthCalendarPosition,
34
31
  slots,
@@ -65,9 +62,6 @@ const renderDateRangeViewCalendar = ({
65
62
  shouldDisableDate: shouldDisableDate,
66
63
  reduceAnimations: reduceAnimations,
67
64
  onMonthChange: onMonthChange,
68
- rangePosition: rangePosition,
69
- defaultRangePosition: defaultRangePosition,
70
- onRangePositionChange: onRangePositionChange,
71
65
  calendars: calendars,
72
66
  currentMonthCalendarPosition: currentMonthCalendarPosition,
73
67
  slots: slots,
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "usePickerRangePositionContext", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _usePickerRangePositionContext.usePickerRangePositionContext;
10
+ }
11
+ });
12
+ var _usePickerRangePositionContext = require("./usePickerRangePositionContext");
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PickerRangePositionContext = void 0;
9
+ exports.usePickerRangePositionContext = usePickerRangePositionContext;
10
+ var React = _interopRequireWildcard(require("react"));
11
+ const PickerRangePositionContext = exports.PickerRangePositionContext = /*#__PURE__*/React.createContext(null);
12
+
13
+ /**
14
+ * Returns information about the range position of the picker that wraps the current component.
15
+ */
16
+ function usePickerRangePositionContext() {
17
+ const value = React.useContext(PickerRangePositionContext);
18
+ if (value == null) {
19
+ throw new Error(['MUI X: The `usePickerRangePositionContext` can only be called in components that are used inside a picker component'].join('\n'));
20
+ }
21
+ return value;
22
+ }
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.6
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.7
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -219,6 +219,17 @@ Object.keys(_models).forEach(function (key) {
219
219
  }
220
220
  });
221
221
  });
222
+ var _hooks = require("./hooks");
223
+ Object.keys(_hooks).forEach(function (key) {
224
+ if (key === "default" || key === "__esModule") return;
225
+ if (key in exports && exports[key] === _hooks[key]) return;
226
+ Object.defineProperty(exports, key, {
227
+ enumerable: true,
228
+ get: function () {
229
+ return _hooks[key];
230
+ }
231
+ });
232
+ });
222
233
  var _validation = require("./validation");
223
234
  Object.keys(_validation).forEach(function (key) {
224
235
  if (key === "default" || key === "__esModule") return;
@@ -229,4 +240,15 @@ Object.keys(_validation).forEach(function (key) {
229
240
  return _validation[key];
230
241
  }
231
242
  });
243
+ });
244
+ var _managers = require("./managers");
245
+ Object.keys(_managers).forEach(function (key) {
246
+ if (key === "default" || key === "__esModule") return;
247
+ if (key in exports && exports[key] === _managers[key]) return;
248
+ Object.defineProperty(exports, key, {
249
+ enumerable: true,
250
+ get: function () {
251
+ return _managers[key];
252
+ }
253
+ });
232
254
  });
@@ -16,6 +16,7 @@ var _internals = require("@mui/x-date-pickers/internals");
16
16
  var _useEnrichedRangePickerFieldProps = require("../useEnrichedRangePickerFieldProps");
17
17
  var _releaseInfo = require("../../utils/releaseInfo");
18
18
  var _useRangePosition = require("../useRangePosition");
19
+ var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
19
20
  var _jsxRuntime = require("react/jsx-runtime");
20
21
  const _excluded = ["props"];
21
22
  const releaseInfo = (0, _releaseInfo.getReleaseInfo)();
@@ -54,20 +55,16 @@ const useDesktopRangePicker = _ref => {
54
55
  const singleInputFieldRef = React.useRef(null);
55
56
  const initialView = React.useRef(props.openTo ?? null);
56
57
  const fieldType = slots.field.fieldType ?? 'multi-input';
57
- const {
58
- rangePosition,
59
- onRangePositionChange
60
- } = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
58
+ const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
61
59
  let fieldRef;
62
60
  if (fieldType === 'single-input') {
63
61
  fieldRef = singleInputFieldRef;
64
- } else if (rangePosition === 'start') {
62
+ } else if (rangePositionResponse.rangePosition === 'start') {
65
63
  fieldRef = startFieldRef;
66
64
  } else {
67
65
  fieldRef = endFieldRef;
68
66
  }
69
67
  const {
70
- layoutProps,
71
68
  providerProps,
72
69
  renderCurrentView,
73
70
  shouldRestoreFocus,
@@ -78,11 +75,7 @@ const useDesktopRangePicker = _ref => {
78
75
  variant: 'desktop',
79
76
  autoFocusView: false,
80
77
  fieldRef,
81
- localeText,
82
- additionalViewProps: {
83
- rangePosition,
84
- onRangePositionChange
85
- }
78
+ localeText
86
79
  }));
87
80
  React.useEffect(() => {
88
81
  if (providerProps.contextValue.view) {
@@ -129,7 +122,7 @@ const useDesktopRangePicker = _ref => {
129
122
  }),
130
123
  ownerState
131
124
  });
132
- const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
125
+ const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)((0, _extends2.default)({
133
126
  variant: 'desktop',
134
127
  fieldType,
135
128
  // These direct access to `providerProps` will go away once the range fields handle the picker opening
@@ -140,8 +133,6 @@ const useDesktopRangePicker = _ref => {
140
133
  label,
141
134
  localeText,
142
135
  onBlur: handleBlur,
143
- rangePosition,
144
- onRangePositionChange,
145
136
  pickerSlotProps: slotProps,
146
137
  pickerSlots: slots,
147
138
  fieldProps,
@@ -150,37 +141,29 @@ const useDesktopRangePicker = _ref => {
150
141
  endFieldRef,
151
142
  singleInputFieldRef,
152
143
  currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
153
- initialView: initialView.current ?? undefined,
154
- onViewChange: providerProps.contextValue.onViewChange
155
- });
156
- const slotPropsForLayout = (0, _extends2.default)({}, slotProps, {
157
- tabs: (0, _extends2.default)({}, slotProps?.tabs, {
158
- rangePosition,
159
- onRangePositionChange
160
- }),
161
- toolbar: (0, _extends2.default)({}, slotProps?.toolbar, {
162
- rangePosition,
163
- onRangePositionChange
164
- })
165
- });
144
+ initialView: initialView.current ?? undefined
145
+ }, rangePositionResponse));
166
146
  const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
167
- const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
168
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper, {
169
- role: "tooltip",
170
- placement: "bottom-start",
171
- containerRef: popperRef,
172
- anchorEl: anchorRef.current,
173
- onBlur: handleBlur,
174
- slots: slots,
175
- slotProps: slotProps,
176
- shouldRestoreFocus: shouldRestoreFocus,
177
- reduceAnimations: reduceAnimations,
178
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
147
+ const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
148
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
149
+ value: rangePositionResponse,
150
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper, {
151
+ role: "tooltip",
152
+ placement: "bottom-start",
153
+ containerRef: popperRef,
154
+ anchorEl: anchorRef.current,
155
+ onBlur: handleBlur,
179
156
  slots: slots,
180
- slotProps: slotPropsForLayout,
181
- children: renderCurrentView()
182
- }))
183
- })]
157
+ slotProps: slotProps,
158
+ shouldRestoreFocus: shouldRestoreFocus,
159
+ reduceAnimations: reduceAnimations,
160
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
161
+ slots: slots,
162
+ slotProps: slotProps,
163
+ children: renderCurrentView()
164
+ }))
165
+ })]
166
+ })
184
167
  }));
185
168
  return {
186
169
  renderPicker
@@ -32,7 +32,7 @@ const useMultiInputFieldSlotProps = ({
32
32
  anchorRef,
33
33
  currentView,
34
34
  initialView,
35
- onViewChange,
35
+ setView,
36
36
  startFieldRef,
37
37
  endFieldRef
38
38
  }) => {
@@ -78,7 +78,7 @@ const useMultiInputFieldSlotProps = ({
78
78
  if (open) {
79
79
  onRangePositionChange('start');
80
80
  if (previousRangePosition.current !== 'start' && initialView) {
81
- onViewChange?.(initialView);
81
+ setView?.(initialView);
82
82
  }
83
83
  }
84
84
  };
@@ -86,7 +86,7 @@ const useMultiInputFieldSlotProps = ({
86
86
  if (open) {
87
87
  onRangePositionChange('end');
88
88
  if (previousRangePosition.current !== 'end' && initialView) {
89
- onViewChange?.(initialView);
89
+ setView?.(initialView);
90
90
  }
91
91
  }
92
92
  };
@@ -18,6 +18,7 @@ var _useId = _interopRequireDefault(require("@mui/utils/useId"));
18
18
  var _useEnrichedRangePickerFieldProps = require("../useEnrichedRangePickerFieldProps");
19
19
  var _releaseInfo = require("../../utils/releaseInfo");
20
20
  var _useRangePosition = require("../useRangePosition");
21
+ var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
23
  const _excluded = ["props"];
23
24
  const releaseInfo = (0, _releaseInfo.getReleaseInfo)();
@@ -50,22 +51,18 @@ const useMobileRangePicker = _ref => {
50
51
  const endFieldRef = React.useRef(null);
51
52
  const singleInputFieldRef = React.useRef(null);
52
53
  const fieldType = slots.field.fieldType ?? 'multi-input';
53
- const {
54
- rangePosition,
55
- onRangePositionChange
56
- } = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
54
+ const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
57
55
  const labelId = (0, _useId.default)();
58
56
  const contextTranslations = (0, _hooks.usePickerTranslations)();
59
57
  let fieldRef;
60
58
  if (fieldType === 'single-input') {
61
59
  fieldRef = singleInputFieldRef;
62
- } else if (rangePosition === 'start') {
60
+ } else if (rangePositionResponse.rangePosition === 'start') {
63
61
  fieldRef = startFieldRef;
64
62
  } else {
65
63
  fieldRef = endFieldRef;
66
64
  }
67
65
  const {
68
- layoutProps,
69
66
  providerProps,
70
67
  renderCurrentView,
71
68
  fieldProps: pickerFieldProps,
@@ -75,11 +72,7 @@ const useMobileRangePicker = _ref => {
75
72
  variant: 'mobile',
76
73
  autoFocusView: true,
77
74
  fieldRef,
78
- localeText,
79
- additionalViewProps: {
80
- rangePosition,
81
- onRangePositionChange
82
- }
75
+ localeText
83
76
  }));
84
77
  const Field = slots.field;
85
78
  const fieldProps = (0, _useSlotProps.default)({
@@ -109,7 +102,7 @@ const useMobileRangePicker = _ref => {
109
102
  ownerState
110
103
  });
111
104
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
112
- const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
105
+ const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)((0, _extends2.default)({
113
106
  variant: 'mobile',
114
107
  fieldType,
115
108
  // These direct access to `providerProps` will go away once the range fields handle the picker opening
@@ -120,26 +113,13 @@ const useMobileRangePicker = _ref => {
120
113
  disableOpenPicker,
121
114
  label,
122
115
  localeText,
123
- rangePosition,
124
- onRangePositionChange,
125
116
  pickerSlots: slots,
126
117
  pickerSlotProps: innerSlotProps,
127
118
  fieldProps,
128
119
  startFieldRef,
129
120
  endFieldRef,
130
121
  singleInputFieldRef
131
- });
132
- const slotPropsForLayout = (0, _extends2.default)({}, innerSlotProps, {
133
- tabs: (0, _extends2.default)({}, innerSlotProps?.tabs, {
134
- rangePosition,
135
- onRangePositionChange
136
- }),
137
- toolbar: (0, _extends2.default)({}, innerSlotProps?.toolbar, {
138
- titleId: labelId,
139
- rangePosition,
140
- onRangePositionChange
141
- })
142
- });
122
+ }, rangePositionResponse));
143
123
  const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
144
124
  const finalLocaleText = (0, _extends2.default)({}, contextTranslations, localeText);
145
125
  let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
@@ -158,20 +138,26 @@ const useMobileRangePicker = _ref => {
158
138
  labelledById = labels.length > 0 ? labels.join(' ') : undefined;
159
139
  }
160
140
  const slotProps = (0, _extends2.default)({}, innerSlotProps, {
141
+ toolbar: (0, _extends2.default)({}, innerSlotProps?.toolbar, {
142
+ titleId: labelId
143
+ }),
161
144
  mobilePaper: (0, _extends2.default)({
162
145
  'aria-labelledby': labelledById
163
146
  }, innerSlotProps?.mobilePaper)
164
147
  });
165
- const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
166
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog, {
167
- slots: slots,
168
- slotProps: slotProps,
169
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
148
+ const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
149
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
150
+ value: rangePositionResponse,
151
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog, {
170
152
  slots: slots,
171
- slotProps: slotPropsForLayout,
172
- children: renderCurrentView()
173
- }))
174
- })]
153
+ slotProps: slotProps,
154
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
155
+ slots: slots,
156
+ slotProps: slotProps,
157
+ children: renderCurrentView()
158
+ }))
159
+ })]
160
+ })
175
161
  }));
176
162
  return {
177
163
  renderPicker
@@ -14,14 +14,19 @@ var _validation2 = require("../../../validation");
14
14
  var _valueManagers = require("../../utils/valueManagers");
15
15
  var _shared = require("./shared");
16
16
  var _useMultiInputFieldSelectedSections = require("../useMultiInputFieldSelectedSections");
17
+ var _managers = require("../../../managers");
17
18
  const useMultiInputDateRangeField = ({
18
- sharedProps: inSharedProps,
19
+ sharedProps,
19
20
  startTextFieldProps,
20
21
  unstableStartFieldRef,
21
22
  endTextFieldProps,
22
23
  unstableEndFieldRef
23
24
  }) => {
24
- const sharedProps = (0, _internals.useDefaultizedDateField)(inSharedProps);
25
+ const manager = (0, _managers.useDateRangeManager)(sharedProps);
26
+ const sharedPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
27
+ manager,
28
+ internalProps: sharedProps
29
+ });
25
30
  const {
26
31
  value: valueProp,
27
32
  defaultValue,
@@ -37,7 +42,7 @@ const useMultiInputDateRangeField = ({
37
42
  timezone: timezoneProp,
38
43
  enableAccessibleFieldDOMStructure,
39
44
  autoFocus
40
- } = sharedProps;
45
+ } = sharedPropsWithDefaults;
41
46
  const {
42
47
  value,
43
48
  handleValueChange,
@@ -55,11 +60,11 @@ const useMultiInputDateRangeField = ({
55
60
  validationError,
56
61
  getValidationErrorForNewValue
57
62
  } = (0, _validation.useValidation)({
58
- props: sharedProps,
63
+ props: sharedPropsWithDefaults,
59
64
  value,
60
65
  timezone,
61
66
  validator: _validation2.validateDateRange,
62
- onError: sharedProps.onError
67
+ onError: sharedPropsWithDefaults.onError
63
68
  });
64
69
 
65
70
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -14,14 +14,19 @@ var _validation2 = require("../../../validation");
14
14
  var _valueManagers = require("../../utils/valueManagers");
15
15
  var _shared = require("./shared");
16
16
  var _useMultiInputFieldSelectedSections = require("../useMultiInputFieldSelectedSections");
17
+ var _managers = require("../../../managers");
17
18
  const useMultiInputDateTimeRangeField = ({
18
- sharedProps: inSharedProps,
19
+ sharedProps,
19
20
  startTextFieldProps,
20
21
  unstableStartFieldRef,
21
22
  endTextFieldProps,
22
23
  unstableEndFieldRef
23
24
  }) => {
24
- const sharedProps = (0, _internals.useDefaultizedDateTimeField)(inSharedProps);
25
+ const manager = (0, _managers.useDateTimeRangeManager)(sharedProps);
26
+ const sharedPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
27
+ manager,
28
+ internalProps: sharedProps
29
+ });
25
30
  const {
26
31
  value: valueProp,
27
32
  defaultValue,
@@ -37,13 +42,13 @@ const useMultiInputDateTimeRangeField = ({
37
42
  timezone: timezoneProp,
38
43
  enableAccessibleFieldDOMStructure,
39
44
  autoFocus
40
- } = sharedProps;
45
+ } = sharedPropsWithDefaults;
41
46
  const {
42
47
  value,
43
48
  handleValueChange,
44
49
  timezone
45
50
  } = (0, _internals.useControlledValueWithTimezone)({
46
- name: 'useMultiInputDateRangeField',
51
+ name: 'useMultiInputDateTimeRangeField',
47
52
  timezone: timezoneProp,
48
53
  value: valueProp,
49
54
  defaultValue,
@@ -55,11 +60,11 @@ const useMultiInputDateTimeRangeField = ({
55
60
  validationError,
56
61
  getValidationErrorForNewValue
57
62
  } = (0, _validation.useValidation)({
58
- props: sharedProps,
63
+ props: sharedPropsWithDefaults,
59
64
  value,
60
65
  timezone,
61
66
  validator: _validation2.validateDateTimeRange,
62
- onError: sharedProps.onError
67
+ onError: sharedPropsWithDefaults.onError
63
68
  });
64
69
 
65
70
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -14,14 +14,19 @@ var _validation2 = require("../../../validation");
14
14
  var _valueManagers = require("../../utils/valueManagers");
15
15
  var _shared = require("./shared");
16
16
  var _useMultiInputFieldSelectedSections = require("../useMultiInputFieldSelectedSections");
17
+ var _managers = require("../../../managers");
17
18
  const useMultiInputTimeRangeField = ({
18
- sharedProps: inSharedProps,
19
+ sharedProps,
19
20
  startTextFieldProps,
20
21
  unstableStartFieldRef,
21
22
  endTextFieldProps,
22
23
  unstableEndFieldRef
23
24
  }) => {
24
- const sharedProps = (0, _internals.useDefaultizedTimeField)(inSharedProps);
25
+ const manager = (0, _managers.useTimeRangeManager)(sharedProps);
26
+ const sharedPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
27
+ manager,
28
+ internalProps: sharedProps
29
+ });
25
30
  const {
26
31
  value: valueProp,
27
32
  defaultValue,
@@ -37,13 +42,13 @@ const useMultiInputTimeRangeField = ({
37
42
  timezone: timezoneProp,
38
43
  enableAccessibleFieldDOMStructure,
39
44
  autoFocus
40
- } = sharedProps;
45
+ } = sharedPropsWithDefaults;
41
46
  const {
42
47
  value,
43
48
  handleValueChange,
44
49
  timezone
45
50
  } = (0, _internals.useControlledValueWithTimezone)({
46
- name: 'useMultiInputDateRangeField',
51
+ name: 'useMultiInputTimeRangeField',
47
52
  timezone: timezoneProp,
48
53
  value: valueProp,
49
54
  defaultValue,
@@ -55,11 +60,11 @@ const useMultiInputTimeRangeField = ({
55
60
  validationError,
56
61
  getValidationErrorForNewValue
57
62
  } = (0, _validation.useValidation)({
58
- props: sharedProps,
59
- validator: _validation2.validateTimeRange,
63
+ props: sharedPropsWithDefaults,
60
64
  value,
61
65
  timezone,
62
- onError: sharedProps.onError
66
+ validator: _validation2.validateTimeRange,
67
+ onError: sharedPropsWithDefaults.onError
63
68
  });
64
69
 
65
70
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useNullablePickerRangePositionContext = useNullablePickerRangePositionContext;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _usePickerRangePositionContext = require("../../hooks/usePickerRangePositionContext");
10
+ /**
11
+ * Returns information about the range position of the picker that wraps the current component.
12
+ * If no picker wraps the current component, returns `null`.
13
+ */
14
+ function useNullablePickerRangePositionContext() {
15
+ return React.useContext(_usePickerRangePositionContext.PickerRangePositionContext);
16
+ }
@@ -14,6 +14,7 @@ var _styles = require("@mui/material/styles");
14
14
  var _PickersLayout = require("@mui/x-date-pickers/PickersLayout");
15
15
  var _internals = require("@mui/x-date-pickers/internals");
16
16
  var _useRangePosition = require("../useRangePosition");
17
+ var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  const _excluded = ["props", "ref"];
19
20
  const PickerStaticLayout = (0, _styles.styled)(_PickersLayout.PickersLayout)(({
@@ -43,12 +44,8 @@ const useStaticRangePicker = _ref => {
43
44
  displayStaticWrapperAs,
44
45
  autoFocus
45
46
  } = props;
47
+ const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props);
46
48
  const {
47
- rangePosition,
48
- onRangePositionChange
49
- } = (0, _useRangePosition.useRangePosition)(props);
50
- const {
51
- layoutProps,
52
49
  providerProps,
53
50
  renderCurrentView
54
51
  } = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
@@ -56,29 +53,22 @@ const useStaticRangePicker = _ref => {
56
53
  autoFocusView: autoFocus ?? false,
57
54
  fieldRef: undefined,
58
55
  localeText,
59
- additionalViewProps: {
60
- rangePosition,
61
- onRangePositionChange
62
- },
63
56
  variant: displayStaticWrapperAs
64
57
  }));
65
58
  const Layout = slots?.layout ?? PickerStaticLayout;
66
- const slotPropsForLayout = (0, _extends2.default)({}, slotProps, {
67
- toolbar: (0, _extends2.default)({}, slotProps?.toolbar, {
68
- rangePosition,
69
- onRangePositionChange
70
- })
71
- });
72
- const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
73
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
74
- slots: slots,
75
- slotProps: slotPropsForLayout,
76
- sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
77
- className: (0, _clsx.default)(className, slotProps?.layout?.className),
78
- ref: ref,
79
- children: renderCurrentView()
59
+ const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
60
+ value: rangePositionResponse,
61
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
62
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
63
+ slots: slots,
64
+ slotProps: slotProps,
65
+ sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
66
+ className: (0, _clsx.default)(className, slotProps?.layout?.className),
67
+ ref: ref,
68
+ children: renderCurrentView()
69
+ }))
80
70
  }))
81
- }));
71
+ });
82
72
  return {
83
73
  renderPicker
84
74
  };
@@ -15,7 +15,8 @@ function calculateRangeChange({
15
15
  shouldMergeDateAndTime = false,
16
16
  referenceDate
17
17
  }) {
18
- const [start, end] = range;
18
+ const start = !utils.isValid(range[0]) ? null : range[0];
19
+ const end = !utils.isValid(range[1]) ? null : range[1];
19
20
  if (shouldMergeDateAndTime && selectedDate) {
20
21
  // If there is a date already selected, then we want to keep its time
21
22
  if (start && rangePosition === 'start') {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getReleaseInfo = void 0;
7
7
  var _utils = require("@mui/utils");
8
8
  const getReleaseInfo = () => {
9
- const releaseInfo = "MTczNTE2NDAwMDAwMA==";
9
+ const releaseInfo = "MTczNjM3NzIwMDAwMA==";
10
10
  if (process.env.NODE_ENV !== 'production') {
11
11
  // A simple hack to set the value in the test environment (has no build step).
12
12
  // eslint-disable-next-line no-useless-concat