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

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 (199) hide show
  1. package/CHANGELOG.md +551 -3
  2. package/DateRangeCalendar/DateRangeCalendar.js +4 -4
  3. package/DateRangePicker/DateRangePickerToolbar.js +3 -3
  4. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  5. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  6. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  7. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
  8. package/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
  9. package/MultiInputDateRangeField/index.d.ts +5 -3
  10. package/MultiInputDateRangeField/index.js +2 -2
  11. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
  12. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  13. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
  14. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +12 -116
  15. package/MultiInputDateTimeRangeField/index.d.ts +5 -3
  16. package/MultiInputDateTimeRangeField/index.js +2 -2
  17. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
  18. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  19. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
  20. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -117
  21. package/MultiInputTimeRangeField/index.d.ts +5 -3
  22. package/MultiInputTimeRangeField/index.js +2 -2
  23. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
  24. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  25. package/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
  26. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -17
  27. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  28. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  29. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
  30. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -18
  31. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  32. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  33. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
  34. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -18
  35. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  36. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  37. package/hooks/index.d.ts +1 -0
  38. package/hooks/index.js +2 -1
  39. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  40. package/hooks/useMultiInputRangeField/index.js +1 -0
  41. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  42. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  43. package/{internals/hooks/useMultiInputFieldSelectedSections.d.ts → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts} +3 -4
  44. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  45. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  46. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  47. package/index.js +1 -1
  48. package/internals/hooks/models/index.d.ts +1 -1
  49. package/internals/hooks/models/useRangePicker.d.ts +4 -6
  50. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -42
  51. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +15 -6
  52. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
  53. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +23 -32
  54. package/internals/hooks/useRangePosition.d.ts +1 -1
  55. package/internals/hooks/useRangePosition.js +1 -1
  56. package/internals/models/dateTimeRange.d.ts +1 -6
  57. package/internals/models/fields.d.ts +1 -2
  58. package/internals/models/index.d.ts +0 -1
  59. package/internals/models/index.js +0 -1
  60. package/internals/models/managers.d.ts +3 -0
  61. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  62. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +133 -0
  63. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  64. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  65. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  66. package/internals/utils/releaseInfo.js +1 -1
  67. package/managers/index.d.ts +3 -3
  68. package/managers/useDateRangeManager.d.ts +1 -1
  69. package/managers/useDateRangeManager.js +3 -1
  70. package/managers/useDateTimeRangeManager.d.ts +1 -1
  71. package/managers/useDateTimeRangeManager.js +3 -1
  72. package/managers/useTimeRangeManager.d.ts +1 -1
  73. package/managers/useTimeRangeManager.js +3 -1
  74. package/models/fields.d.ts +1 -2
  75. package/models/index.d.ts +0 -2
  76. package/models/index.js +0 -2
  77. package/modern/DateRangeCalendar/DateRangeCalendar.js +4 -4
  78. package/modern/DateRangePicker/DateRangePickerToolbar.js +3 -3
  79. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  80. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  81. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  82. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
  83. package/modern/MultiInputDateRangeField/index.js +2 -2
  84. package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  85. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +12 -116
  86. package/modern/MultiInputDateTimeRangeField/index.js +2 -2
  87. package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  88. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -117
  89. package/modern/MultiInputTimeRangeField/index.js +2 -2
  90. package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  91. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
  92. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  93. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
  94. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  95. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
  96. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  97. package/modern/hooks/index.js +2 -1
  98. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  99. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  100. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  101. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  102. package/modern/index.js +1 -1
  103. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -42
  104. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
  105. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +23 -32
  106. package/modern/internals/hooks/useRangePosition.js +1 -1
  107. package/modern/internals/models/index.js +0 -1
  108. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +133 -0
  109. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  110. package/modern/internals/utils/releaseInfo.js +1 -1
  111. package/modern/managers/useDateRangeManager.js +3 -1
  112. package/modern/managers/useDateTimeRangeManager.js +3 -1
  113. package/modern/managers/useTimeRangeManager.js +3 -1
  114. package/modern/models/index.js +0 -2
  115. package/node/DateRangeCalendar/DateRangeCalendar.js +4 -4
  116. package/node/DateRangePicker/DateRangePickerToolbar.js +3 -3
  117. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  118. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  119. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  120. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +11 -119
  121. package/node/MultiInputDateRangeField/index.js +3 -9
  122. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  123. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +11 -119
  124. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  125. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  126. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +12 -120
  127. package/node/MultiInputTimeRangeField/index.js +3 -9
  128. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  129. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +19 -29
  130. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  131. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +19 -29
  132. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  133. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +19 -29
  134. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  135. package/node/hooks/index.js +8 -1
  136. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  137. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  138. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  139. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  140. package/node/index.js +1 -1
  141. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +31 -41
  142. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +41 -54
  143. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +22 -31
  144. package/node/internals/hooks/useRangePosition.js +1 -1
  145. package/node/internals/models/index.js +0 -11
  146. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +140 -0
  147. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  148. package/node/internals/utils/releaseInfo.js +1 -1
  149. package/node/managers/useDateRangeManager.js +3 -1
  150. package/node/managers/useDateTimeRangeManager.js +3 -1
  151. package/node/managers/useTimeRangeManager.js +3 -1
  152. package/node/models/index.js +0 -22
  153. package/package.json +4 -4
  154. package/themeAugmentation/overrides.d.ts +6 -4
  155. package/themeAugmentation/props.d.ts +2 -2
  156. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -55
  157. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -56
  158. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -56
  159. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  160. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  161. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  162. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -118
  163. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  164. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -118
  165. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  166. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  167. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -118
  168. package/internals/models/timeRange.d.ts +0 -6
  169. package/internals/models/timeRange.js +0 -1
  170. package/models/dateRange.d.ts +0 -7
  171. package/models/dateRange.js +0 -1
  172. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  173. package/models/multiInputRangeFieldClasses.js +0 -1
  174. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  175. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  176. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  177. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  178. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -118
  179. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -118
  180. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  181. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -118
  182. package/modern/internals/models/timeRange.js +0 -1
  183. package/modern/models/dateRange.js +0 -1
  184. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  185. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  186. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  187. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -126
  188. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -126
  189. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  190. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -126
  191. package/node/internals/models/timeRange.js +0 -5
  192. package/node/models/dateRange.js +0 -5
  193. package/node/models/multiInputRangeFieldClasses.js +0 -5
  194. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  195. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  196. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  197. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  198. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  199. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -7,20 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
  exports.SingleInputTimeRangeField = void 0;
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
11
  var React = _interopRequireWildcard(require("react"));
13
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
14
- var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
15
- var _hooks = require("@mui/x-date-pickers/hooks");
13
+ var _icons = require("@mui/x-date-pickers/icons");
16
14
  var _internals = require("@mui/x-date-pickers/internals");
17
- var _PickersTextField = require("@mui/x-date-pickers/PickersTextField");
18
15
  var _styles = require("@mui/material/styles");
19
- var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
20
16
  var _utils = require("@mui/utils");
21
17
  var _useSingleInputTimeRangeField = require("./useSingleInputTimeRangeField");
22
18
  var _jsxRuntime = require("react/jsx-runtime");
23
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
19
+ const _excluded = ["slots", "slotProps"];
24
20
  /**
25
21
  * Demos:
26
22
  *
@@ -38,33 +34,21 @@ const SingleInputTimeRangeField = exports.SingleInputTimeRangeField = /*#__PURE_
38
34
  });
39
35
  const {
40
36
  slots,
41
- slotProps,
42
- InputProps,
43
- inputProps
37
+ slotProps
44
38
  } = themeProps,
45
39
  other = (0, _objectWithoutPropertiesLoose2.default)(themeProps, _excluded);
46
- const ownerState = (0, _internals.useFieldOwnerState)(themeProps);
47
- const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure === false ? _TextField.default : _PickersTextField.PickersTextField);
48
- const textFieldProps = (0, _useSlotProps.default)({
49
- elementType: TextField,
50
- externalSlotProps: slotProps?.textField,
51
- externalForwardedProps: other,
52
- ownerState,
53
- additionalProps: {
54
- ref: inRef
55
- }
40
+ const textFieldProps = (0, _internals.useFieldTextFieldProps)({
41
+ slotProps,
42
+ ref: inRef,
43
+ externalForwardedProps: other
56
44
  });
57
-
58
- // TODO: Remove when mui/material-ui#35088 will be merged
59
- textFieldProps.inputProps = (0, _extends2.default)({}, inputProps, textFieldProps.inputProps);
60
- textFieldProps.InputProps = (0, _extends2.default)({}, InputProps, textFieldProps.InputProps);
61
45
  const fieldResponse = (0, _useSingleInputTimeRangeField.useSingleInputTimeRangeField)(textFieldProps);
62
- const convertedFieldResponse = (0, _internals.convertFieldResponseIntoMuiTextFieldProps)(fieldResponse);
63
- const processedFieldProps = (0, _hooks.useClearableField)((0, _extends2.default)({}, convertedFieldResponse, {
64
- slots,
65
- slotProps
66
- }));
67
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(TextField, (0, _extends2.default)({}, processedFieldProps));
46
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerFieldUI, {
47
+ slots: slots,
48
+ slotProps: slotProps,
49
+ fieldResponse: fieldResponse,
50
+ defaultOpenPickerIcon: _icons.ClockIcon
51
+ });
68
52
  });
69
53
  SingleInputTimeRangeField.fieldType = 'single-input';
70
54
  process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
@@ -88,6 +72,12 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
88
72
  * @default false
89
73
  */
90
74
  clearable: _propTypes.default.bool,
75
+ /**
76
+ * The position at which the clear button is placed.
77
+ * If the field is not clearable, the button is not rendered.
78
+ * @default 'end'
79
+ */
80
+ clearButtonPosition: _propTypes.default.oneOf(['end', 'start']),
91
81
  /**
92
82
  * The color of the component.
93
83
  * It supports both default and custom theme colors, which can be added as shown in the
@@ -24,7 +24,8 @@ const useSingleInputTimeRangeField = props => {
24
24
  valueManager: manager.internal_valueManager,
25
25
  fieldValueManager: manager.internal_fieldValueManager,
26
26
  validator: manager.validator,
27
- valueType: manager.valueType
27
+ valueType: manager.valueType,
28
+ getOpenPickerButtonAriaLabel: manager.internal_getOpenPickerButtonAriaLabel
28
29
  });
29
30
  };
30
31
  exports.useSingleInputTimeRangeField = useSingleInputTimeRangeField;
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "unstable_useMultiInputRangeField", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useMultiInputRangeField.useMultiInputRangeField;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "usePickerRangePositionContext", {
7
13
  enumerable: true,
8
14
  get: function () {
9
15
  return _usePickerRangePositionContext.usePickerRangePositionContext;
10
16
  }
11
17
  });
12
- var _usePickerRangePositionContext = require("./usePickerRangePositionContext");
18
+ var _usePickerRangePositionContext = require("./usePickerRangePositionContext");
19
+ var _useMultiInputRangeField = require("./useMultiInputRangeField");
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useMultiInputRangeField", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useMultiInputRangeField.useMultiInputRangeField;
10
+ }
11
+ });
12
+ var _useMultiInputRangeField = require("./useMultiInputRangeField");
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useMultiInputRangeField = useMultiInputRangeField;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
11
+ var _internals = require("@mui/x-date-pickers/internals");
12
+ var _validation = require("@mui/x-date-pickers/validation");
13
+ var _useMultiInputRangeFieldTextFieldProps = require("./useMultiInputRangeFieldTextFieldProps");
14
+ var _useMultiInputRangeFieldSelectedSections = require("./useMultiInputRangeFieldSelectedSections");
15
+ /**
16
+ * Basic example:
17
+ *
18
+ * ```tsx
19
+ * import Box from '@mui/material/Box';
20
+ * import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
21
+ * import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
22
+ * import { useDateRangeManager } from '@mui/x-date-pickers-pro/managers';
23
+ *
24
+ * function MultiInputField(props) {
25
+ * const manager = useDateRangeManager();
26
+ * const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
27
+ * const { startDate, endDate } = useMultiInputRangeField({
28
+ * manager,
29
+ * internalProps,
30
+ * startForwardedProps: forwardedProps,
31
+ * endForwardedProps: forwardedProps,
32
+ * });
33
+ *
34
+ * return (
35
+ * <Box {...forwardedProps}>
36
+ * <PickersTextField {...startDate} />
37
+ * <span>{' – '}</span>
38
+ * <PickersTextField {...endDate} />
39
+ * </Box>
40
+ * );
41
+ * }
42
+ * ```
43
+ *
44
+ * @param {UseMultiInputRangeFieldParameters<TManager, TForwardedProps>} parameters The parameters of the hook.
45
+ * @param {TManager} parameters.manager The manager of the field.
46
+ * @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
47
+ * @param {TForwardedProps} parameters.startForwardedProps The forwarded props of the start field.
48
+ * @param {TForwardedProps} parameters.endForwardedProps The forwarded props of the end field.
49
+ * @returns {UseMultiInputRangeFieldReturnValue<TManager, TForwardedProps>} The props to pass to the start and the end components.
50
+ */
51
+ function useMultiInputRangeField(parameters) {
52
+ const {
53
+ manager,
54
+ internalProps,
55
+ startForwardedProps,
56
+ endForwardedProps
57
+ } = parameters;
58
+ const internalPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
59
+ manager,
60
+ internalProps
61
+ });
62
+ const {
63
+ value: valueProp,
64
+ defaultValue,
65
+ format,
66
+ formatDensity,
67
+ shouldRespectLeadingZeros,
68
+ onChange,
69
+ disabled,
70
+ readOnly,
71
+ selectedSections,
72
+ onSelectedSectionsChange,
73
+ timezone: timezoneProp,
74
+ enableAccessibleFieldDOMStructure,
75
+ autoFocus,
76
+ referenceDate,
77
+ unstableStartFieldRef,
78
+ unstableEndFieldRef
79
+ } = internalPropsWithDefaults;
80
+ const {
81
+ value,
82
+ handleValueChange,
83
+ timezone
84
+ } = (0, _internals.useControlledValueWithTimezone)({
85
+ name: 'useMultiInputRangeField',
86
+ timezone: timezoneProp,
87
+ value: valueProp,
88
+ defaultValue,
89
+ referenceDate,
90
+ onChange,
91
+ valueManager: manager.internal_valueManager
92
+ });
93
+ const {
94
+ validationError,
95
+ getValidationErrorForNewValue
96
+ } = (0, _validation.useValidation)({
97
+ props: internalPropsWithDefaults,
98
+ value,
99
+ timezone,
100
+ validator: manager.validator,
101
+ onError: internalPropsWithDefaults.onError
102
+ });
103
+ const buildChangeHandler = index => {
104
+ return (newSingleValue, rawContext) => {
105
+ const newRange = index === 0 ? [newSingleValue, value[1]] : [value[0], newSingleValue];
106
+ const context = (0, _extends2.default)({}, rawContext, {
107
+ validationError: getValidationErrorForNewValue(newRange)
108
+ });
109
+ handleValueChange(newRange, context);
110
+ };
111
+ };
112
+ const handleStartDateChange = (0, _useEventCallback.default)(buildChangeHandler(0));
113
+ const handleEndDateChange = (0, _useEventCallback.default)(buildChangeHandler(1));
114
+ const selectedSectionsResponse = (0, _useMultiInputRangeFieldSelectedSections.useMultiInputRangeFieldSelectedSections)({
115
+ selectedSections,
116
+ onSelectedSectionsChange,
117
+ unstableStartFieldRef,
118
+ unstableEndFieldRef
119
+ });
120
+ const sharedProps = {
121
+ disabled,
122
+ readOnly,
123
+ timezone,
124
+ format,
125
+ formatDensity,
126
+ shouldRespectLeadingZeros,
127
+ enableAccessibleFieldDOMStructure
128
+ };
129
+ const startDateProps = (0, _useMultiInputRangeFieldTextFieldProps.useMultiInputRangeFieldTextFieldProps)({
130
+ valueType: manager.valueType,
131
+ fieldProps: (0, _extends2.default)({
132
+ error: !!validationError[0]
133
+ }, startForwardedProps, selectedSectionsResponse.start, sharedProps, {
134
+ value: valueProp === undefined ? undefined : valueProp[0],
135
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
136
+ onChange: handleStartDateChange,
137
+ autoFocus // Do not add on end field.
138
+ })
139
+ });
140
+ const endDateProps = (0, _useMultiInputRangeFieldTextFieldProps.useMultiInputRangeFieldTextFieldProps)({
141
+ valueType: manager.valueType,
142
+ fieldProps: (0, _extends2.default)({
143
+ error: !!validationError[1]
144
+ }, endForwardedProps, selectedSectionsResponse.end, sharedProps, {
145
+ value: valueProp === undefined ? undefined : valueProp[1],
146
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
147
+ onChange: handleEndDateChange
148
+ })
149
+ });
150
+ return {
151
+ startDate: startDateProps,
152
+ endDate: endDateProps,
153
+ enableAccessibleFieldDOMStructure
154
+ };
155
+ }
@@ -1,18 +1,19 @@
1
1
  "use strict";
2
+ 'use client';
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
7
8
  });
8
- exports.useMultiInputFieldSelectedSections = void 0;
9
+ exports.useMultiInputRangeFieldSelectedSections = void 0;
9
10
  var React = _interopRequireWildcard(require("react"));
10
11
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
11
12
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
12
- const useMultiInputFieldSelectedSections = params => {
13
+ const useMultiInputRangeFieldSelectedSections = parameters => {
13
14
  const unstableEndFieldRef = React.useRef(null);
14
- const handleUnstableEndFieldRef = (0, _useForkRef.default)(params.unstableEndFieldRef, unstableEndFieldRef);
15
- const [startSelectedSection, setStartSelectedSection] = React.useState(params.selectedSections ?? null);
15
+ const handleUnstableEndFieldRef = (0, _useForkRef.default)(parameters.unstableEndFieldRef, unstableEndFieldRef);
16
+ const [startSelectedSection, setStartSelectedSection] = React.useState(parameters.selectedSections ?? null);
16
17
  const [endSelectedSection, setEndSelectedSection] = React.useState(null);
17
18
  const getActiveField = () => {
18
19
  if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
@@ -23,27 +24,27 @@ const useMultiInputFieldSelectedSections = params => {
23
24
  const handleStartSelectedSectionChange = (0, _useEventCallback.default)(newSelectedSections => {
24
25
  setStartSelectedSection(newSelectedSections);
25
26
  if (getActiveField() === 'start') {
26
- params.onSelectedSectionsChange?.(newSelectedSections);
27
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
27
28
  }
28
29
  });
29
30
  const handleEndSelectedSectionChange = (0, _useEventCallback.default)(newSelectedSections => {
30
31
  setEndSelectedSection(newSelectedSections);
31
32
  if (getActiveField() === 'end') {
32
- params.onSelectedSectionsChange?.(newSelectedSections);
33
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
33
34
  }
34
35
  });
35
36
  const activeField = getActiveField();
36
37
  return {
37
38
  start: {
38
- unstableFieldRef: params.unstableStartFieldRef,
39
- selectedSections: activeField === 'start' && params.selectedSections !== undefined ? params.selectedSections : startSelectedSection,
39
+ unstableFieldRef: parameters.unstableStartFieldRef,
40
+ selectedSections: activeField === 'start' && parameters.selectedSections !== undefined ? parameters.selectedSections : startSelectedSection,
40
41
  onSelectedSectionsChange: handleStartSelectedSectionChange
41
42
  },
42
43
  end: {
43
44
  unstableFieldRef: handleUnstableEndFieldRef,
44
- selectedSections: activeField === 'end' && params.selectedSections !== undefined ? params.selectedSections : endSelectedSection,
45
+ selectedSections: activeField === 'end' && parameters.selectedSections !== undefined ? parameters.selectedSections : endSelectedSection,
45
46
  onSelectedSectionsChange: handleEndSelectedSectionChange
46
47
  }
47
48
  };
48
49
  };
49
- exports.useMultiInputFieldSelectedSections = useMultiInputFieldSelectedSections;
50
+ exports.useMultiInputRangeFieldSelectedSections = useMultiInputRangeFieldSelectedSections;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useMultiInputRangeFieldTextFieldProps = useMultiInputRangeFieldTextFieldProps;
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _managers = require("@mui/x-date-pickers/managers");
10
+ var _hooks = require("@mui/x-date-pickers/hooks");
11
+ var _internals = require("@mui/x-date-pickers/internals");
12
+ const _excluded = ["clearable", "onClear"];
13
+ /**
14
+ * @ignore - internal hook.
15
+ */
16
+ function useMultiInputRangeFieldTextFieldProps(parameters) {
17
+ const {
18
+ fieldProps,
19
+ valueType
20
+ } = parameters;
21
+ let useManager;
22
+ switch (valueType) {
23
+ case 'date':
24
+ {
25
+ useManager = _managers.useDateManager;
26
+ break;
27
+ }
28
+ case 'time':
29
+ {
30
+ useManager = _managers.useTimeManager;
31
+ break;
32
+ }
33
+ case 'date-time':
34
+ {
35
+ useManager = _managers.useDateTimeManager;
36
+ break;
37
+ }
38
+ default:
39
+ {
40
+ throw new Error(`Unknown valueType: ${valueType}`);
41
+ }
42
+ }
43
+ const manager = useManager({
44
+ enableAccessibleFieldDOMStructure: fieldProps.enableAccessibleFieldDOMStructure
45
+ });
46
+ const {
47
+ forwardedProps,
48
+ internalProps
49
+ } = (0, _hooks.useSplitFieldProps)(fieldProps, 'date');
50
+ const internalPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
51
+ manager,
52
+ internalProps
53
+ });
54
+ const _ref = (0, _internals.useField)({
55
+ forwardedProps,
56
+ internalProps: internalPropsWithDefaults,
57
+ valueManager: manager.internal_valueManager,
58
+ fieldValueManager: manager.internal_fieldValueManager,
59
+ validator: manager.validator,
60
+ valueType: manager.valueType,
61
+ // TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
62
+ getOpenPickerButtonAriaLabel: () => ''
63
+ }),
64
+ fieldResponse = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
65
+ return fieldResponse;
66
+ }
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.7
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.9
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -13,7 +13,7 @@ var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
13
13
  var _xLicense = require("@mui/x-license");
14
14
  var _PickersLayout = require("@mui/x-date-pickers/PickersLayout");
15
15
  var _internals = require("@mui/x-date-pickers/internals");
16
- var _useEnrichedRangePickerFieldProps = require("../useEnrichedRangePickerFieldProps");
16
+ var _useEnrichedRangePickerField = require("../useEnrichedRangePickerField");
17
17
  var _releaseInfo = require("../../utils/releaseInfo");
18
18
  var _useRangePosition = require("../useRangePosition");
19
19
  var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
@@ -31,24 +31,16 @@ const useDesktopRangePicker = _ref => {
31
31
  slotProps,
32
32
  className,
33
33
  sx,
34
- format,
35
- formatDensity,
36
- enableAccessibleFieldDOMStructure,
37
- selectedSections,
38
- onSelectedSectionsChange,
39
- timezone,
40
34
  label,
41
35
  inputRef,
42
36
  name,
43
37
  readOnly,
44
- disabled,
45
38
  autoFocus,
46
39
  disableOpenPicker,
47
40
  localeText,
48
41
  reduceAnimations
49
42
  } = props;
50
43
  const fieldContainerRef = React.useRef(null);
51
- const anchorRef = React.useRef(null);
52
44
  const popperRef = React.useRef(null);
53
45
  const startFieldRef = React.useRef(null);
54
46
  const endFieldRef = React.useRef(null);
@@ -68,7 +60,6 @@ const useDesktopRangePicker = _ref => {
68
60
  providerProps,
69
61
  renderCurrentView,
70
62
  shouldRestoreFocus,
71
- fieldProps: pickerFieldProps,
72
63
  ownerState
73
64
  } = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
74
65
  props,
@@ -77,6 +68,9 @@ const useDesktopRangePicker = _ref => {
77
68
  fieldRef,
78
69
  localeText
79
70
  }));
71
+
72
+ // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
73
+ providerProps.contextValue.triggerStatus = 'hidden';
80
74
  React.useEffect(() => {
81
75
  if (providerProps.contextValue.view) {
82
76
  initialView.current = providerProps.contextValue.view;
@@ -100,17 +94,7 @@ const useDesktopRangePicker = _ref => {
100
94
  additionalProps: (0, _extends2.default)({
101
95
  // Internal props
102
96
  readOnly,
103
- disabled,
104
- format,
105
- formatDensity,
106
- enableAccessibleFieldDOMStructure,
107
- selectedSections,
108
- onSelectedSectionsChange,
109
- timezone,
110
- autoFocus: autoFocus && !props.open
111
- }, pickerFieldProps, {
112
- // onChange and value
113
-
97
+ autoFocus: autoFocus && !props.open,
114
98
  // Forwarded props
115
99
  className,
116
100
  sx,
@@ -122,12 +106,12 @@ const useDesktopRangePicker = _ref => {
122
106
  }),
123
107
  ownerState
124
108
  });
125
- const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)((0, _extends2.default)({
109
+ const enrichedFieldResponse = (0, _useEnrichedRangePickerField.useEnrichedRangePickerField)((0, _extends2.default)({
126
110
  variant: 'desktop',
127
111
  fieldType,
128
112
  // 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,
113
+ contextValue: providerProps.contextValue,
114
+ fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
131
115
  readOnly,
132
116
  disableOpenPicker,
133
117
  label,
@@ -136,7 +120,7 @@ const useDesktopRangePicker = _ref => {
136
120
  pickerSlotProps: slotProps,
137
121
  pickerSlots: slots,
138
122
  fieldProps,
139
- anchorRef,
123
+ anchorRef: providerProps.contextValue.triggerRef,
140
124
  startFieldRef,
141
125
  endFieldRef,
142
126
  singleInputFieldRef,
@@ -145,24 +129,30 @@ const useDesktopRangePicker = _ref => {
145
129
  }, rangePositionResponse));
146
130
  const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
147
131
  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,
156
- slots: slots,
157
- slotProps: slotProps,
158
- shouldRestoreFocus: shouldRestoreFocus,
159
- reduceAnimations: reduceAnimations,
160
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
132
+ // This override will go away once the range fields handle the picker opening
133
+ fieldPrivateContextValue: (0, _extends2.default)({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
134
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerFieldUIContextProvider, {
135
+ slots: slots,
136
+ slotProps: slotProps,
137
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
138
+ value: rangePositionResponse,
139
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper, {
140
+ role: "tooltip",
141
+ placement: "bottom-start",
142
+ containerRef: popperRef,
143
+ anchorEl: providerProps.contextValue.triggerRef.current,
144
+ onBlur: handleBlur,
161
145
  slots: slots,
162
146
  slotProps: slotProps,
163
- children: renderCurrentView()
164
- }))
165
- })]
147
+ shouldRestoreFocus: shouldRestoreFocus,
148
+ reduceAnimations: reduceAnimations,
149
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
150
+ slots: slots,
151
+ slotProps: slotProps,
152
+ children: renderCurrentView()
153
+ }))
154
+ })]
155
+ })
166
156
  })
167
157
  }));
168
158
  return {