@mui/x-date-pickers-pro 7.0.0-beta.7 → 7.0.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 (91) hide show
  1. package/CHANGELOG.md +195 -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/DateTimeRangePicker/DateTimeRangePicker.d.ts +10 -0
  7. package/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  8. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +4 -5
  9. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -3
  10. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +2 -2
  11. package/DateTimeRangePicker/shared.d.ts +5 -4
  12. package/DateTimeRangePicker/shared.js +9 -10
  13. package/DesktopDateRangePicker/DesktopDateRangePicker.js +6 -10
  14. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +10 -0
  15. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +31 -28
  16. package/MobileDateRangePicker/MobileDateRangePicker.js +5 -9
  17. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +10 -0
  18. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +20 -14
  19. package/MultiInputDateRangeField/MultiInputDateRangeField.js +17 -15
  20. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +17 -15
  21. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +16 -14
  22. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +1 -1
  23. package/README.md +1 -1
  24. package/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -4
  25. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +6 -2
  26. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -4
  27. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +6 -2
  28. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +7 -3
  29. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +6 -2
  30. package/StaticDateRangePicker/StaticDateRangePicker.js +4 -5
  31. package/index.js +1 -1
  32. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +9 -11
  33. package/internals/hooks/useEnrichedRangePickerFieldProps.js +25 -31
  34. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +9 -10
  35. package/internals/hooks/useMultiInputFieldSelectedSections.js +3 -6
  36. package/internals/hooks/useRangePosition.js +3 -5
  37. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -18
  38. package/internals/models/dateRange.d.ts +3 -3
  39. package/internals/models/dateTimeRange.d.ts +2 -2
  40. package/internals/models/timeRange.d.ts +2 -2
  41. package/internals/utils/releaseInfo.js +1 -1
  42. package/internals/utils/validation/validateDateRange.js +2 -2
  43. package/internals/utils/validation/validateDateTimeRange.js +2 -2
  44. package/internals/utils/valueManagers.d.ts +3 -1
  45. package/internals/utils/valueManagers.js +9 -7
  46. package/models/fields.d.ts +8 -1
  47. package/modern/DateRangeCalendar/DateRangeCalendar.js +1 -1
  48. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  49. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  50. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  51. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -9
  52. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  53. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -5
  54. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +10 -4
  55. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +10 -4
  56. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +9 -3
  57. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +6 -1
  58. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +6 -2
  59. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +6 -1
  60. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +6 -2
  61. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  62. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +6 -2
  63. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  64. package/modern/index.js +1 -1
  65. package/modern/internals/utils/releaseInfo.js +1 -1
  66. package/modern/internals/utils/valueManagers.js +7 -5
  67. package/node/DateRangeCalendar/DateRangeCalendar.js +1 -1
  68. package/node/DateRangePicker/DateRangePicker.js +1 -1
  69. package/node/DateTimeRangePicker/DateTimeRangePicker.js +11 -1
  70. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -1
  71. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +20 -9
  72. package/node/MobileDateRangePicker/MobileDateRangePicker.js +1 -1
  73. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -5
  74. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +10 -4
  75. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +10 -4
  76. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +9 -3
  77. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +6 -1
  78. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +7 -1
  79. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +6 -1
  80. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +7 -1
  81. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  82. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +7 -1
  83. package/node/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  84. package/node/index.js +1 -1
  85. package/node/internals/utils/releaseInfo.js +1 -1
  86. package/node/internals/utils/valueManagers.js +9 -6
  87. package/package.json +7 -7
  88. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.d.ts +0 -9
  89. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -52
  90. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -51
  91. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePickerLayout.js +0 -59
@@ -21,7 +21,6 @@ import { validateDateRange } from '../internals/utils/validation/validateDateRan
21
21
  * - [DesktopDateRangePicker API](https://mui.com/x/api/date-pickers/desktop-date-range-picker/)
22
22
  */
23
23
  const DesktopDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopDateRangePicker(inProps, ref) {
24
- var _defaultizedProps$cal, _defaultizedProps$slo2;
25
24
  // Props with the default values common to all date time pickers
26
25
  const defaultizedProps = useDateRangePickerDefaultizedProps(inProps, 'MuiDesktopDateRangePicker');
27
26
  const viewRenderers = _extends({
@@ -29,22 +28,19 @@ const DesktopDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopDat
29
28
  }, defaultizedProps.viewRenderers);
30
29
  const props = _extends({}, defaultizedProps, {
31
30
  viewRenderers,
32
- calendars: (_defaultizedProps$cal = defaultizedProps.calendars) != null ? _defaultizedProps$cal : 2,
31
+ calendars: defaultizedProps.calendars ?? 2,
33
32
  views: ['day'],
34
33
  openTo: 'day',
35
34
  slots: _extends({
36
35
  field: MultiInputDateRangeField
37
36
  }, defaultizedProps.slots),
38
37
  slotProps: _extends({}, defaultizedProps.slotProps, {
39
- field: ownerState => {
40
- var _defaultizedProps$slo;
41
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
42
- ref
43
- });
44
- },
38
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
39
+ ref
40
+ }),
45
41
  toolbar: _extends({
46
42
  hidden: true
47
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.toolbar)
43
+ }, defaultizedProps.slotProps?.toolbar)
48
44
  })
49
45
  });
50
46
  const {
@@ -286,7 +282,7 @@ DesktopDateRangePicker.propTypes = {
286
282
  /**
287
283
  * Disable specific date.
288
284
  *
289
- * 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.
285
+ * 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.
290
286
  *
291
287
  * @template TDate
292
288
  * @param {TDate} day The date to test.
@@ -4,5 +4,15 @@ import { DesktopDateTimeRangePickerProps } from './DesktopDateTimeRangePicker.ty
4
4
  type DesktopDateRangePickerComponent = (<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean = false>(props: DesktopDateTimeRangePickerProps<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
+ * - [DesktopDateTimeRangePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-range-picker/)
16
+ */
7
17
  declare const DesktopDateTimeRangePicker: DesktopDateRangePickerComponent;
8
18
  export { DesktopDateTimeRangePicker };
@@ -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 = ["openTo", "rangePosition", "sx"];
3
+ const _excluded = ["openTo", "rangePosition"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { extractValidationProps, isDatePickerView, isInternalTimeView } from '@mui/x-date-pickers/internals';
@@ -10,6 +10,7 @@ import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } fr
10
10
  import { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from '@mui/x-date-pickers/MultiSectionDigitalClock';
11
11
  import Divider from '@mui/material/Divider';
12
12
  import { digitalClockClasses } from '@mui/x-date-pickers/DigitalClock';
13
+ import { DesktopDateTimePickerLayout } from '@mui/x-date-pickers/DesktopDateTimePicker';
13
14
  import { rangeValueManager } from '../internals/utils/valueManagers';
14
15
  import { renderDateRangeViewCalendar } from '../dateRangeViewRenderers';
15
16
  import { useDesktopRangePicker } from '../internals/hooks/useDesktopRangePicker';
@@ -18,31 +19,29 @@ import { useDateTimeRangePickerDefaultizedProps } from '../DateTimeRangePicker/s
18
19
  import { MultiInputDateTimeRangeField } from '../MultiInputDateTimeRangeField';
19
20
  import { DateTimeRangePickerTimeWrapper } from '../DateTimeRangePicker/DateTimeRangePickerTimeWrapper';
20
21
  import { RANGE_VIEW_HEIGHT } from '../internals/constants/dimensions';
21
- import { DesktopDateTimeRangePickerLayout } from './DesktopDateTimeRangePickerLayout';
22
22
  import { jsx as _jsx } from "react/jsx-runtime";
23
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
24
  const rendererInterceptor = function rendererInterceptor(inViewRenderers, popperView, rendererProps) {
25
- var _inViewRenderers$day;
26
25
  const {
27
26
  openTo,
28
- rangePosition,
29
- sx
27
+ rangePosition
30
28
  } = rendererProps,
31
29
  otherProps = _objectWithoutPropertiesLoose(rendererProps, _excluded);
32
30
  const finalProps = _extends({}, otherProps, {
33
31
  rangePosition,
34
32
  focusedView: null,
35
33
  sx: [{
36
- borderBottom: 0,
37
- width: 'auto',
34
+ [`&.${multiSectionDigitalClockClasses.root}`]: {
35
+ borderBottom: 0
36
+ },
38
37
  [`&.${multiSectionDigitalClockClasses.root}, .${multiSectionDigitalClockSectionClasses.root}, &.${digitalClockClasses.root}`]: {
39
38
  maxHeight: RANGE_VIEW_HEIGHT
40
39
  }
41
- }, ...(Array.isArray(sx) ? sx : [sx])]
40
+ }]
42
41
  });
43
42
  const isTimeViewActive = isInternalTimeView(popperView);
44
43
  return /*#__PURE__*/_jsxs(React.Fragment, {
45
- children: [(_inViewRenderers$day = inViewRenderers.day) == null ? void 0 : _inViewRenderers$day.call(inViewRenderers, _extends({}, rendererProps, {
44
+ children: [inViewRenderers.day?.(_extends({}, rendererProps, {
46
45
  availableRangePositions: [rangePosition],
47
46
  view: !isTimeViewActive ? popperView : 'day',
48
47
  views: rendererProps.views.filter(isDatePickerView)
@@ -50,13 +49,23 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
50
49
  orientation: "vertical"
51
50
  }), /*#__PURE__*/_jsx(DateTimeRangePickerTimeWrapper, _extends({}, finalProps, {
52
51
  view: isTimeViewActive ? popperView : 'hours',
52
+ views: finalProps.views.filter(isInternalTimeView),
53
53
  openTo: isInternalTimeView(openTo) ? openTo : 'hours',
54
54
  viewRenderer: inViewRenderers[isTimeViewActive ? popperView : 'hours']
55
55
  }))]
56
56
  });
57
57
  };
58
+ /**
59
+ * Demos:
60
+ *
61
+ * - [DateTimeRangePicker](https://mui.com/x/react-date-pickers/date-time-range-picker/)
62
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
63
+ *
64
+ * API:
65
+ *
66
+ * - [DesktopDateTimeRangePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-range-picker/)
67
+ */
58
68
  const DesktopDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimeRangePicker(inProps, ref) {
59
- var _viewRenderers$hours, _defaultizedProps$cal, _defaultizedProps$slo2, _defaultizedProps$slo3;
60
69
  // Props with the default values common to all date time range pickers
61
70
  const defaultizedProps = useDateTimeRangePickerDefaultizedProps(inProps, 'MuiDesktopDateTimeRangePicker');
62
71
  const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
@@ -69,7 +78,7 @@ const DesktopDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function Deskto
69
78
  }, defaultizedProps.viewRenderers);
70
79
 
71
80
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
72
- const shouldHoursRendererContainMeridiemView = ((_viewRenderers$hours = viewRenderers.hours) == null ? void 0 : _viewRenderers$hours.name) === renderMultiSectionDigitalClockTimeView.name;
81
+ const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
73
82
  const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;
74
83
  const actionBarActions = defaultizedProps.shouldRenderTimeInASingleColumn ? [] : ['accept'];
75
84
  const props = _extends({}, defaultizedProps, {
@@ -77,31 +86,25 @@ const DesktopDateTimeRangePicker = /*#__PURE__*/React.forwardRef(function Deskto
77
86
  viewRenderers,
78
87
  // force true to correctly handle `renderTimeViewClock` as a renderer
79
88
  ampmInClock: true,
80
- calendars: (_defaultizedProps$cal = defaultizedProps.calendars) != null ? _defaultizedProps$cal : 1,
89
+ calendars: defaultizedProps.calendars ?? 1,
81
90
  slots: _extends({
82
91
  field: MultiInputDateTimeRangeField,
83
- layout: DesktopDateTimeRangePickerLayout
92
+ layout: DesktopDateTimePickerLayout
84
93
  }, defaultizedProps.slots),
85
94
  slotProps: _extends({}, defaultizedProps.slotProps, {
86
- field: ownerState => {
87
- var _defaultizedProps$slo;
88
- return _extends({}, resolveComponentProps((_defaultizedProps$slo = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo.field, ownerState), extractValidationProps(defaultizedProps), {
89
- ref
90
- });
91
- },
95
+ field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
96
+ ref
97
+ }),
92
98
  tabs: _extends({
93
99
  hidden: true
94
- }, (_defaultizedProps$slo2 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo2.tabs),
100
+ }, defaultizedProps.slotProps?.tabs),
95
101
  toolbar: _extends({
96
102
  hidden: true,
97
103
  toolbarVariant: 'desktop'
98
- }, (_defaultizedProps$slo3 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo3.toolbar),
99
- actionBar: ownerState => {
100
- var _defaultizedProps$slo4;
101
- return _extends({
102
- actions: actionBarActions
103
- }, resolveComponentProps((_defaultizedProps$slo4 = defaultizedProps.slotProps) == null ? void 0 : _defaultizedProps$slo4.actionBar, ownerState));
104
- }
104
+ }, defaultizedProps.slotProps?.toolbar),
105
+ actionBar: ownerState => _extends({
106
+ actions: actionBarActions
107
+ }, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
105
108
  })
106
109
  });
107
110
  const {
@@ -389,7 +392,7 @@ DesktopDateTimeRangePicker.propTypes = {
389
392
  /**
390
393
  * Disable specific date.
391
394
  *
392
- * 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.
395
+ * 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.
393
396
  *
394
397
  * @template TDate
395
398
  * @param {TDate} day The date to test.
@@ -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
  },