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