@mui/x-date-pickers-pro 7.0.0-beta.7 → 7.1.0

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 (99) hide show
  1. package/CHANGELOG.md +266 -12
  2. package/DateRangeCalendar/DateRangeCalendar.js +17 -22
  3. package/DateRangeCalendar/useDragRange.js +1 -2
  4. package/DateRangePicker/DateRangePicker.js +1 -1
  5. package/DateRangePicker/shared.js +3 -5
  6. package/DateRangePickerDay/DateRangePickerDay.d.ts +5 -0
  7. package/DateRangePickerDay/DateRangePickerDay.js +107 -43
  8. package/DateTimeRangePicker/DateTimeRangePicker.d.ts +10 -0
  9. package/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  10. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +4 -5
  11. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -3
  12. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +31 -15
  13. package/DateTimeRangePicker/shared.d.ts +5 -4
  14. package/DateTimeRangePicker/shared.js +9 -10
  15. package/DesktopDateRangePicker/DesktopDateRangePicker.js +6 -10
  16. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +10 -0
  17. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +31 -28
  18. package/MobileDateRangePicker/MobileDateRangePicker.js +5 -9
  19. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +10 -0
  20. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -14
  21. package/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -15
  22. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -15
  23. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -14
  24. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +1 -1
  25. package/README.md +1 -1
  26. package/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -4
  27. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +6 -2
  28. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -4
  29. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +6 -2
  30. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +7 -3
  31. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +6 -2
  32. package/StaticDateRangePicker/StaticDateRangePicker.js +4 -5
  33. package/index.js +1 -1
  34. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +9 -11
  35. package/internals/hooks/useEnrichedRangePickerFieldProps.js +26 -32
  36. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +9 -10
  37. package/internals/hooks/useMultiInputFieldSelectedSections.js +3 -6
  38. package/internals/hooks/useRangePosition.js +3 -5
  39. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -18
  40. package/internals/models/dateRange.d.ts +3 -3
  41. package/internals/models/dateTimeRange.d.ts +2 -2
  42. package/internals/models/timeRange.d.ts +2 -2
  43. package/internals/utils/releaseInfo.js +1 -1
  44. package/internals/utils/validation/validateDateRange.js +2 -2
  45. package/internals/utils/validation/validateDateTimeRange.js +2 -2
  46. package/internals/utils/valueManagers.d.ts +3 -1
  47. package/internals/utils/valueManagers.js +9 -7
  48. package/models/fields.d.ts +8 -1
  49. package/modern/DateRangeCalendar/DateRangeCalendar.js +1 -1
  50. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  51. package/modern/DateRangePickerDay/DateRangePickerDay.js +107 -43
  52. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  53. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +31 -15
  54. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  55. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -9
  56. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  57. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -5
  58. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +10 -4
  59. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +10 -4
  60. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +9 -3
  61. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +6 -1
  62. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +6 -2
  63. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +6 -1
  64. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +6 -2
  65. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  66. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +6 -2
  67. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  68. package/modern/index.js +1 -1
  69. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +1 -1
  70. package/modern/internals/utils/releaseInfo.js +1 -1
  71. package/modern/internals/utils/valueManagers.js +7 -5
  72. package/node/DateRangeCalendar/DateRangeCalendar.js +1 -1
  73. package/node/DateRangePicker/DateRangePicker.js +1 -1
  74. package/node/DateRangePickerDay/DateRangePickerDay.js +107 -43
  75. package/node/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  76. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +31 -15
  77. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  78. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -9
  79. package/node/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  80. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -5
  81. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +10 -4
  82. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +10 -4
  83. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +9 -3
  84. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +6 -1
  85. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +7 -1
  86. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +6 -1
  87. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +7 -1
  88. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  89. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +7 -1
  90. package/node/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  91. package/node/index.js +1 -1
  92. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +1 -1
  93. package/node/internals/utils/releaseInfo.js +1 -1
  94. package/node/internals/utils/valueManagers.js +9 -6
  95. package/package.json +7 -7
  96. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.d.ts +0 -9
  97. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -52
  98. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -51
  99. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -59
@@ -21,7 +21,6 @@ import { validateDateRange } from '../internals/utils/validation/validateDateRan
21
21
  * - [MobileDateRangePicker API](https://mui.com/x/api/date-pickers/mobile-date-range-picker/)
22
22
  */
23
23
  const MobileDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateRangePicker(inProps, ref) {
24
- var _defaultizedProps$slo2;
25
24
  // Props with the default values common to all date time pickers
26
25
  const defaultizedProps = useDateRangePickerDefaultizedProps(inProps, 'MuiMobileDateRangePicker');
27
26
  const viewRenderers = _extends({
@@ -37,15 +36,12 @@ const MobileDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateR
37
36
  field: MultiInputDateRangeField
38
37
  }, defaultizedProps.slots),
39
38
  slotProps: _extends({}, defaultizedProps.slotProps, {
40
- field: ownerState => {
41
- var _defaultizedProps$slo;
42
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
43
- ref
44
- });
45
- },
39
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
40
+ ref
41
+ }),
46
42
  toolbar: _extends({
47
43
  hidden: false
48
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar)
44
+ }, defaultizedProps.slotProps?.toolbar)
49
45
  })
50
46
  });
51
47
  const {
@@ -282,7 +278,7 @@ MobileDateRangePicker.propTypes = {
282
278
  /**
283
279
  * Disable specific date.
284
280
  *
285
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
281
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
286
282
  *
287
283
  * @template TDate
288
284
  * @param {TDate} day The date to test.
@@ -4,5 +4,15 @@ import { MobileDateTimeRangePickerProps } from './MobileDateTimeRangePicker.type
4
4
  type MobileDateRangePickerComponent = (<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean = false>(props: MobileDateTimeRangePickerProps<TDate, TEnableAccessibleFieldDOMStructure> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
5
5
  propTypes?: any;
6
6
  };
7
+ /**
8
+ * Demos:
9
+ *
10
+ * - [DateTimeRangePicker](https://mui.com/x/react-date-pickers/date-time-range-picker/)
11
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
12
+ *
13
+ * API:
14
+ *
15
+ * - [MobileDateTimeRangePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-range-picker/)
16
+ */
7
17
  declare const MobileDateTimeRangePicker: MobileDateRangePickerComponent;
8
18
  export { MobileDateTimeRangePicker };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["view", "openTo", "rangePosition", "sx"];
3
+ const _excluded = ["view", "openTo", "rangePosition"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { refType } from '@mui/utils';
@@ -22,8 +22,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
22
22
  const {
23
23
  view,
24
24
  openTo,
25
- rangePosition,
26
- sx
25
+ rangePosition
27
26
  } = rendererProps,
28
27
  otherRendererProps = _objectWithoutPropertiesLoose(rendererProps, _excluded);
29
28
  const finalProps = _extends({}, otherRendererProps, {
@@ -48,7 +47,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
48
47
  [`&.${multiSectionDigitalClockClasses.root}, .${multiSectionDigitalClockSectionClasses.root}`]: {
49
48
  maxHeight: RANGE_VIEW_HEIGHT - 1
50
49
  }
51
- }, ...(Array.isArray(sx) ? sx : [sx])]
50
+ }]
52
51
  });
53
52
  const isTimeView = isInternalTimeView(popperView);
54
53
  const viewRenderer = inViewRenderers[popperView];
@@ -59,6 +58,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
59
58
  return /*#__PURE__*/_jsx(DateTimeRangePickerTimeWrapper, _extends({}, finalProps, {
60
59
  viewRenderer: viewRenderer,
61
60
  view: view && isInternalTimeView(view) ? view : 'hours',
61
+ views: finalProps.views,
62
62
  openTo: isInternalTimeView(openTo) ? openTo : 'hours'
63
63
  }));
64
64
  }
@@ -71,8 +71,17 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
71
71
  openTo: isDatePickerView(openTo) ? openTo : 'day'
72
72
  }));
73
73
  };
74
+ /**
75
+ * Demos:
76
+ *
77
+ * - [DateTimeRangePicker](https://mui.com/x/react-date-pickers/date-time-range-picker/)
78
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
79
+ *
80
+ * API:
81
+ *
82
+ * - [MobileDateTimeRangePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-range-picker/)
83
+ */
74
84
  const MobileDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimeRangePicker(inProps, ref) {
75
- var _defaultizedProps$slo2, _defaultizedProps$slo3;
76
85
  // Props with the default values common to all date time range pickers
77
86
  const defaultizedProps = useDateTimeRangePickerDefaultizedProps(inProps, 'MuiMobileDateTimeRangePicker');
78
87
  const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
@@ -93,19 +102,16 @@ const MobileDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function MobileD
93
102
  field: MultiInputDateTimeRangeField
94
103
  }, defaultizedProps.slots),
95
104
  slotProps: _extends({}, defaultizedProps.slotProps, {
96
- field: ownerState => {
97
- var _defaultizedProps$slo;
98
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
99
- ref
100
- });
101
- },
105
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
106
+ ref
107
+ }),
102
108
  tabs: _extends({
103
109
  hidden: false
104
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.tabs),
110
+ }, defaultizedProps.slotProps?.tabs),
105
111
  toolbar: _extends({
106
112
  hidden: false,
107
113
  toolbarVariant: 'mobile'
108
- }, (_defaultizedProps$slo3 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo3.toolbar)
114
+ }, defaultizedProps.slotProps?.toolbar)
109
115
  })
110
116
  });
111
117
  const {
@@ -388,7 +394,7 @@ MobileDateTimeRangePicker.propTypes = {
388
394
  /**
389
395
  * Disable specific date.
390
396
  *
391
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
397
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
392
398
  *
393
399
  * @template TDate
394
400
  * @param {TDate} day The date to test.
@@ -37,12 +37,7 @@ const MultiInputDateRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((prop
37
37
  slot: 'Root',
38
38
  overridesResolver: (props, styles) => styles.root
39
39
  })({});
40
- const MultiInputDateRangeFieldSeparator = styled(props => {
41
- var _props$children;
42
- return /*#__PURE__*/_jsx(Typography, _extends({}, props, {
43
- children: (_props$children = props.children) != null ? _props$children : ' – '
44
- }));
45
- }, {
40
+ const MultiInputDateRangeFieldSeparator = styled(Typography, {
46
41
  name: 'MuiMultiInputDateRangeField',
47
42
  slot: 'Separator',
48
43
  overridesResolver: (props, styles) => styles.separator
@@ -60,7 +55,6 @@ const MultiInputDateRangeFieldSeparator = styled(props => {
60
55
  * - [MultiInputDateRangeField API](https://mui.com/x/api/multi-input-date-range-field/)
61
56
  */
62
57
  const MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInputDateRangeField(inProps, ref) {
63
- var _slots$root, _slots$textField, _slots$separator;
64
58
  const themeProps = useThemeProps({
65
59
  props: inProps,
66
60
  name: 'MuiMultiInputDateRangeField'
@@ -79,10 +73,10 @@ const MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
79
73
  otherForwardedProps = _objectWithoutPropertiesLoose(forwardedProps, _excluded);
80
74
  const ownerState = themeProps;
81
75
  const classes = useUtilityClasses(ownerState);
82
- const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputDateRangeFieldRoot;
76
+ const Root = slots?.root ?? MultiInputDateRangeFieldRoot;
83
77
  const rootProps = useSlotProps({
84
78
  elementType: Root,
85
- externalSlotProps: slotProps == null ? void 0 : slotProps.root,
79
+ externalSlotProps: slotProps?.root,
86
80
  externalForwardedProps: otherForwardedProps,
87
81
  additionalProps: {
88
82
  ref
@@ -90,25 +84,28 @@ const MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
90
84
  ownerState,
91
85
  className: clsx(className, classes.root)
92
86
  });
93
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
87
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
94
88
  const startTextFieldProps = useSlotProps({
95
89
  elementType: TextField,
96
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
90
+ externalSlotProps: slotProps?.textField,
97
91
  ownerState: _extends({}, ownerState, {
98
92
  position: 'start'
99
93
  })
100
94
  });
101
95
  const endTextFieldProps = useSlotProps({
102
96
  elementType: TextField,
103
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
97
+ externalSlotProps: slotProps?.textField,
104
98
  ownerState: _extends({}, ownerState, {
105
99
  position: 'end'
106
100
  })
107
101
  });
108
- const Separator = (_slots$separator = slots == null ? void 0 : slots.separator) != null ? _slots$separator : MultiInputDateRangeFieldSeparator;
102
+ const Separator = slots?.separator ?? MultiInputDateRangeFieldSeparator;
109
103
  const separatorProps = useSlotProps({
110
104
  elementType: Separator,
111
- externalSlotProps: slotProps == null ? void 0 : slotProps.separator,
105
+ externalSlotProps: slotProps?.separator,
106
+ additionalProps: {
107
+ children: ` ${internalProps.dateSeparator ?? '–'} `
108
+ },
112
109
  ownerState,
113
110
  className: classes.separator
114
111
  });
@@ -144,6 +141,11 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
144
141
  classes: PropTypes.object,
145
142
  className: PropTypes.string,
146
143
  component: PropTypes.elementType,
144
+ /**
145
+ * String displayed between the start and the end dates.
146
+ * @default "–"
147
+ */
148
+ dateSeparator: PropTypes.string,
147
149
  /**
148
150
  * The default value. Use when the component is not controlled.
149
151
  */
@@ -241,7 +243,7 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
241
243
  /**
242
244
  * Disable specific date.
243
245
  *
244
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
246
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
245
247
  *
246
248
  * @template TDate
247
249
  * @param {TDate} day The date to test.
@@ -37,12 +37,7 @@ const MultiInputDateTimeRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((
37
37
  slot: 'Root',
38
38
  overridesResolver: (props, styles) => styles.root
39
39
  })({});
40
- const MultiInputDateTimeRangeFieldSeparator = styled(props => {
41
- var _props$children;
42
- return /*#__PURE__*/_jsx(Typography, _extends({}, props, {
43
- children: (_props$children = props.children) != null ? _props$children : ' – '
44
- }));
45
- }, {
40
+ const MultiInputDateTimeRangeFieldSeparator = styled(Typography, {
46
41
  name: 'MuiMultiInputDateTimeRangeField',
47
42
  slot: 'Separator',
48
43
  overridesResolver: (props, styles) => styles.separator
@@ -60,7 +55,6 @@ const MultiInputDateTimeRangeFieldSeparator = styled(props => {
60
55
  * - [MultiInputDateTimeRangeField API](https://mui.com/x/api/multi-input-date-time-range-field/)
61
56
  */
62
57
  const MultiInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInputDateTimeRangeField(inProps, ref) {
63
- var _slots$root, _slots$textField, _slots$separator;
64
58
  const themeProps = useThemeProps({
65
59
  props: inProps,
66
60
  name: 'MuiMultiInputDateTimeRangeField'
@@ -79,10 +73,10 @@ const MultiInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function Mult
79
73
  otherForwardedProps = _objectWithoutPropertiesLoose(forwardedProps, _excluded);
80
74
  const ownerState = themeProps;
81
75
  const classes = useUtilityClasses(ownerState);
82
- const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputDateTimeRangeFieldRoot;
76
+ const Root = slots?.root ?? MultiInputDateTimeRangeFieldRoot;
83
77
  const rootProps = useSlotProps({
84
78
  elementType: Root,
85
- externalSlotProps: slotProps == null ? void 0 : slotProps.root,
79
+ externalSlotProps: slotProps?.root,
86
80
  externalForwardedProps: otherForwardedProps,
87
81
  additionalProps: {
88
82
  ref
@@ -90,25 +84,28 @@ const MultiInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function Mult
90
84
  ownerState,
91
85
  className: clsx(className, classes.root)
92
86
  });
93
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
87
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
94
88
  const startTextFieldProps = useSlotProps({
95
89
  elementType: TextField,
96
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
90
+ externalSlotProps: slotProps?.textField,
97
91
  ownerState: _extends({}, ownerState, {
98
92
  position: 'start'
99
93
  })
100
94
  });
101
95
  const endTextFieldProps = useSlotProps({
102
96
  elementType: TextField,
103
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
97
+ externalSlotProps: slotProps?.textField,
104
98
  ownerState: _extends({}, ownerState, {
105
99
  position: 'end'
106
100
  })
107
101
  });
108
- const Separator = (_slots$separator = slots == null ? void 0 : slots.separator) != null ? _slots$separator : MultiInputDateTimeRangeFieldSeparator;
102
+ const Separator = slots?.separator ?? MultiInputDateTimeRangeFieldSeparator;
109
103
  const separatorProps = useSlotProps({
110
104
  elementType: Separator,
111
- externalSlotProps: slotProps == null ? void 0 : slotProps.separator,
105
+ externalSlotProps: slotProps?.separator,
106
+ additionalProps: {
107
+ children: ` ${internalProps.dateSeparator ?? '–'} `
108
+ },
112
109
  ownerState,
113
110
  className: classes.separator
114
111
  });
@@ -149,6 +146,11 @@ process.env.NODE_ENV !== "production" ? MultiInputDateTimeRangeField.propTypes =
149
146
  classes: PropTypes.object,
150
147
  className: PropTypes.string,
151
148
  component: PropTypes.elementType,
149
+ /**
150
+ * String displayed between the start and the end dates.
151
+ * @default "–"
152
+ */
153
+ dateSeparator: PropTypes.string,
152
154
  /**
153
155
  * The default value. Use when the component is not controlled.
154
156
  */
@@ -274,7 +276,7 @@ process.env.NODE_ENV !== "production" ? MultiInputDateTimeRangeField.propTypes =
274
276
  /**
275
277
  * Disable specific date.
276
278
  *
277
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
279
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
278
280
  *
279
281
  * @template TDate
280
282
  * @param {TDate} day The date to test.
@@ -37,12 +37,7 @@ const MultiInputTimeRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((prop
37
37
  slot: 'Root',
38
38
  overridesResolver: (props, styles) => styles.root
39
39
  })({});
40
- const MultiInputTimeRangeFieldSeparator = styled(props => {
41
- var _props$children;
42
- return /*#__PURE__*/_jsx(Typography, _extends({}, props, {
43
- children: (_props$children = props.children) != null ? _props$children : ' – '
44
- }));
45
- }, {
40
+ const MultiInputTimeRangeFieldSeparator = styled(Typography, {
46
41
  name: 'MuiMultiInputTimeRangeField',
47
42
  slot: 'Separator',
48
43
  overridesResolver: (props, styles) => styles.separator
@@ -60,7 +55,6 @@ const MultiInputTimeRangeFieldSeparator = styled(props => {
60
55
  * - [MultiInputTimeRangeField API](https://mui.com/x/api/multi-input-time-range-field/)
61
56
  */
62
57
  const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInputTimeRangeField(inProps, ref) {
63
- var _slots$root, _slots$textField, _slots$separator;
64
58
  const themeProps = useThemeProps({
65
59
  props: inProps,
66
60
  name: 'MuiMultiInputTimeRangeField'
@@ -79,10 +73,10 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
79
73
  otherForwardedProps = _objectWithoutPropertiesLoose(forwardedProps, _excluded);
80
74
  const ownerState = themeProps;
81
75
  const classes = useUtilityClasses(ownerState);
82
- const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputTimeRangeFieldRoot;
76
+ const Root = slots?.root ?? MultiInputTimeRangeFieldRoot;
83
77
  const rootProps = useSlotProps({
84
78
  elementType: Root,
85
- externalSlotProps: slotProps == null ? void 0 : slotProps.root,
79
+ externalSlotProps: slotProps?.root,
86
80
  externalForwardedProps: otherForwardedProps,
87
81
  additionalProps: {
88
82
  ref
@@ -90,25 +84,28 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
90
84
  ownerState,
91
85
  className: clsx(className, classes.root)
92
86
  });
93
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
87
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
94
88
  const startTextFieldProps = useSlotProps({
95
89
  elementType: TextField,
96
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
90
+ externalSlotProps: slotProps?.textField,
97
91
  ownerState: _extends({}, ownerState, {
98
92
  position: 'start'
99
93
  })
100
94
  });
101
95
  const endTextFieldProps = useSlotProps({
102
96
  elementType: TextField,
103
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
97
+ externalSlotProps: slotProps?.textField,
104
98
  ownerState: _extends({}, ownerState, {
105
99
  position: 'end'
106
100
  })
107
101
  });
108
- const Separator = (_slots$separator = slots == null ? void 0 : slots.separator) != null ? _slots$separator : MultiInputTimeRangeFieldSeparator;
102
+ const Separator = slots?.separator ?? MultiInputTimeRangeFieldSeparator;
109
103
  const separatorProps = useSlotProps({
110
104
  elementType: Separator,
111
- externalSlotProps: slotProps == null ? void 0 : slotProps.separator,
105
+ externalSlotProps: slotProps?.separator,
106
+ additionalProps: {
107
+ children: ` ${internalProps.dateSeparator ?? '–'} `
108
+ },
112
109
  ownerState,
113
110
  className: classes.separator
114
111
  });
@@ -149,6 +146,11 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
149
146
  classes: PropTypes.object,
150
147
  className: PropTypes.string,
151
148
  component: PropTypes.elementType,
149
+ /**
150
+ * String displayed between the start and the end dates.
151
+ * @default "–"
152
+ */
153
+ dateSeparator: PropTypes.string,
152
154
  /**
153
155
  * The default value. Use when the component is not controlled.
154
156
  */
@@ -63,7 +63,7 @@ const PickersRangeCalendarHeader = /*#__PURE__*/React.forwardRef(function Picker
63
63
  nextLabel: localeText.nextMonth,
64
64
  slots: slots,
65
65
  slotProps: slotProps,
66
- children: utils.formatByString(month, format != null ? format : `${utils.formats.month} ${utils.formats.year}`)
66
+ children: utils.formatByString(month, format ?? `${utils.formats.month} ${utils.formats.year}`)
67
67
  });
68
68
  });
69
69
  process.env.NODE_ENV !== "production" ? PickersRangeCalendarHeader.propTypes = {
package/README.md CHANGED
@@ -34,7 +34,7 @@ This component has the following peer dependencies that you will need to install
34
34
 
35
35
  ```json
36
36
  "peerDependencies": {
37
- "@mui/material": "^5.15.0",
37
+ "@mui/material": "^5.15.14",
38
38
  "react": "^17.0.0 || ^18.0.0",
39
39
  "react-dom": "^17.0.0 || ^18.0.0"
40
40
  },
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  * - [SingleInputDateRangeField API](https://mui.com/x/api/single-input-date-range-field/)
24
24
  */
25
25
  const SingleInputDateRangeField = /*#__PURE__*/React.forwardRef(function SingleInputDateRangeField(inProps, inRef) {
26
- var _slots$textField;
27
26
  const themeProps = useThemeProps({
28
27
  props: inProps,
29
28
  name: 'MuiSingleInputDateRangeField'
@@ -36,10 +35,10 @@ const SingleInputDateRangeField = /*#__PURE__*/React.forwardRef(function SingleI
36
35
  } = themeProps,
37
36
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
37
  const ownerState = themeProps;
39
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
38
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
40
39
  const textFieldProps = useSlotProps({
41
40
  elementType: TextField,
42
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
+ externalSlotProps: slotProps?.textField,
43
42
  externalForwardedProps: other,
44
43
  ownerState,
45
44
  additionalProps: {
@@ -83,6 +82,11 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
83
82
  */
84
83
  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),
85
84
  component: PropTypes.elementType,
85
+ /**
86
+ * String displayed between the start and the end dates.
87
+ * @default "–"
88
+ */
89
+ dateSeparator: PropTypes.string,
86
90
  /**
87
91
  * The default value. Use when the component is not controlled.
88
92
  */
@@ -243,7 +247,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
243
247
  /**
244
248
  * Disable specific date.
245
249
  *
246
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
250
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
247
251
  *
248
252
  * @template TDate
249
253
  * @param {TDate} day The date to test.
@@ -1,5 +1,6 @@
1
+ import * as React from 'react';
1
2
  import { useField, splitFieldInternalAndForwardedProps, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
2
- import { rangeValueManager, rangeFieldValueManager } from '../internals/utils/valueManagers';
3
+ import { rangeValueManager, getRangeFieldValueManager } from '../internals/utils/valueManagers';
3
4
  import { validateDateRange } from '../internals/utils/validation/validateDateRange';
4
5
  export const useSingleInputDateRangeField = inProps => {
5
6
  const props = useDefaultizedDateField(inProps);
@@ -7,11 +8,14 @@ export const useSingleInputDateRangeField = inProps => {
7
8
  forwardedProps,
8
9
  internalProps
9
10
  } = splitFieldInternalAndForwardedProps(props, 'date');
11
+ const fieldValueManager = React.useMemo(() => getRangeFieldValueManager({
12
+ dateSeparator: internalProps.dateSeparator
13
+ }), [internalProps.dateSeparator]);
10
14
  return useField({
11
15
  forwardedProps,
12
16
  internalProps,
13
17
  valueManager: rangeValueManager,
14
- fieldValueManager: rangeFieldValueManager,
18
+ fieldValueManager,
15
19
  validator: validateDateRange,
16
20
  valueType: 'date'
17
21
  });
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  * - [SingleInputDateTimeRangeField API](https://mui.com/x/api/single-input-date-time-range-field/)
24
24
  */
25
25
  const SingleInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function SingleInputDateTimeRangeField(inProps, inRef) {
26
- var _slots$textField;
27
26
  const themeProps = useThemeProps({
28
27
  props: inProps,
29
28
  name: 'MuiSingleInputDateTimeRangeField'
@@ -36,10 +35,10 @@ const SingleInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function Sin
36
35
  } = themeProps,
37
36
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
37
  const ownerState = themeProps;
39
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
38
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
40
39
  const textFieldProps = useSlotProps({
41
40
  elementType: TextField,
42
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
+ externalSlotProps: slotProps?.textField,
43
42
  externalForwardedProps: other,
44
43
  ownerState,
45
44
  additionalProps: {
@@ -88,6 +87,11 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
88
87
  */
89
88
  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),
90
89
  component: PropTypes.elementType,
90
+ /**
91
+ * String displayed between the start and the end dates.
92
+ * @default "–"
93
+ */
94
+ dateSeparator: PropTypes.string,
91
95
  /**
92
96
  * The default value. Use when the component is not controlled.
93
97
  */
@@ -276,7 +280,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
276
280
  /**
277
281
  * Disable specific date.
278
282
  *
279
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
283
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
280
284
  *
281
285
  * @template TDate
282
286
  * @param {TDate} day The date to test.
@@ -1,5 +1,6 @@
1
+ import * as React from 'react';
1
2
  import { useField, splitFieldInternalAndForwardedProps, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
2
- import { rangeValueManager, rangeFieldValueManager } from '../internals/utils/valueManagers';
3
+ import { rangeValueManager, getRangeFieldValueManager } from '../internals/utils/valueManagers';
3
4
  import { validateDateTimeRange } from '../internals/utils/validation/validateDateTimeRange';
4
5
  export const useSingleInputDateTimeRangeField = inProps => {
5
6
  const props = useDefaultizedDateTimeField(inProps);
@@ -7,11 +8,14 @@ export const useSingleInputDateTimeRangeField = inProps => {
7
8
  forwardedProps,
8
9
  internalProps
9
10
  } = splitFieldInternalAndForwardedProps(props, 'date-time');
11
+ const fieldValueManager = React.useMemo(() => getRangeFieldValueManager({
12
+ dateSeparator: internalProps.dateSeparator
13
+ }), [internalProps.dateSeparator]);
10
14
  return useField({
11
15
  forwardedProps,
12
16
  internalProps,
13
17
  valueManager: rangeValueManager,
14
- fieldValueManager: rangeFieldValueManager,
18
+ fieldValueManager,
15
19
  validator: validateDateTimeRange,
16
20
  valueType: 'date-time'
17
21
  });
@@ -23,7 +23,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  * - [SingleInputTimeRangeField API](https://mui.com/x/api/single-input-time-range-field/)
24
24
  */
25
25
  const SingleInputTimeRangeField = /*#__PURE__*/React.forwardRef(function SingleInputTimeRangeField(inProps, inRef) {
26
- var _slots$textField;
27
26
  const themeProps = useThemeProps({
28
27
  props: inProps,
29
28
  name: 'MuiSingleInputTimeRangeField'
@@ -36,10 +35,10 @@ const SingleInputTimeRangeField = /*#__PURE__*/React.forwardRef(function SingleI
36
35
  } = themeProps,
37
36
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
37
  const ownerState = themeProps;
39
- const TextField = (_slots$textField = slots == null ? void 0 : slots.textField) != null ? _slots$textField : inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField;
38
+ const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure ? PickersTextField : MuiTextField);
40
39
  const textFieldProps = useSlotProps({
41
40
  elementType: TextField,
42
- externalSlotProps: slotProps == null ? void 0 : slotProps.textField,
41
+ externalSlotProps: slotProps?.textField,
43
42
  externalForwardedProps: other,
44
43
  ownerState,
45
44
  additionalProps: {
@@ -88,6 +87,11 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
88
87
  */
89
88
  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),
90
89
  component: PropTypes.elementType,
90
+ /**
91
+ * String displayed between the start and the end dates.
92
+ * @default "–"
93
+ */
94
+ dateSeparator: PropTypes.string,
91
95
  /**
92
96
  * The default value. Use when the component is not controlled.
93
97
  */
@@ -1,5 +1,6 @@
1
+ import * as React from 'react';
1
2
  import { useField, splitFieldInternalAndForwardedProps, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
2
- import { rangeValueManager, rangeFieldValueManager } from '../internals/utils/valueManagers';
3
+ import { rangeValueManager, getRangeFieldValueManager } from '../internals/utils/valueManagers';
3
4
  import { validateTimeRange } from '../internals/utils/validation/validateTimeRange';
4
5
  export const useSingleInputTimeRangeField = inProps => {
5
6
  const props = useDefaultizedTimeField(inProps);
@@ -7,11 +8,14 @@ export const useSingleInputTimeRangeField = inProps => {
7
8
  forwardedProps,
8
9
  internalProps
9
10
  } = splitFieldInternalAndForwardedProps(props, 'time');
11
+ const fieldValueManager = React.useMemo(() => getRangeFieldValueManager({
12
+ dateSeparator: internalProps.dateSeparator
13
+ }), [internalProps.dateSeparator]);
10
14
  return useField({
11
15
  forwardedProps,
12
16
  internalProps,
13
17
  valueManager: rangeValueManager,
14
- fieldValueManager: rangeFieldValueManager,
18
+ fieldValueManager,
15
19
  validator: validateTimeRange,
16
20
  valueType: 'time'
17
21
  });
@@ -17,9 +17,8 @@ import { validateDateRange } from '../internals/utils/validation/validateDateRan
17
17
  * - [StaticDateRangePicker API](https://mui.com/x/api/date-pickers/static-date-range-picker/)
18
18
  */
19
19
  const StaticDateRangePicker = /*#__PURE__*/React.forwardRef(function StaticDateRangePicker(inProps, ref) {
20
- var _defaultizedProps$dis, _defaultizedProps$cal, _defaultizedProps$slo;
21
20
  const defaultizedProps = useDateRangePickerDefaultizedProps(inProps, 'MuiStaticDateRangePicker');
22
- const displayStaticWrapperAs = (_defaultizedProps$dis = defaultizedProps.displayStaticWrapperAs) != null ? _defaultizedProps$dis : 'mobile';
21
+ const displayStaticWrapperAs = defaultizedProps.displayStaticWrapperAs ?? 'mobile';
23
22
  const viewRenderers = _extends({
24
23
  day: renderDateRangeViewCalendar
25
24
  }, defaultizedProps.viewRenderers);
@@ -30,11 +29,11 @@ const StaticDateRangePicker = /*#__PURE__*/React.forwardRef(function StaticDateR
30
29
  displayStaticWrapperAs,
31
30
  views: ['day'],
32
31
  openTo: 'day',
33
- calendars: (_defaultizedProps$cal = defaultizedProps.calendars) != null ? _defaultizedProps$cal : displayStaticWrapperAs === 'mobile' ? 1 : 2,
32
+ calendars: defaultizedProps.calendars ?? (displayStaticWrapperAs === 'mobile' ? 1 : 2),
34
33
  slotProps: _extends({}, defaultizedProps.slotProps, {
35
34
  toolbar: _extends({
36
35
  hidden: displayStaticWrapperAs === 'desktop'
37
- }, (_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.toolbar)
36
+ }, defaultizedProps.slotProps?.toolbar)
38
37
  })
39
38
  });
40
39
  const {
@@ -218,7 +217,7 @@ StaticDateRangePicker.propTypes = {
218
217
  /**
219
218
  * Disable specific date.
220
219
  *
221
- * Warning: This function can be called multiple times (e.g. when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
220
+ * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
222
221
  *
223
222
  * @template TDate
224
223
  * @param {TDate} day The date to test.
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v7.0.0-beta.7
2
+ * @mui/x-date-pickers-pro v7.1.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the