@mui/x-date-pickers-pro 8.0.0-alpha.5 → 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 (148) 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 +206 -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 -31
  13. package/DateRangePicker/shared.d.ts +1 -1
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  15. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
  17. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  19. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -4
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
  21. package/DateTimeRangePicker/shared.d.ts +2 -2
  22. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
  24. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  25. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  26. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  27. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  28. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  30. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  31. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  32. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  33. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  34. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  35. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  36. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  37. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  38. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  39. package/hooks/index.d.ts +1 -0
  40. package/hooks/index.js +1 -0
  41. package/hooks/package.json +6 -0
  42. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  43. package/hooks/usePickerRangePositionContext.js +15 -0
  44. package/index.d.ts +2 -0
  45. package/index.js +4 -2
  46. package/internals/hooks/models/useRangePicker.d.ts +4 -4
  47. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  48. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +7 -9
  49. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +6 -6
  50. package/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  51. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  52. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  53. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +10 -12
  54. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  55. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  56. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -2
  57. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  58. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -2
  59. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  60. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  61. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  62. package/internals/hooks/useRangePosition.d.ts +1 -1
  63. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  64. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -6
  65. package/internals/utils/date-range-manager.js +2 -1
  66. package/internals/utils/releaseInfo.js +1 -1
  67. package/internals/utils/valueManagers.js +7 -7
  68. package/managers/index.d.ts +6 -0
  69. package/managers/index.js +3 -0
  70. package/managers/package.json +6 -0
  71. package/managers/useDateRangeManager.d.ts +15 -0
  72. package/managers/useDateRangeManager.js +31 -0
  73. package/managers/useDateTimeRangeManager.d.ts +15 -0
  74. package/managers/useDateTimeRangeManager.js +31 -0
  75. package/managers/useTimeRangeManager.d.ts +15 -0
  76. package/managers/useTimeRangeManager.js +29 -0
  77. package/models/range.d.ts +0 -1
  78. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  79. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  80. package/modern/DateRangeCalendar/DateRangeCalendar.js +9 -7
  81. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  82. package/modern/DateRangePicker/DateRangePickerToolbar.js +25 -31
  83. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  84. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
  85. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  86. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
  87. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  88. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  89. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  90. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  91. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  92. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  93. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  94. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  95. package/modern/hooks/index.js +1 -0
  96. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  97. package/modern/index.js +4 -2
  98. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  99. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  100. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  101. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  102. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  103. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  104. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  105. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  106. package/modern/internals/utils/date-range-manager.js +2 -1
  107. package/modern/internals/utils/releaseInfo.js +1 -1
  108. package/modern/internals/utils/valueManagers.js +7 -7
  109. package/modern/managers/index.js +3 -0
  110. package/modern/managers/useDateRangeManager.js +31 -0
  111. package/modern/managers/useDateTimeRangeManager.js +31 -0
  112. package/modern/managers/useTimeRangeManager.js +29 -0
  113. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  114. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  115. package/node/DateRangeCalendar/DateRangeCalendar.js +9 -7
  116. package/node/DateRangePicker/DateRangePicker.js +1 -1
  117. package/node/DateRangePicker/DateRangePickerToolbar.js +24 -30
  118. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  119. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +24 -23
  120. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  121. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +65 -68
  122. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  123. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  124. package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  125. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  126. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +12 -14
  127. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +12 -14
  128. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +12 -14
  129. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  130. package/node/hooks/index.js +12 -0
  131. package/node/hooks/usePickerRangePositionContext.js +22 -0
  132. package/node/index.js +23 -1
  133. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  134. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  135. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  136. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +10 -5
  137. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +11 -6
  138. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +12 -7
  139. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  140. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  141. package/node/internals/utils/date-range-manager.js +2 -1
  142. package/node/internals/utils/releaseInfo.js +1 -1
  143. package/node/internals/utils/valueManagers.js +7 -7
  144. package/node/managers/index.js +26 -0
  145. package/node/managers/useDateRangeManager.js +38 -0
  146. package/node/managers/useDateTimeRangeManager.js +38 -0
  147. package/node/managers/useTimeRangeManager.js +36 -0
  148. 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.useSingleInputDateRangeField = 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 useSingleInputDateRangeField = inProps => {
15
- const props = (0, _internals.useDefaultizedDateField)(inProps);
10
+ var _managers = require("../managers");
11
+ const useSingleInputDateRangeField = props => {
12
+ const manager = (0, _managers.useDateRangeManager)(props);
16
13
  const {
17
14
  forwardedProps,
18
15
  internalProps
19
16
  } = (0, _hooks.useSplitFieldProps)(props, 'date');
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.validateDateRange,
29
- valueType: 'date'
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.useSingleInputDateRangeField = useSingleInputDateRangeField;
@@ -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.useSingleInputDateTimeRangeField = 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 useSingleInputDateTimeRangeField = inProps => {
15
- const props = (0, _internals.useDefaultizedDateTimeField)(inProps);
10
+ var _managers = require("../managers");
11
+ const useSingleInputDateTimeRangeField = props => {
12
+ const manager = (0, _managers.useDateTimeRangeManager)(props);
16
13
  const {
17
14
  forwardedProps,
18
15
  internalProps
19
16
  } = (0, _hooks.useSplitFieldProps)(props, 'date-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.validateDateTimeRange,
29
- valueType: 'date-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.useSingleInputDateTimeRangeField = useSingleInputDateTimeRangeField;
@@ -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.5
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,22 +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
- open,
71
- actions,
72
- layoutProps,
73
68
  providerProps,
74
69
  renderCurrentView,
75
70
  shouldRestoreFocus,
@@ -80,15 +75,11 @@ const useDesktopRangePicker = _ref => {
80
75
  variant: 'desktop',
81
76
  autoFocusView: false,
82
77
  fieldRef,
83
- localeText,
84
- additionalViewProps: {
85
- rangePosition,
86
- onRangePositionChange
87
- }
78
+ localeText
88
79
  }));
89
80
  React.useEffect(() => {
90
- if (layoutProps.view) {
91
- initialView.current = layoutProps.view;
81
+ if (providerProps.contextValue.view) {
82
+ initialView.current = providerProps.contextValue.view;
92
83
  }
93
84
  // eslint-disable-next-line react-hooks/exhaustive-deps
94
85
  }, []);
@@ -97,7 +88,9 @@ const useDesktopRangePicker = _ref => {
97
88
  if (fieldContainerRef.current?.contains((0, _internals.getActiveElement)(document)) || popperRef.current?.contains((0, _internals.getActiveElement)(document))) {
98
89
  return;
99
90
  }
100
- actions.onDismiss();
91
+
92
+ // This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
93
+ providerProps.privateContextValue.dismissViews();
101
94
  });
102
95
  };
103
96
  const Field = slots.field;
@@ -129,18 +122,17 @@ 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
- open,
136
- actions,
128
+ // These direct access to `providerProps` will go away once the range fields handle the picker opening
129
+ open: providerProps.contextValue.open,
130
+ setOpen: providerProps.contextValue.setOpen,
137
131
  readOnly,
138
132
  disableOpenPicker,
139
133
  label,
140
134
  localeText,
141
135
  onBlur: handleBlur,
142
- rangePosition,
143
- onRangePositionChange,
144
136
  pickerSlotProps: slotProps,
145
137
  pickerSlots: slots,
146
138
  fieldProps,
@@ -148,40 +140,30 @@ const useDesktopRangePicker = _ref => {
148
140
  startFieldRef,
149
141
  endFieldRef,
150
142
  singleInputFieldRef,
151
- currentView: layoutProps.view !== props.openTo ? layoutProps.view : undefined,
152
- initialView: initialView.current ?? undefined,
153
- onViewChange: layoutProps.onViewChange
154
- });
155
- const slotPropsForLayout = (0, _extends2.default)({}, slotProps, {
156
- tabs: (0, _extends2.default)({}, slotProps?.tabs, {
157
- rangePosition,
158
- onRangePositionChange
159
- }),
160
- toolbar: (0, _extends2.default)({}, slotProps?.toolbar, {
161
- rangePosition,
162
- onRangePositionChange
163
- })
164
- });
143
+ currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
144
+ initialView: initialView.current ?? undefined
145
+ }, rangePositionResponse));
165
146
  const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
166
- const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
167
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper, (0, _extends2.default)({
168
- role: "tooltip",
169
- placement: "bottom-start",
170
- containerRef: popperRef,
171
- anchorEl: anchorRef.current,
172
- onBlur: handleBlur
173
- }, actions, {
174
- open: open,
175
- slots: slots,
176
- slotProps: slotProps,
177
- shouldRestoreFocus: shouldRestoreFocus,
178
- reduceAnimations: reduceAnimations,
179
- 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,
180
156
  slots: slots,
181
- slotProps: slotPropsForLayout,
182
- children: renderCurrentView()
183
- }))
184
- }))]
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
+ })
185
167
  }));
186
168
  return {
187
169
  renderPicker
@@ -18,7 +18,7 @@ const _excluded = ["clearable", "onClear"];
18
18
  const useMultiInputFieldSlotProps = ({
19
19
  variant,
20
20
  open,
21
- actions,
21
+ setOpen,
22
22
  readOnly,
23
23
  labelId,
24
24
  disableOpenPicker,
@@ -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
  }) => {
@@ -62,21 +62,23 @@ const useMultiInputFieldSlotProps = ({
62
62
  event.stopPropagation();
63
63
  onRangePositionChange('start');
64
64
  if (!readOnly && !disableOpenPicker) {
65
- actions.onOpen(event);
65
+ event.preventDefault();
66
+ setOpen(true);
66
67
  }
67
68
  };
68
69
  const openRangeEndSelection = event => {
69
70
  event.stopPropagation();
70
71
  onRangePositionChange('end');
71
72
  if (!readOnly && !disableOpenPicker) {
72
- actions.onOpen(event);
73
+ event.preventDefault();
74
+ setOpen(true);
73
75
  }
74
76
  };
75
77
  const handleFocusStart = () => {
76
78
  if (open) {
77
79
  onRangePositionChange('start');
78
80
  if (previousRangePosition.current !== 'start' && initialView) {
79
- onViewChange?.(initialView);
81
+ setView?.(initialView);
80
82
  }
81
83
  }
82
84
  };
@@ -84,7 +86,7 @@ const useMultiInputFieldSlotProps = ({
84
86
  if (open) {
85
87
  onRangePositionChange('end');
86
88
  if (previousRangePosition.current !== 'end' && initialView) {
87
- onViewChange?.(initialView);
89
+ setView?.(initialView);
88
90
  }
89
91
  }
90
92
  };
@@ -156,7 +158,7 @@ const useMultiInputFieldSlotProps = ({
156
158
  const useSingleInputFieldSlotProps = ({
157
159
  variant,
158
160
  open,
159
- actions,
161
+ setOpen,
160
162
  readOnly,
161
163
  labelId,
162
164
  disableOpenPicker,
@@ -205,7 +207,8 @@ const useSingleInputFieldSlotProps = ({
205
207
  const openPicker = event => {
206
208
  event.stopPropagation();
207
209
  if (!readOnly && !disableOpenPicker) {
208
- actions.onOpen(event);
210
+ event.preventDefault();
211
+ setOpen(true);
209
212
  }
210
213
  };
211
214
  const slots = (0, _extends2.default)({}, fieldProps.slots, {
@@ -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,24 +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
- open,
69
- actions,
70
- layoutProps,
71
66
  providerProps,
72
67
  renderCurrentView,
73
68
  fieldProps: pickerFieldProps,
@@ -77,11 +72,7 @@ const useMobileRangePicker = _ref => {
77
72
  variant: 'mobile',
78
73
  autoFocusView: true,
79
74
  fieldRef,
80
- localeText,
81
- additionalViewProps: {
82
- rangePosition,
83
- onRangePositionChange
84
- }
75
+ localeText
85
76
  }));
86
77
  const Field = slots.field;
87
78
  const fieldProps = (0, _useSlotProps.default)({
@@ -111,36 +102,24 @@ const useMobileRangePicker = _ref => {
111
102
  ownerState
112
103
  });
113
104
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
114
- const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
105
+ const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)((0, _extends2.default)({
115
106
  variant: 'mobile',
116
107
  fieldType,
117
- open,
118
- actions,
108
+ // These direct access to `providerProps` will go away once the range fields handle the picker opening
109
+ open: providerProps.contextValue.open,
110
+ setOpen: providerProps.contextValue.setOpen,
119
111
  readOnly,
120
112
  labelId,
121
113
  disableOpenPicker,
122
114
  label,
123
115
  localeText,
124
- rangePosition,
125
- onRangePositionChange,
126
116
  pickerSlots: slots,
127
117
  pickerSlotProps: innerSlotProps,
128
118
  fieldProps,
129
119
  startFieldRef,
130
120
  endFieldRef,
131
121
  singleInputFieldRef
132
- });
133
- const slotPropsForLayout = (0, _extends2.default)({}, innerSlotProps, {
134
- tabs: (0, _extends2.default)({}, innerSlotProps?.tabs, {
135
- rangePosition,
136
- onRangePositionChange
137
- }),
138
- toolbar: (0, _extends2.default)({}, innerSlotProps?.toolbar, {
139
- titleId: labelId,
140
- rangePosition,
141
- onRangePositionChange
142
- })
143
- });
122
+ }, rangePositionResponse));
144
123
  const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
145
124
  const finalLocaleText = (0, _extends2.default)({}, contextTranslations, localeText);
146
125
  let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
@@ -159,21 +138,26 @@ const useMobileRangePicker = _ref => {
159
138
  labelledById = labels.length > 0 ? labels.join(' ') : undefined;
160
139
  }
161
140
  const slotProps = (0, _extends2.default)({}, innerSlotProps, {
141
+ toolbar: (0, _extends2.default)({}, innerSlotProps?.toolbar, {
142
+ titleId: labelId
143
+ }),
162
144
  mobilePaper: (0, _extends2.default)({
163
145
  'aria-labelledby': labelledById
164
146
  }, innerSlotProps?.mobilePaper)
165
147
  });
166
- const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
167
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog, (0, _extends2.default)({}, actions, {
168
- open: open,
169
- slots: slots,
170
- slotProps: slotProps,
171
- 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, {
172
152
  slots: slots,
173
- slotProps: slotPropsForLayout,
174
- children: renderCurrentView()
175
- }))
176
- }))]
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
+ })
177
161
  }));
178
162
  return {
179
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