@mui/x-date-pickers-pro 6.0.0-alpha.11 → 6.0.0-alpha.13

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 (147) hide show
  1. package/CHANGELOG.md +260 -0
  2. package/DateRangeCalendar/DateRangeCalendar.js +30 -3
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +37 -37
  4. package/DateRangePicker/DateRangePicker.js +0 -6
  5. package/DateRangePicker/DateRangePickerView.d.ts +3 -3
  6. package/DateRangePicker/DateRangePickerView.js +6 -3
  7. package/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  8. package/DateRangePickerDay/DateRangePickerDay.js +72 -1
  9. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +5 -0
  10. package/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  11. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  12. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +5 -0
  13. package/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  14. package/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  15. package/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  16. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +4 -2
  17. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  18. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +3 -3
  19. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  20. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +2 -2
  21. package/NextDateRangePicker/NextDateRangePicker.js +16 -2
  22. package/NextDateRangePicker/shared.d.ts +9 -2
  23. package/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  24. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +3 -2
  25. package/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  26. package/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  27. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +13 -0
  28. package/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  29. package/dateRangeViewRenderers/index.d.ts +2 -0
  30. package/dateRangeViewRenderers/index.js +1 -0
  31. package/dateRangeViewRenderers/package.json +6 -0
  32. package/index.d.ts +2 -1
  33. package/index.js +5 -2
  34. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  35. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  36. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +4 -5
  37. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
  38. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  39. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +4 -5
  40. package/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  41. package/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  42. package/internal/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +2 -0
  43. package/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  44. package/internal/hooks/useRangePickerInputProps.d.ts +7 -7
  45. package/internal/hooks/useRangePickerInputProps.js +12 -11
  46. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  47. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  48. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +2 -2
  49. package/internal/models/dateRange.d.ts +11 -1
  50. package/internal/models/dateTimeRange.d.ts +2 -2
  51. package/internal/models/fields.d.ts +6 -1
  52. package/internal/models/range.d.ts +0 -4
  53. package/internal/models/timeRange.d.ts +2 -1
  54. package/internal/utils/date-fields-utils.d.ts +21 -5
  55. package/internal/utils/releaseInfo.js +1 -1
  56. package/internal/utils/valueManagers.d.ts +3 -2
  57. package/internal/utils/valueManagers.js +21 -22
  58. package/legacy/DateRangeCalendar/DateRangeCalendar.js +36 -3
  59. package/legacy/DateRangePicker/DateRangePicker.js +0 -6
  60. package/legacy/DateRangePicker/DateRangePickerView.js +7 -2
  61. package/legacy/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  62. package/legacy/DateRangePickerDay/DateRangePickerDay.js +72 -1
  63. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  64. package/legacy/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  65. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  66. package/legacy/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  67. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +48 -8
  68. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +43 -8
  69. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +43 -8
  70. package/legacy/NextDateRangePicker/NextDateRangePicker.js +16 -2
  71. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +109 -4
  72. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  73. package/legacy/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  74. package/legacy/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  75. package/legacy/dateRangeViewRenderers/index.js +1 -0
  76. package/legacy/index.js +5 -2
  77. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  78. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  79. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  80. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  81. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  82. package/legacy/internal/hooks/useRangePickerInputProps.js +12 -11
  83. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  84. package/legacy/internal/utils/releaseInfo.js +1 -1
  85. package/legacy/internal/utils/valueManagers.js +20 -23
  86. package/legacy/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  87. package/modern/DateRangeCalendar/DateRangeCalendar.js +29 -3
  88. package/modern/DateRangePicker/DateRangePicker.js +0 -6
  89. package/modern/DateRangePicker/DateRangePickerView.js +6 -3
  90. package/modern/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  91. package/modern/DateRangePickerDay/DateRangePickerDay.js +72 -1
  92. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  93. package/modern/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  94. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  95. package/modern/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  96. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  97. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  98. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  99. package/modern/NextDateRangePicker/NextDateRangePicker.js +16 -2
  100. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  101. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  102. package/modern/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  103. package/modern/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  104. package/modern/dateRangeViewRenderers/index.js +1 -0
  105. package/modern/index.js +5 -2
  106. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  107. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  108. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  109. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  110. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  111. package/modern/internal/hooks/useRangePickerInputProps.js +11 -11
  112. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  113. package/modern/internal/utils/releaseInfo.js +1 -1
  114. package/modern/internal/utils/valueManagers.js +21 -22
  115. package/modern/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  116. package/node/DateRangeCalendar/DateRangeCalendar.js +28 -2
  117. package/node/DateRangePicker/DateRangePicker.js +0 -6
  118. package/node/DateRangePicker/DateRangePickerView.js +6 -3
  119. package/node/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  120. package/node/DateRangePickerDay/DateRangePickerDay.js +72 -1
  121. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  122. package/node/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  123. package/node/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  124. package/node/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  125. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  126. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  127. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  128. package/node/NextDateRangePicker/NextDateRangePicker.js +16 -2
  129. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  130. package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  131. package/node/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  132. package/node/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +4 -4
  133. package/node/dateRangeViewRenderers/index.js +12 -0
  134. package/node/index.js +13 -1
  135. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  136. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  137. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  138. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  139. package/node/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  140. package/node/internal/hooks/useRangePickerInputProps.js +11 -11
  141. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  142. package/node/internal/utils/releaseInfo.js +1 -1
  143. package/node/internal/utils/valueManagers.js +20 -21
  144. package/node/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  145. package/package.json +4 -4
  146. package/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  147. package/internal/utils/viewRenderers.d.ts +0 -7
@@ -13,7 +13,7 @@ import { resolveComponentProps } from '@mui/base/utils';
13
13
  import { styled, useThemeProps } from '@mui/material/styles';
14
14
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
15
15
  import { Watermark } from '@mui/x-license-pro';
16
- import { applyDefaultDate, DAY_MARGIN, DayCalendar, defaultReduceAnimations, PickersArrowSwitcher, PickersCalendarHeader, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, WrapperVariantContext } from '@mui/x-date-pickers/internals';
16
+ import { applyDefaultDate, DAY_MARGIN, DayCalendar, defaultReduceAnimations, PickersArrowSwitcher, PickersCalendarHeader, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, WrapperVariantContext, useNow } from '@mui/x-date-pickers/internals';
17
17
  import { getReleaseInfo } from '../internal/utils/releaseInfo';
18
18
  import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
19
19
  import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from '../internal/utils/date-utils';
@@ -112,6 +112,7 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
112
112
  var DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar(inProps, ref) {
113
113
  var utils = useUtils();
114
114
  var localeText = useLocaleText();
115
+ var now = useNow();
115
116
  var props = useDateRangeCalendarDefaultizedProps(inProps, 'MuiDateRangeCalendar');
116
117
  var isMobile = React.useContext(WrapperVariantContext) === 'mobile';
117
118
  var valueProp = props.value,
@@ -368,6 +369,32 @@ var DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar
368
369
  return utils.setMonth(calendarState.currentMonth, utils.getMonth(calendarState.currentMonth) + index);
369
370
  });
370
371
  }, [utils, calendarState.currentMonth, calendars]);
372
+ var focusedMonth = React.useMemo(function () {
373
+ var _visibleMonths$find;
374
+ if (!autoFocus) {
375
+ return null;
376
+ }
377
+
378
+ // The focus priority of the "day" view is as follows:
379
+ // 1. Month of the `start` date
380
+ // 2. Month of the `end` date
381
+ // 3. Month of the current date
382
+ // 4. First visible month
383
+
384
+ if (value[0] != null) {
385
+ return visibleMonths.find(function (month) {
386
+ return utils.isSameMonth(month, value[0]);
387
+ });
388
+ }
389
+ if (value[1] != null) {
390
+ return visibleMonths.find(function (month) {
391
+ return utils.isSameMonth(month, value[1]);
392
+ });
393
+ }
394
+ return (_visibleMonths$find = visibleMonths.find(function (month) {
395
+ return utils.isSameMonth(month, now);
396
+ })) != null ? _visibleMonths$find : visibleMonths[0];
397
+ }, [utils, value, visibleMonths, autoFocus, now]);
371
398
  return /*#__PURE__*/_jsxs(DateRangeCalendarRoot, _extends({
372
399
  ref: ref,
373
400
  className: clsx(className, classes.root),
@@ -381,7 +408,7 @@ var DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar
381
408
  className: classes.monthContainer,
382
409
  children: [calendars === 1 ? /*#__PURE__*/_jsx(PickersCalendarHeader, {
383
410
  views: ['day'],
384
- openView: 'day',
411
+ view: 'day',
385
412
  currentMonth: calendarState.currentMonth,
386
413
  onMonthChange: function onMonthChange(newMonth, direction) {
387
414
  return handleChangeMonth({
@@ -426,7 +453,7 @@ var DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar
426
453
  renderLoading: renderLoading,
427
454
  components: componentsForDayCalendar,
428
455
  componentsProps: componentsPropsForDayCalendar,
429
- autoFocus: autoFocus,
456
+ autoFocus: month === focusedMonth,
430
457
  fixedWeekNumber: fixedWeekNumber,
431
458
  displayWeekNumber: displayWeekNumber
432
459
  }), index)]
@@ -439,6 +466,12 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
439
466
  // | These PropTypes are generated from the TypeScript type definitions |
440
467
  // | To update them edit the TypeScript types and run "yarn proptypes" |
441
468
  // ----------------------------------------------------------------------
469
+ /**
470
+ * If `true`, the main element is focused during the first mount.
471
+ * This main element is:
472
+ * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).
473
+ * - the `input` element if there is a field rendered.
474
+ */
442
475
  autoFocus: PropTypes.bool,
443
476
  /**
444
477
  * The number of calendars to render.
@@ -54,7 +54,6 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
54
54
  * @default /\dap/gi
55
55
  */
56
56
  acceptRegex: PropTypes.instanceOf(RegExp),
57
- autoFocus: PropTypes.bool,
58
57
  /**
59
58
  * The number of calendars that render on **desktop**.
60
59
  * @default 2
@@ -234,11 +233,6 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
234
233
  * Use in controlled mode (see open).
235
234
  */
236
235
  onOpen: PropTypes.func,
237
- /**
238
- * Callback fired on view change.
239
- * @param {DateView} view The new view.
240
- */
241
- onViewChange: PropTypes.func,
242
236
  /**
243
237
  * Control the popup or dialog open state.
244
238
  */
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["calendars", "className", "value", "DateInputProps", "defaultCalendarMonth", "disableAutoMonthSwitching", "disableFuture", "disableHighlightToday", "disablePast", "isMobileKeyboardViewOpen", "maxDate", "minDate", "onDateChange", "onMonthChange", "open", "reduceAnimations", "rangePosition", "onRangePositionChange", "shouldDisableDate", "showToolbar", "toggleMobileKeyboardView", "components", "componentsProps"];
4
+ var _excluded = ["calendars", "className", "value", "DateInputProps", "defaultCalendarMonth", "disableAutoMonthSwitching", "disableFuture", "disableHighlightToday", "disablePast", "isMobileKeyboardViewOpen", "maxDate", "minDate", "onDateChange", "onMonthChange", "open", "reduceAnimations", "rangePosition", "onRangePositionChange", "shouldDisableDate", "showToolbar", "toggleMobileKeyboardView", "components", "componentsProps", "onFocusedViewChange"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { Watermark } from '@mui/x-license-pro';
@@ -44,6 +44,7 @@ function DateRangePickerViewRaw(props) {
44
44
  toggleMobileKeyboardView = props.toggleMobileKeyboardView,
45
45
  components = props.components,
46
46
  componentsProps = props.componentsProps,
47
+ onFocusedViewChange = props.onFocusedViewChange,
47
48
  other = _objectWithoutProperties(props, _excluded);
48
49
  var utils = useUtils();
49
50
  var wrapperVariant = React.useContext(WrapperVariantContext);
@@ -127,7 +128,11 @@ function DateRangePickerViewRaw(props) {
127
128
  components: components,
128
129
  componentsProps: componentsProps,
129
130
  shouldDisableDate: wrappedShouldDisableDate
130
- }, calendarState, other);
131
+ }, calendarState, {
132
+ onFocusedViewChange: onFocusedViewChange ? function (newHasFocus) {
133
+ return onFocusedViewChange('day', newHasFocus);
134
+ } : undefined
135
+ }, other);
131
136
  switch (wrapperVariant) {
132
137
  case 'desktop':
133
138
  {
@@ -68,7 +68,7 @@ export function DateRangePickerViewMobile(props) {
68
68
  maxDate: maxDateWithDisabled,
69
69
  minDate: minDateWithDisabled,
70
70
  onMonthChange: changeMonth,
71
- openView: "day",
71
+ view: "day",
72
72
  views: onlyDayView,
73
73
  disabled: disabled
74
74
  }, other)), /*#__PURE__*/_jsx(DayCalendar, _extends({}, other, {
@@ -187,10 +187,26 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
187
187
  // | These PropTypes are generated from the TypeScript type definitions |
188
188
  // | To update them edit the TypeScript types and run "yarn proptypes" |
189
189
  // ----------------------------------------------------------------------
190
+ /**
191
+ * A ref for imperative actions.
192
+ * It currently only supports `focusVisible()` action.
193
+ */
194
+ action: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
195
+ current: PropTypes.shape({
196
+ focusVisible: PropTypes.func.isRequired
197
+ })
198
+ })]),
199
+ /**
200
+ * If `true`, the ripples are centered.
201
+ * They won't start at the cursor interaction position.
202
+ * @default false
203
+ */
204
+ centerRipple: PropTypes.bool,
190
205
  /**
191
206
  * Override or extend the styles applied to the component.
192
207
  */
193
208
  classes: PropTypes.object,
209
+ className: PropTypes.string,
194
210
  /**
195
211
  * The date to show.
196
212
  */
@@ -210,6 +226,33 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
210
226
  * @default false
211
227
  */
212
228
  disableMargin: PropTypes.bool,
229
+ /**
230
+ * If `true`, the ripple effect is disabled.
231
+ *
232
+ * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure
233
+ * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.
234
+ * @default false
235
+ */
236
+ disableRipple: PropTypes.bool,
237
+ /**
238
+ * If `true`, the touch ripple effect is disabled.
239
+ * @default false
240
+ */
241
+ disableTouchRipple: PropTypes.bool,
242
+ /**
243
+ * If `true`, the base button will have a keyboard focus ripple.
244
+ * @default false
245
+ */
246
+ focusRipple: PropTypes.bool,
247
+ /**
248
+ * This prop can help identify which element has keyboard focus.
249
+ * The class name will be applied when the element gains the focus through keyboard interaction.
250
+ * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).
251
+ * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).
252
+ * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components
253
+ * if needed.
254
+ */
255
+ focusVisibleClassName: PropTypes.string,
213
256
  isAnimating: PropTypes.bool,
214
257
  /**
215
258
  * Set to `true` if the `day` is the end of a highlighted date range.
@@ -240,6 +283,11 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
240
283
  */
241
284
  isVisuallySelected: PropTypes.bool,
242
285
  onDaySelect: PropTypes.func.isRequired,
286
+ /**
287
+ * Callback fired when the component is focused with a keyboard.
288
+ * We trigger a `onFocus` callback too.
289
+ */
290
+ onFocusVisible: PropTypes.func,
243
291
  onMouseEnter: PropTypes.func,
244
292
  /**
245
293
  * If `true`, day is outside of month and will be hidden.
@@ -255,11 +303,34 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
255
303
  * @default false
256
304
  */
257
305
  showDaysOutsideCurrentMonth: PropTypes.bool,
306
+ style: PropTypes.object,
307
+ /**
308
+ * The system prop that allows defining system overrides as well as additional CSS styles.
309
+ */
310
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
311
+ /**
312
+ * @default 0
313
+ */
314
+ tabIndex: PropTypes.number,
258
315
  /**
259
316
  * If `true`, renders as today date.
260
317
  * @default false
261
318
  */
262
- today: PropTypes.bool
319
+ today: PropTypes.bool,
320
+ /**
321
+ * Props applied to the `TouchRipple` element.
322
+ */
323
+ TouchRippleProps: PropTypes.object,
324
+ /**
325
+ * A ref that points to the `TouchRipple` element.
326
+ */
327
+ touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
328
+ current: PropTypes.shape({
329
+ pulsate: PropTypes.func.isRequired,
330
+ start: PropTypes.func.isRequired,
331
+ stop: PropTypes.func.isRequired
332
+ })
333
+ })])
263
334
  } : void 0;
264
335
 
265
336
  /**
@@ -78,7 +78,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes = {
78
78
  * @default /\dap/gi
79
79
  */
80
80
  acceptRegex: PropTypes.instanceOf(RegExp),
81
- autoFocus: PropTypes.bool,
82
81
  /**
83
82
  * The number of calendars that render on **desktop**.
84
83
  * @default 2
@@ -252,11 +251,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes = {
252
251
  * Use in controlled mode (see open).
253
252
  */
254
253
  onOpen: PropTypes.func,
255
- /**
256
- * Callback fired on view change.
257
- * @param {DateView} view The new view.
258
- */
259
- onViewChange: PropTypes.func,
260
254
  /**
261
255
  * Control the popup or dialog open state.
262
256
  */
@@ -7,13 +7,10 @@ import { extractValidationProps } from '@mui/x-date-pickers/internals';
7
7
  import { resolveComponentProps } from '@mui/base/utils';
8
8
  import { rangeValueManager } from '../internal/utils/valueManagers';
9
9
  import { useNextDateRangePickerDefaultizedProps } from '../NextDateRangePicker/shared';
10
- import { useDesktopRangePicker } from '../internal/hooks/useDesktopRangePicker';
10
+ import { renderDateRangeViewCalendar } from '../dateRangeViewRenderers';
11
11
  import { Unstable_MultiInputDateRangeField as MultiInputDateRangeField } from '../MultiInputDateRangeField';
12
- import { renderDateRangeView } from '../internal/utils/viewRenderers';
12
+ import { useDesktopRangePicker } from '../internal/hooks/useDesktopRangePicker';
13
13
  import { validateDateRange } from '../internal/hooks/validation/useDateRangeValidation';
14
- var VIEW_LOOKUP = {
15
- day: renderDateRangeView
16
- };
17
14
  var DesktopNextDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopNextDateRangePicker(inProps, ref) {
18
15
  var _defaultizedProps$cal, _defaultizedProps$sho;
19
16
  // Props with the default values common to all date time pickers
@@ -21,12 +18,15 @@ var DesktopNextDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopN
21
18
  className = _useNextDateRangePick.className,
22
19
  sx = _useNextDateRangePick.sx,
23
20
  defaultizedProps = _objectWithoutProperties(_useNextDateRangePick, _excluded);
21
+ var viewRenderers = _extends({
22
+ day: renderDateRangeViewCalendar
23
+ }, defaultizedProps.viewRenderers);
24
24
  var props = _extends({}, defaultizedProps, {
25
+ viewRenderers: viewRenderers,
25
26
  calendars: (_defaultizedProps$cal = defaultizedProps.calendars) != null ? _defaultizedProps$cal : 2,
26
27
  views: ['day'],
27
28
  openTo: 'day',
28
29
  showToolbar: (_defaultizedProps$sho = defaultizedProps.showToolbar) != null ? _defaultizedProps$sho : false,
29
- autoFocus: true,
30
30
  components: _extends({
31
31
  Field: MultiInputDateRangeField
32
32
  }, defaultizedProps.components),
@@ -44,7 +44,6 @@ var DesktopNextDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopN
44
44
  var _useDesktopRangePicke = useDesktopRangePicker({
45
45
  props: props,
46
46
  valueManager: rangeValueManager,
47
- viewLookup: VIEW_LOOKUP,
48
47
  validator: validateDateRange
49
48
  }),
50
49
  renderPicker = _useDesktopRangePicke.renderPicker;
@@ -55,6 +54,12 @@ DesktopNextDateRangePicker.propTypes = {
55
54
  // | These PropTypes are generated from the TypeScript type definitions |
56
55
  // | To update them edit the TypeScript types and run "yarn proptypes" |
57
56
  // ----------------------------------------------------------------------
57
+ /**
58
+ * If `true`, the main element is focused during the first mount.
59
+ * This main element is:
60
+ * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).
61
+ * - the `input` element if there is a field rendered.
62
+ */
58
63
  autoFocus: PropTypes.bool,
59
64
  /**
60
65
  * The number of calendars to render on **desktop**.
@@ -235,7 +240,7 @@ DesktopNextDateRangePicker.propTypes = {
235
240
  * 4. If `null` is provided, no section will be selected
236
241
  * If not provided, the selected sections will be handled internally.
237
242
  */
238
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
243
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
239
244
  endIndex: PropTypes.number.isRequired,
240
245
  startIndex: PropTypes.number.isRequired
241
246
  })]),
@@ -265,6 +270,14 @@ DesktopNextDateRangePicker.propTypes = {
265
270
  * The selected value.
266
271
  * Used when the component is controlled.
267
272
  */
268
- value: PropTypes.arrayOf(PropTypes.any)
273
+ value: PropTypes.arrayOf(PropTypes.any),
274
+ /**
275
+ * Define custom view renderers for each section.
276
+ * If `null`, the section will only have field editing.
277
+ * If `undefined`, internally defined view will be the used.
278
+ */
279
+ viewRenderers: PropTypes.shape({
280
+ day: PropTypes.func
281
+ })
269
282
  };
270
283
  export { DesktopNextDateRangePicker };
@@ -83,7 +83,6 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes = {
83
83
  * @default /\dap/gi
84
84
  */
85
85
  acceptRegex: PropTypes.instanceOf(RegExp),
86
- autoFocus: PropTypes.bool,
87
86
  /**
88
87
  * The number of calendars that render on **desktop**.
89
88
  * @default 2
@@ -257,11 +256,6 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes = {
257
256
  * Use in controlled mode (see open).
258
257
  */
259
258
  onOpen: PropTypes.func,
260
- /**
261
- * Callback fired on view change.
262
- * @param {DateView} view The new view.
263
- */
264
- onViewChange: PropTypes.func,
265
259
  /**
266
260
  * Control the popup or dialog open state.
267
261
  */
@@ -7,13 +7,10 @@ import { extractValidationProps } from '@mui/x-date-pickers/internals';
7
7
  import { resolveComponentProps } from '@mui/base/utils';
8
8
  import { rangeValueManager } from '../internal/utils/valueManagers';
9
9
  import { useNextDateRangePickerDefaultizedProps } from '../NextDateRangePicker/shared';
10
- import { useMobileRangePicker } from '../internal/hooks/useMobileRangePicker';
10
+ import { renderDateRangeViewCalendar } from '../dateRangeViewRenderers';
11
11
  import { Unstable_MultiInputDateRangeField as MultiInputDateRangeField } from '../MultiInputDateRangeField';
12
- import { renderDateRangeView } from '../internal/utils/viewRenderers';
12
+ import { useMobileRangePicker } from '../internal/hooks/useMobileRangePicker';
13
13
  import { validateDateRange } from '../internal/hooks/validation/useDateRangeValidation';
14
- var VIEW_LOOKUP = {
15
- day: renderDateRangeView
16
- };
17
14
  var MobileNextDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileNextDateRangePicker(inProps, ref) {
18
15
  var _defaultizedProps$cal, _defaultizedProps$sho;
19
16
  // Props with the default values common to all date time pickers
@@ -21,12 +18,15 @@ var MobileNextDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileNex
21
18
  className = _useNextDateRangePick.className,
22
19
  sx = _useNextDateRangePick.sx,
23
20
  defaultizedProps = _objectWithoutProperties(_useNextDateRangePick, _excluded);
21
+ var viewRenderers = _extends({
22
+ day: renderDateRangeViewCalendar
23
+ }, defaultizedProps.viewRenderers);
24
24
  var props = _extends({}, defaultizedProps, {
25
+ viewRenderers: viewRenderers,
25
26
  calendars: (_defaultizedProps$cal = defaultizedProps.calendars) != null ? _defaultizedProps$cal : 1,
26
27
  views: ['day'],
27
28
  openTo: 'day',
28
29
  showToolbar: (_defaultizedProps$sho = defaultizedProps.showToolbar) != null ? _defaultizedProps$sho : true,
29
- autoFocus: true,
30
30
  components: _extends({
31
31
  Field: MultiInputDateRangeField
32
32
  }, defaultizedProps.components),
@@ -44,7 +44,6 @@ var MobileNextDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileNex
44
44
  var _useMobileRangePicker = useMobileRangePicker({
45
45
  props: props,
46
46
  valueManager: rangeValueManager,
47
- viewLookup: VIEW_LOOKUP,
48
47
  validator: validateDateRange
49
48
  }),
50
49
  renderPicker = _useMobileRangePicker.renderPicker;
@@ -55,6 +54,12 @@ MobileNextDateRangePicker.propTypes = {
55
54
  // | These PropTypes are generated from the TypeScript type definitions |
56
55
  // | To update them edit the TypeScript types and run "yarn proptypes" |
57
56
  // ----------------------------------------------------------------------
57
+ /**
58
+ * If `true`, the main element is focused during the first mount.
59
+ * This main element is:
60
+ * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).
61
+ * - the `input` element if there is a field rendered.
62
+ */
58
63
  autoFocus: PropTypes.bool,
59
64
  /**
60
65
  * The number of calendars to render on **desktop**.
@@ -235,7 +240,7 @@ MobileNextDateRangePicker.propTypes = {
235
240
  * 4. If `null` is provided, no section will be selected
236
241
  * If not provided, the selected sections will be handled internally.
237
242
  */
238
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
243
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
239
244
  endIndex: PropTypes.number.isRequired,
240
245
  startIndex: PropTypes.number.isRequired
241
246
  })]),
@@ -265,6 +270,14 @@ MobileNextDateRangePicker.propTypes = {
265
270
  * The selected value.
266
271
  * Used when the component is controlled.
267
272
  */
268
- value: PropTypes.arrayOf(PropTypes.any)
273
+ value: PropTypes.arrayOf(PropTypes.any),
274
+ /**
275
+ * Define custom view renderers for each section.
276
+ * If `null`, the section will only have field editing.
277
+ * If `undefined`, internally defined view will be the used.
278
+ */
279
+ viewRenderers: PropTypes.shape({
280
+ day: PropTypes.func
281
+ })
269
282
  };
270
283
  export { MobileNextDateRangePicker };
@@ -1,8 +1,8 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- var _excluded = ["components", "componentsProps", "value", "defaultValue", "format", "onChange", "readOnly", "onError", "shouldDisableDate", "minDate", "maxDate", "disableFuture", "disablePast", "selectedSections", "onSelectedSectionsChange"],
4
- _excluded2 = ["onKeyDown", "ref"],
5
- _excluded3 = ["onKeyDown", "ref"];
3
+ var _excluded = ["components", "componentsProps", "value", "defaultValue", "format", "onChange", "readOnly", "disabled", "onError", "shouldDisableDate", "minDate", "maxDate", "disableFuture", "disablePast", "selectedSections", "onSelectedSectionsChange", "autoFocus"],
4
+ _excluded2 = ["onKeyDown", "ref", "readOnly", "inputMode"],
5
+ _excluded3 = ["onKeyDown", "ref", "readOnly", "inputMode"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import Stack from '@mui/material/Stack';
@@ -15,12 +15,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
15
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
16
  var MultiInputDateRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef(function (props, ref) {
17
17
  return /*#__PURE__*/_jsx(Stack, _extends({
18
- ref: ref
19
- }, props, {
18
+ ref: ref,
20
19
  spacing: 2,
21
20
  direction: "row",
22
- alignItems: "center"
23
- }));
21
+ alignItems: "baseline"
22
+ }, props));
24
23
  }), {
25
24
  name: 'MuiMultiInputDateRangeField',
26
25
  slot: 'Root',
@@ -53,6 +52,7 @@ var MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInput
53
52
  format = themeProps.format,
54
53
  onChange = themeProps.onChange,
55
54
  readOnly = themeProps.readOnly,
55
+ disabled = themeProps.disabled,
56
56
  onError = themeProps.onError,
57
57
  shouldDisableDate = themeProps.shouldDisableDate,
58
58
  minDate = themeProps.minDate,
@@ -61,6 +61,7 @@ var MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInput
61
61
  disablePast = themeProps.disablePast,
62
62
  selectedSections = themeProps.selectedSections,
63
63
  onSelectedSectionsChange = themeProps.onSelectedSectionsChange,
64
+ autoFocus = themeProps.autoFocus,
64
65
  other = _objectWithoutProperties(themeProps, _excluded);
65
66
  var ownerState = themeProps;
66
67
  var Root = (_components$Root = components == null ? void 0 : components.Root) != null ? _components$Root : MultiInputDateRangeFieldRoot;
@@ -77,6 +78,9 @@ var MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInput
77
78
  var startInputProps = useSlotProps({
78
79
  elementType: Input,
79
80
  externalSlotProps: componentsProps == null ? void 0 : componentsProps.input,
81
+ additionalProps: {
82
+ autoFocus: autoFocus
83
+ },
80
84
  ownerState: _extends({}, ownerState, {
81
85
  position: 'start'
82
86
  })
@@ -101,6 +105,7 @@ var MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInput
101
105
  format: format,
102
106
  onChange: onChange,
103
107
  readOnly: readOnly,
108
+ disabled: disabled,
104
109
  onError: onError,
105
110
  shouldDisableDate: shouldDisableDate,
106
111
  minDate: minDate,
@@ -118,20 +123,28 @@ var MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInput
118
123
  _useMultiInputDateRan2 = _useMultiInputDateRan.startDate,
119
124
  onStartInputKeyDown = _useMultiInputDateRan2.onKeyDown,
120
125
  startInputRef = _useMultiInputDateRan2.ref,
126
+ startReadOnly = _useMultiInputDateRan2.readOnly,
127
+ startInputMode = _useMultiInputDateRan2.inputMode,
121
128
  startDateProps = _objectWithoutProperties(_useMultiInputDateRan2, _excluded2),
122
129
  _useMultiInputDateRan3 = _useMultiInputDateRan.endDate,
123
130
  onEndInputKeyDown = _useMultiInputDateRan3.onKeyDown,
124
131
  endInputRef = _useMultiInputDateRan3.ref,
132
+ endReadOnly = _useMultiInputDateRan3.readOnly,
133
+ endInputMode = _useMultiInputDateRan3.inputMode,
125
134
  endDateProps = _objectWithoutProperties(_useMultiInputDateRan3, _excluded3);
126
135
  return /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
127
136
  children: [/*#__PURE__*/_jsx(Input, _extends({}, startDateProps, {
128
137
  inputProps: _extends({}, startDateProps.inputProps, {
129
138
  ref: startInputRef,
139
+ readOnly: startReadOnly,
140
+ inputMode: startInputMode,
130
141
  onKeyDown: onStartInputKeyDown
131
142
  })
132
143
  })), /*#__PURE__*/_jsx(Separator, _extends({}, separatorProps)), /*#__PURE__*/_jsx(Input, _extends({}, endDateProps, {
133
144
  inputProps: _extends({}, endDateProps.inputProps, {
134
145
  ref: endInputRef,
146
+ readOnly: endReadOnly,
147
+ inputMode: endInputMode,
135
148
  onKeyDown: onEndInputKeyDown
136
149
  })
137
150
  }))]
@@ -142,6 +155,8 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
142
155
  // | These PropTypes are generated from the TypeScript type definitions |
143
156
  // | To update them edit the TypeScript types and run "yarn proptypes" |
144
157
  // ----------------------------------------------------------------------
158
+ autoFocus: PropTypes.bool,
159
+ className: PropTypes.string,
145
160
  /**
146
161
  * Overrideable components.
147
162
  * @default {}
@@ -156,6 +171,17 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
156
171
  * The default value. Use when the component is not controlled.
157
172
  */
158
173
  defaultValue: PropTypes.arrayOf(PropTypes.any),
174
+ /**
175
+ * Defines the `flex-direction` style property.
176
+ * It is applied for all screen sizes.
177
+ * @default 'column'
178
+ */
179
+ direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),
180
+ /**
181
+ * If `true`, the component is disabled.
182
+ * @default false
183
+ */
184
+ disabled: PropTypes.bool,
159
185
  /**
160
186
  * If `true` disable values before the current date for date components, time for time components and both for date time components.
161
187
  * @default false
@@ -166,6 +192,10 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
166
192
  * @default false
167
193
  */
168
194
  disablePast: PropTypes.bool,
195
+ /**
196
+ * Add an element between each child.
197
+ */
198
+ divider: PropTypes.node,
169
199
  /**
170
200
  * Format of the date when rendered in the input(s).
171
201
  */
@@ -212,7 +242,7 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
212
242
  * 4. If `null` is provided, no section will be selected
213
243
  * If not provided, the selected sections will be handled internally.
214
244
  */
215
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
245
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
216
246
  endIndex: PropTypes.number.isRequired,
217
247
  startIndex: PropTypes.number.isRequired
218
248
  })]),
@@ -224,6 +254,16 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
224
254
  * @returns {boolean} Returns `true` if the date should be disabled.
225
255
  */
226
256
  shouldDisableDate: PropTypes.func,
257
+ /**
258
+ * Defines the space between immediate children.
259
+ * @default 0
260
+ */
261
+ spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
262
+ style: PropTypes.object,
263
+ /**
264
+ * The system prop, which allows defining system overrides as well as additional CSS styles.
265
+ */
266
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
227
267
  /**
228
268
  * The selected value.
229
269
  * Used when the component is controlled.