@mui/x-date-pickers-pro 6.0.2 → 6.0.4

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 (138) hide show
  1. package/CHANGELOG.md +119 -5
  2. package/DateRangePicker/DateRangePicker.js +12 -0
  3. package/DateRangePicker/DateRangePickerToolbar.d.ts +1 -1
  4. package/DateRangePicker/shared.d.ts +1 -1
  5. package/DateRangePickerDay/DateRangePickerDay.js +3 -6
  6. package/DesktopDateRangePicker/DesktopDateRangePicker.js +12 -0
  7. package/MobileDateRangePicker/MobileDateRangePicker.js +12 -0
  8. package/MultiInputDateRangeField/MultiInputDateRangeField.js +2 -0
  9. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +8 -10
  10. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -3
  11. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +8 -8
  12. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +14 -3
  13. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +8 -8
  14. package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +1 -0
  15. package/SingleInputDateRangeField/SingleInputDateRangeField.js +5 -0
  16. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +5 -3
  17. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.ts +1 -0
  18. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +5 -0
  19. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +5 -3
  20. package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.ts +1 -0
  21. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  22. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +5 -3
  23. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +1 -1
  24. package/index.d.ts +1 -1
  25. package/index.js +1 -1
  26. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  27. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -40
  28. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +10 -30
  29. package/internal/hooks/useEnrichedRangePickerFieldProps.d.ts +53 -0
  30. package/internal/hooks/useEnrichedRangePickerFieldProps.js +202 -0
  31. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
  32. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +36 -39
  33. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +10 -29
  34. package/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -2
  35. package/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +23 -15
  36. package/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +1 -2
  37. package/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +14 -12
  38. package/internal/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +14 -2
  39. package/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +1 -2
  40. package/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +14 -12
  41. package/internal/hooks/useRangePosition.d.ts +4 -0
  42. package/internal/hooks/useRangePosition.js +16 -1
  43. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  44. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +5 -3
  45. package/internal/hooks/validation/useDateRangeValidation.d.ts +2 -1
  46. package/internal/hooks/validation/useDateTimeRangeValidation.d.ts +2 -1
  47. package/internal/hooks/validation/useTimeRangeValidation.d.ts +2 -1
  48. package/internal/models/dateRange.d.ts +2 -1
  49. package/internal/models/dateTimeRange.d.ts +2 -1
  50. package/internal/models/fields.d.ts +8 -3
  51. package/internal/models/index.d.ts +1 -0
  52. package/internal/models/index.js +2 -1
  53. package/internal/models/rangePickerProps.d.ts +17 -0
  54. package/internal/models/rangePickerProps.js +1 -0
  55. package/internal/models/timeRange.d.ts +2 -1
  56. package/internal/utils/releaseInfo.js +1 -1
  57. package/internal/utils/valueManagers.js +23 -27
  58. package/legacy/DateRangePicker/DateRangePicker.js +12 -0
  59. package/legacy/DateRangePickerDay/DateRangePickerDay.js +4 -7
  60. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +12 -0
  61. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +12 -0
  62. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +2 -0
  63. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +13 -2
  64. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -2
  65. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +5 -0
  66. package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +4 -2
  67. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +5 -0
  68. package/legacy/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +4 -2
  69. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  70. package/legacy/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +4 -2
  71. package/legacy/index.js +1 -1
  72. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -40
  73. package/legacy/internal/hooks/useEnrichedRangePickerFieldProps.js +200 -0
  74. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +36 -39
  75. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +23 -15
  76. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +14 -12
  77. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +14 -12
  78. package/legacy/internal/hooks/useRangePosition.js +16 -1
  79. package/legacy/internal/models/index.js +2 -1
  80. package/legacy/internal/models/rangePickerProps.js +1 -0
  81. package/legacy/internal/utils/releaseInfo.js +1 -1
  82. package/legacy/internal/utils/valueManagers.js +22 -26
  83. package/modern/DateRangePicker/DateRangePicker.js +12 -0
  84. package/modern/DateRangePickerDay/DateRangePickerDay.js +3 -6
  85. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +12 -0
  86. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +12 -0
  87. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +2 -0
  88. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -3
  89. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +14 -3
  90. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +5 -0
  91. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +5 -3
  92. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +5 -0
  93. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +5 -3
  94. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  95. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +5 -3
  96. package/modern/index.js +1 -1
  97. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +30 -38
  98. package/modern/internal/hooks/useEnrichedRangePickerFieldProps.js +195 -0
  99. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +35 -38
  100. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +23 -15
  101. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +14 -12
  102. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +14 -12
  103. package/modern/internal/hooks/useRangePosition.js +16 -1
  104. package/modern/internal/models/index.js +2 -1
  105. package/modern/internal/models/rangePickerProps.js +1 -0
  106. package/modern/internal/utils/releaseInfo.js +1 -1
  107. package/modern/internal/utils/valueManagers.js +23 -27
  108. package/node/DateRangePicker/DateRangePicker.js +12 -0
  109. package/node/DateRangePickerDay/DateRangePickerDay.js +3 -6
  110. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +12 -0
  111. package/node/MobileDateRangePicker/MobileDateRangePicker.js +12 -0
  112. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +2 -0
  113. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +14 -3
  114. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +14 -3
  115. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +5 -0
  116. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +5 -3
  117. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +5 -0
  118. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +5 -3
  119. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +5 -0
  120. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +5 -3
  121. package/node/index.js +1 -1
  122. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +29 -37
  123. package/node/internal/hooks/useEnrichedRangePickerFieldProps.js +205 -0
  124. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +34 -37
  125. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +23 -15
  126. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +14 -12
  127. package/node/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +14 -12
  128. package/node/internal/hooks/useRangePosition.js +18 -1
  129. package/node/internal/models/index.js +11 -0
  130. package/node/internal/models/rangePickerProps.js +5 -0
  131. package/node/internal/utils/releaseInfo.js +1 -1
  132. package/node/internal/utils/valueManagers.js +22 -26
  133. package/package.json +4 -4
  134. package/internal/hooks/useRangePickerInputProps.d.ts +0 -19
  135. package/internal/hooks/useRangePickerInputProps.js +0 -89
  136. package/legacy/internal/hooks/useRangePickerInputProps.js +0 -88
  137. package/modern/internal/hooks/useRangePickerInputProps.js +0 -86
  138. package/node/internal/hooks/useRangePickerInputProps.js +0 -96
@@ -1,34 +1,15 @@
1
- import * as React from 'react';
2
- import TextField, { TextFieldProps } from '@mui/material/TextField';
3
- import Stack, { StackProps } from '@mui/material/Stack';
4
- import Typography, { TypographyProps } from '@mui/material/Typography';
5
- import { SlotComponentProps } from '@mui/base/utils';
6
- import { ExportedPickersLayoutSlotsComponent, ExportedPickersLayoutSlotsComponentsProps } from '@mui/x-date-pickers/PickersLayout/PickersLayout.types';
7
- import { DateOrTimeView, UsePickerParams, BasePickerProps, PickersModalDialogSlotsComponent, PickersModalDialogSlotsComponentsProps, ExportedBaseToolbarProps, UsePickerViewsProps, UncapitalizeObjectKeys, BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps } from '@mui/x-date-pickers/internals';
8
- import { DateRange } from '../../models';
9
- import { BaseMultiInputFieldProps } from '../../models/fields';
1
+ import { UsePickerParams, BasePickerProps, PickersModalDialogSlotsComponent, PickersModalDialogSlotsComponentsProps, ExportedBaseToolbarProps, UsePickerViewsProps, UncapitalizeObjectKeys, BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps } from '@mui/x-date-pickers/internals';
2
+ import { DateOrTimeView } from '@mui/x-date-pickers/models';
3
+ import { ExportedPickersLayoutSlotsComponent, ExportedPickersLayoutSlotsComponentsProps } from '@mui/x-date-pickers/PickersLayout';
4
+ import { DateRange, RangeFieldSection, BaseRangeNonStaticPickerProps } from '../../models';
10
5
  import { UseRangePositionProps, UseRangePositionResponse } from '../useRangePosition';
11
- export interface UseMobileRangePickerSlotsComponent<TDate, TView extends DateOrTimeView> extends PickersModalDialogSlotsComponent, ExportedPickersLayoutSlotsComponent<DateRange<TDate>, TDate, TView> {
12
- Field: React.ElementType;
13
- FieldRoot?: React.ElementType<StackProps>;
14
- FieldSeparator?: React.ElementType<TypographyProps>;
15
- /**
16
- * Form control with an input to render a date or time inside the default field.
17
- * Receives the same props as `@mui/material/TextField`.
18
- * @default TextField from '@mui/material'
19
- */
20
- TextField?: React.ElementType<TextFieldProps>;
6
+ import { RangePickerFieldSlotsComponent, RangePickerFieldSlotsComponentsProps } from '../useEnrichedRangePickerFieldProps';
7
+ export interface UseMobileRangePickerSlotsComponent<TDate, TView extends DateOrTimeView> extends PickersModalDialogSlotsComponent, ExportedPickersLayoutSlotsComponent<DateRange<TDate>, TDate, TView>, RangePickerFieldSlotsComponent {
21
8
  }
22
- export interface UseMobileRangePickerSlotsComponentsProps<TDate, TView extends DateOrTimeView> extends PickersModalDialogSlotsComponentsProps, ExportedPickersLayoutSlotsComponentsProps<DateRange<TDate>, TDate, TView> {
23
- field?: SlotComponentProps<React.ElementType<BaseMultiInputFieldProps<DateRange<TDate>, unknown>>, {}, unknown>;
24
- fieldRoot?: SlotComponentProps<typeof Stack, {}, unknown>;
25
- fieldSeparator?: SlotComponentProps<typeof Typography, {}, unknown>;
26
- textField?: SlotComponentProps<typeof TextField, {}, {
27
- position?: 'start' | 'end';
28
- } & Record<string, any>>;
9
+ export interface UseMobileRangePickerSlotsComponentsProps<TDate, TView extends DateOrTimeView> extends PickersModalDialogSlotsComponentsProps, ExportedPickersLayoutSlotsComponentsProps<DateRange<TDate>, TDate, TView>, RangePickerFieldSlotsComponentsProps<TDate> {
29
10
  toolbar?: ExportedBaseToolbarProps;
30
11
  }
31
- export interface MobileRangeOnlyPickerProps<TDate> extends BaseNonStaticPickerProps, UsePickerValueNonStaticProps<TDate | null>, UsePickerViewsNonStaticProps, UseRangePositionProps {
12
+ export interface MobileRangeOnlyPickerProps<TDate> extends BaseNonStaticPickerProps, UsePickerValueNonStaticProps<TDate | null, RangeFieldSection>, UsePickerViewsNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
32
13
  }
33
14
  export interface UseMobileRangePickerProps<TDate, TView extends DateOrTimeView, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends MobileRangeOnlyPickerProps<TDate>, BasePickerProps<DateRange<TDate>, TDate, TView, TError, TExternalProps, MobileRangePickerAdditionalViewProps> {
34
15
  /**
@@ -42,8 +23,8 @@ export interface UseMobileRangePickerProps<TDate, TView extends DateOrTimeView,
42
23
  */
43
24
  slotProps?: UseMobileRangePickerSlotsComponentsProps<TDate, TView>;
44
25
  }
45
- export interface MobileRangePickerAdditionalViewProps extends UseRangePositionResponse {
26
+ export interface MobileRangePickerAdditionalViewProps extends Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {
46
27
  }
47
- export interface UseMobileRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseMobileRangePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, TExternalProps, MobileRangePickerAdditionalViewProps>, 'valueManager' | 'validator'> {
28
+ export interface UseMobileRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseMobileRangePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, RangeFieldSection, TExternalProps, MobileRangePickerAdditionalViewProps>, 'valueManager' | 'validator'> {
48
29
  props: TExternalProps;
49
30
  }
@@ -1,4 +1,3 @@
1
- import { UseDateFieldProps } from '@mui/x-date-pickers/DateField';
2
1
  import { UseMultiInputDateRangeFieldParams } from '../../../MultiInputDateRangeField/MultiInputDateRangeField.types';
3
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
4
- export declare const useMultiInputDateRangeField: <TDate, TChildProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps: inStartTextFieldProps, endTextFieldProps: inEndTextFieldProps, startInputRef, endInputRef, }: UseMultiInputDateRangeFieldParams<TDate, TChildProps>) => UseMultiInputRangeFieldResponse<Omit<TChildProps, keyof UseDateFieldProps<TDate>>>;
3
+ export declare const useMultiInputDateRangeField: <TDate, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, startInputRef, unstableStartFieldRef, endTextFieldProps, endInputRef, unstableEndFieldRef, }: UseMultiInputDateRangeFieldParams<TDate, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TTextFieldSlotProps>;
@@ -9,10 +9,12 @@ import { validateDateRange } from '../validation/useDateRangeValidation';
9
9
  import { rangeValueManager } from '../../utils/valueManagers';
10
10
  export const useMultiInputDateRangeField = ({
11
11
  sharedProps: inSharedProps,
12
- startTextFieldProps: inStartTextFieldProps,
13
- endTextFieldProps: inEndTextFieldProps,
12
+ startTextFieldProps,
14
13
  startInputRef,
15
- endInputRef
14
+ unstableStartFieldRef,
15
+ endTextFieldProps,
16
+ endInputRef,
17
+ unstableEndFieldRef
16
18
  }) => {
17
19
  var _firstDefaultValue$cu;
18
20
  const sharedProps = useDefaultizedDateRangeFieldProps(inSharedProps);
@@ -23,7 +25,9 @@ export const useMultiInputDateRangeField = ({
23
25
  format,
24
26
  onChange,
25
27
  disabled,
26
- readOnly
28
+ readOnly,
29
+ selectedSections,
30
+ onSelectedSectionsChange
27
31
  } = sharedProps;
28
32
  const firstDefaultValue = React.useRef(defaultValue);
29
33
  const [value, setValue] = useControlled({
@@ -42,9 +46,7 @@ export const useMultiInputDateRangeField = ({
42
46
  validationError: validateDateRange({
43
47
  adapter,
44
48
  value: newDateRange,
45
- props: _extends({}, sharedProps, {
46
- value: newDateRange
47
- })
49
+ props: sharedProps
48
50
  })
49
51
  });
50
52
  onChange == null ? void 0 : onChange(newDateRange, context);
@@ -55,32 +57,38 @@ export const useMultiInputDateRangeField = ({
55
57
  const validationError = useValidation(_extends({}, sharedProps, {
56
58
  value
57
59
  }), validateDateRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
58
- const startInputProps = _extends({
60
+ const startFieldProps = _extends({
59
61
  error: !!validationError[0]
60
- }, inStartTextFieldProps, {
62
+ }, startTextFieldProps, {
61
63
  disabled,
62
64
  readOnly,
63
65
  format,
66
+ unstableFieldRef: unstableStartFieldRef,
64
67
  value: valueProp === undefined ? undefined : valueProp[0],
65
68
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
66
- onChange: handleStartDateChange
69
+ onChange: handleStartDateChange,
70
+ selectedSections,
71
+ onSelectedSectionsChange
67
72
  });
68
- const endInputProps = _extends({
73
+ const endFieldProps = _extends({
69
74
  error: !!validationError[1]
70
- }, inEndTextFieldProps, {
75
+ }, endTextFieldProps, {
71
76
  format,
72
77
  disabled,
73
78
  readOnly,
79
+ unstableFieldRef: unstableEndFieldRef,
74
80
  value: valueProp === undefined ? undefined : valueProp[1],
75
81
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
76
- onChange: handleEndDateChange
82
+ onChange: handleEndDateChange,
83
+ selectedSections,
84
+ onSelectedSectionsChange
77
85
  });
78
86
  const startDateResponse = useDateField({
79
- props: startInputProps,
87
+ props: startFieldProps,
80
88
  inputRef: startInputRef
81
89
  });
82
90
  const endDateResponse = useDateField({
83
- props: endInputProps,
91
+ props: endFieldProps,
84
92
  inputRef: endInputRef
85
93
  });
86
94
  return {
@@ -1,5 +1,4 @@
1
- import { UseDateTimeFieldProps } from '@mui/x-date-pickers/DateTimeField';
2
1
  import type { UseMultiInputDateTimeRangeFieldDefaultizedProps, UseMultiInputDateTimeRangeFieldParams, UseMultiInputDateTimeRangeFieldProps } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
3
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
4
3
  export declare const useDefaultizedDateTimeRangeFieldProps: <TDate, AdditionalProps extends {}>(props: UseMultiInputDateTimeRangeFieldProps<TDate>) => UseMultiInputDateTimeRangeFieldDefaultizedProps<TDate, AdditionalProps>;
5
- export declare const useMultiInputDateTimeRangeField: <TDate, TChildProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps: inStartTextFieldProps, endTextFieldProps: inEndTextFieldProps, startInputRef, endInputRef, }: UseMultiInputDateTimeRangeFieldParams<TDate, TChildProps>) => UseMultiInputRangeFieldResponse<Omit<TChildProps, keyof UseDateTimeFieldProps<TDate>>>;
4
+ export declare const useMultiInputDateTimeRangeField: <TDate, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, startInputRef, unstableStartFieldRef, endTextFieldProps, endInputRef, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TDate, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TTextFieldSlotProps>;
@@ -25,10 +25,12 @@ export const useDefaultizedDateTimeRangeFieldProps = props => {
25
25
  };
26
26
  export const useMultiInputDateTimeRangeField = ({
27
27
  sharedProps: inSharedProps,
28
- startTextFieldProps: inStartTextFieldProps,
29
- endTextFieldProps: inEndTextFieldProps,
28
+ startTextFieldProps,
30
29
  startInputRef,
31
- endInputRef
30
+ unstableStartFieldRef,
31
+ endTextFieldProps,
32
+ endInputRef,
33
+ unstableEndFieldRef
32
34
  }) => {
33
35
  var _firstDefaultValue$cu;
34
36
  const sharedProps = useDefaultizedDateTimeRangeFieldProps(inSharedProps);
@@ -58,9 +60,7 @@ export const useMultiInputDateTimeRangeField = ({
58
60
  validationError: validateDateTimeRange({
59
61
  adapter,
60
62
  value: newDateRange,
61
- props: _extends({}, sharedProps, {
62
- value: newDateRange
63
- })
63
+ props: sharedProps
64
64
  })
65
65
  });
66
66
  onChange == null ? void 0 : onChange(newDateRange, context);
@@ -71,32 +71,34 @@ export const useMultiInputDateTimeRangeField = ({
71
71
  const validationError = useValidation(_extends({}, sharedProps, {
72
72
  value
73
73
  }), validateDateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
74
- const startInputProps = _extends({
74
+ const startFieldProps = _extends({
75
75
  error: !!validationError[0]
76
- }, inStartTextFieldProps, {
76
+ }, startTextFieldProps, {
77
77
  format,
78
78
  disabled,
79
79
  readOnly,
80
+ unstableFieldRef: unstableStartFieldRef,
80
81
  value: valueProp === undefined ? undefined : valueProp[0],
81
82
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
82
83
  onChange: handleStartDateChange
83
84
  });
84
- const endInputProps = _extends({
85
+ const endFieldProps = _extends({
85
86
  error: !!validationError[1]
86
- }, inEndTextFieldProps, {
87
+ }, endTextFieldProps, {
87
88
  format,
88
89
  disabled,
89
90
  readOnly,
91
+ unstableFieldRef: unstableEndFieldRef,
90
92
  value: valueProp === undefined ? undefined : valueProp[1],
91
93
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
92
94
  onChange: handleEndDateChange
93
95
  });
94
96
  const startDateResponse = useDateTimeField({
95
- props: startInputProps,
97
+ props: startFieldProps,
96
98
  inputRef: startInputRef
97
99
  });
98
100
  const endDateResponse = useDateTimeField({
99
- props: endInputProps,
101
+ props: endFieldProps,
100
102
  inputRef: endInputRef
101
103
  });
102
104
  return {
@@ -1,5 +1,17 @@
1
- import { UseFieldResponse, UseFieldForwardedProps } from '@mui/x-date-pickers/internals';
2
- export interface UseMultiInputRangeFieldResponse<TForwardedProps extends UseFieldForwardedProps> {
1
+ import * as React from 'react';
2
+ import { FieldRef } from '@mui/x-date-pickers/models';
3
+ import { UseFieldResponse } from '@mui/x-date-pickers/internals';
4
+ import { RangeFieldSection } from '../../models/fields';
5
+ export interface UseMultiInputRangeFieldParams<TSharedProps extends {}, TTextFieldSlotProps extends {}> {
6
+ sharedProps: TSharedProps;
7
+ startTextFieldProps: TTextFieldSlotProps;
8
+ startInputRef?: React.Ref<HTMLInputElement>;
9
+ unstableStartFieldRef?: React.Ref<FieldRef<RangeFieldSection>>;
10
+ endTextFieldProps: TTextFieldSlotProps;
11
+ endInputRef?: React.Ref<HTMLInputElement>;
12
+ unstableEndFieldRef?: React.Ref<FieldRef<RangeFieldSection>>;
13
+ }
14
+ export interface UseMultiInputRangeFieldResponse<TForwardedProps extends {}> {
3
15
  startDate: UseFieldResponse<TForwardedProps>;
4
16
  endDate: UseFieldResponse<TForwardedProps>;
5
17
  }
@@ -1,5 +1,4 @@
1
- import { UseTimeFieldProps } from '@mui/x-date-pickers/TimeField';
2
1
  import type { UseMultiInputTimeRangeFieldDefaultizedProps, UseMultiInputTimeRangeFieldParams, UseMultiInputTimeRangeFieldProps } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
3
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
4
3
  export declare const useDefaultizedTimeRangeFieldProps: <TDate, AdditionalProps extends {}>(props: UseMultiInputTimeRangeFieldProps<TDate>) => UseMultiInputTimeRangeFieldDefaultizedProps<TDate, AdditionalProps>;
5
- export declare const useMultiInputTimeRangeField: <TDate, TChildProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps: inStartTextFieldProps, endTextFieldProps: inEndTextFieldProps, startInputRef, endInputRef, }: UseMultiInputTimeRangeFieldParams<TDate, TChildProps>) => UseMultiInputRangeFieldResponse<Omit<TChildProps, keyof UseTimeFieldProps<TDate>>>;
4
+ export declare const useMultiInputTimeRangeField: <TDate, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, startInputRef, unstableStartFieldRef, endTextFieldProps, endInputRef, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TDate, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TTextFieldSlotProps>;
@@ -19,10 +19,12 @@ export const useDefaultizedTimeRangeFieldProps = props => {
19
19
  };
20
20
  export const useMultiInputTimeRangeField = ({
21
21
  sharedProps: inSharedProps,
22
- startTextFieldProps: inStartTextFieldProps,
23
- endTextFieldProps: inEndTextFieldProps,
22
+ startTextFieldProps,
24
23
  startInputRef,
25
- endInputRef
24
+ unstableStartFieldRef,
25
+ endTextFieldProps,
26
+ endInputRef,
27
+ unstableEndFieldRef
26
28
  }) => {
27
29
  var _firstDefaultValue$cu;
28
30
  const sharedProps = useDefaultizedTimeRangeFieldProps(inSharedProps);
@@ -52,9 +54,7 @@ export const useMultiInputTimeRangeField = ({
52
54
  validationError: validateTimeRange({
53
55
  adapter,
54
56
  value: newDateRange,
55
- props: _extends({}, sharedProps, {
56
- value: newDateRange
57
- })
57
+ props: sharedProps
58
58
  })
59
59
  });
60
60
  onChange == null ? void 0 : onChange(newDateRange, context);
@@ -65,32 +65,34 @@ export const useMultiInputTimeRangeField = ({
65
65
  const validationError = useValidation(_extends({}, sharedProps, {
66
66
  value
67
67
  }), validateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
68
- const startInputProps = _extends({
68
+ const startFieldProps = _extends({
69
69
  error: !!validationError[0]
70
- }, inStartTextFieldProps, {
70
+ }, startTextFieldProps, {
71
71
  format,
72
72
  disabled,
73
73
  readOnly,
74
+ unstableFieldRef: unstableStartFieldRef,
74
75
  value: valueProp === undefined ? undefined : valueProp[0],
75
76
  defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
76
77
  onChange: handleStartDateChange
77
78
  });
78
- const endInputProps = _extends({
79
+ const endFieldProps = _extends({
79
80
  error: !!validationError[1]
80
- }, inEndTextFieldProps, {
81
+ }, endTextFieldProps, {
81
82
  format,
82
83
  disabled,
83
84
  readOnly,
85
+ unstableFieldRef: unstableEndFieldRef,
84
86
  value: valueProp === undefined ? undefined : valueProp[1],
85
87
  defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
86
88
  onChange: handleEndDateChange
87
89
  });
88
90
  const startDateResponse = useTimeField({
89
- props: startInputProps,
91
+ props: startFieldProps,
90
92
  inputRef: startInputRef
91
93
  });
92
94
  const endDateResponse = useTimeField({
93
- props: endInputProps,
95
+ props: endFieldProps,
94
96
  inputRef: endInputRef
95
97
  });
96
98
  return {
@@ -1,4 +1,7 @@
1
+ import * as React from 'react';
2
+ import { FieldRef } from '@mui/x-date-pickers/models';
1
3
  import { RangePosition } from '../models/range';
4
+ import { RangeFieldSection } from '../models/fields';
2
5
  export interface UseRangePositionProps {
3
6
  /**
4
7
  * The position in the currently edited date range.
@@ -20,5 +23,6 @@ export interface UseRangePositionProps {
20
23
  export interface UseRangePositionResponse {
21
24
  rangePosition: RangePosition;
22
25
  onRangePositionChange: (newPosition: RangePosition) => void;
26
+ singleInputFieldRef: React.MutableRefObject<FieldRef<RangeFieldSection> | undefined>;
23
27
  }
24
28
  export declare const useRangePosition: (props: UseRangePositionProps) => UseRangePositionResponse;
@@ -1,20 +1,35 @@
1
+ import * as React from 'react';
1
2
  import useControlled from '@mui/utils/useControlled';
2
3
  import useEventCallback from '@mui/utils/useEventCallback';
3
4
  export const useRangePosition = props => {
4
5
  var _props$defaultRangePo;
6
+ const singleInputFieldRef = React.useRef();
5
7
  const [rangePosition, setRangePosition] = useControlled({
6
8
  name: 'useRangePosition',
7
9
  state: 'rangePosition',
8
10
  controlled: props.rangePosition,
9
11
  default: (_props$defaultRangePo = props.defaultRangePosition) != null ? _props$defaultRangePo : 'start'
10
12
  });
13
+
14
+ // When using a single input field,
15
+ // we want to select the 1st section of the edited date when updating the range position.
16
+ const syncRangePositionWithSingleInputField = newRangePosition => {
17
+ if (singleInputFieldRef.current == null) {
18
+ return;
19
+ }
20
+ const sections = singleInputFieldRef.current.getSections();
21
+ const targetActiveSectionIndex = newRangePosition === 'start' ? 0 : sections.length / 2;
22
+ singleInputFieldRef.current.setSelectedSections(targetActiveSectionIndex);
23
+ };
11
24
  const handleRangePositionChange = useEventCallback(newRangePosition => {
12
25
  var _props$onRangePositio;
13
26
  setRangePosition(newRangePosition);
14
27
  (_props$onRangePositio = props.onRangePositionChange) == null ? void 0 : _props$onRangePositio.call(props, newRangePosition);
28
+ syncRangePositionWithSingleInputField(newRangePosition);
15
29
  });
16
30
  return {
17
31
  rangePosition,
18
- onRangePositionChange: handleRangePositionChange
32
+ onRangePositionChange: handleRangePositionChange,
33
+ singleInputFieldRef
19
34
  };
20
35
  };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { DateOrTimeView } from '@mui/x-date-pickers/internals';
2
+ import { DateOrTimeView } from '@mui/x-date-pickers/models';
3
3
  import { UseStaticRangePickerParams, UseStaticRangePickerProps } from './useStaticRangePicker.types';
4
4
  /**
5
5
  * Hook managing all the range static pickers:
@@ -1,8 +1,10 @@
1
1
  import * as React from 'react';
2
- import { ExportedPickersLayoutSlotsComponent, ExportedPickersLayoutSlotsComponentsProps } from '@mui/x-date-pickers/PickersLayout/PickersLayout.types';
3
- import { DateOrTimeView, BasePickerProps, UsePickerParams, ExportedBaseToolbarProps, StaticOnlyPickerProps, UncapitalizeObjectKeys } from '@mui/x-date-pickers/internals';
2
+ import { BasePickerProps, UsePickerParams, ExportedBaseToolbarProps, StaticOnlyPickerProps, UncapitalizeObjectKeys } from '@mui/x-date-pickers/internals';
3
+ import { ExportedPickersLayoutSlotsComponent, ExportedPickersLayoutSlotsComponentsProps } from '@mui/x-date-pickers/PickersLayout';
4
+ import { DateOrTimeView } from '@mui/x-date-pickers/models';
4
5
  import { DateRange } from '../../models/range';
5
6
  import { UseRangePositionProps } from '../useRangePosition';
7
+ import { RangeFieldSection } from '../../models/fields';
6
8
  export interface UseStaticRangePickerSlotsComponent<TDate, TView extends DateOrTimeView> extends ExportedPickersLayoutSlotsComponent<DateRange<TDate>, TDate, TView> {
7
9
  }
8
10
  export interface UseStaticRangePickerSlotsComponentsProps<TDate, TView extends DateOrTimeView> extends ExportedPickersLayoutSlotsComponentsProps<DateRange<TDate>, TDate, TView> {
@@ -22,7 +24,7 @@ export interface UseStaticRangePickerProps<TDate, TView extends DateOrTimeView,
22
24
  */
23
25
  slotProps?: UseStaticRangePickerSlotsComponentsProps<TDate, TView>;
24
26
  }
25
- export interface UseStaticRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, TExternalProps, {}>, 'valueManager' | 'validator'> {
27
+ export interface UseStaticRangePickerParams<TDate, TView extends DateOrTimeView, TExternalProps extends UseStaticRangePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<DateRange<TDate>, TDate, TView, RangeFieldSection, TExternalProps, {}>, 'valueManager' | 'validator'> {
26
28
  props: TExternalProps;
27
29
  /**
28
30
  * Ref to pass to the root element
@@ -1,4 +1,5 @@
1
- import { Validator, DateValidationError, BaseDateValidationProps } from '@mui/x-date-pickers/internals';
1
+ import { Validator, BaseDateValidationProps } from '@mui/x-date-pickers/internals';
2
+ import { DateValidationError } from '@mui/x-date-pickers/models';
2
3
  import { DateRange, DayRangeValidationProps } from '../../models';
3
4
  export interface DateRangeComponentValidationProps<TDate> extends DayRangeValidationProps<TDate>, Required<BaseDateValidationProps<TDate>> {
4
5
  }
@@ -1,4 +1,5 @@
1
- import { Validator, DateTimeValidationError, BaseDateValidationProps, TimeValidationProps, ValidationProps } from '@mui/x-date-pickers/internals';
1
+ import { Validator, BaseDateValidationProps, TimeValidationProps, ValidationProps } from '@mui/x-date-pickers/internals';
2
+ import { DateTimeValidationError } from '@mui/x-date-pickers/models';
2
3
  import { DayRangeValidationProps } from '../../models/dateRange';
3
4
  import { DateRange } from '../../models/range';
4
5
  export interface DateTimeRangeComponentValidationProps<TDate> extends DayRangeValidationProps<TDate>, TimeValidationProps<TDate>, Required<BaseDateValidationProps<TDate>> {
@@ -1,4 +1,5 @@
1
- import { Validator, TimeValidationError, BaseTimeValidationProps, ValidationProps } from '@mui/x-date-pickers/internals';
1
+ import { Validator, BaseTimeValidationProps, ValidationProps } from '@mui/x-date-pickers/internals';
2
+ import { TimeValidationError } from '@mui/x-date-pickers/models';
2
3
  import { DateRange } from '../../models/range';
3
4
  export interface TimeRangeComponentValidationProps extends Required<BaseTimeValidationProps> {
4
5
  }
@@ -1,6 +1,7 @@
1
1
  import { BaseDateValidationProps, DefaultizedProps, MakeOptional, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
2
2
  import { DateRange } from './range';
3
3
  import type { DateRangeValidationError } from '../hooks/validation/useDateRangeValidation';
4
+ import { RangeFieldSection } from './fields';
4
5
  /**
5
6
  * Props used to validate a day value in range pickers.
6
7
  */
@@ -24,6 +25,6 @@ export interface BaseRangeProps {
24
25
  */
25
26
  disabled?: boolean;
26
27
  }
27
- export interface UseDateRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, DateRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, BaseDateValidationProps<TDate>, BaseRangeProps {
28
+ export interface UseDateRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, RangeFieldSection, DateRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, BaseDateValidationProps<TDate>, BaseRangeProps {
28
29
  }
29
30
  export type UseDateRangeFieldDefaultizedProps<TDate> = DefaultizedProps<UseDateRangeFieldProps<TDate>, keyof BaseDateValidationProps<TDate> | 'format'>;
@@ -2,7 +2,8 @@ import { BaseDateValidationProps, TimeValidationProps, DefaultizedProps, MakeOpt
2
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>, BaseRangeProps {
5
+ import { RangeFieldSection } from './fields';
6
+ export interface UseDateTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, RangeFieldSection, DateTimeRangeValidationError>, 'format'>, DayRangeValidationProps<TDate>, TimeValidationProps<TDate>, BaseDateValidationProps<TDate>, BaseRangeProps {
6
7
  /**
7
8
  * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.
8
9
  */
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/base/utils';
3
- import { BaseFieldProps, FieldSection } from '@mui/x-date-pickers/internals';
3
+ import { BaseFieldProps } from '@mui/x-date-pickers/internals';
4
+ import { FieldSection } from '@mui/x-date-pickers/models';
4
5
  export interface RangeFieldSection extends FieldSection {
5
6
  dateName: 'start' | 'end';
6
7
  }
@@ -27,8 +28,12 @@ export interface MultiInputFieldSlotRootProps {
27
28
  * Props the multi input field can receive when used inside a picker.
28
29
  * Only contains what the MUI component are passing to the field, not what users can pass using the `props.slotProps.field`.
29
30
  */
30
- export interface BaseMultiInputFieldProps<TValue, TError> extends BaseFieldProps<TValue, TError> {
31
- slots?: {};
31
+ export interface BaseMultiInputFieldProps<TValue, TSection extends FieldSection, TError> extends BaseFieldProps<TValue, TSection, TError> {
32
+ slots?: {
33
+ root?: React.ElementType;
34
+ separator?: React.ElementType;
35
+ textField?: React.ElementType;
36
+ };
32
37
  slotProps?: {
33
38
  root?: SlotComponentProps<React.ElementType<MultiInputFieldSlotRootProps>, {}, Record<string, any>>;
34
39
  textField?: SlotComponentProps<React.ElementType<MultiInputFieldSlotTextFieldProps>, {}, {
@@ -3,3 +3,4 @@ export * from './range';
3
3
  export * from './dateTimeRange';
4
4
  export * from './timeRange';
5
5
  export * from './fields';
6
+ export * from './rangePickerProps';
@@ -2,4 +2,5 @@ export * from './dateRange';
2
2
  export * from './range';
3
3
  export * from './dateTimeRange';
4
4
  export * from './timeRange';
5
- export * from './fields';
5
+ export * from './fields';
6
+ export * from './rangePickerProps';
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Props common to all range non-static pickers.
4
+ * These props are handled by the headless wrappers.
5
+ */
6
+ export interface BaseRangeNonStaticPickerProps {
7
+ /**
8
+ * The label content.
9
+ * Ignored if the field has several inputs.
10
+ */
11
+ label?: React.ReactNode;
12
+ /**
13
+ * Pass a ref to the `input` element.
14
+ * Ignored if the field has several inputs.
15
+ */
16
+ inputRef?: React.Ref<HTMLInputElement>;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -2,7 +2,8 @@ import { BaseTimeValidationProps, TimeValidationProps, DefaultizedProps, MakeOpt
2
2
  import { DateRange } from './range';
3
3
  import { TimeRangeValidationError } from '../hooks/validation/useTimeRangeValidation';
4
4
  import { BaseRangeProps } from './dateRange';
5
- export interface UseTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, TimeRangeValidationError>, 'format'>, TimeValidationProps<TDate>, BaseTimeValidationProps, BaseRangeProps {
5
+ import { RangeFieldSection } from './fields';
6
+ export interface UseTimeRangeFieldProps<TDate> extends MakeOptional<UseFieldInternalProps<DateRange<TDate>, RangeFieldSection, TimeRangeValidationError>, 'format'>, TimeValidationProps<TDate>, BaseTimeValidationProps, BaseRangeProps {
6
7
  /**
7
8
  * 12h/24h view for hour selection clock.
8
9
  * @default `utils.is12HourCycleInCurrentLocale()`
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTY3ODkxNzYwMDAwMA==";
3
+ const releaseInfo = "MTY4MDEyNzIwMDAwMA==";
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