@mui/x-date-pickers 9.0.0-alpha.4 → 9.0.0
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.
- package/AdapterDateFnsBase/AdapterDateFnsBase.mjs +1 -1
- package/AdapterDayjs/AdapterDayjs.mjs +1 -1
- package/AdapterLuxon/AdapterLuxon.mjs +1 -1
- package/AdapterMoment/AdapterMoment.mjs +1 -1
- package/AdapterMomentHijri/AdapterMomentHijri.mjs +1 -1
- package/AdapterMomentJalaali/AdapterMomentJalaali.mjs +1 -1
- package/CHANGELOG.md +374 -2
- package/DateCalendar/DateCalendar.js +1 -1
- package/DateCalendar/DateCalendar.mjs +1 -1
- package/DateCalendar/DayCalendar.d.mts +7 -7
- package/DateCalendar/DayCalendar.d.ts +7 -7
- package/DateCalendar/DayCalendar.js +23 -25
- package/DateCalendar/DayCalendar.mjs +23 -25
- package/DateField/DateField.d.mts +1 -1
- package/DateField/DateField.d.ts +1 -1
- package/DateField/DateField.js +22 -28
- package/DateField/DateField.mjs +22 -28
- package/DateField/DateField.types.d.mts +3 -3
- package/DateField/DateField.types.d.ts +3 -3
- package/DateField/useDateField.d.mts +1 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +1 -1
- package/DateField/useDateField.mjs +1 -1
- package/DatePicker/DatePicker.d.mts +1 -1
- package/DatePicker/DatePicker.d.ts +1 -1
- package/DatePicker/DatePicker.js +1 -5
- package/DatePicker/DatePicker.mjs +1 -5
- package/DatePicker/DatePicker.types.d.mts +3 -3
- package/DatePicker/DatePicker.types.d.ts +3 -3
- package/DateTimeField/DateTimeField.d.mts +1 -1
- package/DateTimeField/DateTimeField.d.ts +1 -1
- package/DateTimeField/DateTimeField.js +22 -28
- package/DateTimeField/DateTimeField.mjs +22 -28
- package/DateTimeField/DateTimeField.types.d.mts +2 -2
- package/DateTimeField/DateTimeField.types.d.ts +2 -2
- package/DateTimeField/useDateTimeField.d.mts +1 -1
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +1 -1
- package/DateTimeField/useDateTimeField.mjs +1 -1
- package/DateTimePicker/DateTimePicker.d.mts +1 -1
- package/DateTimePicker/DateTimePicker.d.ts +1 -1
- package/DateTimePicker/DateTimePicker.js +1 -5
- package/DateTimePicker/DateTimePicker.mjs +1 -5
- package/DateTimePicker/DateTimePicker.types.d.mts +3 -3
- package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
- package/DesktopDatePicker/DesktopDatePicker.d.mts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.d.ts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +1 -5
- package/DesktopDatePicker/DesktopDatePicker.mjs +1 -5
- package/DesktopDatePicker/DesktopDatePicker.types.d.mts +3 -3
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +3 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.d.mts +1 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +1 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -5
- package/DesktopDateTimePicker/DesktopDateTimePicker.mjs +1 -5
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.mts +3 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +3 -3
- package/DesktopTimePicker/DesktopTimePicker.d.mts +1 -1
- package/DesktopTimePicker/DesktopTimePicker.d.ts +1 -1
- package/DesktopTimePicker/DesktopTimePicker.js +0 -4
- package/DesktopTimePicker/DesktopTimePicker.mjs +0 -4
- package/DesktopTimePicker/DesktopTimePicker.types.d.mts +3 -3
- package/DesktopTimePicker/DesktopTimePicker.types.d.ts +3 -3
- package/DigitalClock/DigitalClock.d.mts +1 -1
- package/DigitalClock/DigitalClock.d.ts +1 -1
- package/DigitalClock/DigitalClock.js +2 -2
- package/DigitalClock/DigitalClock.mjs +3 -3
- package/LocalizationProvider/LocalizationProvider.d.mts +0 -6
- package/LocalizationProvider/LocalizationProvider.d.ts +0 -6
- package/LocalizationProvider/LocalizationProvider.js +1 -10
- package/LocalizationProvider/LocalizationProvider.mjs +0 -9
- package/LocalizationProvider/index.d.mts +1 -1
- package/LocalizationProvider/index.d.ts +1 -1
- package/LocalizationProvider/index.js +0 -6
- package/LocalizationProvider/index.mjs +1 -1
- package/MobileDatePicker/MobileDatePicker.d.mts +1 -1
- package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
- package/MobileDatePicker/MobileDatePicker.js +1 -5
- package/MobileDatePicker/MobileDatePicker.mjs +1 -5
- package/MobileDatePicker/MobileDatePicker.types.d.mts +3 -3
- package/MobileDatePicker/MobileDatePicker.types.d.ts +3 -3
- package/MobileDateTimePicker/MobileDateTimePicker.d.mts +1 -1
- package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -1
- package/MobileDateTimePicker/MobileDateTimePicker.js +1 -5
- package/MobileDateTimePicker/MobileDateTimePicker.mjs +1 -5
- package/MobileDateTimePicker/MobileDateTimePicker.types.d.mts +3 -3
- package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +3 -3
- package/MobileTimePicker/MobileTimePicker.d.mts +1 -1
- package/MobileTimePicker/MobileTimePicker.d.ts +1 -1
- package/MobileTimePicker/MobileTimePicker.js +0 -4
- package/MobileTimePicker/MobileTimePicker.mjs +0 -4
- package/MobileTimePicker/MobileTimePicker.types.d.mts +3 -3
- package/MobileTimePicker/MobileTimePicker.types.d.ts +3 -3
- package/MonthCalendar/MonthCalendarButton.js +2 -2
- package/MonthCalendar/MonthCalendarButton.mjs +3 -3
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -2
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.mjs +3 -3
- package/PickerDay/PickerDay.d.mts +14 -0
- package/PickerDay/PickerDay.d.ts +14 -0
- package/{PickerDay2/PickerDay2.js → PickerDay/PickerDay.js} +110 -45
- package/{PickerDay2/PickerDay2.mjs → PickerDay/PickerDay.mjs} +110 -45
- package/PickerDay/PickerDay.types.d.mts +137 -0
- package/PickerDay/PickerDay.types.d.ts +137 -0
- package/PickerDay/index.d.mts +4 -0
- package/PickerDay/index.d.ts +4 -0
- package/PickerDay/index.js +25 -0
- package/PickerDay/index.mjs +2 -0
- package/{PickerDay2/pickerDay2Classes.d.mts → PickerDay/pickerDayClasses.d.mts} +4 -4
- package/{PickerDay2/pickerDay2Classes.d.ts → PickerDay/pickerDayClasses.d.ts} +4 -4
- package/PickerDay/pickerDayClasses.js +14 -0
- package/PickerDay/pickerDayClasses.mjs +6 -0
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +37 -16
- package/PickersTextField/PickersFilledInput/PickersFilledInput.mjs +37 -16
- package/PickersTextField/PickersInput/PickersInput.js +35 -14
- package/PickersTextField/PickersInput/PickersInput.mjs +35 -14
- package/PickersTextField/PickersInputBase/PickersInputBase.js +38 -8
- package/PickersTextField/PickersInputBase/PickersInputBase.mjs +38 -8
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.mts +56 -13
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +56 -13
- package/PickersTextField/PickersOutlinedInput/Outline.js +1 -1
- package/PickersTextField/PickersOutlinedInput/Outline.mjs +1 -1
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +33 -11
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.mjs +33 -11
- package/PickersTextField/PickersTextField.js +92 -39
- package/PickersTextField/PickersTextField.mjs +92 -39
- package/PickersTextField/PickersTextField.types.d.mts +56 -28
- package/PickersTextField/PickersTextField.types.d.ts +56 -28
- package/PickersTextField/index.d.mts +1 -1
- package/PickersTextField/index.d.ts +1 -1
- package/StaticDatePicker/StaticDatePicker.js +1 -1
- package/StaticDatePicker/StaticDatePicker.mjs +1 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/StaticDateTimePicker/StaticDateTimePicker.mjs +1 -1
- package/TimeField/TimeField.d.mts +1 -1
- package/TimeField/TimeField.d.ts +1 -1
- package/TimeField/TimeField.js +23 -29
- package/TimeField/TimeField.mjs +23 -29
- package/TimeField/TimeField.types.d.mts +2 -2
- package/TimeField/TimeField.types.d.ts +2 -2
- package/TimeField/useTimeField.d.mts +1 -1
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimePicker/TimePicker.d.mts +1 -1
- package/TimePicker/TimePicker.d.ts +1 -1
- package/TimePicker/TimePicker.js +0 -4
- package/TimePicker/TimePicker.mjs +0 -4
- package/TimePicker/TimePicker.types.d.mts +3 -3
- package/TimePicker/TimePicker.types.d.ts +3 -3
- package/YearCalendar/YearCalendarButton.js +2 -2
- package/YearCalendar/YearCalendarButton.mjs +3 -3
- package/hooks/useParsedFormat.js +5 -7
- package/hooks/useParsedFormat.mjs +5 -7
- package/hooks/useSplitFieldProps.d.mts +1 -1
- package/hooks/useSplitFieldProps.d.ts +1 -1
- package/hooks/useSplitFieldProps.js +1 -1
- package/hooks/useSplitFieldProps.mjs +1 -1
- package/index.d.mts +1 -2
- package/index.d.ts +1 -2
- package/index.js +2 -14
- package/index.mjs +2 -3
- package/internals/components/PickerFieldUI.d.mts +11 -17
- package/internals/components/PickerFieldUI.d.ts +11 -17
- package/internals/components/PickerFieldUI.js +65 -114
- package/internals/components/PickerFieldUI.mjs +65 -114
- package/internals/components/PickerPopper/PickerPopper.js +3 -0
- package/internals/components/PickerPopper/PickerPopper.mjs +3 -0
- package/internals/components/PickersToolbar.js +3 -1
- package/internals/components/PickersToolbar.mjs +3 -1
- package/internals/demo/DemoContainer.js +6 -8
- package/internals/demo/DemoContainer.mjs +6 -8
- package/internals/hooks/PickerDay.types.d.mts +12 -0
- package/internals/hooks/PickerDay.types.d.ts +12 -0
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.mts +2 -2
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.mts +6 -6
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +6 -6
- package/internals/hooks/useField/buildSectionsFromFormat.d.mts +0 -1
- package/internals/hooks/useField/buildSectionsFromFormat.d.ts +0 -1
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/buildSectionsFromFormat.mjs +1 -1
- package/internals/hooks/useField/index.d.mts +1 -1
- package/internals/hooks/useField/index.d.ts +1 -1
- package/internals/hooks/useField/index.js +2 -8
- package/internals/hooks/useField/index.mjs +1 -1
- package/internals/hooks/useField/useField.d.mts +2 -2
- package/internals/hooks/useField/useField.d.ts +2 -2
- package/internals/hooks/useField/useField.js +265 -8
- package/internals/hooks/useField/useField.mjs +264 -8
- package/internals/hooks/useField/useField.types.d.mts +11 -50
- package/internals/hooks/useField/useField.types.d.ts +11 -50
- package/internals/hooks/useField/useField.utils.d.mts +2 -3
- package/internals/hooks/useField/useField.utils.d.ts +2 -3
- package/internals/hooks/useField/useField.utils.js +8 -65
- package/internals/hooks/useField/useField.utils.mjs +6 -62
- package/internals/hooks/useField/useFieldHiddenInputProps.d.mts +2 -4
- package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +2 -4
- package/internals/hooks/useField/useFieldHiddenInputProps.js +1 -3
- package/internals/hooks/useField/useFieldHiddenInputProps.mjs +1 -3
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +0 -1
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.mjs +0 -1
- package/internals/hooks/useField/useFieldRootProps.d.mts +5 -5
- package/internals/hooks/useField/useFieldRootProps.d.ts +5 -5
- package/internals/hooks/useField/useFieldRootProps.js +183 -11
- package/internals/hooks/useField/useFieldRootProps.mjs +183 -11
- package/internals/hooks/useField/useFieldSectionContainerProps.d.mts +3 -5
- package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +3 -5
- package/internals/hooks/useField/useFieldSectionContainerProps.js +2 -4
- package/internals/hooks/useField/useFieldSectionContainerProps.mjs +2 -4
- package/internals/hooks/useField/useFieldSectionContentProps.d.mts +6 -7
- package/internals/hooks/useField/useFieldSectionContentProps.d.ts +6 -7
- package/internals/hooks/useField/useFieldSectionContentProps.js +2 -4
- package/internals/hooks/useField/useFieldSectionContentProps.mjs +2 -4
- package/internals/hooks/useField/useFieldState.d.mts +4 -4
- package/internals/hooks/useField/useFieldState.d.ts +4 -4
- package/internals/hooks/useField/useFieldState.js +3 -6
- package/internals/hooks/useField/useFieldState.mjs +3 -6
- package/internals/hooks/useMobilePicker/useMobilePicker.d.mts +2 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.mts +6 -6
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +6 -6
- package/internals/hooks/useNullableFieldPrivateContext.d.mts +1 -1
- package/internals/hooks/useNullableFieldPrivateContext.d.ts +1 -1
- package/internals/hooks/usePicker/usePicker.js +1 -3
- package/internals/hooks/usePicker/usePicker.mjs +1 -3
- package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.mts +2 -3
- package/{PickersDay → internals/hooks}/usePickerDayOwnerState.d.ts +2 -3
- package/{PickersDay → internals/hooks}/usePickerDayOwnerState.js +3 -5
- package/{PickersDay → internals/hooks}/usePickerDayOwnerState.mjs +3 -5
- package/internals/index.d.mts +4 -4
- package/internals/index.d.ts +4 -4
- package/internals/index.js +9 -9
- package/internals/index.mjs +3 -3
- package/internals/models/manager.d.mts +3 -5
- package/internals/models/manager.d.ts +3 -5
- package/internals/utils/valueManagers.js +1 -2
- package/internals/utils/valueManagers.mjs +2 -3
- package/managers/index.d.mts +2 -2
- package/managers/index.d.ts +2 -2
- package/managers/useDateManager.d.mts +3 -6
- package/managers/useDateManager.d.ts +3 -6
- package/managers/useDateManager.js +2 -6
- package/managers/useDateManager.mjs +2 -6
- package/managers/useDateTimeManager.d.mts +3 -6
- package/managers/useDateTimeManager.d.ts +3 -6
- package/managers/useDateTimeManager.js +2 -6
- package/managers/useDateTimeManager.mjs +2 -6
- package/managers/useTimeManager.d.mts +4 -6
- package/managers/useTimeManager.d.ts +4 -6
- package/managers/useTimeManager.js +1 -3
- package/managers/useTimeManager.mjs +1 -3
- package/models/fields.d.mts +3 -4
- package/models/fields.d.ts +3 -4
- package/models/manager.d.mts +2 -8
- package/models/manager.d.ts +2 -8
- package/package.json +55 -69
- package/themeAugmentation/components.d.mts +4 -8
- package/themeAugmentation/components.d.ts +4 -8
- package/themeAugmentation/overrides.d.mts +2 -4
- package/themeAugmentation/overrides.d.ts +2 -4
- package/themeAugmentation/props.d.mts +5 -7
- package/themeAugmentation/props.d.ts +5 -7
- package/PickerDay2/PickerDay2.d.mts +0 -7
- package/PickerDay2/PickerDay2.d.ts +0 -7
- package/PickerDay2/PickerDay2.types.d.mts +0 -18
- package/PickerDay2/PickerDay2.types.d.ts +0 -18
- package/PickerDay2/index.d.mts +0 -4
- package/PickerDay2/index.d.ts +0 -4
- package/PickerDay2/index.js +0 -25
- package/PickerDay2/index.mjs +0 -2
- package/PickerDay2/pickerDay2Classes.js +0 -14
- package/PickerDay2/pickerDay2Classes.mjs +0 -6
- package/PickersDay/PickersDay.d.mts +0 -15
- package/PickersDay/PickersDay.d.ts +0 -15
- package/PickersDay/PickersDay.js +0 -384
- package/PickersDay/PickersDay.mjs +0 -377
- package/PickersDay/PickersDay.types.d.mts +0 -114
- package/PickersDay/PickersDay.types.d.ts +0 -114
- package/PickersDay/index.d.mts +0 -4
- package/PickersDay/index.d.ts +0 -4
- package/PickersDay/index.js +0 -25
- package/PickersDay/index.mjs +0 -2
- package/PickersDay/pickersDayClasses.d.mts +0 -19
- package/PickersDay/pickersDayClasses.d.ts +0 -19
- package/PickersDay/pickersDayClasses.js +0 -14
- package/PickersDay/pickersDayClasses.mjs +0 -6
- package/internals/hooks/useField/useFieldRootHandleKeyDown.d.mts +0 -16
- package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +0 -16
- package/internals/hooks/useField/useFieldRootHandleKeyDown.js +0 -211
- package/internals/hooks/useField/useFieldRootHandleKeyDown.mjs +0 -205
- package/internals/hooks/useField/useFieldV6TextField.d.mts +0 -26
- package/internals/hooks/useField/useFieldV6TextField.d.ts +0 -26
- package/internals/hooks/useField/useFieldV6TextField.js +0 -422
- package/internals/hooks/useField/useFieldV6TextField.mjs +0 -413
- package/internals/hooks/useField/useFieldV7TextField.d.mts +0 -3
- package/internals/hooks/useField/useFieldV7TextField.d.ts +0 -3
- package/internals/hooks/useField/useFieldV7TextField.js +0 -272
- package/internals/hooks/useField/useFieldV7TextField.mjs +0 -264
- /package/{PickerDay2/PickerDay2.types.js → PickerDay/PickerDay.types.js} +0 -0
- /package/{PickerDay2/PickerDay2.types.mjs → PickerDay/PickerDay.types.mjs} +0 -0
- /package/{PickersDay/PickersDay.types.js → internals/hooks/PickerDay.types.js} +0 -0
- /package/{PickersDay/PickersDay.types.mjs → internals/hooks/PickerDay.types.mjs} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { useField } from "./useField.mjs";
|
|
2
|
-
export {
|
|
2
|
+
export { createDateStrForHiddenInputFromSections } from "./useField.utils.mjs";
|
|
3
3
|
export { useFieldInternalPropsWithDefaults } from "./useFieldInternalPropsWithDefaults.mjs";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { UseFieldParameters,
|
|
1
|
+
import { UseFieldParameters, UseFieldProps, UseFieldReturnValue } from "./useField.types.mjs";
|
|
2
2
|
import { PickerValidValue } from "../../models/index.mjs";
|
|
3
|
-
export declare const useField: <TValue extends PickerValidValue,
|
|
3
|
+
export declare const useField: <TValue extends PickerValidValue, TError, TValidationProps extends {}, TProps extends UseFieldProps>(parameters: UseFieldParameters<TValue, TError, TValidationProps, TProps>) => UseFieldReturnValue<TProps>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { UseFieldParameters,
|
|
1
|
+
import { UseFieldParameters, UseFieldProps, UseFieldReturnValue } from "./useField.types.js";
|
|
2
2
|
import { PickerValidValue } from "../../models/index.js";
|
|
3
|
-
export declare const useField: <TValue extends PickerValidValue,
|
|
3
|
+
export declare const useField: <TValue extends PickerValidValue, TError, TValidationProps extends {}, TProps extends UseFieldProps>(parameters: UseFieldParameters<TValue, TError, TValidationProps, TProps>) => UseFieldReturnValue<TProps>;
|
|
@@ -1,16 +1,273 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
6
|
Object.defineProperty(exports, "__esModule", {
|
|
4
7
|
value: true
|
|
5
8
|
});
|
|
6
9
|
exports.useField = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage"));
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
14
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
15
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
16
|
+
var _warning = require("@mui/x-internals/warning");
|
|
17
|
+
var _useField = require("./useField.utils");
|
|
18
|
+
var _utils = require("../../utils/utils");
|
|
19
|
+
var _hooks = require("../../../hooks");
|
|
20
|
+
var _useFieldCharacterEditing = require("./useFieldCharacterEditing");
|
|
21
|
+
var _useFieldState = require("./useFieldState");
|
|
22
|
+
var _useFieldInternalPropsWithDefaults = require("./useFieldInternalPropsWithDefaults");
|
|
23
|
+
var _syncSelectionToDOM = require("./syncSelectionToDOM");
|
|
24
|
+
var _useFieldRootProps = require("./useFieldRootProps");
|
|
25
|
+
var _useFieldHiddenInputProps = require("./useFieldHiddenInputProps");
|
|
26
|
+
var _useFieldSectionContainerProps = require("./useFieldSectionContainerProps");
|
|
27
|
+
var _useFieldSectionContentProps = require("./useFieldSectionContentProps");
|
|
10
28
|
const useField = parameters => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
29
|
+
const {
|
|
30
|
+
props,
|
|
31
|
+
manager,
|
|
32
|
+
skipContextFieldRefAssignment,
|
|
33
|
+
manager: {
|
|
34
|
+
valueType,
|
|
35
|
+
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
36
|
+
}
|
|
37
|
+
} = parameters;
|
|
38
|
+
const {
|
|
39
|
+
internalProps,
|
|
40
|
+
forwardedProps
|
|
41
|
+
} = (0, _hooks.useSplitFieldProps)(props, valueType);
|
|
42
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
43
|
+
if (forwardedProps.enableAccessibleFieldDOMStructure != null) {
|
|
44
|
+
(0, _warning.warnOnce)(['MUI X: The `enableAccessibleFieldDOMStructure` prop has been removed.', 'The accessible DOM structure is now the default and only option.', 'You can safely remove the prop from your code.', 'For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v8/).']);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const internalPropsWithDefaults = (0, _useFieldInternalPropsWithDefaults.useFieldInternalPropsWithDefaults)({
|
|
48
|
+
manager,
|
|
49
|
+
internalProps,
|
|
50
|
+
skipContextFieldRefAssignment
|
|
51
|
+
});
|
|
52
|
+
const {
|
|
53
|
+
sectionListRef: sectionListRefProp,
|
|
54
|
+
onBlur,
|
|
55
|
+
onClick,
|
|
56
|
+
onFocus,
|
|
57
|
+
onInput,
|
|
58
|
+
onPaste,
|
|
59
|
+
onKeyDown,
|
|
60
|
+
onClear,
|
|
61
|
+
clearable
|
|
62
|
+
} = forwardedProps;
|
|
63
|
+
const {
|
|
64
|
+
disabled = false,
|
|
65
|
+
readOnly = false,
|
|
66
|
+
autoFocus = false,
|
|
67
|
+
focused: focusedProp,
|
|
68
|
+
fieldRef
|
|
69
|
+
} = internalPropsWithDefaults;
|
|
70
|
+
const sectionListRef = React.useRef(null);
|
|
71
|
+
const handleSectionListRef = (0, _useForkRef.default)(sectionListRefProp, sectionListRef);
|
|
72
|
+
const domGetters = React.useMemo(() => ({
|
|
73
|
+
isReady: () => sectionListRef.current != null,
|
|
74
|
+
getRoot: () => sectionListRef.current.getRoot(),
|
|
75
|
+
getSectionContainer: sectionIndex => sectionListRef.current.getSectionContainer(sectionIndex),
|
|
76
|
+
getSectionContent: sectionIndex => sectionListRef.current.getSectionContent(sectionIndex),
|
|
77
|
+
getSectionIndexFromDOMElement: element => sectionListRef.current.getSectionIndexFromDOMElement(element)
|
|
78
|
+
}), [sectionListRef]);
|
|
79
|
+
const stateResponse = (0, _useFieldState.useFieldState)({
|
|
80
|
+
manager,
|
|
81
|
+
internalPropsWithDefaults,
|
|
82
|
+
forwardedProps
|
|
83
|
+
});
|
|
84
|
+
const {
|
|
85
|
+
// States and derived states
|
|
86
|
+
areAllSectionsEmpty,
|
|
87
|
+
error,
|
|
88
|
+
parsedSelectedSections,
|
|
89
|
+
sectionOrder,
|
|
90
|
+
state,
|
|
91
|
+
value,
|
|
92
|
+
// Methods to update the states
|
|
93
|
+
clearValue,
|
|
94
|
+
setSelectedSections
|
|
95
|
+
} = stateResponse;
|
|
96
|
+
const applyCharacterEditing = (0, _useFieldCharacterEditing.useFieldCharacterEditing)({
|
|
97
|
+
stateResponse
|
|
98
|
+
});
|
|
99
|
+
const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);
|
|
100
|
+
const [focused, setFocused] = React.useState(false);
|
|
101
|
+
function focusField(newSelectedSections = 0) {
|
|
102
|
+
if (disabled || !sectionListRef.current ||
|
|
103
|
+
// if the field is already focused, we don't need to focus it again
|
|
104
|
+
getActiveSectionIndex(sectionListRef) != null) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
108
|
+
setFocused(true);
|
|
109
|
+
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
110
|
+
}
|
|
111
|
+
const rootProps = (0, _useFieldRootProps.useFieldRootProps)({
|
|
112
|
+
manager,
|
|
113
|
+
internalPropsWithDefaults,
|
|
114
|
+
stateResponse,
|
|
115
|
+
applyCharacterEditing,
|
|
116
|
+
focused,
|
|
117
|
+
setFocused,
|
|
118
|
+
domGetters
|
|
119
|
+
});
|
|
120
|
+
const hiddenInputProps = (0, _useFieldHiddenInputProps.useFieldHiddenInputProps)({
|
|
121
|
+
manager,
|
|
122
|
+
stateResponse
|
|
123
|
+
});
|
|
124
|
+
const createSectionContainerProps = (0, _useFieldSectionContainerProps.useFieldSectionContainerProps)({
|
|
125
|
+
stateResponse,
|
|
126
|
+
internalPropsWithDefaults
|
|
127
|
+
});
|
|
128
|
+
const createSectionContentProps = (0, _useFieldSectionContentProps.useFieldSectionContentProps)({
|
|
129
|
+
manager,
|
|
130
|
+
stateResponse,
|
|
131
|
+
applyCharacterEditing,
|
|
132
|
+
internalPropsWithDefaults,
|
|
133
|
+
domGetters,
|
|
134
|
+
focused
|
|
135
|
+
});
|
|
136
|
+
const handleRootKeyDown = (0, _useEventCallback.default)(event => {
|
|
137
|
+
onKeyDown?.(event);
|
|
138
|
+
rootProps.onKeyDown(event);
|
|
139
|
+
});
|
|
140
|
+
const handleRootBlur = (0, _useEventCallback.default)(event => {
|
|
141
|
+
onBlur?.(event);
|
|
142
|
+
rootProps.onBlur(event);
|
|
143
|
+
});
|
|
144
|
+
const handleRootFocus = (0, _useEventCallback.default)(event => {
|
|
145
|
+
onFocus?.(event);
|
|
146
|
+
rootProps.onFocus(event);
|
|
147
|
+
});
|
|
148
|
+
const handleRootClick = (0, _useEventCallback.default)(event => {
|
|
149
|
+
// The click event on the clear or open button would propagate to the input, trigger this handler and result in an inadvertent section selection.
|
|
150
|
+
// We avoid this by checking if the call of `handleInputClick` is actually intended, or a propagated call, which should be skipped.
|
|
151
|
+
if (event.isDefaultPrevented()) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
onClick?.(event);
|
|
155
|
+
rootProps.onClick(event);
|
|
156
|
+
});
|
|
157
|
+
const handleRootPaste = (0, _useEventCallback.default)(event => {
|
|
158
|
+
onPaste?.(event);
|
|
159
|
+
rootProps.onPaste(event);
|
|
160
|
+
});
|
|
161
|
+
const handleRootInput = (0, _useEventCallback.default)(event => {
|
|
162
|
+
onInput?.(event);
|
|
163
|
+
rootProps.onInput(event);
|
|
164
|
+
});
|
|
165
|
+
const handleClear = (0, _useEventCallback.default)((event, ...args) => {
|
|
166
|
+
event.preventDefault();
|
|
167
|
+
onClear?.(event, ...args);
|
|
168
|
+
clearValue();
|
|
169
|
+
if (!isFieldFocused(sectionListRef)) {
|
|
170
|
+
// setSelectedSections is called internally
|
|
171
|
+
focusField(0);
|
|
172
|
+
} else {
|
|
173
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
const elements = React.useMemo(() => {
|
|
177
|
+
return state.sections.map((section, sectionIndex) => {
|
|
178
|
+
const content = createSectionContentProps(section, sectionIndex);
|
|
179
|
+
return {
|
|
180
|
+
container: createSectionContainerProps(sectionIndex),
|
|
181
|
+
content,
|
|
182
|
+
before: {
|
|
183
|
+
children: section.startSeparator
|
|
184
|
+
},
|
|
185
|
+
after: {
|
|
186
|
+
children: section.endSeparator,
|
|
187
|
+
'data-range-position': section.isEndFormatSeparator ? content['data-range-position'] : undefined
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
});
|
|
191
|
+
}, [state.sections, createSectionContainerProps, createSectionContentProps]);
|
|
192
|
+
React.useEffect(() => {
|
|
193
|
+
if (sectionListRef.current == null) {
|
|
194
|
+
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X: The \`sectionListRef\` prop has not been initialized by \`PickersSectionList\`
|
|
195
|
+
You probably tried to pass a component to the \`textField\` slot that contains an \`<input />\` element instead of a \`PickersSectionList\`.
|
|
196
|
+
|
|
197
|
+
Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element` : (0, _formatErrorMessage2.default)(249));
|
|
198
|
+
}
|
|
199
|
+
if (autoFocus && !disabled) {
|
|
200
|
+
sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();
|
|
201
|
+
}
|
|
202
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
203
|
+
|
|
204
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
205
|
+
if (!focused || !sectionListRef.current) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (parsedSelectedSections === 'all') {
|
|
209
|
+
sectionListRef.current.getRoot().focus();
|
|
210
|
+
} else if (typeof parsedSelectedSections === 'number') {
|
|
211
|
+
const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
212
|
+
if (domElement) {
|
|
213
|
+
domElement.focus();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}, [parsedSelectedSections, focused]);
|
|
217
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
218
|
+
(0, _syncSelectionToDOM.syncSelectionToDOM)({
|
|
219
|
+
focused,
|
|
220
|
+
domGetters,
|
|
221
|
+
stateResponse
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
React.useImperativeHandle(fieldRef, () => ({
|
|
225
|
+
getSections: () => state.sections,
|
|
226
|
+
getActiveSectionIndex: () => getActiveSectionIndex(sectionListRef),
|
|
227
|
+
setSelectedSections: newSelectedSections => {
|
|
228
|
+
if (disabled || !sectionListRef.current) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
232
|
+
const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
|
|
233
|
+
setFocused(newActiveSectionIndex !== null);
|
|
234
|
+
setSelectedSections(newSelectedSections);
|
|
235
|
+
},
|
|
236
|
+
focusField,
|
|
237
|
+
isFieldFocused: () => isFieldFocused(sectionListRef),
|
|
238
|
+
clearValue
|
|
239
|
+
}));
|
|
240
|
+
return (0, _extends2.default)({}, forwardedProps, rootProps, {
|
|
241
|
+
onBlur: handleRootBlur,
|
|
242
|
+
onClick: handleRootClick,
|
|
243
|
+
onFocus: handleRootFocus,
|
|
244
|
+
onInput: handleRootInput,
|
|
245
|
+
onPaste: handleRootPaste,
|
|
246
|
+
onKeyDown: handleRootKeyDown,
|
|
247
|
+
onClear: handleClear
|
|
248
|
+
}, hiddenInputProps, {
|
|
249
|
+
error,
|
|
250
|
+
clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
|
|
251
|
+
focused: focusedProp ?? focused,
|
|
252
|
+
sectionListRef: handleSectionListRef,
|
|
253
|
+
// Additional
|
|
254
|
+
elements,
|
|
255
|
+
areAllSectionsEmpty,
|
|
256
|
+
disabled,
|
|
257
|
+
readOnly,
|
|
258
|
+
autoFocus,
|
|
259
|
+
openPickerAriaLabel
|
|
260
|
+
});
|
|
15
261
|
};
|
|
16
|
-
exports.useField = useField;
|
|
262
|
+
exports.useField = useField;
|
|
263
|
+
function getActiveSectionIndex(sectionListRef) {
|
|
264
|
+
const activeElement = (0, _utils.getActiveElement)(sectionListRef.current?.getRoot());
|
|
265
|
+
if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
|
|
269
|
+
}
|
|
270
|
+
function isFieldFocused(sectionListRef) {
|
|
271
|
+
const activeElement = (0, _utils.getActiveElement)(sectionListRef.current?.getRoot());
|
|
272
|
+
return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
|
|
273
|
+
}
|
|
@@ -1,9 +1,265 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import useForkRef from '@mui/utils/useForkRef';
|
|
7
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
8
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
9
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
10
|
+
import { parseSelectedSections } from "./useField.utils.mjs";
|
|
11
|
+
import { getActiveElement } from "../../utils/utils.mjs";
|
|
12
|
+
import { useSplitFieldProps } from "../../../hooks/index.mjs";
|
|
13
|
+
import { useFieldCharacterEditing } from "./useFieldCharacterEditing.mjs";
|
|
14
|
+
import { useFieldState } from "./useFieldState.mjs";
|
|
15
|
+
import { useFieldInternalPropsWithDefaults } from "./useFieldInternalPropsWithDefaults.mjs";
|
|
16
|
+
import { syncSelectionToDOM } from "./syncSelectionToDOM.mjs";
|
|
17
|
+
import { useFieldRootProps } from "./useFieldRootProps.mjs";
|
|
18
|
+
import { useFieldHiddenInputProps } from "./useFieldHiddenInputProps.mjs";
|
|
19
|
+
import { useFieldSectionContainerProps } from "./useFieldSectionContainerProps.mjs";
|
|
20
|
+
import { useFieldSectionContentProps } from "./useFieldSectionContentProps.mjs";
|
|
4
21
|
export const useField = parameters => {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
22
|
+
const {
|
|
23
|
+
props,
|
|
24
|
+
manager,
|
|
25
|
+
skipContextFieldRefAssignment,
|
|
26
|
+
manager: {
|
|
27
|
+
valueType,
|
|
28
|
+
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
29
|
+
}
|
|
30
|
+
} = parameters;
|
|
31
|
+
const {
|
|
32
|
+
internalProps,
|
|
33
|
+
forwardedProps
|
|
34
|
+
} = useSplitFieldProps(props, valueType);
|
|
35
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
36
|
+
if (forwardedProps.enableAccessibleFieldDOMStructure != null) {
|
|
37
|
+
warnOnce(['MUI X: The `enableAccessibleFieldDOMStructure` prop has been removed.', 'The accessible DOM structure is now the default and only option.', 'You can safely remove the prop from your code.', 'For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v8/).']);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
41
|
+
manager,
|
|
42
|
+
internalProps,
|
|
43
|
+
skipContextFieldRefAssignment
|
|
44
|
+
});
|
|
45
|
+
const {
|
|
46
|
+
sectionListRef: sectionListRefProp,
|
|
47
|
+
onBlur,
|
|
48
|
+
onClick,
|
|
49
|
+
onFocus,
|
|
50
|
+
onInput,
|
|
51
|
+
onPaste,
|
|
52
|
+
onKeyDown,
|
|
53
|
+
onClear,
|
|
54
|
+
clearable
|
|
55
|
+
} = forwardedProps;
|
|
56
|
+
const {
|
|
57
|
+
disabled = false,
|
|
58
|
+
readOnly = false,
|
|
59
|
+
autoFocus = false,
|
|
60
|
+
focused: focusedProp,
|
|
61
|
+
fieldRef
|
|
62
|
+
} = internalPropsWithDefaults;
|
|
63
|
+
const sectionListRef = React.useRef(null);
|
|
64
|
+
const handleSectionListRef = useForkRef(sectionListRefProp, sectionListRef);
|
|
65
|
+
const domGetters = React.useMemo(() => ({
|
|
66
|
+
isReady: () => sectionListRef.current != null,
|
|
67
|
+
getRoot: () => sectionListRef.current.getRoot(),
|
|
68
|
+
getSectionContainer: sectionIndex => sectionListRef.current.getSectionContainer(sectionIndex),
|
|
69
|
+
getSectionContent: sectionIndex => sectionListRef.current.getSectionContent(sectionIndex),
|
|
70
|
+
getSectionIndexFromDOMElement: element => sectionListRef.current.getSectionIndexFromDOMElement(element)
|
|
71
|
+
}), [sectionListRef]);
|
|
72
|
+
const stateResponse = useFieldState({
|
|
73
|
+
manager,
|
|
74
|
+
internalPropsWithDefaults,
|
|
75
|
+
forwardedProps
|
|
76
|
+
});
|
|
77
|
+
const {
|
|
78
|
+
// States and derived states
|
|
79
|
+
areAllSectionsEmpty,
|
|
80
|
+
error,
|
|
81
|
+
parsedSelectedSections,
|
|
82
|
+
sectionOrder,
|
|
83
|
+
state,
|
|
84
|
+
value,
|
|
85
|
+
// Methods to update the states
|
|
86
|
+
clearValue,
|
|
87
|
+
setSelectedSections
|
|
88
|
+
} = stateResponse;
|
|
89
|
+
const applyCharacterEditing = useFieldCharacterEditing({
|
|
90
|
+
stateResponse
|
|
91
|
+
});
|
|
92
|
+
const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);
|
|
93
|
+
const [focused, setFocused] = React.useState(false);
|
|
94
|
+
function focusField(newSelectedSections = 0) {
|
|
95
|
+
if (disabled || !sectionListRef.current ||
|
|
96
|
+
// if the field is already focused, we don't need to focus it again
|
|
97
|
+
getActiveSectionIndex(sectionListRef) != null) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
|
|
101
|
+
setFocused(true);
|
|
102
|
+
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
103
|
+
}
|
|
104
|
+
const rootProps = useFieldRootProps({
|
|
105
|
+
manager,
|
|
106
|
+
internalPropsWithDefaults,
|
|
107
|
+
stateResponse,
|
|
108
|
+
applyCharacterEditing,
|
|
109
|
+
focused,
|
|
110
|
+
setFocused,
|
|
111
|
+
domGetters
|
|
112
|
+
});
|
|
113
|
+
const hiddenInputProps = useFieldHiddenInputProps({
|
|
114
|
+
manager,
|
|
115
|
+
stateResponse
|
|
116
|
+
});
|
|
117
|
+
const createSectionContainerProps = useFieldSectionContainerProps({
|
|
118
|
+
stateResponse,
|
|
119
|
+
internalPropsWithDefaults
|
|
120
|
+
});
|
|
121
|
+
const createSectionContentProps = useFieldSectionContentProps({
|
|
122
|
+
manager,
|
|
123
|
+
stateResponse,
|
|
124
|
+
applyCharacterEditing,
|
|
125
|
+
internalPropsWithDefaults,
|
|
126
|
+
domGetters,
|
|
127
|
+
focused
|
|
128
|
+
});
|
|
129
|
+
const handleRootKeyDown = useEventCallback(event => {
|
|
130
|
+
onKeyDown?.(event);
|
|
131
|
+
rootProps.onKeyDown(event);
|
|
132
|
+
});
|
|
133
|
+
const handleRootBlur = useEventCallback(event => {
|
|
134
|
+
onBlur?.(event);
|
|
135
|
+
rootProps.onBlur(event);
|
|
136
|
+
});
|
|
137
|
+
const handleRootFocus = useEventCallback(event => {
|
|
138
|
+
onFocus?.(event);
|
|
139
|
+
rootProps.onFocus(event);
|
|
140
|
+
});
|
|
141
|
+
const handleRootClick = useEventCallback(event => {
|
|
142
|
+
// The click event on the clear or open button would propagate to the input, trigger this handler and result in an inadvertent section selection.
|
|
143
|
+
// We avoid this by checking if the call of `handleInputClick` is actually intended, or a propagated call, which should be skipped.
|
|
144
|
+
if (event.isDefaultPrevented()) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
onClick?.(event);
|
|
148
|
+
rootProps.onClick(event);
|
|
149
|
+
});
|
|
150
|
+
const handleRootPaste = useEventCallback(event => {
|
|
151
|
+
onPaste?.(event);
|
|
152
|
+
rootProps.onPaste(event);
|
|
153
|
+
});
|
|
154
|
+
const handleRootInput = useEventCallback(event => {
|
|
155
|
+
onInput?.(event);
|
|
156
|
+
rootProps.onInput(event);
|
|
157
|
+
});
|
|
158
|
+
const handleClear = useEventCallback((event, ...args) => {
|
|
159
|
+
event.preventDefault();
|
|
160
|
+
onClear?.(event, ...args);
|
|
161
|
+
clearValue();
|
|
162
|
+
if (!isFieldFocused(sectionListRef)) {
|
|
163
|
+
// setSelectedSections is called internally
|
|
164
|
+
focusField(0);
|
|
165
|
+
} else {
|
|
166
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
const elements = React.useMemo(() => {
|
|
170
|
+
return state.sections.map((section, sectionIndex) => {
|
|
171
|
+
const content = createSectionContentProps(section, sectionIndex);
|
|
172
|
+
return {
|
|
173
|
+
container: createSectionContainerProps(sectionIndex),
|
|
174
|
+
content,
|
|
175
|
+
before: {
|
|
176
|
+
children: section.startSeparator
|
|
177
|
+
},
|
|
178
|
+
after: {
|
|
179
|
+
children: section.endSeparator,
|
|
180
|
+
'data-range-position': section.isEndFormatSeparator ? content['data-range-position'] : undefined
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}, [state.sections, createSectionContainerProps, createSectionContentProps]);
|
|
185
|
+
React.useEffect(() => {
|
|
186
|
+
if (sectionListRef.current == null) {
|
|
187
|
+
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X: The \`sectionListRef\` prop has not been initialized by \`PickersSectionList\`
|
|
188
|
+
You probably tried to pass a component to the \`textField\` slot that contains an \`<input />\` element instead of a \`PickersSectionList\`.
|
|
189
|
+
|
|
190
|
+
Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element` : _formatErrorMessage(249));
|
|
191
|
+
}
|
|
192
|
+
if (autoFocus && !disabled) {
|
|
193
|
+
sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();
|
|
194
|
+
}
|
|
195
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
196
|
+
|
|
197
|
+
useEnhancedEffect(() => {
|
|
198
|
+
if (!focused || !sectionListRef.current) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (parsedSelectedSections === 'all') {
|
|
202
|
+
sectionListRef.current.getRoot().focus();
|
|
203
|
+
} else if (typeof parsedSelectedSections === 'number') {
|
|
204
|
+
const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
205
|
+
if (domElement) {
|
|
206
|
+
domElement.focus();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}, [parsedSelectedSections, focused]);
|
|
210
|
+
useEnhancedEffect(() => {
|
|
211
|
+
syncSelectionToDOM({
|
|
212
|
+
focused,
|
|
213
|
+
domGetters,
|
|
214
|
+
stateResponse
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
React.useImperativeHandle(fieldRef, () => ({
|
|
218
|
+
getSections: () => state.sections,
|
|
219
|
+
getActiveSectionIndex: () => getActiveSectionIndex(sectionListRef),
|
|
220
|
+
setSelectedSections: newSelectedSections => {
|
|
221
|
+
if (disabled || !sectionListRef.current) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
|
|
225
|
+
const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
|
|
226
|
+
setFocused(newActiveSectionIndex !== null);
|
|
227
|
+
setSelectedSections(newSelectedSections);
|
|
228
|
+
},
|
|
229
|
+
focusField,
|
|
230
|
+
isFieldFocused: () => isFieldFocused(sectionListRef),
|
|
231
|
+
clearValue
|
|
232
|
+
}));
|
|
233
|
+
return _extends({}, forwardedProps, rootProps, {
|
|
234
|
+
onBlur: handleRootBlur,
|
|
235
|
+
onClick: handleRootClick,
|
|
236
|
+
onFocus: handleRootFocus,
|
|
237
|
+
onInput: handleRootInput,
|
|
238
|
+
onPaste: handleRootPaste,
|
|
239
|
+
onKeyDown: handleRootKeyDown,
|
|
240
|
+
onClear: handleClear
|
|
241
|
+
}, hiddenInputProps, {
|
|
242
|
+
error,
|
|
243
|
+
clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
|
|
244
|
+
focused: focusedProp ?? focused,
|
|
245
|
+
sectionListRef: handleSectionListRef,
|
|
246
|
+
// Additional
|
|
247
|
+
elements,
|
|
248
|
+
areAllSectionsEmpty,
|
|
249
|
+
disabled,
|
|
250
|
+
readOnly,
|
|
251
|
+
autoFocus,
|
|
252
|
+
openPickerAriaLabel
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
function getActiveSectionIndex(sectionListRef) {
|
|
256
|
+
const activeElement = getActiveElement(sectionListRef.current?.getRoot());
|
|
257
|
+
if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
|
|
261
|
+
}
|
|
262
|
+
function isFieldFocused(sectionListRef) {
|
|
263
|
+
const activeElement = getActiveElement(sectionListRef.current?.getRoot());
|
|
264
|
+
return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
|
|
265
|
+
}
|