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

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/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +127 -1
  8. package/DateRangeCalendar/DateRangeCalendar.js +9 -7
  9. package/DateRangePicker/DateRangePicker.js +1 -1
  10. package/DateRangePicker/DateRangePicker.types.d.ts +5 -0
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +25 -17
  13. package/DateRangePicker/shared.d.ts +1 -1
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  15. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +3 -4
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  17. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  19. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -3
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  21. package/DateTimeRangePicker/shared.d.ts +2 -2
  22. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +5 -0
  24. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  25. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  26. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  27. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  28. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  29. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  30. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  31. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  32. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  33. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  34. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  35. package/hooks/index.d.ts +1 -0
  36. package/hooks/index.js +1 -0
  37. package/hooks/package.json +6 -0
  38. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  39. package/hooks/usePickerRangePositionContext.js +15 -0
  40. package/index.d.ts +2 -0
  41. package/index.js +4 -2
  42. package/internals/hooks/models/useRangePicker.d.ts +2 -2
  43. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  44. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +3 -5
  45. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +5 -5
  46. package/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  47. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  48. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +3 -5
  49. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +10 -12
  50. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  51. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  52. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -2
  53. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  54. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -2
  55. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  56. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  57. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  58. package/internals/hooks/useRangePosition.d.ts +1 -1
  59. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  60. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +2 -2
  61. package/internals/utils/date-range-manager.js +2 -1
  62. package/internals/utils/releaseInfo.js +1 -1
  63. package/internals/utils/valueManagers.js +7 -7
  64. package/managers/index.d.ts +6 -0
  65. package/managers/index.js +3 -0
  66. package/managers/package.json +6 -0
  67. package/managers/useDateRangeManager.d.ts +15 -0
  68. package/managers/useDateRangeManager.js +31 -0
  69. package/managers/useDateTimeRangeManager.d.ts +15 -0
  70. package/managers/useDateTimeRangeManager.js +31 -0
  71. package/managers/useTimeRangeManager.d.ts +15 -0
  72. package/managers/useTimeRangeManager.js +29 -0
  73. package/models/range.d.ts +0 -1
  74. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  75. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  76. package/modern/DateRangeCalendar/DateRangeCalendar.js +9 -7
  77. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  78. package/modern/DateRangePicker/DateRangePickerToolbar.js +25 -17
  79. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  80. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  81. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  82. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  83. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  84. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  85. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  86. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  87. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  88. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  89. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  90. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  91. package/modern/hooks/index.js +1 -0
  92. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  93. package/modern/index.js +4 -2
  94. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  95. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  96. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  97. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  98. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  99. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  100. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  101. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  102. package/modern/internals/utils/date-range-manager.js +2 -1
  103. package/modern/internals/utils/releaseInfo.js +1 -1
  104. package/modern/internals/utils/valueManagers.js +7 -7
  105. package/modern/managers/index.js +3 -0
  106. package/modern/managers/useDateRangeManager.js +31 -0
  107. package/modern/managers/useDateTimeRangeManager.js +31 -0
  108. package/modern/managers/useTimeRangeManager.js +29 -0
  109. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  110. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  111. package/node/DateRangeCalendar/DateRangeCalendar.js +9 -7
  112. package/node/DateRangePicker/DateRangePicker.js +1 -1
  113. package/node/DateRangePicker/DateRangePickerToolbar.js +24 -16
  114. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  115. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +8 -7
  116. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  117. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +26 -28
  118. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  119. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  120. package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  121. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  122. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +12 -14
  123. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +12 -14
  124. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +12 -14
  125. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  126. package/node/hooks/index.js +12 -0
  127. package/node/hooks/usePickerRangePositionContext.js +22 -0
  128. package/node/index.js +23 -1
  129. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +26 -43
  130. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +3 -3
  131. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +21 -35
  132. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +10 -5
  133. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +11 -6
  134. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +12 -7
  135. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  136. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  137. package/node/internals/utils/date-range-manager.js +2 -1
  138. package/node/internals/utils/releaseInfo.js +1 -1
  139. package/node/internals/utils/valueManagers.js +7 -7
  140. package/node/managers/index.js +26 -0
  141. package/node/managers/useDateRangeManager.js +38 -0
  142. package/node/managers/useDateTimeRangeManager.js +38 -0
  143. package/node/managers/useTimeRangeManager.js +36 -0
  144. package/package.json +5 -5
@@ -11,10 +11,10 @@ export interface UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure exte
11
11
  }
12
12
  export interface RangeOnlyPickerProps extends BaseNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {
13
13
  }
14
- export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>, TAdditionalViewProps extends {}> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps, TAdditionalViewProps> {
14
+ export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {
15
15
  }
16
16
  export interface RangePickerAdditionalViewProps extends Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {
17
17
  }
18
- export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps, TAdditionalViewProps>, TAdditionalViewProps extends {}> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps, TAdditionalViewProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
18
+ export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
19
19
  props: TExternalProps;
20
20
  }
@@ -9,6 +9,7 @@ import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickersPopp
9
9
  import { useEnrichedRangePickerFieldProps } from "../useEnrichedRangePickerFieldProps.js";
10
10
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
11
11
  import { useRangePosition } from "../useRangePosition.js";
12
+ import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const releaseInfo = getReleaseInfo();
14
15
  export const useDesktopRangePicker = _ref => {
@@ -46,20 +47,16 @@ export const useDesktopRangePicker = _ref => {
46
47
  const singleInputFieldRef = React.useRef(null);
47
48
  const initialView = React.useRef(props.openTo ?? null);
48
49
  const fieldType = slots.field.fieldType ?? 'multi-input';
49
- const {
50
- rangePosition,
51
- onRangePositionChange
52
- } = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
50
+ const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
53
51
  let fieldRef;
54
52
  if (fieldType === 'single-input') {
55
53
  fieldRef = singleInputFieldRef;
56
- } else if (rangePosition === 'start') {
54
+ } else if (rangePositionResponse.rangePosition === 'start') {
57
55
  fieldRef = startFieldRef;
58
56
  } else {
59
57
  fieldRef = endFieldRef;
60
58
  }
61
59
  const {
62
- layoutProps,
63
60
  providerProps,
64
61
  renderCurrentView,
65
62
  shouldRestoreFocus,
@@ -70,11 +67,7 @@ export const useDesktopRangePicker = _ref => {
70
67
  variant: 'desktop',
71
68
  autoFocusView: false,
72
69
  fieldRef,
73
- localeText,
74
- additionalViewProps: {
75
- rangePosition,
76
- onRangePositionChange
77
- }
70
+ localeText
78
71
  }));
79
72
  React.useEffect(() => {
80
73
  if (providerProps.contextValue.view) {
@@ -121,7 +114,7 @@ export const useDesktopRangePicker = _ref => {
121
114
  }),
122
115
  ownerState
123
116
  });
124
- const enrichedFieldProps = useEnrichedRangePickerFieldProps({
117
+ const enrichedFieldProps = useEnrichedRangePickerFieldProps(_extends({
125
118
  variant: 'desktop',
126
119
  fieldType,
127
120
  // These direct access to `providerProps` will go away once the range fields handle the picker opening
@@ -132,8 +125,6 @@ export const useDesktopRangePicker = _ref => {
132
125
  label,
133
126
  localeText,
134
127
  onBlur: handleBlur,
135
- rangePosition,
136
- onRangePositionChange,
137
128
  pickerSlotProps: slotProps,
138
129
  pickerSlots: slots,
139
130
  fieldProps,
@@ -142,37 +133,29 @@ export const useDesktopRangePicker = _ref => {
142
133
  endFieldRef,
143
134
  singleInputFieldRef,
144
135
  currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
145
- initialView: initialView.current ?? undefined,
146
- onViewChange: providerProps.contextValue.onViewChange
147
- });
148
- const slotPropsForLayout = _extends({}, slotProps, {
149
- tabs: _extends({}, slotProps?.tabs, {
150
- rangePosition,
151
- onRangePositionChange
152
- }),
153
- toolbar: _extends({}, slotProps?.toolbar, {
154
- rangePosition,
155
- onRangePositionChange
156
- })
157
- });
136
+ initialView: initialView.current ?? undefined
137
+ }, rangePositionResponse));
158
138
  const Layout = slots?.layout ?? PickersLayout;
159
- const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
160
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersPopper, {
161
- role: "tooltip",
162
- placement: "bottom-start",
163
- containerRef: popperRef,
164
- anchorEl: anchorRef.current,
165
- onBlur: handleBlur,
166
- slots: slots,
167
- slotProps: slotProps,
168
- shouldRestoreFocus: shouldRestoreFocus,
169
- reduceAnimations: reduceAnimations,
170
- children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
139
+ 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,
171
148
  slots: slots,
172
- slotProps: slotPropsForLayout,
173
- children: renderCurrentView()
174
- }))
175
- })]
149
+ slotProps: slotProps,
150
+ shouldRestoreFocus: shouldRestoreFocus,
151
+ reduceAnimations: reduceAnimations,
152
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
153
+ slots: slots,
154
+ slotProps: slotProps,
155
+ children: renderCurrentView()
156
+ }))
157
+ })]
158
+ })
176
159
  }));
177
160
  return {
178
161
  renderPicker
@@ -1,5 +1,5 @@
1
1
  import { PickersPopperSlots, PickersPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
2
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
3
  export interface UseDesktopRangePickerSlots extends UseRangePickerSlots, PickersPopperSlots {
4
4
  }
5
5
  export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickersPopperSlotProps {
@@ -10,7 +10,7 @@ export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
10
10
  */
11
11
  autoFocus?: boolean;
12
12
  }
13
- export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends UseRangePickerProps<TView, TError, TExternalProps, DesktopRangePickerAdditionalViewProps> {
13
+ export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
14
14
  /**
15
15
  * Overridable component slots.
16
16
  * @default {}
@@ -22,7 +22,5 @@ export interface UseDesktopRangePickerProps<TView extends DateOrTimeViewWithMeri
22
22
  */
23
23
  slotProps?: UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
24
24
  }
25
- export interface DesktopRangePickerAdditionalViewProps extends RangePickerAdditionalViewProps {
26
- }
27
- export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps, DesktopRangePickerAdditionalViewProps> {
25
+ export interface UseDesktopRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps> {
28
26
  }
@@ -39,7 +39,7 @@ 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, 'open' | 'setOpen'>, UseRangePositionResponse {
42
+ export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends boolean, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends Pick<UsePickerValueContextValue<PickerRangeValue, TError>, 'open' | 'setOpen'>, UseRangePositionResponse {
43
43
  variant: PickerVariant;
44
44
  fieldType: FieldType;
45
45
  readOnly?: boolean;
@@ -54,9 +54,9 @@ export interface UseEnrichedRangePickerFieldPropsParams<TIsSingleInput extends b
54
54
  anchorRef?: React.Ref<HTMLDivElement>;
55
55
  currentView?: TView | null;
56
56
  initialView?: TView;
57
- onViewChange?: (view: TView) => void;
58
- startFieldRef: React.RefObject<FieldRef<PickerValue>>;
59
- endFieldRef: React.RefObject<FieldRef<PickerValue>>;
60
- singleInputFieldRef: React.RefObject<FieldRef<PickerRangeValue>>;
57
+ setView?: (view: TView) => void;
58
+ startFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
59
+ endFieldRef: React.RefObject<FieldRef<PickerValue> | null>;
60
+ singleInputFieldRef: React.RefObject<FieldRef<PickerRangeValue> | null>;
61
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>;
@@ -24,7 +24,7 @@ const useMultiInputFieldSlotProps = ({
24
24
  anchorRef,
25
25
  currentView,
26
26
  initialView,
27
- onViewChange,
27
+ setView,
28
28
  startFieldRef,
29
29
  endFieldRef
30
30
  }) => {
@@ -70,7 +70,7 @@ const useMultiInputFieldSlotProps = ({
70
70
  if (open) {
71
71
  onRangePositionChange('start');
72
72
  if (previousRangePosition.current !== 'start' && initialView) {
73
- onViewChange?.(initialView);
73
+ setView?.(initialView);
74
74
  }
75
75
  }
76
76
  };
@@ -78,7 +78,7 @@ const useMultiInputFieldSlotProps = ({
78
78
  if (open) {
79
79
  onRangePositionChange('end');
80
80
  if (previousRangePosition.current !== 'end' && initialView) {
81
- onViewChange?.(initialView);
81
+ setView?.(initialView);
82
82
  }
83
83
  }
84
84
  };
@@ -11,6 +11,7 @@ import useId from '@mui/utils/useId';
11
11
  import { useEnrichedRangePickerFieldProps } from "../useEnrichedRangePickerFieldProps.js";
12
12
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
13
13
  import { useRangePosition } from "../useRangePosition.js";
14
+ import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  const releaseInfo = getReleaseInfo();
16
17
  export const useMobileRangePicker = _ref => {
@@ -42,22 +43,18 @@ export const useMobileRangePicker = _ref => {
42
43
  const endFieldRef = React.useRef(null);
43
44
  const singleInputFieldRef = React.useRef(null);
44
45
  const fieldType = slots.field.fieldType ?? 'multi-input';
45
- const {
46
- rangePosition,
47
- onRangePositionChange
48
- } = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
46
+ const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
49
47
  const labelId = useId();
50
48
  const contextTranslations = usePickerTranslations();
51
49
  let fieldRef;
52
50
  if (fieldType === 'single-input') {
53
51
  fieldRef = singleInputFieldRef;
54
- } else if (rangePosition === 'start') {
52
+ } else if (rangePositionResponse.rangePosition === 'start') {
55
53
  fieldRef = startFieldRef;
56
54
  } else {
57
55
  fieldRef = endFieldRef;
58
56
  }
59
57
  const {
60
- layoutProps,
61
58
  providerProps,
62
59
  renderCurrentView,
63
60
  fieldProps: pickerFieldProps,
@@ -67,11 +64,7 @@ export const useMobileRangePicker = _ref => {
67
64
  variant: 'mobile',
68
65
  autoFocusView: true,
69
66
  fieldRef,
70
- localeText,
71
- additionalViewProps: {
72
- rangePosition,
73
- onRangePositionChange
74
- }
67
+ localeText
75
68
  }));
76
69
  const Field = slots.field;
77
70
  const fieldProps = useSlotProps({
@@ -101,7 +94,7 @@ export const useMobileRangePicker = _ref => {
101
94
  ownerState
102
95
  });
103
96
  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
104
- const enrichedFieldProps = useEnrichedRangePickerFieldProps({
97
+ const enrichedFieldProps = useEnrichedRangePickerFieldProps(_extends({
105
98
  variant: 'mobile',
106
99
  fieldType,
107
100
  // These direct access to `providerProps` will go away once the range fields handle the picker opening
@@ -112,26 +105,13 @@ export const useMobileRangePicker = _ref => {
112
105
  disableOpenPicker,
113
106
  label,
114
107
  localeText,
115
- rangePosition,
116
- onRangePositionChange,
117
108
  pickerSlots: slots,
118
109
  pickerSlotProps: innerSlotProps,
119
110
  fieldProps,
120
111
  startFieldRef,
121
112
  endFieldRef,
122
113
  singleInputFieldRef
123
- });
124
- const slotPropsForLayout = _extends({}, innerSlotProps, {
125
- tabs: _extends({}, innerSlotProps?.tabs, {
126
- rangePosition,
127
- onRangePositionChange
128
- }),
129
- toolbar: _extends({}, innerSlotProps?.toolbar, {
130
- titleId: labelId,
131
- rangePosition,
132
- onRangePositionChange
133
- })
134
- });
114
+ }, rangePositionResponse));
135
115
  const Layout = slots?.layout ?? PickersLayout;
136
116
  const finalLocaleText = _extends({}, contextTranslations, localeText);
137
117
  let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
@@ -150,20 +130,26 @@ export const useMobileRangePicker = _ref => {
150
130
  labelledById = labels.length > 0 ? labels.join(' ') : undefined;
151
131
  }
152
132
  const slotProps = _extends({}, innerSlotProps, {
133
+ toolbar: _extends({}, innerSlotProps?.toolbar, {
134
+ titleId: labelId
135
+ }),
153
136
  mobilePaper: _extends({
154
137
  'aria-labelledby': labelledById
155
138
  }, innerSlotProps?.mobilePaper)
156
139
  });
157
- const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
158
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
159
- slots: slots,
160
- slotProps: slotProps,
161
- children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
140
+ const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
141
+ children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
142
+ value: rangePositionResponse,
143
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
162
144
  slots: slots,
163
- slotProps: slotPropsForLayout,
164
- children: renderCurrentView()
165
- }))
166
- })]
145
+ slotProps: slotProps,
146
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
147
+ slots: slots,
148
+ slotProps: slotProps,
149
+ children: renderCurrentView()
150
+ }))
151
+ })]
152
+ })
167
153
  }));
168
154
  return {
169
155
  renderPicker
@@ -1,12 +1,12 @@
1
1
  import { PickersModalDialogSlots, PickersModalDialogSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
2
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
3
  export interface UseMobileRangePickerSlots extends UseRangePickerSlots, PickersModalDialogSlots {
4
4
  }
5
5
  export interface UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickersModalDialogSlotProps {
6
6
  }
7
7
  export interface MobileRangeOnlyPickerProps extends RangeOnlyPickerProps {
8
8
  }
9
- export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends UseRangePickerProps<TView, TError, TExternalProps, MobileRangePickerAdditionalViewProps> {
9
+ export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
10
10
  /**
11
11
  * Overridable component slots.
12
12
  * @default {}
@@ -18,7 +18,5 @@ export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMerid
18
18
  */
19
19
  slotProps?: UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
20
20
  }
21
- export interface MobileRangePickerAdditionalViewProps extends RangePickerAdditionalViewProps {
22
- }
23
- export interface UseMobileRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobileRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps, MobileRangePickerAdditionalViewProps> {
21
+ export interface UseMobileRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobileRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps> {
24
22
  }
@@ -5,16 +5,14 @@ interface UseMultiInputFieldSelectedSectionsParams extends Pick<UseFieldInternal
5
5
  unstableStartFieldRef?: React.Ref<FieldRef<PickerValue>>;
6
6
  unstableEndFieldRef?: React.Ref<FieldRef<PickerValue>>;
7
7
  }
8
- export declare const useMultiInputFieldSelectedSections: (params: UseMultiInputFieldSelectedSectionsParams) => {
9
- start: {
10
- unstableFieldRef: React.Ref<FieldRef<PickerValue>> | undefined;
11
- selectedSections: FieldSelectedSections;
12
- onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
13
- };
14
- end: {
15
- unstableFieldRef: ((instance: FieldRef<PickerValue> | null) => void | React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | null;
16
- selectedSections: FieldSelectedSections;
17
- onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
18
- };
19
- };
8
+ interface UseMultiInputFieldSelectedSectionsResponseItem {
9
+ unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
10
+ selectedSections: FieldSelectedSections;
11
+ onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
12
+ }
13
+ interface UseMultiInputFieldSelectedSectionsResponse {
14
+ start: UseMultiInputFieldSelectedSectionsResponseItem;
15
+ end: UseMultiInputFieldSelectedSectionsResponseItem;
16
+ }
17
+ export declare const useMultiInputFieldSelectedSections: (params: UseMultiInputFieldSelectedSectionsParams) => UseMultiInputFieldSelectedSectionsResponse;
20
18
  export {};
@@ -1,3 +1,3 @@
1
1
  import { UseMultiInputDateRangeFieldParams } from '../../../MultiInputDateRangeField/MultiInputDateRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputDateRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputDateRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateDateRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useDateRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputDateRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedDateField(inSharedProps);
18
+ const manager = useDateRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,7 +35,7 @@ export const useMultiInputDateRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
@@ -48,11 +53,11 @@ export const useMultiInputDateRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
56
+ props: sharedPropsWithDefaults,
52
57
  value,
53
58
  timezone,
54
59
  validator: validateDateRange,
55
- onError: sharedProps.onError
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -1,3 +1,3 @@
1
- import type { UseMultiInputDateTimeRangeFieldParams } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
1
+ import { UseMultiInputDateTimeRangeFieldParams } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputDateTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputDateTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateDateTimeRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useDateTimeRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputDateTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedDateTimeField(inSharedProps);
18
+ const manager = useDateTimeRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,13 +35,13 @@ export const useMultiInputDateTimeRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
37
42
  timezone
38
43
  } = useControlledValueWithTimezone({
39
- name: 'useMultiInputDateRangeField',
44
+ name: 'useMultiInputDateTimeRangeField',
40
45
  timezone: timezoneProp,
41
46
  value: valueProp,
42
47
  defaultValue,
@@ -48,11 +53,11 @@ export const useMultiInputDateTimeRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
56
+ props: sharedPropsWithDefaults,
52
57
  value,
53
58
  timezone,
54
59
  validator: validateDateTimeRange,
55
- onError: sharedProps.onError
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -1,3 +1,3 @@
1
- import type { UseMultiInputTimeRangeFieldParams } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
1
+ import { UseMultiInputTimeRangeFieldParams } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateTimeRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useTimeRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedTimeField(inSharedProps);
18
+ const manager = useTimeRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,13 +35,13 @@ export const useMultiInputTimeRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
37
42
  timezone
38
43
  } = useControlledValueWithTimezone({
39
- name: 'useMultiInputDateRangeField',
44
+ name: 'useMultiInputTimeRangeField',
40
45
  timezone: timezoneProp,
41
46
  value: valueProp,
42
47
  defaultValue,
@@ -48,11 +53,11 @@ export const useMultiInputTimeRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
52
- validator: validateTimeRange,
56
+ props: sharedPropsWithDefaults,
53
57
  value,
54
58
  timezone,
55
- onError: sharedProps.onError
59
+ validator: validateTimeRange,
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns information about the range position of the picker that wraps the current component.
3
+ * If no picker wraps the current component, returns `null`.
4
+ */
5
+ export declare function useNullablePickerRangePositionContext(): import("./useRangePosition").UseRangePositionResponse | null;
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { PickerRangePositionContext } from "../../hooks/usePickerRangePositionContext.js";
3
+
4
+ /**
5
+ * Returns information about the range position of the picker that wraps the current component.
6
+ * If no picker wraps the current component, returns `null`.
7
+ */
8
+ export function useNullablePickerRangePositionContext() {
9
+ return React.useContext(PickerRangePositionContext);
10
+ }
@@ -24,4 +24,4 @@ export interface UseRangePositionResponse {
24
24
  rangePosition: RangePosition;
25
25
  onRangePositionChange: (newPosition: RangePosition) => void;
26
26
  }
27
- export declare const useRangePosition: (props: UseRangePositionProps, singleInputFieldRef?: React.RefObject<FieldRef<PickerRangeValue>>) => UseRangePositionResponse;
27
+ export declare const useRangePosition: (props: UseRangePositionProps, singleInputFieldRef?: React.RefObject<FieldRef<PickerRangeValue> | null>) => UseRangePositionResponse;