@mui/x-date-pickers-pro 8.0.0-alpha.7 → 8.0.0-alpha.9

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 (199) hide show
  1. package/CHANGELOG.md +551 -3
  2. package/DateRangeCalendar/DateRangeCalendar.js +4 -4
  3. package/DateRangePicker/DateRangePickerToolbar.js +3 -3
  4. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  5. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  6. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  7. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +9 -4
  8. package/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
  9. package/MultiInputDateRangeField/index.d.ts +5 -3
  10. package/MultiInputDateRangeField/index.js +2 -2
  11. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.d.ts +6 -0
  12. package/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  13. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +9 -4
  14. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +12 -116
  15. package/MultiInputDateTimeRangeField/index.d.ts +5 -3
  16. package/MultiInputDateTimeRangeField/index.js +2 -2
  17. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.d.ts +6 -0
  18. package/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  19. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +9 -4
  20. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -117
  21. package/MultiInputTimeRangeField/index.d.ts +5 -3
  22. package/MultiInputTimeRangeField/index.js +2 -2
  23. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.d.ts +6 -0
  24. package/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  25. package/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
  26. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +6 -17
  27. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  28. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  29. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
  30. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +6 -18
  31. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  32. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  33. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
  34. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +6 -18
  35. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  36. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  37. package/hooks/index.d.ts +1 -0
  38. package/hooks/index.js +2 -1
  39. package/hooks/useMultiInputRangeField/index.d.ts +1 -0
  40. package/hooks/useMultiInputRangeField/index.js +1 -0
  41. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +53 -0
  42. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  43. package/{internals/hooks/useMultiInputFieldSelectedSections.d.ts → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts} +3 -4
  44. package/{modern/internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  45. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +17 -0
  46. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  47. package/index.js +1 -1
  48. package/internals/hooks/models/index.d.ts +1 -1
  49. package/internals/hooks/models/useRangePicker.d.ts +4 -6
  50. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -42
  51. package/internals/hooks/{useEnrichedRangePickerFieldProps.d.ts → useEnrichedRangePickerField.d.ts} +15 -6
  52. package/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
  53. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +23 -32
  54. package/internals/hooks/useRangePosition.d.ts +1 -1
  55. package/internals/hooks/useRangePosition.js +1 -1
  56. package/internals/models/dateTimeRange.d.ts +1 -6
  57. package/internals/models/fields.d.ts +1 -2
  58. package/internals/models/index.d.ts +0 -1
  59. package/internals/models/index.js +0 -1
  60. package/internals/models/managers.d.ts +3 -0
  61. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.d.ts +3 -0
  62. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +133 -0
  63. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +72 -0
  64. package/internals/utils/createMultiInputRangeField/index.d.ts +3 -0
  65. package/internals/utils/createMultiInputRangeField/index.js +2 -0
  66. package/internals/utils/releaseInfo.js +1 -1
  67. package/managers/index.d.ts +3 -3
  68. package/managers/useDateRangeManager.d.ts +1 -1
  69. package/managers/useDateRangeManager.js +3 -1
  70. package/managers/useDateTimeRangeManager.d.ts +1 -1
  71. package/managers/useDateTimeRangeManager.js +3 -1
  72. package/managers/useTimeRangeManager.d.ts +1 -1
  73. package/managers/useTimeRangeManager.js +3 -1
  74. package/models/fields.d.ts +1 -2
  75. package/models/index.d.ts +0 -2
  76. package/models/index.js +0 -2
  77. package/modern/DateRangeCalendar/DateRangeCalendar.js +4 -4
  78. package/modern/DateRangePicker/DateRangePickerToolbar.js +3 -3
  79. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  80. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  81. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  82. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +12 -116
  83. package/modern/MultiInputDateRangeField/index.js +2 -2
  84. package/modern/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +4 -0
  85. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +12 -116
  86. package/modern/MultiInputDateTimeRangeField/index.js +2 -2
  87. package/modern/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +4 -0
  88. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +13 -117
  89. package/modern/MultiInputTimeRangeField/index.js +2 -2
  90. package/modern/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +4 -0
  91. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +20 -30
  92. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  93. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +20 -30
  94. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  95. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +20 -30
  96. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  97. package/modern/hooks/index.js +2 -1
  98. package/modern/hooks/useMultiInputRangeField/index.js +1 -0
  99. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +149 -0
  100. package/{internals/hooks/useMultiInputFieldSelectedSections.js → modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +10 -8
  101. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +59 -0
  102. package/modern/index.js +1 -1
  103. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +32 -42
  104. package/modern/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +39 -52
  105. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +23 -32
  106. package/modern/internals/hooks/useRangePosition.js +1 -1
  107. package/modern/internals/models/index.js +0 -1
  108. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +133 -0
  109. package/modern/internals/utils/createMultiInputRangeField/index.js +2 -0
  110. package/modern/internals/utils/releaseInfo.js +1 -1
  111. package/modern/managers/useDateRangeManager.js +3 -1
  112. package/modern/managers/useDateTimeRangeManager.js +3 -1
  113. package/modern/managers/useTimeRangeManager.js +3 -1
  114. package/modern/models/index.js +0 -2
  115. package/node/DateRangeCalendar/DateRangeCalendar.js +4 -4
  116. package/node/DateRangePicker/DateRangePickerToolbar.js +3 -3
  117. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +3 -3
  118. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +2 -2
  119. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +7 -7
  120. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +11 -119
  121. package/node/MultiInputDateRangeField/index.js +3 -9
  122. package/node/MultiInputDateRangeField/multiInputDateRangeFieldClasses.js +12 -0
  123. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +11 -119
  124. package/node/MultiInputDateTimeRangeField/index.js +3 -9
  125. package/node/MultiInputDateTimeRangeField/multiInputDateTimeRangeFieldClasses.js +12 -0
  126. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +12 -120
  127. package/node/MultiInputTimeRangeField/index.js +3 -9
  128. package/node/MultiInputTimeRangeField/multiInputTimeRangeFieldClasses.js +12 -0
  129. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +19 -29
  130. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +2 -1
  131. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +19 -29
  132. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +2 -1
  133. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +19 -29
  134. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +2 -1
  135. package/node/hooks/index.js +8 -1
  136. package/node/hooks/useMultiInputRangeField/index.js +12 -0
  137. package/node/hooks/useMultiInputRangeField/useMultiInputRangeField.js +155 -0
  138. package/node/{internals/hooks/useMultiInputFieldSelectedSections.js → hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js} +11 -10
  139. package/node/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +66 -0
  140. package/node/index.js +1 -1
  141. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +31 -41
  142. package/node/internals/hooks/{useEnrichedRangePickerFieldProps.js → useEnrichedRangePickerField.js} +41 -54
  143. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +22 -31
  144. package/node/internals/hooks/useRangePosition.js +1 -1
  145. package/node/internals/models/index.js +0 -11
  146. package/node/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +140 -0
  147. package/node/internals/utils/createMultiInputRangeField/index.js +19 -0
  148. package/node/internals/utils/releaseInfo.js +1 -1
  149. package/node/managers/useDateRangeManager.js +3 -1
  150. package/node/managers/useDateTimeRangeManager.js +3 -1
  151. package/node/managers/useTimeRangeManager.js +3 -1
  152. package/node/models/index.js +0 -22
  153. package/package.json +4 -4
  154. package/themeAugmentation/overrides.d.ts +6 -4
  155. package/themeAugmentation/props.d.ts +2 -2
  156. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +0 -55
  157. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +0 -56
  158. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +0 -56
  159. package/internals/hooks/useMultiInputRangeField/shared.d.ts +0 -1
  160. package/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  161. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +0 -3
  162. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -118
  163. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +0 -3
  164. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -118
  165. package/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +0 -11
  166. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +0 -3
  167. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -118
  168. package/internals/models/timeRange.d.ts +0 -6
  169. package/internals/models/timeRange.js +0 -1
  170. package/models/dateRange.d.ts +0 -7
  171. package/models/dateRange.js +0 -1
  172. package/models/multiInputRangeFieldClasses.d.ts +0 -7
  173. package/models/multiInputRangeFieldClasses.js +0 -1
  174. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.types.js +0 -1
  175. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js +0 -1
  176. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -1
  177. package/modern/internals/hooks/useMultiInputRangeField/shared.js +0 -9
  178. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -118
  179. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -118
  180. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -1
  181. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -118
  182. package/modern/internals/models/timeRange.js +0 -1
  183. package/modern/models/dateRange.js +0 -1
  184. package/modern/models/multiInputRangeFieldClasses.js +0 -1
  185. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.types.js +0 -5
  186. package/node/internals/hooks/useMultiInputRangeField/shared.js +0 -16
  187. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +0 -126
  188. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +0 -126
  189. package/node/internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js +0 -5
  190. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +0 -126
  191. package/node/internals/models/timeRange.js +0 -5
  192. package/node/models/dateRange.js +0 -5
  193. package/node/models/multiInputRangeFieldClasses.js +0 -5
  194. /package/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  195. /package/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  196. /package/{MultiInputTimeRangeField/MultiInputTimeRangeField.types.js → modern/internals/models/managers.js} +0 -0
  197. /package/{internals/hooks/useMultiInputRangeField/useMultiInputRangeField.types.js → modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
  198. /package/node/{MultiInputDateRangeField/MultiInputDateRangeField.types.js → internals/models/managers.js} +0 -0
  199. /package/node/{MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.js → internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.js} +0 -0
@@ -0,0 +1,149 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import useEventCallback from '@mui/utils/useEventCallback';
5
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
6
+ import { useValidation } from '@mui/x-date-pickers/validation';
7
+ import { useMultiInputRangeFieldTextFieldProps } from "./useMultiInputRangeFieldTextFieldProps.js";
8
+ import { useMultiInputRangeFieldSelectedSections } from "./useMultiInputRangeFieldSelectedSections.js";
9
+ /**
10
+ * Basic example:
11
+ *
12
+ * ```tsx
13
+ * import Box from '@mui/material/Box';
14
+ * import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
15
+ * import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
16
+ * import { useDateRangeManager } from '@mui/x-date-pickers-pro/managers';
17
+ *
18
+ * function MultiInputField(props) {
19
+ * const manager = useDateRangeManager();
20
+ * const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
21
+ * const { startDate, endDate } = useMultiInputRangeField({
22
+ * manager,
23
+ * internalProps,
24
+ * startForwardedProps: forwardedProps,
25
+ * endForwardedProps: forwardedProps,
26
+ * });
27
+ *
28
+ * return (
29
+ * <Box {...forwardedProps}>
30
+ * <PickersTextField {...startDate} />
31
+ * <span>{' – '}</span>
32
+ * <PickersTextField {...endDate} />
33
+ * </Box>
34
+ * );
35
+ * }
36
+ * ```
37
+ *
38
+ * @param {UseMultiInputRangeFieldParameters<TManager, TForwardedProps>} parameters The parameters of the hook.
39
+ * @param {TManager} parameters.manager The manager of the field.
40
+ * @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
41
+ * @param {TForwardedProps} parameters.startForwardedProps The forwarded props of the start field.
42
+ * @param {TForwardedProps} parameters.endForwardedProps The forwarded props of the end field.
43
+ * @returns {UseMultiInputRangeFieldReturnValue<TManager, TForwardedProps>} The props to pass to the start and the end components.
44
+ */
45
+ export function useMultiInputRangeField(parameters) {
46
+ const {
47
+ manager,
48
+ internalProps,
49
+ startForwardedProps,
50
+ endForwardedProps
51
+ } = parameters;
52
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
53
+ manager,
54
+ internalProps
55
+ });
56
+ const {
57
+ value: valueProp,
58
+ defaultValue,
59
+ format,
60
+ formatDensity,
61
+ shouldRespectLeadingZeros,
62
+ onChange,
63
+ disabled,
64
+ readOnly,
65
+ selectedSections,
66
+ onSelectedSectionsChange,
67
+ timezone: timezoneProp,
68
+ enableAccessibleFieldDOMStructure,
69
+ autoFocus,
70
+ referenceDate,
71
+ unstableStartFieldRef,
72
+ unstableEndFieldRef
73
+ } = internalPropsWithDefaults;
74
+ const {
75
+ value,
76
+ handleValueChange,
77
+ timezone
78
+ } = useControlledValueWithTimezone({
79
+ name: 'useMultiInputRangeField',
80
+ timezone: timezoneProp,
81
+ value: valueProp,
82
+ defaultValue,
83
+ referenceDate,
84
+ onChange,
85
+ valueManager: manager.internal_valueManager
86
+ });
87
+ const {
88
+ validationError,
89
+ getValidationErrorForNewValue
90
+ } = useValidation({
91
+ props: internalPropsWithDefaults,
92
+ value,
93
+ timezone,
94
+ validator: manager.validator,
95
+ onError: internalPropsWithDefaults.onError
96
+ });
97
+ const buildChangeHandler = index => {
98
+ return (newSingleValue, rawContext) => {
99
+ const newRange = index === 0 ? [newSingleValue, value[1]] : [value[0], newSingleValue];
100
+ const context = _extends({}, rawContext, {
101
+ validationError: getValidationErrorForNewValue(newRange)
102
+ });
103
+ handleValueChange(newRange, context);
104
+ };
105
+ };
106
+ const handleStartDateChange = useEventCallback(buildChangeHandler(0));
107
+ const handleEndDateChange = useEventCallback(buildChangeHandler(1));
108
+ const selectedSectionsResponse = useMultiInputRangeFieldSelectedSections({
109
+ selectedSections,
110
+ onSelectedSectionsChange,
111
+ unstableStartFieldRef,
112
+ unstableEndFieldRef
113
+ });
114
+ const sharedProps = {
115
+ disabled,
116
+ readOnly,
117
+ timezone,
118
+ format,
119
+ formatDensity,
120
+ shouldRespectLeadingZeros,
121
+ enableAccessibleFieldDOMStructure
122
+ };
123
+ const startDateProps = useMultiInputRangeFieldTextFieldProps({
124
+ valueType: manager.valueType,
125
+ fieldProps: _extends({
126
+ error: !!validationError[0]
127
+ }, startForwardedProps, selectedSectionsResponse.start, sharedProps, {
128
+ value: valueProp === undefined ? undefined : valueProp[0],
129
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
130
+ onChange: handleStartDateChange,
131
+ autoFocus // Do not add on end field.
132
+ })
133
+ });
134
+ const endDateProps = useMultiInputRangeFieldTextFieldProps({
135
+ valueType: manager.valueType,
136
+ fieldProps: _extends({
137
+ error: !!validationError[1]
138
+ }, endForwardedProps, selectedSectionsResponse.end, sharedProps, {
139
+ value: valueProp === undefined ? undefined : valueProp[1],
140
+ defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
141
+ onChange: handleEndDateChange
142
+ })
143
+ });
144
+ return {
145
+ startDate: startDateProps,
146
+ endDate: endDateProps,
147
+ enableAccessibleFieldDOMStructure
148
+ };
149
+ }
@@ -1,9 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { PickerRangeValue, PickerValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
3
3
  import { FieldRef, FieldSelectedSections } from '@mui/x-date-pickers/models';
4
- interface UseMultiInputFieldSelectedSectionsParams extends Pick<UseFieldInternalProps<PickerRangeValue, any, any>, 'selectedSections' | 'onSelectedSectionsChange'> {
5
- unstableStartFieldRef?: React.Ref<FieldRef<PickerValue>>;
6
- unstableEndFieldRef?: React.Ref<FieldRef<PickerValue>>;
4
+ import { MultiInputFieldRefs } from '../../models';
5
+ interface UseMultiInputRangeFieldSelectedSectionsParameters extends Pick<UseFieldInternalProps<PickerRangeValue, any, any>, 'selectedSections' | 'onSelectedSectionsChange'>, MultiInputFieldRefs {
7
6
  }
8
7
  interface UseMultiInputFieldSelectedSectionsResponseItem {
9
8
  unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
@@ -14,5 +13,5 @@ interface UseMultiInputFieldSelectedSectionsResponse {
14
13
  start: UseMultiInputFieldSelectedSectionsResponseItem;
15
14
  end: UseMultiInputFieldSelectedSectionsResponseItem;
16
15
  }
17
- export declare const useMultiInputFieldSelectedSections: (params: UseMultiInputFieldSelectedSectionsParams) => UseMultiInputFieldSelectedSectionsResponse;
16
+ export declare const useMultiInputRangeFieldSelectedSections: (parameters: UseMultiInputRangeFieldSelectedSectionsParameters) => UseMultiInputFieldSelectedSectionsResponse;
18
17
  export {};
@@ -1,10 +1,12 @@
1
+ 'use client';
2
+
1
3
  import * as React from 'react';
2
4
  import useForkRef from '@mui/utils/useForkRef';
3
5
  import useEventCallback from '@mui/utils/useEventCallback';
4
- export const useMultiInputFieldSelectedSections = params => {
6
+ export const useMultiInputRangeFieldSelectedSections = parameters => {
5
7
  const unstableEndFieldRef = React.useRef(null);
6
- const handleUnstableEndFieldRef = useForkRef(params.unstableEndFieldRef, unstableEndFieldRef);
7
- const [startSelectedSection, setStartSelectedSection] = React.useState(params.selectedSections ?? null);
8
+ const handleUnstableEndFieldRef = useForkRef(parameters.unstableEndFieldRef, unstableEndFieldRef);
9
+ const [startSelectedSection, setStartSelectedSection] = React.useState(parameters.selectedSections ?? null);
8
10
  const [endSelectedSection, setEndSelectedSection] = React.useState(null);
9
11
  const getActiveField = () => {
10
12
  if (unstableEndFieldRef.current && unstableEndFieldRef.current.isFieldFocused()) {
@@ -15,25 +17,25 @@ export const useMultiInputFieldSelectedSections = params => {
15
17
  const handleStartSelectedSectionChange = useEventCallback(newSelectedSections => {
16
18
  setStartSelectedSection(newSelectedSections);
17
19
  if (getActiveField() === 'start') {
18
- params.onSelectedSectionsChange?.(newSelectedSections);
20
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
19
21
  }
20
22
  });
21
23
  const handleEndSelectedSectionChange = useEventCallback(newSelectedSections => {
22
24
  setEndSelectedSection(newSelectedSections);
23
25
  if (getActiveField() === 'end') {
24
- params.onSelectedSectionsChange?.(newSelectedSections);
26
+ parameters.onSelectedSectionsChange?.(newSelectedSections);
25
27
  }
26
28
  });
27
29
  const activeField = getActiveField();
28
30
  return {
29
31
  start: {
30
- unstableFieldRef: params.unstableStartFieldRef,
31
- selectedSections: activeField === 'start' && params.selectedSections !== undefined ? params.selectedSections : startSelectedSection,
32
+ unstableFieldRef: parameters.unstableStartFieldRef,
33
+ selectedSections: activeField === 'start' && parameters.selectedSections !== undefined ? parameters.selectedSections : startSelectedSection,
32
34
  onSelectedSectionsChange: handleStartSelectedSectionChange
33
35
  },
34
36
  end: {
35
37
  unstableFieldRef: handleUnstableEndFieldRef,
36
- selectedSections: activeField === 'end' && params.selectedSections !== undefined ? params.selectedSections : endSelectedSection,
38
+ selectedSections: activeField === 'end' && parameters.selectedSections !== undefined ? parameters.selectedSections : endSelectedSection,
37
39
  onSelectedSectionsChange: handleEndSelectedSectionChange
38
40
  }
39
41
  };
@@ -0,0 +1,17 @@
1
+ import { UseDateManagerReturnValue, UseDateTimeManagerReturnValue, UseTimeManagerReturnValue } from '@mui/x-date-pickers/managers';
2
+ import { PickerValueType } from '@mui/x-date-pickers/models';
3
+ import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps, UseFieldResponse } from '@mui/x-date-pickers/internals';
4
+ import { PickerAnyRangeManager } from '../../internals/models/managers';
5
+ import { UseDateRangeManagerReturnValue, UseDateTimeRangeManagerReturnValue, UseTimeRangeManagerReturnValue } from '../../managers';
6
+ /**
7
+ * @ignore - internal hook.
8
+ */
9
+ export declare function useMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager, TForwardedProps extends {
10
+ [key: string]: any;
11
+ }>(parameters: UseMultiInputRangeFieldTextFieldProps<TManager>): Omit<UseFieldResponse<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TForwardedProps>, "clearable" | "onClear">;
12
+ interface UseMultiInputRangeFieldTextFieldProps<TManager extends PickerAnyRangeManager> {
13
+ valueType: PickerValueType;
14
+ fieldProps: PickerManagerFieldInternalProps<GetDerivedManager<TManager>>;
15
+ }
16
+ type GetDerivedManager<TManager extends PickerAnyRangeManager> = TManager extends UseDateRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : TManager extends UseDateTimeRangeManagerReturnValue<infer TEnableAccessibleFieldDOMStructure> ? UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure> : never;
17
+ export {};
@@ -0,0 +1,59 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ const _excluded = ["clearable", "onClear"];
3
+ import { useDateManager, useDateTimeManager, useTimeManager } from '@mui/x-date-pickers/managers';
4
+ import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
5
+ import { useField, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
6
+ /**
7
+ * @ignore - internal hook.
8
+ */
9
+ export function useMultiInputRangeFieldTextFieldProps(parameters) {
10
+ const {
11
+ fieldProps,
12
+ valueType
13
+ } = parameters;
14
+ let useManager;
15
+ switch (valueType) {
16
+ case 'date':
17
+ {
18
+ useManager = useDateManager;
19
+ break;
20
+ }
21
+ case 'time':
22
+ {
23
+ useManager = useTimeManager;
24
+ break;
25
+ }
26
+ case 'date-time':
27
+ {
28
+ useManager = useDateTimeManager;
29
+ break;
30
+ }
31
+ default:
32
+ {
33
+ throw new Error(`Unknown valueType: ${valueType}`);
34
+ }
35
+ }
36
+ const manager = useManager({
37
+ enableAccessibleFieldDOMStructure: fieldProps.enableAccessibleFieldDOMStructure
38
+ });
39
+ const {
40
+ forwardedProps,
41
+ internalProps
42
+ } = useSplitFieldProps(fieldProps, 'date');
43
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
44
+ manager,
45
+ internalProps
46
+ });
47
+ const _ref = useField({
48
+ forwardedProps,
49
+ internalProps: internalPropsWithDefaults,
50
+ valueManager: manager.internal_valueManager,
51
+ fieldValueManager: manager.internal_fieldValueManager,
52
+ validator: manager.validator,
53
+ valueType: manager.valueType,
54
+ // TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
55
+ getOpenPickerButtonAriaLabel: () => ''
56
+ }),
57
+ fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);
58
+ return fieldResponse;
59
+ }
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.7
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.9
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -1 +1 @@
1
- export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerProps, UseRangePickerParams, } from './useRangePicker';
1
+ export type { UseRangePickerSlots, UseRangePickerSlotProps, RangeOnlyPickerProps, UseRangePickerProps, UseRangePickerParams, } from './useRangePicker';
@@ -1,20 +1,18 @@
1
- import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
1
+ import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
2
2
  import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
3
3
  import { BaseRangeNonStaticPickerProps } from '../../models';
4
- import { UseRangePositionProps, UseRangePositionResponse } from '../useRangePosition';
5
- import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerFieldProps';
4
+ import { UseRangePositionProps } from '../useRangePosition';
5
+ import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerField';
6
6
  export interface UseRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue>, RangePickerFieldSlots {
7
7
  }
8
8
  export interface UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedPickersLayoutSlotProps<PickerRangeValue>, RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> {
9
9
  tabs?: ExportedBaseTabsProps;
10
10
  toolbar?: ExportedBaseToolbarProps;
11
11
  }
12
- export interface RangeOnlyPickerProps extends BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
12
+ export interface RangeOnlyPickerProps extends UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
13
13
  }
14
14
  export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {
15
15
  }
16
- export interface RangePickerAdditionalViewProps extends Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {
17
- }
18
16
  export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
19
17
  props: TExternalProps;
20
18
  }
@@ -5,8 +5,8 @@ import * as React from 'react';
5
5
  import useSlotProps from '@mui/utils/useSlotProps';
6
6
  import { useLicenseVerifier } from '@mui/x-license';
7
7
  import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
8
- import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickersPopper, PickerProvider } from '@mui/x-date-pickers/internals';
9
- import { useEnrichedRangePickerFieldProps } from "../useEnrichedRangePickerFieldProps.js";
8
+ import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickersPopper, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
9
+ import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
10
10
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
11
11
  import { useRangePosition } from "../useRangePosition.js";
12
12
  import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
@@ -23,24 +23,16 @@ export const useDesktopRangePicker = _ref => {
23
23
  slotProps,
24
24
  className,
25
25
  sx,
26
- format,
27
- formatDensity,
28
- enableAccessibleFieldDOMStructure,
29
- selectedSections,
30
- onSelectedSectionsChange,
31
- timezone,
32
26
  label,
33
27
  inputRef,
34
28
  name,
35
29
  readOnly,
36
- disabled,
37
30
  autoFocus,
38
31
  disableOpenPicker,
39
32
  localeText,
40
33
  reduceAnimations
41
34
  } = props;
42
35
  const fieldContainerRef = React.useRef(null);
43
- const anchorRef = React.useRef(null);
44
36
  const popperRef = React.useRef(null);
45
37
  const startFieldRef = React.useRef(null);
46
38
  const endFieldRef = React.useRef(null);
@@ -60,7 +52,6 @@ export const useDesktopRangePicker = _ref => {
60
52
  providerProps,
61
53
  renderCurrentView,
62
54
  shouldRestoreFocus,
63
- fieldProps: pickerFieldProps,
64
55
  ownerState
65
56
  } = usePicker(_extends({}, pickerParams, {
66
57
  props,
@@ -69,6 +60,9 @@ export const useDesktopRangePicker = _ref => {
69
60
  fieldRef,
70
61
  localeText
71
62
  }));
63
+
64
+ // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
65
+ providerProps.contextValue.triggerStatus = 'hidden';
72
66
  React.useEffect(() => {
73
67
  if (providerProps.contextValue.view) {
74
68
  initialView.current = providerProps.contextValue.view;
@@ -92,17 +86,7 @@ export const useDesktopRangePicker = _ref => {
92
86
  additionalProps: _extends({
93
87
  // Internal props
94
88
  readOnly,
95
- disabled,
96
- format,
97
- formatDensity,
98
- enableAccessibleFieldDOMStructure,
99
- selectedSections,
100
- onSelectedSectionsChange,
101
- timezone,
102
- autoFocus: autoFocus && !props.open
103
- }, pickerFieldProps, {
104
- // onChange and value
105
-
89
+ autoFocus: autoFocus && !props.open,
106
90
  // Forwarded props
107
91
  className,
108
92
  sx,
@@ -114,12 +98,12 @@ export const useDesktopRangePicker = _ref => {
114
98
  }),
115
99
  ownerState
116
100
  });
117
- const enrichedFieldProps = useEnrichedRangePickerFieldProps(_extends({
101
+ const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
118
102
  variant: 'desktop',
119
103
  fieldType,
120
104
  // These direct access to `providerProps` will go away once the range fields handle the picker opening
121
- open: providerProps.contextValue.open,
122
- setOpen: providerProps.contextValue.setOpen,
105
+ contextValue: providerProps.contextValue,
106
+ fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
123
107
  readOnly,
124
108
  disableOpenPicker,
125
109
  label,
@@ -128,7 +112,7 @@ export const useDesktopRangePicker = _ref => {
128
112
  pickerSlotProps: slotProps,
129
113
  pickerSlots: slots,
130
114
  fieldProps,
131
- anchorRef,
115
+ anchorRef: providerProps.contextValue.triggerRef,
132
116
  startFieldRef,
133
117
  endFieldRef,
134
118
  singleInputFieldRef,
@@ -137,24 +121,30 @@ export const useDesktopRangePicker = _ref => {
137
121
  }, rangePositionResponse));
138
122
  const Layout = slots?.layout ?? PickersLayout;
139
123
  const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
140
- children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
141
- value: rangePositionResponse,
142
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersPopper, {
143
- role: "tooltip",
144
- placement: "bottom-start",
145
- containerRef: popperRef,
146
- anchorEl: anchorRef.current,
147
- onBlur: handleBlur,
148
- slots: slots,
149
- slotProps: slotProps,
150
- shouldRestoreFocus: shouldRestoreFocus,
151
- reduceAnimations: reduceAnimations,
152
- children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
124
+ // This override will go away once the range fields handle the picker opening
125
+ fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
126
+ children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
127
+ slots: slots,
128
+ slotProps: slotProps,
129
+ children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
130
+ value: rangePositionResponse,
131
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickersPopper, {
132
+ role: "tooltip",
133
+ placement: "bottom-start",
134
+ containerRef: popperRef,
135
+ anchorEl: providerProps.contextValue.triggerRef.current,
136
+ onBlur: handleBlur,
153
137
  slots: slots,
154
138
  slotProps: slotProps,
155
- children: renderCurrentView()
156
- }))
157
- })]
139
+ shouldRestoreFocus: shouldRestoreFocus,
140
+ reduceAnimations: reduceAnimations,
141
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
142
+ slots: slots,
143
+ slotProps: slotProps,
144
+ children: renderCurrentView()
145
+ }))
146
+ })]
147
+ })
158
148
  })
159
149
  }));
160
150
  return {
@@ -3,10 +3,10 @@ import Stack, { StackProps } from '@mui/material/Stack';
3
3
  import Typography, { TypographyProps } from '@mui/material/Typography';
4
4
  import { SlotComponentProps } from '@mui/utils';
5
5
  import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
6
- import { FieldRef, PickerOwnerState, FieldOwnerState } from '@mui/x-date-pickers/models';
6
+ import { FieldSelectedSections, FieldRef, PickerOwnerState, FieldOwnerState } from '@mui/x-date-pickers/models';
7
7
  import { UseClearableFieldSlots, UseClearableFieldSlotProps } from '@mui/x-date-pickers/hooks';
8
8
  import { PickersInputLocaleText } from '@mui/x-date-pickers/locales';
9
- import { UsePickerValueContextValue, PickerVariant, DateOrTimeViewWithMeridiem, BaseSingleInputFieldProps, PickerRangeValue, PickerValue } from '@mui/x-date-pickers/internals';
9
+ import { PickerVariant, DateOrTimeViewWithMeridiem, BaseSingleInputFieldProps, PickerRangeValue, PickerValue, PickerContextValue, PickerFieldPrivateContextValue } from '@mui/x-date-pickers/internals';
10
10
  import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
11
11
  import { RangePosition, FieldType, PickerRangeFieldSlotProps } from '../../models';
12
12
  import { UseRangePositionResponse } from './useRangePosition';
@@ -39,7 +39,9 @@ export interface RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure ex
39
39
  }>;
40
40
  }
41
41
  export type RangePickerPropsForFieldSlot<TIsSingleInput extends boolean, TEnableAccessibleFieldDOMStructure extends boolean, TError> = (TIsSingleInput extends true ? BaseSingleInputFieldProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TError> : never) | (TIsSingleInput extends false ? BaseMultiInputFieldProps<TEnableAccessibleFieldDOMStructure, TError> : never);
42
- export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends boolean, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends Pick<UsePickerValueContextValue<PickerRangeValue, TError>, 'open' | 'setOpen'>, UseRangePositionResponse {
42
+ export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends boolean, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends UseRangePositionResponse {
43
+ contextValue: PickerContextValue<PickerRangeValue, TView, TError>;
44
+ fieldPrivateContextValue: PickerFieldPrivateContextValue;
43
45
  variant: PickerVariant;
44
46
  fieldType: FieldType;
45
47
  readOnly?: boolean;
@@ -51,12 +53,19 @@ export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends b
51
53
  pickerSlotProps: RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> | undefined;
52
54
  pickerSlots: RangePickerFieldSlots | undefined;
53
55
  fieldProps: RangePickerPropsForFieldSlot<TIsSingleInput, TEnableAccessibleFieldDOMStructure, TError>;
54
- anchorRef?: React.Ref<HTMLDivElement>;
56
+ anchorRef?: React.Ref<HTMLElement>;
55
57
  currentView?: TView | null;
56
58
  initialView?: TView;
57
- setView?: (view: TView) => void;
58
59
  startFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
59
60
  endFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
60
61
  singleInputFieldRef: React.RefObject<FieldRef<PickerRangeValue> | null>;
61
62
  }
62
- export declare const useEnrichedRangePickerFieldProps: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError>(params: UseEnrichedRangePickerFieldPropsParams<boolean, TView, TEnableAccessibleFieldDOMStructure, TError>) => BaseMultiInputFieldProps<TEnableAccessibleFieldDOMStructure, TError> | BaseSingleInputFieldProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TError>;
63
+ export declare const useEnrichedRangePickerField: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError>(params: UseEnrichedRangePickerFieldPropsParams<boolean, TView, TEnableAccessibleFieldDOMStructure, TError>) => {
64
+ fieldProps: BaseMultiInputFieldProps<TEnableAccessibleFieldDOMStructure, TError>;
65
+ fieldPrivateContextValue: {};
66
+ } | {
67
+ fieldProps: BaseSingleInputFieldProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TError>;
68
+ fieldPrivateContextValue: {
69
+ onSelectedSectionsChange: (selectedSection: FieldSelectedSections) => void;
70
+ };
71
+ };