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

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 (45) hide show
  1. package/CHANGELOG.md +429 -5
  2. package/DateRangeCalendar/DateRangeCalendar.js +3 -1
  3. package/DateRangePicker/DateRangePickerToolbar.js +0 -12
  4. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -2
  5. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +6 -16
  6. package/README.md +2 -2
  7. package/index.js +1 -1
  8. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -2
  9. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +2 -2
  10. package/internals/hooks/useEnrichedRangePickerFieldProps.js +9 -9
  11. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -2
  12. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +2 -0
  13. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +2 -0
  14. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +3 -1
  15. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -1
  16. package/internals/utils/date-range-manager.d.ts +2 -1
  17. package/internals/utils/date-range-manager.js +11 -9
  18. package/internals/utils/releaseInfo.js +1 -1
  19. package/modern/DateRangeCalendar/DateRangeCalendar.js +3 -1
  20. package/modern/DateRangePicker/DateRangePickerToolbar.js +0 -12
  21. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +6 -16
  22. package/modern/index.js +1 -1
  23. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -2
  24. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +9 -9
  25. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -2
  26. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +2 -0
  27. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +2 -0
  28. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +3 -1
  29. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -1
  30. package/modern/internals/utils/date-range-manager.js +11 -9
  31. package/modern/internals/utils/releaseInfo.js +1 -1
  32. package/node/DateRangeCalendar/DateRangeCalendar.js +3 -1
  33. package/node/DateRangePicker/DateRangePickerToolbar.js +0 -12
  34. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +5 -15
  35. package/node/index.js +1 -1
  36. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -2
  37. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +9 -9
  38. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -2
  39. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +2 -0
  40. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +2 -0
  41. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +3 -1
  42. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +1 -1
  43. package/node/internals/utils/date-range-manager.js +11 -9
  44. package/node/internals/utils/releaseInfo.js +1 -1
  45. package/package.json +6 -6
@@ -20,7 +20,7 @@ var _DateTimePicker = require("@mui/x-date-pickers/DateTimePicker");
20
20
  var _dateTimeRangePickerToolbarClasses = require("./dateTimeRangePickerToolbarClasses");
21
21
  var _dateRangeManager = require("../internals/utils/date-range-manager");
22
22
  var _jsxRuntime = require("react/jsx-runtime");
23
- const _excluded = ["value", "rangePosition", "onRangePositionChange", "className", "onViewChange", "toolbarVariant", "onChange", "classes", "view", "isLandscape", "views", "ampm", "disabled", "readOnly", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
23
+ const _excluded = ["value", "rangePosition", "onRangePositionChange", "className", "onViewChange", "toolbarVariant", "onChange", "classes", "view", "isLandscape", "views", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
24
24
  const useUtilityClasses = ownerState => {
25
25
  const {
26
26
  classes
@@ -93,8 +93,6 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
93
93
  isLandscape,
94
94
  views,
95
95
  ampm,
96
- disabled,
97
- readOnly,
98
96
  hidden,
99
97
  toolbarFormat,
100
98
  toolbarPlaceholder,
@@ -102,6 +100,10 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
102
100
  sx
103
101
  } = props,
104
102
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
103
+ const {
104
+ disabled,
105
+ readOnly
106
+ } = (0, _hooks.usePickerContext)();
105
107
  const commonToolbarProps = {
106
108
  isLandscape,
107
109
  views,
@@ -190,12 +192,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
190
192
  */
191
193
  classes: _propTypes.default.object,
192
194
  className: _propTypes.default.string,
193
- /**
194
- * If `true`, the component is disabled.
195
- * When disabled, the value cannot be changed and no interaction is possible.
196
- * @default false
197
- */
198
- disabled: _propTypes.default.bool,
199
195
  /**
200
196
  * If `true`, show the toolbar even in desktop mode.
201
197
  * @default `true` for Desktop, `false` for Mobile.
@@ -211,12 +207,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
211
207
  */
212
208
  onViewChange: _propTypes.default.func.isRequired,
213
209
  rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
214
- /**
215
- * If `true`, the component is read-only.
216
- * When read-only, the value cannot be changed but the user can interact with the interface.
217
- * @default false
218
- */
219
- readOnly: _propTypes.default.bool,
220
210
  /**
221
211
  * The system prop that allows defining system overrides as well as additional CSS styles.
222
212
  */
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.0
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.1
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -68,7 +68,7 @@ const useDesktopRangePicker = _ref => {
68
68
  ownerState
69
69
  } = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
70
70
  props,
71
- wrapperVariant: 'desktop',
71
+ variant: 'desktop',
72
72
  autoFocusView: false,
73
73
  fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
74
74
  localeText,
@@ -121,7 +121,7 @@ const useDesktopRangePicker = _ref => {
121
121
  ownerState
122
122
  });
123
123
  const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
124
- wrapperVariant: 'desktop',
124
+ variant: 'desktop',
125
125
  fieldType,
126
126
  open,
127
127
  actions,
@@ -16,7 +16,7 @@ var _hooks = require("@mui/x-date-pickers/hooks");
16
16
  var _internals = require("@mui/x-date-pickers/internals");
17
17
  const _excluded = ["clearable", "onClear"];
18
18
  const useMultiInputFieldSlotProps = ({
19
- wrapperVariant,
19
+ variant,
20
20
  open,
21
21
  actions,
22
22
  readOnly,
@@ -41,7 +41,7 @@ const useMultiInputFieldSlotProps = ({
41
41
  const handleEndFieldRef = (0, _useForkRef.default)(fieldProps.unstableEndFieldRef, endFieldRef);
42
42
  const previousRangePosition = React.useRef(rangePosition);
43
43
  React.useEffect(() => {
44
- if (!open) {
44
+ if (!open || variant === 'mobile') {
45
45
  return;
46
46
  }
47
47
  const currentFieldRef = rangePosition === 'start' ? startFieldRef : endFieldRef;
@@ -57,7 +57,7 @@ const useMultiInputFieldSlotProps = ({
57
57
  // use the current view or `0` when the range position has just been swapped
58
58
  previousRangePosition.current === rangePosition ? currentView : 0);
59
59
  previousRangePosition.current = rangePosition;
60
- }, [rangePosition, open, currentView, startFieldRef, endFieldRef]);
60
+ }, [rangePosition, open, currentView, startFieldRef, endFieldRef, variant]);
61
61
  const openRangeStartSelection = event => {
62
62
  event.stopPropagation();
63
63
  onRangePositionChange('start');
@@ -106,7 +106,7 @@ const useMultiInputFieldSlotProps = ({
106
106
  focused: open ? rangePosition === 'start' : undefined
107
107
  }, !readOnly && !fieldProps.disabled && {
108
108
  onClick: openRangeStartSelection
109
- }, wrapperVariant === 'mobile' && {
109
+ }, variant === 'mobile' && {
110
110
  readOnly: true
111
111
  });
112
112
  if (anchorRef) {
@@ -122,7 +122,7 @@ const useMultiInputFieldSlotProps = ({
122
122
  focused: open ? rangePosition === 'end' : undefined
123
123
  }, !readOnly && !fieldProps.disabled && {
124
124
  onClick: openRangeEndSelection
125
- }, wrapperVariant === 'mobile' && {
125
+ }, variant === 'mobile' && {
126
126
  readOnly: true
127
127
  });
128
128
  InputProps = resolvedComponentProps?.InputProps;
@@ -154,7 +154,7 @@ const useMultiInputFieldSlotProps = ({
154
154
  return enrichedFieldProps;
155
155
  };
156
156
  const useSingleInputFieldSlotProps = ({
157
- wrapperVariant,
157
+ variant,
158
158
  open,
159
159
  actions,
160
160
  readOnly,
@@ -174,7 +174,7 @@ const useSingleInputFieldSlotProps = ({
174
174
  }) => {
175
175
  const handleFieldRef = (0, _useForkRef.default)(fieldProps.unstableFieldRef, startFieldRef, endFieldRef);
176
176
  React.useEffect(() => {
177
- if (!open || !startFieldRef.current) {
177
+ if (!open || !startFieldRef.current || variant === 'mobile') {
178
178
  return;
179
179
  }
180
180
  if (startFieldRef.current.isFieldFocused()) {
@@ -187,7 +187,7 @@ const useSingleInputFieldSlotProps = ({
187
187
  const newSelectedSection = rangePosition === 'start' ? sections.indexOf(currentView) : sections.lastIndexOf(currentView);
188
188
  startFieldRef.current?.focusField(newSelectedSection);
189
189
  }
190
- }, [rangePosition, open, currentView, startFieldRef]);
190
+ }, [rangePosition, open, currentView, startFieldRef, variant]);
191
191
  const updateRangePosition = () => {
192
192
  if (!startFieldRef.current?.isFieldFocused()) {
193
193
  return;
@@ -233,7 +233,7 @@ const useSingleInputFieldSlotProps = ({
233
233
  focused: open ? true : undefined
234
234
  }, labelId != null && {
235
235
  id: labelId
236
- }, wrapperVariant === 'mobile' && {
236
+ }, variant === 'mobile' && {
237
237
  readOnly: true
238
238
  }, !readOnly && !fieldProps.disabled && {
239
239
  onClick: openPicker
@@ -65,7 +65,7 @@ const useMobileRangePicker = _ref => {
65
65
  ownerState
66
66
  } = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
67
67
  props,
68
- wrapperVariant: 'mobile',
68
+ variant: 'mobile',
69
69
  autoFocusView: true,
70
70
  fieldRef: rangePosition === 'start' ? startFieldRef : endFieldRef,
71
71
  localeText,
@@ -103,7 +103,7 @@ const useMobileRangePicker = _ref => {
103
103
  });
104
104
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
105
105
  const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
106
- wrapperVariant: 'mobile',
106
+ variant: 'mobile',
107
107
  fieldType,
108
108
  open,
109
109
  actions,
@@ -25,6 +25,7 @@ const useMultiInputDateRangeField = ({
25
25
  const {
26
26
  value: valueProp,
27
27
  defaultValue,
28
+ referenceDate,
28
29
  format,
29
30
  formatDensity,
30
31
  shouldRespectLeadingZeros,
@@ -46,6 +47,7 @@ const useMultiInputDateRangeField = ({
46
47
  timezone: timezoneProp,
47
48
  value: valueProp,
48
49
  defaultValue,
50
+ referenceDate,
49
51
  onChange,
50
52
  valueManager: _valueManagers.rangeValueManager
51
53
  });
@@ -25,6 +25,7 @@ const useMultiInputDateTimeRangeField = ({
25
25
  const {
26
26
  value: valueProp,
27
27
  defaultValue,
28
+ referenceDate,
28
29
  format,
29
30
  formatDensity,
30
31
  shouldRespectLeadingZeros,
@@ -46,6 +47,7 @@ const useMultiInputDateTimeRangeField = ({
46
47
  timezone: timezoneProp,
47
48
  value: valueProp,
48
49
  defaultValue,
50
+ referenceDate,
49
51
  onChange,
50
52
  valueManager: _valueManagers.rangeValueManager
51
53
  });
@@ -25,6 +25,7 @@ const useMultiInputTimeRangeField = ({
25
25
  const {
26
26
  value: valueProp,
27
27
  defaultValue,
28
+ referenceDate,
28
29
  format,
29
30
  formatDensity,
30
31
  shouldRespectLeadingZeros,
@@ -47,7 +48,8 @@ const useMultiInputTimeRangeField = ({
47
48
  value: valueProp,
48
49
  defaultValue,
49
50
  onChange,
50
- valueManager: _valueManagers.rangeValueManager
51
+ valueManager: _valueManagers.rangeValueManager,
52
+ referenceDate
51
53
  });
52
54
  const {
53
55
  validationError,
@@ -60,7 +60,7 @@ const useStaticRangePicker = _ref => {
60
60
  rangePosition,
61
61
  onRangePositionChange
62
62
  },
63
- wrapperVariant: displayStaticWrapperAs
63
+ variant: displayStaticWrapperAs
64
64
  }));
65
65
  const Layout = slots?.layout ?? PickerStaticLayout;
66
66
  const slotPropsForLayout = (0, _extends2.default)({}, slotProps, {
@@ -12,7 +12,8 @@ function calculateRangeChange({
12
12
  newDate: selectedDate,
13
13
  rangePosition,
14
14
  allowRangeFlip = false,
15
- shouldMergeDateAndTime = false
15
+ shouldMergeDateAndTime = false,
16
+ referenceDate
16
17
  }) {
17
18
  const [start, end] = range;
18
19
  if (shouldMergeDateAndTime && selectedDate) {
@@ -24,29 +25,30 @@ function calculateRangeChange({
24
25
  selectedDate = (0, _internals.mergeDateAndTime)(utils, selectedDate, end);
25
26
  }
26
27
  }
28
+ const newSelectedDate = referenceDate && selectedDate && shouldMergeDateAndTime ? (0, _internals.mergeDateAndTime)(utils, selectedDate, referenceDate) : selectedDate;
27
29
  if (rangePosition === 'start') {
28
30
  const truthyResult = allowRangeFlip ? {
29
31
  nextSelection: 'start',
30
- newRange: [end, selectedDate]
32
+ newRange: [end, newSelectedDate]
31
33
  } : {
32
34
  nextSelection: 'end',
33
- newRange: [selectedDate, null]
35
+ newRange: [newSelectedDate, null]
34
36
  };
35
- return Boolean(end) && utils.isAfter(selectedDate, end) ? truthyResult : {
37
+ return Boolean(end) && utils.isAfter(newSelectedDate, end) ? truthyResult : {
36
38
  nextSelection: 'end',
37
- newRange: [selectedDate, end]
39
+ newRange: [newSelectedDate, end]
38
40
  };
39
41
  }
40
42
  const truthyResult = allowRangeFlip ? {
41
43
  nextSelection: 'end',
42
- newRange: [selectedDate, start]
44
+ newRange: [newSelectedDate, start]
43
45
  } : {
44
46
  nextSelection: 'end',
45
- newRange: [selectedDate, null]
47
+ newRange: [newSelectedDate, null]
46
48
  };
47
- return Boolean(start) && utils.isBeforeDay(selectedDate, start) ? truthyResult : {
49
+ return Boolean(start) && utils.isBeforeDay(newSelectedDate, start) ? truthyResult : {
48
50
  nextSelection: 'start',
49
- newRange: [start, selectedDate]
51
+ newRange: [start, newSelectedDate]
50
52
  };
51
53
  }
52
54
  function calculateRangePreview(options) {
@@ -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 = "MTczMTUzODgwMDAwMA==";
9
+ const releaseInfo = "MTczMjIzMDAwMDAwMA==";
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers-pro",
3
- "version": "8.0.0-alpha.0",
3
+ "version": "8.0.0-alpha.1",
4
4
  "description": "The Pro plan edition of the Date and Time Picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -37,9 +37,9 @@
37
37
  "clsx": "^2.1.1",
38
38
  "prop-types": "^15.8.1",
39
39
  "react-transition-group": "^4.4.5",
40
- "@mui/x-date-pickers": "8.0.0-alpha.0",
41
- "@mui/x-license": "8.0.0-alpha.0",
42
- "@mui/x-internals": "8.0.0-alpha.0"
40
+ "@mui/x-internals": "8.0.0-alpha.1",
41
+ "@mui/x-date-pickers": "8.0.0-alpha.1",
42
+ "@mui/x-license": "8.0.0-alpha.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@emotion/react": "^11.9.0",
@@ -53,8 +53,8 @@
53
53
  "moment": "^2.29.4",
54
54
  "moment-hijri": "^2.1.2 || ^3.0.0",
55
55
  "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0",
56
- "react": "^17.0.0 || ^18.0.0",
57
- "react-dom": "^17.0.0 || ^18.0.0"
56
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
57
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
58
58
  },
59
59
  "peerDependenciesMeta": {
60
60
  "@emotion/react": {