@mui/x-date-pickers-pro 6.0.0-alpha.12 → 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 (144) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/DateRangeCalendar/DateRangeCalendar.js +7 -1
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +37 -37
  4. package/DateRangePicker/DateRangePicker.js +0 -5
  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 -5
  11. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -8
  12. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +5 -0
  13. package/MobileDateRangePicker/MobileDateRangePicker.js +0 -5
  14. package/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -8
  15. package/MultiInputDateRangeField/MultiInputDateRangeField.js +46 -13
  16. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +2 -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 +1 -0
  33. package/index.js +5 -2
  34. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  35. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -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 +2 -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 +4 -6
  45. package/internal/hooks/useRangePickerInputProps.js +5 -6
  46. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  47. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -2
  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/timeRange.d.ts +2 -1
  52. package/internal/utils/date-fields-utils.d.ts +17 -1
  53. package/internal/utils/releaseInfo.js +1 -1
  54. package/internal/utils/valueManagers.js +15 -21
  55. package/legacy/DateRangeCalendar/DateRangeCalendar.js +7 -1
  56. package/legacy/DateRangePicker/DateRangePicker.js +0 -5
  57. package/legacy/DateRangePicker/DateRangePickerView.js +7 -2
  58. package/legacy/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  59. package/legacy/DateRangePickerDay/DateRangePickerDay.js +72 -1
  60. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -5
  61. package/legacy/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -8
  62. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -5
  63. package/legacy/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -8
  64. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +44 -11
  65. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +43 -8
  66. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +43 -8
  67. package/legacy/NextDateRangePicker/NextDateRangePicker.js +16 -2
  68. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +109 -4
  69. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  70. package/legacy/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  71. package/legacy/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  72. package/legacy/dateRangeViewRenderers/index.js +1 -0
  73. package/legacy/index.js +5 -2
  74. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -4
  75. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -4
  76. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  77. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  78. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  79. package/legacy/internal/hooks/useRangePickerInputProps.js +5 -6
  80. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -2
  81. package/legacy/internal/utils/releaseInfo.js +1 -1
  82. package/legacy/internal/utils/valueManagers.js +15 -23
  83. package/legacy/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  84. package/modern/DateRangeCalendar/DateRangeCalendar.js +7 -1
  85. package/modern/DateRangePicker/DateRangePicker.js +0 -5
  86. package/modern/DateRangePicker/DateRangePickerView.js +6 -3
  87. package/modern/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  88. package/modern/DateRangePickerDay/DateRangePickerDay.js +72 -1
  89. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -5
  90. package/modern/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -8
  91. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +0 -5
  92. package/modern/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -8
  93. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +46 -13
  94. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  95. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  96. package/modern/NextDateRangePicker/NextDateRangePicker.js +16 -2
  97. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  98. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  99. package/modern/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  100. package/modern/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  101. package/modern/dateRangeViewRenderers/index.js +1 -0
  102. package/modern/index.js +5 -2
  103. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -4
  104. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -4
  105. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  106. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  107. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  108. package/modern/internal/hooks/useRangePickerInputProps.js +5 -6
  109. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -2
  110. package/modern/internal/utils/releaseInfo.js +1 -1
  111. package/modern/internal/utils/valueManagers.js +15 -21
  112. package/modern/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  113. package/node/DateRangeCalendar/DateRangeCalendar.js +7 -1
  114. package/node/DateRangePicker/DateRangePicker.js +0 -5
  115. package/node/DateRangePicker/DateRangePickerView.js +6 -3
  116. package/node/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  117. package/node/DateRangePickerDay/DateRangePickerDay.js +72 -1
  118. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -5
  119. package/node/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -8
  120. package/node/MobileDateRangePicker/MobileDateRangePicker.js +0 -5
  121. package/node/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -8
  122. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +46 -13
  123. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  124. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  125. package/node/NextDateRangePicker/NextDateRangePicker.js +16 -2
  126. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  127. package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  128. package/node/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  129. package/node/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +4 -4
  130. package/node/dateRangeViewRenderers/index.js +12 -0
  131. package/node/index.js +13 -1
  132. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -4
  133. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -4
  134. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  135. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  136. package/node/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  137. package/node/internal/hooks/useRangePickerInputProps.js +5 -6
  138. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +0 -2
  139. package/node/internal/utils/releaseInfo.js +1 -1
  140. package/node/internal/utils/valueManagers.js +14 -20
  141. package/node/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  142. package/package.json +3 -3
  143. package/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  144. package/internal/utils/viewRenderers.d.ts +0 -7
@@ -53,6 +53,7 @@ export const useRangePickerInputProps = ({
53
53
  onRangePositionChange('end');
54
54
  }
55
55
  };
56
+ const readOnlyInput = readOnly != null ? readOnly : wrapperVariant === 'mobile';
56
57
  const startInputProps = _extends({
57
58
  inputRef: startRef,
58
59
  label: (_inLocaleText$start = inLocaleText == null ? void 0 : inLocaleText.start) != null ? _inLocaleText$start : localeText.start,
@@ -62,9 +63,8 @@ export const useRangePickerInputProps = ({
62
63
  }, !readOnly && !disabled && {
63
64
  onClick: openRangeStartSelection
64
65
  }, {
65
- inputProps: {
66
- readOnly: wrapperVariant === 'mobile'
67
- }
66
+ readOnly: readOnlyInput,
67
+ disabled
68
68
  });
69
69
  const endInputProps = _extends({
70
70
  inputRef: endRef,
@@ -75,9 +75,8 @@ export const useRangePickerInputProps = ({
75
75
  }, !readOnly && !disabled && {
76
76
  onClick: openRangeEndSelection
77
77
  }, {
78
- inputProps: {
79
- readOnly: wrapperVariant === 'mobile'
80
- }
78
+ readOnly: readOnlyInput,
79
+ disabled
81
80
  });
82
81
  const rootProps = {
83
82
  onBlur
@@ -5,6 +5,6 @@ import { UseStaticRangePickerParams, UseStaticRangePickerProps } from './useStat
5
5
  * Hook managing all the range static pickers:
6
6
  * - StaticDateRangePicker
7
7
  */
8
- export declare const useStaticRangePicker: <TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any>>({ props, valueManager, viewLookup, validator, ref, }: UseStaticRangePickerParams<TDate, TView, TExternalProps>) => {
8
+ export declare const useStaticRangePicker: <TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any, TExternalProps>>({ props, valueManager, validator, ref, }: UseStaticRangePickerParams<TDate, TView, TExternalProps>) => {
9
9
  renderPicker: () => JSX.Element;
10
10
  };
@@ -19,7 +19,6 @@ const PickerStaticViewLayout = styled(PickersViewLayout)(({
19
19
  export const useStaticRangePicker = ({
20
20
  props,
21
21
  valueManager,
22
- viewLookup,
23
22
  validator,
24
23
  ref
25
24
  }) => {
@@ -36,7 +35,6 @@ export const useStaticRangePicker = ({
36
35
  renderCurrentView
37
36
  } = usePicker({
38
37
  props,
39
- viewLookup,
40
38
  valueManager,
41
39
  validator,
42
40
  autoFocusView: autoFocus != null ? autoFocus : false,
@@ -8,7 +8,7 @@ export interface UseStaticRangePickerSlotsComponentsProps<TDate, TView extends D
8
8
  }
9
9
  export interface StaticRangeOnlyPickerProps extends StaticOnlyPickerProps {
10
10
  }
11
- export interface UseStaticRangePickerProps<TDate, TView extends DateOrTimeView, TError> extends BaseNextPickerProps<DateRange<TDate>, TDate, TView, TError>, StaticRangeOnlyPickerProps {
11
+ export interface UseStaticRangePickerProps<TDate, TView extends DateOrTimeView, TError, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any, TExternalProps>> extends BaseNextPickerProps<DateRange<TDate>, TDate, TView, TError, TExternalProps, {}>, StaticRangeOnlyPickerProps {
12
12
  /**
13
13
  * Overrideable components.
14
14
  * @default {}
@@ -20,7 +20,7 @@ export interface UseStaticRangePickerProps<TDate, TView extends DateOrTimeView,
20
20
  */
21
21
  componentsProps?: UseStaticRangePickerSlotsComponentsProps<TDate, TView>;
22
22
  }
23
- export interface UseStaticRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, TExternalProps, {}>, 'valueManager' | 'viewLookup' | 'validator'> {
23
+ export interface UseStaticRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, TExternalProps, {}>, 'valueManager' | 'validator'> {
24
24
  props: TExternalProps;
25
25
  /**
26
26
  * Ref to pass to the root element
@@ -14,6 +14,16 @@ export interface DayRangeValidationProps<TDate> {
14
14
  */
15
15
  shouldDisableDate?: (day: TDate, position: 'start' | 'end') => boolean;
16
16
  }
17
- export interface UseDateRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, DateRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, BaseDateValidationProps<TDate> {
17
+ /**
18
+ * Props used in every range picker.
19
+ */
20
+ export interface BaseRangeProps {
21
+ /**
22
+ * If `true`, the component is disabled.
23
+ * @default false
24
+ */
25
+ disabled?: boolean;
26
+ }
27
+ export interface UseDateRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, DateRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, BaseDateValidationProps<TDate>, BaseRangeProps {
18
28
  }
19
29
  export type UseDateRangeFieldDefaultizedProps<TDate> = DefaultizedProps<UseDateRangeFieldProps<TDate>, keyof BaseDateValidationProps<TDate> | 'format'>;
@@ -1,8 +1,8 @@
1
1
  import { BaseDateValidationProps, TimeValidationProps, DefaultizedProps, MakeOptional, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
2
- import { DayRangeValidationProps } from './dateRange';
2
+ import { BaseRangeProps, DayRangeValidationProps } from './dateRange';
3
3
  import { DateRange } from './range';
4
4
  import { DateTimeRangeValidationError } from '../hooks/validation/useDateTimeRangeValidation';
5
- export interface UseDateTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, DateTimeRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, TimeValidationProps<TDate>, BaseDateValidationProps<TDate> {
5
+ export interface UseDateTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, DateTimeRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, TimeValidationProps<TDate>, BaseDateValidationProps<TDate>, BaseRangeProps {
6
6
  /**
7
7
  * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.
8
8
  */
@@ -1,7 +1,8 @@
1
1
  import { BaseTimeValidationProps, TimeValidationProps, DefaultizedProps, MakeOptional, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
2
2
  import { DateRange } from './range';
3
3
  import { TimeRangeValidationError } from '../hooks/validation/useTimeRangeValidation';
4
- export interface UseTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, TimeRangeValidationError>, 'format'>, TimeValidationProps<TDate>, BaseTimeValidationProps {
4
+ import { BaseRangeProps } from './dateRange';
5
+ export interface UseTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, TimeRangeValidationError>, 'format'>, TimeValidationProps<TDate>, BaseTimeValidationProps, BaseRangeProps {
5
6
  /**
6
7
  * 12h/24h view for hour selection clock.
7
8
  * @default `utils.is12HourCycleInCurrentLocale()`
@@ -3,4 +3,20 @@ export declare const splitDateRangeSections: (sections: RangeFieldSection[]) =>
3
3
  startDate: RangeFieldSection[];
4
4
  endDate: RangeFieldSection[];
5
5
  };
6
- export declare const removeLastSeparator: (dateSections: RangeFieldSection[]) => RangeFieldSection[];
6
+ export declare const removeLastSeparator: (dateSections: RangeFieldSection[]) => (RangeFieldSection | {
7
+ separator: null;
8
+ dateName: "start" | "end";
9
+ start: number;
10
+ end: number;
11
+ startInInput: number;
12
+ endInInput: number;
13
+ value: string;
14
+ placeholder: string;
15
+ startSeparator: string;
16
+ endSeparator: string;
17
+ dateSectionName: import("@mui/x-date-pickers").MuiDateSectionName;
18
+ contentType: "digit" | "letter";
19
+ formatValue: string;
20
+ edited: boolean;
21
+ hasTrailingZeroes: boolean;
22
+ })[];
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTY3MTE0NTIwMDAwMA==";
3
+ const releaseInfo = "MTY3MTgzMjgwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
@@ -1,5 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { replaceInvalidDateByNull, splitFormatIntoSections, addPositionPropertiesToSections, createDateStrFromSections, getSectionOrder } from '@mui/x-date-pickers/internals';
2
+ import { replaceInvalidDateByNull, splitFormatIntoSections, addPositionPropertiesToSections, createDateStrForInputFromSections, getSectionOrder } from '@mui/x-date-pickers/internals';
3
3
  import { splitDateRangeSections, removeLastSeparator } from './date-fields-utils';
4
4
  export const rangeValueManager = {
5
5
  emptyValue: [null, null],
@@ -29,35 +29,29 @@ export const rangeFieldValueManager = {
29
29
  startDate: null,
30
30
  endDate: null
31
31
  } : splitDateRangeSections(prevSections);
32
- const getSections = (newDate, prevDateSections) => {
32
+ const getSections = (newDate, prevDateSections, position) => {
33
33
  const shouldReUsePrevDateSections = !utils.isValid(newDate) && !!prevDateSections;
34
34
  if (shouldReUsePrevDateSections) {
35
35
  return prevDateSections;
36
36
  }
37
- return splitFormatIntoSections(utils, localeText, format, newDate);
38
- };
39
- const rawSectionsOfStartDate = getSections(start, prevDateRangeSections.startDate);
40
- const rawSectionsOfEndDate = getSections(end, prevDateRangeSections.endDate);
41
- const sectionsOfStartDate = rawSectionsOfStartDate.map((section, sectionIndex) => {
42
- if (sectionIndex === rawSectionsOfStartDate.length - 1) {
37
+ const sections = splitFormatIntoSections(utils, localeText, format, newDate);
38
+ return sections.map((section, sectionIndex) => {
39
+ if (sectionIndex === sections.length - 1 && position === 'start') {
40
+ return _extends({}, section, {
41
+ dateName: position,
42
+ endSeparator: `${section.endSeparator}\u2069 \u2066`
43
+ });
44
+ }
43
45
  return _extends({}, section, {
44
- dateName: 'start',
45
- separator: `\u2069 – \u2066`,
46
- parsingSeparator: ' – '
46
+ dateName: position
47
47
  });
48
- }
49
- return _extends({}, section, {
50
- dateName: 'start'
51
48
  });
52
- });
53
- const sectionsOfEndDate = rawSectionsOfEndDate.map(section => _extends({}, section, {
54
- dateName: 'end'
55
- }));
56
- return addPositionPropertiesToSections([...sectionsOfStartDate, ...sectionsOfEndDate]);
49
+ };
50
+ return addPositionPropertiesToSections([...getSections(start, prevDateRangeSections.startDate, 'start'), ...getSections(end, prevDateRangeSections.endDate, 'end')]);
57
51
  },
58
52
  getValueStrFromSections: sections => {
59
53
  const dateRangeSections = splitDateRangeSections(sections);
60
- return createDateStrFromSections([...dateRangeSections.startDate, ...dateRangeSections.endDate], true);
54
+ return createDateStrForInputFromSections([...dateRangeSections.startDate, ...dateRangeSections.endDate]);
61
55
  },
62
56
  getActiveDateSections: (sections, activeSection) => {
63
57
  const index = activeSection.dateName === 'start' ? 0 : 1;
@@ -90,7 +84,7 @@ export const rangeFieldValueManager = {
90
84
  getSectionOrder: (utils, localeText, format, isRTL) => {
91
85
  const splitedFormat = splitFormatIntoSections(utils, localeText, format, null);
92
86
  return getSectionOrder([...splitedFormat.slice(0, splitedFormat.length - 1), _extends({}, splitedFormat[splitedFormat.length - 1], {
93
- separator: ' – '
87
+ endSeparator: ' – '
94
88
  }), ...splitedFormat], isRTL);
95
89
  }
96
90
  };
@@ -408,7 +408,7 @@ var DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar
408
408
  className: classes.monthContainer,
409
409
  children: [calendars === 1 ? /*#__PURE__*/_jsx(PickersCalendarHeader, {
410
410
  views: ['day'],
411
- openView: 'day',
411
+ view: 'day',
412
412
  currentMonth: calendarState.currentMonth,
413
413
  onMonthChange: function onMonthChange(newMonth, direction) {
414
414
  return handleChangeMonth({
@@ -466,6 +466,12 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
466
466
  // | These PropTypes are generated from the TypeScript type definitions |
467
467
  // | To update them edit the TypeScript types and run "yarn proptypes" |
468
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
+ */
469
475
  autoFocus: PropTypes.bool,
470
476
  /**
471
477
  * The number of calendars to render.
@@ -233,11 +233,6 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
233
233
  * Use in controlled mode (see open).
234
234
  */
235
235
  onOpen: PropTypes.func,
236
- /**
237
- * Callback fired on view change.
238
- * @param {DateView} view The new view.
239
- */
240
- onViewChange: PropTypes.func,
241
236
  /**
242
237
  * Control the popup or dialog open state.
243
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
  /**
@@ -251,11 +251,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateRangePicker.propTypes = {
251
251
  * Use in controlled mode (see open).
252
252
  */
253
253
  onOpen: PropTypes.func,
254
- /**
255
- * Callback fired on view change.
256
- * @param {DateView} view The new view.
257
- */
258
- onViewChange: PropTypes.func,
259
254
  /**
260
255
  * Control the popup or dialog open state.
261
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,7 +18,11 @@ 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',
@@ -43,7 +44,6 @@ var DesktopNextDateRangePicker = /*#__PURE__*/React.forwardRef(function DesktopN
43
44
  var _useDesktopRangePicke = useDesktopRangePicker({
44
45
  props: props,
45
46
  valueManager: rangeValueManager,
46
- viewLookup: VIEW_LOOKUP,
47
47
  validator: validateDateRange
48
48
  }),
49
49
  renderPicker = _useDesktopRangePicke.renderPicker;
@@ -54,6 +54,12 @@ DesktopNextDateRangePicker.propTypes = {
54
54
  // | These PropTypes are generated from the TypeScript type definitions |
55
55
  // | To update them edit the TypeScript types and run "yarn proptypes" |
56
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
+ */
57
63
  autoFocus: PropTypes.bool,
58
64
  /**
59
65
  * The number of calendars to render on **desktop**.
@@ -234,7 +240,7 @@ DesktopNextDateRangePicker.propTypes = {
234
240
  * 4. If `null` is provided, no section will be selected
235
241
  * If not provided, the selected sections will be handled internally.
236
242
  */
237
- 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({
238
244
  endIndex: PropTypes.number.isRequired,
239
245
  startIndex: PropTypes.number.isRequired
240
246
  })]),
@@ -264,6 +270,14 @@ DesktopNextDateRangePicker.propTypes = {
264
270
  * The selected value.
265
271
  * Used when the component is controlled.
266
272
  */
267
- 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
+ })
268
282
  };
269
283
  export { DesktopNextDateRangePicker };
@@ -256,11 +256,6 @@ process.env.NODE_ENV !== "production" ? MobileDateRangePicker.propTypes = {
256
256
  * Use in controlled mode (see open).
257
257
  */
258
258
  onOpen: PropTypes.func,
259
- /**
260
- * Callback fired on view change.
261
- * @param {DateView} view The new view.
262
- */
263
- onViewChange: PropTypes.func,
264
259
  /**
265
260
  * Control the popup or dialog open state.
266
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,7 +18,11 @@ 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',
@@ -43,7 +44,6 @@ var MobileNextDateRangePicker = /*#__PURE__*/React.forwardRef(function MobileNex
43
44
  var _useMobileRangePicker = useMobileRangePicker({
44
45
  props: props,
45
46
  valueManager: rangeValueManager,
46
- viewLookup: VIEW_LOOKUP,
47
47
  validator: validateDateRange
48
48
  }),
49
49
  renderPicker = _useMobileRangePicker.renderPicker;
@@ -54,6 +54,12 @@ MobileNextDateRangePicker.propTypes = {
54
54
  // | These PropTypes are generated from the TypeScript type definitions |
55
55
  // | To update them edit the TypeScript types and run "yarn proptypes" |
56
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
+ */
57
63
  autoFocus: PropTypes.bool,
58
64
  /**
59
65
  * The number of calendars to render on **desktop**.
@@ -234,7 +240,7 @@ MobileNextDateRangePicker.propTypes = {
234
240
  * 4. If `null` is provided, no section will be selected
235
241
  * If not provided, the selected sections will be handled internally.
236
242
  */
237
- 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({
238
244
  endIndex: PropTypes.number.isRequired,
239
245
  startIndex: PropTypes.number.isRequired
240
246
  })]),
@@ -264,6 +270,14 @@ MobileNextDateRangePicker.propTypes = {
264
270
  * The selected value.
265
271
  * Used when the component is controlled.
266
272
  */
267
- 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
+ })
268
282
  };
269
283
  export { MobileNextDateRangePicker };