@mui/x-date-pickers-pro 8.0.0-alpha.12 → 8.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/CHANGELOG.md +299 -0
  2. package/DateRangePicker/DateRangePicker.types.d.ts +2 -2
  3. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
  4. package/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
  5. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
  6. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  7. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
  8. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  9. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  10. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  11. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
  12. package/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
  13. package/esm/DateRangePicker/DateRangePicker.types.d.ts +2 -2
  14. package/esm/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
  15. package/esm/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
  16. package/esm/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
  17. package/esm/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  18. package/esm/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
  19. package/esm/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  20. package/esm/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  21. package/esm/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  22. package/esm/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
  23. package/esm/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
  24. package/esm/hooks/index.d.ts +2 -1
  25. package/esm/hooks/useMultiInputRangeField/index.d.ts +2 -1
  26. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
  27. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeField.js +41 -50
  28. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
  29. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +25 -0
  30. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
  31. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -2
  32. package/esm/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
  33. package/esm/hooks/useMultiInputRangeField/useTextFieldProps.js +141 -0
  34. package/esm/index.js +1 -1
  35. package/esm/internals/hooks/models/index.d.ts +1 -1
  36. package/esm/internals/hooks/models/useRangePicker.d.ts +1 -8
  37. package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +8 -75
  38. package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
  39. package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
  40. package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
  41. package/esm/internals/hooks/useRangePosition.d.ts +1 -4
  42. package/esm/internals/hooks/useRangePosition.js +1 -18
  43. package/esm/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  44. package/esm/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +26 -32
  45. package/esm/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
  46. package/esm/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
  47. package/esm/internals/utils/createMultiInputRangeField/useTextFieldProps.js +36 -0
  48. package/esm/internals/utils/date-fields-utils.d.ts +4 -1
  49. package/esm/internals/utils/date-fields-utils.js +5 -1
  50. package/esm/internals/utils/releaseInfo.js +1 -1
  51. package/esm/managers/useDateRangeManager.js +8 -1
  52. package/esm/managers/useDateTimeRangeManager.js +8 -1
  53. package/esm/managers/useTimeRangeManager.js +10 -1
  54. package/esm/models/fields.d.ts +5 -18
  55. package/hooks/index.d.ts +2 -1
  56. package/hooks/useMultiInputRangeField/index.d.ts +2 -1
  57. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
  58. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +40 -51
  59. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
  60. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +31 -0
  61. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
  62. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -1
  63. package/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
  64. package/hooks/useMultiInputRangeField/useTextFieldProps.js +149 -0
  65. package/index.js +1 -1
  66. package/internals/hooks/models/index.d.ts +1 -1
  67. package/internals/hooks/models/useRangePicker.d.ts +1 -8
  68. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +7 -74
  69. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
  70. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
  71. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
  72. package/internals/hooks/useRangePosition.d.ts +1 -4
  73. package/internals/hooks/useRangePosition.js +1 -18
  74. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  75. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +25 -31
  76. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
  77. package/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
  78. package/internals/utils/createMultiInputRangeField/useTextFieldProps.js +44 -0
  79. package/internals/utils/date-fields-utils.d.ts +4 -1
  80. package/internals/utils/date-fields-utils.js +6 -1
  81. package/internals/utils/releaseInfo.js +1 -1
  82. package/managers/useDateRangeManager.js +8 -1
  83. package/managers/useDateTimeRangeManager.js +8 -1
  84. package/managers/useTimeRangeManager.js +10 -1
  85. package/models/fields.d.ts +5 -18
  86. package/modern/DateRangePicker/DateRangePicker.types.d.ts +2 -2
  87. package/modern/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
  88. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
  89. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
  90. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  91. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
  92. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  93. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  94. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  95. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
  96. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
  97. package/modern/hooks/index.d.ts +2 -1
  98. package/modern/hooks/useMultiInputRangeField/index.d.ts +2 -1
  99. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
  100. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +41 -50
  101. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
  102. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +25 -0
  103. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
  104. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -2
  105. package/modern/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
  106. package/modern/hooks/useMultiInputRangeField/useTextFieldProps.js +141 -0
  107. package/modern/index.js +1 -1
  108. package/modern/internals/hooks/models/index.d.ts +1 -1
  109. package/modern/internals/hooks/models/useRangePicker.d.ts +1 -8
  110. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +8 -75
  111. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
  112. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
  113. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
  114. package/modern/internals/hooks/useRangePosition.d.ts +1 -4
  115. package/modern/internals/hooks/useRangePosition.js +1 -18
  116. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  117. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +26 -32
  118. package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
  119. package/modern/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
  120. package/modern/internals/utils/createMultiInputRangeField/useTextFieldProps.js +36 -0
  121. package/modern/internals/utils/date-fields-utils.d.ts +4 -1
  122. package/modern/internals/utils/date-fields-utils.js +5 -1
  123. package/modern/internals/utils/releaseInfo.js +1 -1
  124. package/modern/managers/useDateRangeManager.js +8 -1
  125. package/modern/managers/useDateTimeRangeManager.js +8 -1
  126. package/modern/managers/useTimeRangeManager.js +10 -1
  127. package/modern/models/fields.d.ts +5 -18
  128. package/package.json +4 -4
  129. package/tsconfig.build.tsbuildinfo +1 -1
  130. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
  131. package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -59
  132. package/esm/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
  133. package/esm/internals/hooks/useEnrichedRangePickerField.js +0 -236
  134. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
  135. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -66
  136. package/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
  137. package/internals/hooks/useEnrichedRangePickerField.js +0 -245
  138. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
  139. package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -59
  140. package/modern/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
  141. package/modern/internals/hooks/useEnrichedRangePickerField.js +0 -236
@@ -0,0 +1,141 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["clearable", "onClear", "openPickerAriaLabel"];
4
+ import * as React from 'react';
5
+ import useEventCallback from '@mui/utils/useEventCallback';
6
+ import { useDateManager, useDateTimeManager, useTimeManager } from '@mui/x-date-pickers/managers';
7
+ import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
8
+ import { useField, useFieldInternalPropsWithDefaults, useNullableFieldPrivateContext, useNullablePickerContext, usePickerPrivateContext } from '@mui/x-date-pickers/internals';
9
+ import { useNullablePickerRangePositionContext } from "../../internals/hooks/useNullablePickerRangePositionContext.js";
10
+ /**
11
+ * @ignore - internal hook.
12
+ */
13
+ export function useTextFieldProps(parameters) {
14
+ const pickerContext = useNullablePickerContext();
15
+ const fieldPrivateContext = useNullableFieldPrivateContext();
16
+ const pickerPrivateContext = usePickerPrivateContext();
17
+ const rangePositionContext = useNullablePickerRangePositionContext();
18
+ const rangePosition = rangePositionContext?.rangePosition ?? 'start';
19
+ const setRangePosition = rangePositionContext?.setRangePosition;
20
+ const previousRangePosition = React.useRef(rangePosition);
21
+ const {
22
+ forwardedProps,
23
+ sharedInternalProps,
24
+ selectedSectionProps,
25
+ valueType,
26
+ position,
27
+ value,
28
+ onChange,
29
+ autoFocus,
30
+ validation
31
+ } = parameters;
32
+ let useManager;
33
+ switch (valueType) {
34
+ case 'date':
35
+ {
36
+ useManager = useDateManager;
37
+ break;
38
+ }
39
+ case 'time':
40
+ {
41
+ useManager = useTimeManager;
42
+ break;
43
+ }
44
+ case 'date-time':
45
+ {
46
+ useManager = useDateTimeManager;
47
+ break;
48
+ }
49
+ default:
50
+ {
51
+ throw new Error(`Unknown valueType: ${valueType}`);
52
+ }
53
+ }
54
+ const manager = useManager({
55
+ enableAccessibleFieldDOMStructure: sharedInternalProps.enableAccessibleFieldDOMStructure
56
+ });
57
+ const openPickerIfPossible = event => {
58
+ if (!pickerContext) {
59
+ return;
60
+ }
61
+ setRangePosition?.(position);
62
+ if (pickerContext.triggerStatus === 'enabled') {
63
+ event.preventDefault();
64
+ pickerContext.setOpen(true);
65
+ }
66
+ };
67
+ const handleKeyDown = useEventCallback(event => {
68
+ if (event.key === 'Enter' || event.key === ' ') {
69
+ openPickerIfPossible(event);
70
+ }
71
+ });
72
+
73
+ // Registering `onClick` listener on the root element as well to correctly handle cases where user is clicking on `label`
74
+ // which has `pointer-events: none` and due to DOM structure the `input` does not catch the click event
75
+ const handleClick = useEventCallback(event => {
76
+ openPickerIfPossible(event);
77
+ });
78
+ const handleFocus = useEventCallback(event => {
79
+ forwardedProps.onFocus?.(event);
80
+ if (pickerContext?.open) {
81
+ setRangePosition?.(position);
82
+ if (previousRangePosition.current !== position && pickerContext.initialView) {
83
+ pickerContext.setView?.(pickerContext.initialView);
84
+ }
85
+ }
86
+ });
87
+ const handleChange = useEventCallback((newSingleValue, rawContext) => {
88
+ const newRange = position === 'start' ? [newSingleValue, value[1]] : [value[0], newSingleValue];
89
+ const context = _extends({}, rawContext, {
90
+ validationError: validation.getValidationErrorForNewValue(newRange)
91
+ });
92
+ onChange(newRange, context);
93
+ });
94
+ const allProps = _extends({
95
+ value: position === 'start' ? value[0] : value[1],
96
+ error: position === 'start' ? !!validation.validationError[0] : !!validation.validationError[1],
97
+ id: `${pickerPrivateContext.labelId}-${position}`,
98
+ autoFocus: position === 'start' ? autoFocus : undefined
99
+ }, forwardedProps, sharedInternalProps, selectedSectionProps, {
100
+ onClick: handleClick,
101
+ onFocus: handleFocus,
102
+ onKeyDown: handleKeyDown,
103
+ onChange: handleChange
104
+ });
105
+ const splittedProps = useSplitFieldProps(allProps, valueType);
106
+ const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
107
+ manager,
108
+ internalProps: splittedProps.internalProps,
109
+ skipContextFieldRefAssignment: rangePosition !== position
110
+ });
111
+ const _ref = useField({
112
+ forwardedProps: splittedProps.forwardedProps,
113
+ internalProps: internalPropsWithDefaults,
114
+ valueManager: manager.internal_valueManager,
115
+ fieldValueManager: manager.internal_fieldValueManager,
116
+ validator: manager.validator,
117
+ valueType: manager.valueType,
118
+ // TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
119
+ getOpenPickerButtonAriaLabel: () => ''
120
+ }),
121
+ fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);
122
+ React.useEffect(() => {
123
+ if (!pickerContext?.open || pickerContext?.variant === 'mobile') {
124
+ return;
125
+ }
126
+ fieldPrivateContext?.fieldRef.current?.focusField();
127
+ if (!fieldPrivateContext?.fieldRef.current || pickerContext.view === pickerContext.initialView) {
128
+ // could happen when the user is switching between the inputs
129
+ previousRangePosition.current = rangePosition;
130
+ return;
131
+ }
132
+
133
+ // bring back focus to the field
134
+ // currentView is present on DateTimeRangePicker
135
+ fieldPrivateContext?.fieldRef.current.setSelectedSections(
136
+ // use the current view or `0` when the range position has just been swapped
137
+ previousRangePosition.current === rangePosition ? pickerContext.view : 0);
138
+ previousRangePosition.current = rangePosition;
139
+ }, [rangePosition, pickerContext?.open, pickerContext?.variant, pickerContext?.initialView, pickerContext?.view, fieldPrivateContext?.fieldRef]);
140
+ return fieldResponse;
141
+ }
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.12
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.13
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, UseRangePickerProps, UseRangePickerParams } from './useRangePicker';
1
+ export type { RangeOnlyPickerProps, UseRangePickerProps, UseRangePickerParams } from './useRangePicker';
@@ -1,13 +1,6 @@
1
- import { UsePickerParams, BasePickerProps, ExportedBaseToolbarProps, UsePickerViewsProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, ExportedBaseTabsProps, PickerRangeValue } from '@mui/x-date-pickers/internals';
2
- import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
1
+ import { UsePickerParams, BasePickerProps, UsePickerViewsProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, DateOrTimeViewWithMeridiem, PickerRangeValue } from '@mui/x-date-pickers/internals';
3
2
  import { BaseRangeNonStaticPickerProps } from "../../models/index.js";
4
3
  import { UseRangePositionProps } from "../useRangePosition.js";
5
- import { RangePickerFieldSlots, RangePickerFieldSlotProps } from "../useEnrichedRangePickerField.js";
6
- export interface UseRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue>, RangePickerFieldSlots {}
7
- export interface UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedPickersLayoutSlotProps<PickerRangeValue>, RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> {
8
- tabs?: ExportedBaseTabsProps;
9
- toolbar?: ExportedBaseToolbarProps;
10
- }
11
4
  export interface RangeOnlyPickerProps extends UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps, BaseRangeNonStaticPickerProps, UseRangePositionProps {}
12
5
  export interface UseRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends RangeOnlyPickerProps, BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {}
13
6
  export interface UseRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor' | 'ref'> {
@@ -6,11 +6,11 @@ import * as React from 'react';
6
6
  import useSlotProps from '@mui/utils/useSlotProps';
7
7
  import { useLicenseVerifier } from '@mui/x-license';
8
8
  import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
9
- import { executeInTheNextEventLoopTick, getActiveElement, usePicker, PickerPopper, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
10
- import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
9
+ import { usePicker, PickerPopper, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
11
10
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
12
11
  import { useRangePosition } from "../useRangePosition.js";
13
12
  import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
13
+ import { getRangeFieldType } from "../../utils/date-fields-utils.js";
14
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  const releaseInfo = getReleaseInfo();
16
16
  export const useDesktopRangePicker = _ref => {
@@ -23,27 +23,11 @@ export const useDesktopRangePicker = _ref => {
23
23
  slots,
24
24
  slotProps,
25
25
  inputRef,
26
- readOnly,
27
- autoFocus,
28
- disableOpenPicker,
29
26
  localeText
30
27
  } = props;
31
- const fieldContainerRef = React.useRef(null);
32
- const popperRef = React.useRef(null);
33
- const startFieldRef = React.useRef(null);
34
- const endFieldRef = React.useRef(null);
35
- const singleInputFieldRef = React.useRef(null);
36
- const initialView = React.useRef(props.openTo ?? null);
37
- const fieldType = slots.field.fieldType ?? 'multi-input';
38
- const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
39
- let fieldRef;
40
- if (fieldType === 'single-input') {
41
- fieldRef = singleInputFieldRef;
42
- } else if (rangePositionResponse.rangePosition === 'start') {
43
- fieldRef = startFieldRef;
44
- } else {
45
- fieldRef = endFieldRef;
46
- }
28
+ const fieldType = getRangeFieldType(slots.field);
29
+ const viewContainerRole = fieldType === 'single-input' ? 'dialog' : 'tooltip';
30
+ const rangePositionResponse = useRangePosition(props);
47
31
  const {
48
32
  providerProps,
49
33
  renderCurrentView,
@@ -51,77 +35,26 @@ export const useDesktopRangePicker = _ref => {
51
35
  } = usePicker(_extends({}, pickerParams, {
52
36
  props,
53
37
  variant: 'desktop',
54
- autoFocusView: false,
55
- fieldRef,
38
+ autoFocusView: viewContainerRole === 'dialog',
39
+ viewContainerRole,
56
40
  localeText
57
41
  }));
58
-
59
- // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
60
- providerProps.contextValue.triggerStatus = 'hidden';
61
- React.useEffect(() => {
62
- if (providerProps.contextValue.view) {
63
- initialView.current = providerProps.contextValue.view;
64
- }
65
- // eslint-disable-next-line react-hooks/exhaustive-deps
66
- }, []);
67
- const handleBlur = () => {
68
- executeInTheNextEventLoopTick(() => {
69
- if (fieldContainerRef.current?.contains(getActiveElement(document)) || popperRef.current?.contains(getActiveElement(document))) {
70
- return;
71
- }
72
-
73
- // This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
74
- providerProps.privateContextValue.dismissViews();
75
- });
76
- };
77
42
  const Field = slots.field;
78
43
  const _useSlotProps = useSlotProps({
79
44
  elementType: Field,
80
45
  externalSlotProps: slotProps?.field,
81
- additionalProps: {
82
- // Internal props
83
- readOnly,
84
- autoFocus: autoFocus && !props.open,
85
- // Forwarded props
86
- ref: fieldContainerRef
87
- },
88
46
  ownerState
89
47
  }),
90
48
  fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
91
- const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
92
- variant: 'desktop',
93
- fieldType,
94
- // These direct access to `providerProps` will go away once the range fields handle the picker opening
95
- contextValue: providerProps.contextValue,
96
- fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
97
- readOnly,
98
- disableOpenPicker,
99
- localeText,
100
- onBlur: handleBlur,
101
- pickerSlotProps: slotProps,
102
- pickerSlots: slots,
103
- fieldProps,
104
- anchorRef: providerProps.contextValue.triggerRef,
105
- startFieldRef,
106
- endFieldRef,
107
- singleInputFieldRef,
108
- currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
109
- initialView: initialView.current ?? undefined
110
- }, rangePositionResponse));
111
49
  const Layout = slots?.layout ?? PickersLayout;
112
50
  const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
113
- // This override will go away once the range fields handle the picker opening
114
- fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
115
51
  children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
116
52
  slots: slots,
117
53
  slotProps: slotProps,
118
54
  inputRef: inputRef,
119
55
  children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
120
56
  value: rangePositionResponse,
121
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickerPopper, {
122
- role: "tooltip",
123
- containerRef: popperRef,
124
- onBlur: handleBlur,
57
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps)), /*#__PURE__*/_jsx(PickerPopper, {
125
58
  slots: slots,
126
59
  slotProps: slotProps,
127
60
  children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
@@ -1,7 +1,19 @@
1
- import { PickerPopperSlots, PickerPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from "../models/useRangePicker.js";
3
- export interface UseDesktopRangePickerSlots extends UseRangePickerSlots, PickerPopperSlots {}
4
- export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickerPopperSlotProps {}
1
+ import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
2
+ import { PickerFieldSlotProps, PickerOwnerState } from '@mui/x-date-pickers/models';
3
+ import { PickerPopperSlots, PickerPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem, PickerRangeValue, PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from '@mui/x-date-pickers/internals';
4
+ import { ExportedPickersLayoutSlotProps, ExportedPickersLayoutSlots } from '@mui/x-date-pickers/PickersLayout';
5
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps } from "../models/useRangePicker.js";
6
+ export interface UseDesktopRangePickerSlots extends PickerPopperSlots, ExportedPickersLayoutSlots<PickerRangeValue>, PickerFieldUISlotsFromContext {
7
+ /**
8
+ * Component used to enter the date with the keyboard.
9
+ */
10
+ field: React.ElementType;
11
+ }
12
+ export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickerPopperSlotProps, ExportedPickersLayoutSlotProps<PickerRangeValue>, PickerFieldUISlotPropsFromContext {
13
+ field?: SlotComponentPropsFromProps<PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & {
14
+ dateSeparator?: string;
15
+ }, {}, PickerOwnerState>;
16
+ }
5
17
  export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
6
18
  /**
7
19
  * If `true`, the start `input` element is focused during the first mount.
@@ -4,15 +4,15 @@ const _excluded = ["props"],
4
4
  _excluded2 = ["ownerState"];
5
5
  import * as React from 'react';
6
6
  import useSlotProps from '@mui/utils/useSlotProps';
7
+ import resolveComponentProps from '@mui/utils/resolveComponentProps';
7
8
  import { useLicenseVerifier } from '@mui/x-license';
8
9
  import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
9
10
  import { usePicker, PickersModalDialog, PickerProvider, PickerFieldUIContextProvider } from '@mui/x-date-pickers/internals';
10
11
  import { usePickerTranslations } from '@mui/x-date-pickers/hooks';
11
- import useId from '@mui/utils/useId';
12
- import { useEnrichedRangePickerField } from "../useEnrichedRangePickerField.js";
13
12
  import { getReleaseInfo } from "../../utils/releaseInfo.js";
14
13
  import { useRangePosition } from "../useRangePosition.js";
15
14
  import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
15
+ import { getRangeFieldType } from "../../utils/date-fields-utils.js";
16
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
17
  const releaseInfo = getReleaseInfo();
18
18
  export const useMobileRangePicker = _ref => {
@@ -26,25 +26,11 @@ export const useMobileRangePicker = _ref => {
26
26
  slotProps: innerSlotProps,
27
27
  label,
28
28
  inputRef,
29
- readOnly,
30
- disableOpenPicker,
31
29
  localeText
32
30
  } = props;
33
- const startFieldRef = React.useRef(null);
34
- const endFieldRef = React.useRef(null);
35
- const singleInputFieldRef = React.useRef(null);
36
- const fieldType = slots.field.fieldType ?? 'multi-input';
37
- const rangePositionResponse = useRangePosition(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
38
- const labelId = useId();
31
+ const fieldType = getRangeFieldType(slots.field);
32
+ const rangePositionResponse = useRangePosition(props);
39
33
  const contextTranslations = usePickerTranslations();
40
- let fieldRef;
41
- if (fieldType === 'single-input') {
42
- fieldRef = singleInputFieldRef;
43
- } else if (rangePositionResponse.rangePosition === 'start') {
44
- fieldRef = startFieldRef;
45
- } else {
46
- fieldRef = endFieldRef;
47
- }
48
34
  const {
49
35
  providerProps,
50
36
  renderCurrentView,
@@ -53,41 +39,21 @@ export const useMobileRangePicker = _ref => {
53
39
  props,
54
40
  variant: 'mobile',
55
41
  autoFocusView: true,
56
- fieldRef,
42
+ viewContainerRole: 'dialog',
57
43
  localeText
58
44
  }));
59
-
60
- // Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
61
- providerProps.contextValue.triggerStatus = 'hidden';
45
+ const labelId = providerProps.privateContextValue.labelId;
46
+ const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
62
47
  const Field = slots.field;
63
48
  const _useSlotProps = useSlotProps({
64
49
  elementType: Field,
65
50
  externalSlotProps: innerSlotProps?.field,
66
- additionalProps: {
67
- // Internal props
68
- readOnly: readOnly ?? true
69
- },
51
+ additionalProps: _extends({}, fieldType === 'single-input' && isToolbarHidden && {
52
+ id: labelId
53
+ }),
70
54
  ownerState
71
55
  }),
72
56
  fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
73
- const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
74
- const enrichedFieldResponse = useEnrichedRangePickerField(_extends({
75
- variant: 'mobile',
76
- fieldType,
77
- // These direct access to `providerProps` will go away once the range fields handle the picker opening
78
- contextValue: providerProps.contextValue,
79
- fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
80
- readOnly,
81
- labelId,
82
- disableOpenPicker,
83
- localeText,
84
- pickerSlots: slots,
85
- pickerSlotProps: innerSlotProps,
86
- fieldProps,
87
- startFieldRef,
88
- endFieldRef,
89
- singleInputFieldRef
90
- }, rangePositionResponse));
91
57
  const Layout = slots?.layout ?? PickersLayout;
92
58
  const finalLocaleText = _extends({}, contextTranslations, localeText);
93
59
  let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
@@ -112,17 +78,21 @@ export const useMobileRangePicker = _ref => {
112
78
  mobilePaper: _extends({
113
79
  'aria-labelledby': labelledById
114
80
  }, innerSlotProps?.mobilePaper)
81
+ }, fieldType === 'multi-input' && {
82
+ textField: slotOwnerState => {
83
+ return _extends({}, resolveComponentProps(innerSlotProps?.textField, slotOwnerState), {
84
+ id: `${labelId}-${slotOwnerState.position}`
85
+ });
86
+ }
115
87
  });
116
88
  const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
117
- // This override will go away once the range fields handle the picker opening
118
- fieldPrivateContextValue: _extends({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
119
89
  children: /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {
120
90
  slots: slots,
121
91
  slotProps: slotProps,
122
92
  inputRef: inputRef,
123
93
  children: /*#__PURE__*/_jsxs(PickerRangePositionContext.Provider, {
124
94
  value: rangePositionResponse,
125
- children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldResponse.fieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
95
+ children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
126
96
  slots: slots,
127
97
  slotProps: slotProps,
128
98
  children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
@@ -1,7 +1,20 @@
1
- import { PickersModalDialogSlots, PickersModalDialogSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from "../models/useRangePicker.js";
3
- export interface UseMobileRangePickerSlots extends UseRangePickerSlots, PickersModalDialogSlots {}
4
- export interface UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickersModalDialogSlotProps {}
1
+ import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
2
+ import { PickerFieldSlotProps, PickerOwnerState } from '@mui/x-date-pickers/models';
3
+ import { PickersModalDialogSlots, PickersModalDialogSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem, PickerRangeValue, PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from '@mui/x-date-pickers/internals';
4
+ import { ExportedPickersLayoutSlotProps, ExportedPickersLayoutSlots, PickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
5
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps } from "../models/useRangePicker.js";
6
+ export interface UseMobileRangePickerSlots extends PickersModalDialogSlots, ExportedPickersLayoutSlots<PickerRangeValue>, PickerFieldUISlotsFromContext {
7
+ /**
8
+ * Component used to enter the date with the keyboard.
9
+ */
10
+ field: React.ElementType;
11
+ }
12
+ export interface ExportedUseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<PickerRangeValue>, PickerFieldUISlotPropsFromContext {
13
+ field?: SlotComponentPropsFromProps<PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & {
14
+ dateSeparator?: string;
15
+ }, {}, PickerOwnerState>;
16
+ }
17
+ export interface UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedUseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, Pick<PickersLayoutSlotProps<PickerRangeValue>, 'toolbar'> {}
5
18
  export interface MobileRangeOnlyPickerProps extends RangeOnlyPickerProps {}
6
19
  export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
7
20
  /**
@@ -1,6 +1,3 @@
1
- import * as React from 'react';
2
- import { FieldRef } from '@mui/x-date-pickers/models';
3
- import { PickerRangeValue } from '@mui/x-date-pickers/internals';
4
1
  import { RangePosition } from "../../models/index.js";
5
2
  export interface UseRangePositionProps {
6
3
  /**
@@ -24,4 +21,4 @@ export interface UseRangePositionResponse {
24
21
  rangePosition: RangePosition;
25
22
  setRangePosition: (newPosition: RangePosition) => void;
26
23
  }
27
- export declare const useRangePosition: (props: UseRangePositionProps, singleInputFieldRef?: React.RefObject<FieldRef<PickerRangeValue> | null>) => UseRangePositionResponse;
24
+ export declare const useRangePosition: (props: UseRangePositionProps) => UseRangePositionResponse;
@@ -1,32 +1,15 @@
1
1
  import useControlled from '@mui/utils/useControlled';
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
- export const useRangePosition = (props, singleInputFieldRef) => {
3
+ export const useRangePosition = props => {
4
4
  const [rangePosition, setRangePosition] = useControlled({
5
5
  name: 'useRangePosition',
6
6
  state: 'rangePosition',
7
7
  controlled: props.rangePosition,
8
8
  default: props.defaultRangePosition ?? 'start'
9
9
  });
10
-
11
- // When using a single input field,
12
- // we want to select the 1st section of the edited date when updating the range position.
13
- const syncRangePositionWithSingleInputField = newRangePosition => {
14
- if (singleInputFieldRef?.current == null) {
15
- return;
16
- }
17
- const sections = singleInputFieldRef.current.getSections();
18
- const targetActiveSectionIndex = newRangePosition === 'start' ? 0 : sections.length / 2;
19
- const activeSectionIndex = singleInputFieldRef.current.getActiveSectionIndex();
20
- // if the active section is already within the target range, we don't need to update it.
21
- if (activeSectionIndex && activeSectionIndex >= targetActiveSectionIndex && activeSectionIndex < targetActiveSectionIndex + sections.length / 2) {
22
- return;
23
- }
24
- singleInputFieldRef.current.setSelectedSections(targetActiveSectionIndex);
25
- };
26
10
  const handleRangePositionChange = useEventCallback(newRangePosition => {
27
11
  setRangePosition(newRangePosition);
28
12
  props.onRangePositionChange?.(newRangePosition);
29
- syncRangePositionWithSingleInputField(newRangePosition);
30
13
  });
31
14
  return {
32
15
  rangePosition,
@@ -39,10 +39,10 @@ export const useStaticRangePicker = _ref => {
39
39
  renderCurrentView
40
40
  } = usePicker(_extends({}, pickerParams, {
41
41
  props,
42
+ variant: displayStaticWrapperAs,
42
43
  autoFocusView: autoFocus ?? false,
43
- fieldRef: undefined,
44
- localeText,
45
- variant: displayStaticWrapperAs
44
+ viewContainerRole: null,
45
+ localeText
46
46
  }));
47
47
  const Layout = slots?.layout ?? PickerStaticLayout;
48
48
  const renderPicker = () => /*#__PURE__*/_jsx(PickerRangePositionContext.Provider, {
@@ -12,10 +12,11 @@ import { styled, useThemeProps } from '@mui/material/styles';
12
12
  import composeClasses from '@mui/utils/composeClasses';
13
13
  import useSlotProps from '@mui/utils/useSlotProps';
14
14
  import useForkRef from '@mui/utils/useForkRef';
15
- import { cleanFieldResponse, useFieldOwnerState, useNullablePickerContext } from '@mui/x-date-pickers/internals';
15
+ import { cleanFieldResponse, useFieldOwnerState, PickerFieldUIContext, useNullablePickerContext } from '@mui/x-date-pickers/internals';
16
16
  import { useSplitFieldProps } from '@mui/x-date-pickers/hooks';
17
17
  import { PickersTextField } from '@mui/x-date-pickers/PickersTextField';
18
18
  import { useMultiInputRangeField } from "../../../hooks/useMultiInputRangeField/index.js";
19
+ import { useTextFieldProps } from "./useTextFieldProps.js";
19
20
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
21
  export function createMultiInputRangeField({
21
22
  useManager,
@@ -52,14 +53,19 @@ export function createMultiInputRangeField({
52
53
  // eslint-disable-next-line material-ui/mui-name-matches-component-name
53
54
  name
54
55
  });
56
+ const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
57
+ const pickerContext = useNullablePickerContext();
55
58
  const manager = useManager({
56
59
  enableAccessibleFieldDOMStructure: props.enableAccessibleFieldDOMStructure,
57
60
  dateSeparator: props.dateSeparator
58
61
  });
59
62
  const {
60
- internalProps,
63
+ internalProps: rawInternalProps,
61
64
  forwardedProps
62
65
  } = useSplitFieldProps(themeProps, manager.valueType);
66
+ const internalProps = pickerContext?.variant === 'mobile' ? _extends({}, rawInternalProps, {
67
+ readOnly: true
68
+ }) : rawInternalProps;
63
69
  const {
64
70
  slots,
65
71
  slotProps,
@@ -69,7 +75,6 @@ export function createMultiInputRangeField({
69
75
  otherForwardedProps = _objectWithoutPropertiesLoose(forwardedProps, _excluded);
70
76
  const classes = useUtilityClasses(classesProp);
71
77
  const ownerState = useFieldOwnerState(internalProps);
72
- const pickerContext = useNullablePickerContext();
73
78
  const handleRef = useForkRef(ref, pickerContext?.rootRef);
74
79
  const Root = slots?.root ?? MultiInputRangeFieldRoot;
75
80
  const rootProps = useSlotProps({
@@ -82,29 +87,22 @@ export function createMultiInputRangeField({
82
87
  ownerState,
83
88
  className: clsx(className, classes.root)
84
89
  });
85
- const startTextFieldProps = useSlotProps({
86
- elementType: PickersTextField,
87
- externalSlotProps: slotProps?.textField,
88
- ownerState: _extends({}, ownerState, {
89
- position: 'start'
90
- })
90
+ const startTextFieldProps = useTextFieldProps({
91
+ slotProps,
92
+ ownerState,
93
+ position: 'start'
91
94
  });
92
- const endTextFieldProps = useSlotProps({
93
- elementType: PickersTextField,
94
- externalSlotProps: slotProps?.textField,
95
- ownerState: _extends({}, ownerState, {
96
- position: 'end'
97
- })
95
+ const endTextFieldProps = useTextFieldProps({
96
+ slotProps,
97
+ ownerState,
98
+ position: 'end'
98
99
  });
99
- const {
100
- startDate,
101
- endDate,
102
- enableAccessibleFieldDOMStructure
103
- } = useMultiInputRangeField({
100
+ const fieldResponse = useMultiInputRangeField({
104
101
  manager,
105
102
  internalProps,
106
- startForwardedProps: startTextFieldProps,
107
- endForwardedProps: endTextFieldProps
103
+ rootProps,
104
+ startTextFieldProps,
105
+ endTextFieldProps
108
106
  });
109
107
  const Separator = slots?.separator ?? MultiInputRangeFieldSeparator;
110
108
  const separatorProps = useSlotProps({
@@ -116,19 +114,15 @@ export function createMultiInputRangeField({
116
114
  ownerState,
117
115
  className: classes.separator
118
116
  });
119
- const {
120
- textFieldProps: startDateProps
121
- } = cleanFieldResponse(startDate);
122
- const {
123
- textFieldProps: endDateProps
124
- } = cleanFieldResponse(endDate);
125
- const TextField = slots?.textField ?? (enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
126
- return /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
117
+ const cleanStartTextFieldResponse = cleanFieldResponse(fieldResponse.startTextField);
118
+ const cleanEndTextFieldResponse = cleanFieldResponse(fieldResponse.endTextField);
119
+ const TextField = slots?.textField ?? pickerFieldUIContext.slots.textField ?? (fieldResponse.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
120
+ return /*#__PURE__*/_jsxs(Root, _extends({}, fieldResponse.root, {
127
121
  children: [/*#__PURE__*/_jsx(TextField, _extends({
128
122
  fullWidth: true
129
- }, startDateProps)), /*#__PURE__*/_jsx(Separator, _extends({}, separatorProps)), /*#__PURE__*/_jsx(TextField, _extends({
123
+ }, cleanStartTextFieldResponse.textFieldProps)), /*#__PURE__*/_jsx(Separator, _extends({}, separatorProps)), /*#__PURE__*/_jsx(TextField, _extends({
130
124
  fullWidth: true
131
- }, endDateProps))]
125
+ }, cleanEndTextFieldResponse.textFieldProps))]
132
126
  }));
133
127
  });
134
128
  MultiInputRangeField.fieldType = 'multi-input';
@@ -7,7 +7,7 @@ import { FieldOwnerState } from '@mui/x-date-pickers/models';
7
7
  import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps } from '@mui/x-date-pickers/internals';
8
8
  import { FieldType, MultiInputFieldRefs, RangeFieldSeparatorProps, RangePosition } from "../../../models/index.js";
9
9
  import { PickerAnyRangeManager } from "../../models/managers.js";
10
- export type MultiInputRangeFieldProps<TManager extends PickerAnyRangeManager> = MultiInputFieldRefs & RangeFieldSeparatorProps & Omit<PickerManagerFieldInternalProps<TManager>, 'unstableFieldRef' | 'clearable' | 'onClear'> & Omit<StackProps, 'position' | keyof PickerManagerFieldInternalProps<TManager>> & {
10
+ export type MultiInputRangeFieldProps<TManager extends PickerAnyRangeManager> = MultiInputFieldRefs & RangeFieldSeparatorProps & Omit<PickerManagerFieldInternalProps<TManager>, 'unstableFieldRef' | 'clearable' | 'onClear' | 'focused'> & Omit<StackProps, 'position' | keyof PickerManagerFieldInternalProps<TManager>> & {
11
11
  /**
12
12
  * If `true`, the field is focused during the first mount.
13
13
  * @default false