@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.
- package/CHANGELOG.md +299 -0
- package/DateRangePicker/DateRangePicker.types.d.ts +2 -2
- package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
- package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
- package/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
- package/esm/DateRangePicker/DateRangePicker.types.d.ts +2 -2
- package/esm/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
- package/esm/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
- package/esm/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
- package/esm/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/esm/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
- package/esm/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/esm/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/esm/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/esm/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
- package/esm/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
- package/esm/hooks/index.d.ts +2 -1
- package/esm/hooks/useMultiInputRangeField/index.d.ts +2 -1
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeField.js +41 -50
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +25 -0
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -2
- package/esm/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
- package/esm/hooks/useMultiInputRangeField/useTextFieldProps.js +141 -0
- package/esm/index.js +1 -1
- package/esm/internals/hooks/models/index.d.ts +1 -1
- package/esm/internals/hooks/models/useRangePicker.d.ts +1 -8
- package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +8 -75
- package/esm/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
- package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
- package/esm/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
- package/esm/internals/hooks/useRangePosition.d.ts +1 -4
- package/esm/internals/hooks/useRangePosition.js +1 -18
- package/esm/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
- package/esm/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +26 -32
- package/esm/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
- package/esm/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
- package/esm/internals/utils/createMultiInputRangeField/useTextFieldProps.js +36 -0
- package/esm/internals/utils/date-fields-utils.d.ts +4 -1
- package/esm/internals/utils/date-fields-utils.js +5 -1
- package/esm/internals/utils/releaseInfo.js +1 -1
- package/esm/managers/useDateRangeManager.js +8 -1
- package/esm/managers/useDateTimeRangeManager.js +8 -1
- package/esm/managers/useTimeRangeManager.js +10 -1
- package/esm/models/fields.d.ts +5 -18
- package/hooks/index.d.ts +2 -1
- package/hooks/useMultiInputRangeField/index.d.ts +2 -1
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
- package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +40 -51
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +31 -0
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -1
- package/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
- package/hooks/useMultiInputRangeField/useTextFieldProps.js +149 -0
- package/index.js +1 -1
- package/internals/hooks/models/index.d.ts +1 -1
- package/internals/hooks/models/useRangePicker.d.ts +1 -8
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +7 -74
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
- package/internals/hooks/useRangePosition.d.ts +1 -4
- package/internals/hooks/useRangePosition.js +1 -18
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +25 -31
- package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
- package/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
- package/internals/utils/createMultiInputRangeField/useTextFieldProps.js +44 -0
- package/internals/utils/date-fields-utils.d.ts +4 -1
- package/internals/utils/date-fields-utils.js +6 -1
- package/internals/utils/releaseInfo.js +1 -1
- package/managers/useDateRangeManager.js +8 -1
- package/managers/useDateTimeRangeManager.js +8 -1
- package/managers/useTimeRangeManager.js +10 -1
- package/models/fields.d.ts +5 -18
- package/modern/DateRangePicker/DateRangePicker.types.d.ts +2 -2
- package/modern/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +2 -2
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +2 -2
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +2 -2
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +2 -2
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +6 -4
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +13 -8
- package/modern/hooks/index.d.ts +2 -1
- package/modern/hooks/useMultiInputRangeField/index.d.ts +2 -1
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +37 -18
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeField.js +41 -50
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.d.ts +11 -0
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldRootProps.js +25 -0
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +4 -1
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.js +3 -2
- package/modern/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +30 -0
- package/modern/hooks/useMultiInputRangeField/useTextFieldProps.js +141 -0
- package/modern/index.js +1 -1
- package/modern/internals/hooks/models/index.d.ts +1 -1
- package/modern/internals/hooks/models/useRangePicker.d.ts +1 -8
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +8 -75
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +16 -4
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +17 -47
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +17 -4
- package/modern/internals/hooks/useRangePosition.d.ts +1 -4
- package/modern/internals/hooks/useRangePosition.js +1 -18
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
- package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +26 -32
- package/modern/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +1 -1
- package/modern/internals/utils/createMultiInputRangeField/useTextFieldProps.d.ts +12 -0
- package/modern/internals/utils/createMultiInputRangeField/useTextFieldProps.js +36 -0
- package/modern/internals/utils/date-fields-utils.d.ts +4 -1
- package/modern/internals/utils/date-fields-utils.js +5 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/managers/useDateRangeManager.js +8 -1
- package/modern/managers/useDateTimeRangeManager.js +8 -1
- package/modern/managers/useTimeRangeManager.js +10 -1
- package/modern/models/fields.d.ts +5 -18
- package/package.json +4 -4
- package/tsconfig.build.tsbuildinfo +1 -1
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
- package/esm/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -59
- package/esm/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
- package/esm/internals/hooks/useEnrichedRangePickerField.js +0 -236
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
- package/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -66
- package/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
- package/internals/hooks/useEnrichedRangePickerField.js +0 -245
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.d.ts +0 -17
- package/modern/hooks/useMultiInputRangeField/useMultiInputRangeFieldTextFieldProps.js +0 -59
- package/modern/internals/hooks/useEnrichedRangePickerField.d.ts +0 -70
- package/modern/internals/hooks/useEnrichedRangePickerField.js +0 -236
package/esm/models/fields.d.ts
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { PickerValue, PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
3
3
|
import { FieldRef, PickerFieldSlotProps } from '@mui/x-date-pickers/models';
|
|
4
|
+
import type { UseMultiInputRangeFieldTextFieldProps } from '../hooks/useMultiInputRangeField';
|
|
4
5
|
export type { FieldRangeSection } from '@mui/x-date-pickers/internals';
|
|
5
6
|
export type FieldType = 'single-input' | 'multi-input';
|
|
6
7
|
/**
|
|
7
8
|
* Props the `textField` slot of the multi input field can receive when used inside a picker.
|
|
8
9
|
*/
|
|
9
|
-
export
|
|
10
|
+
export type MultiInputFieldSlotTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = UseMultiInputRangeFieldTextFieldProps<TEnableAccessibleFieldDOMStructure, {
|
|
10
11
|
label?: React.ReactNode;
|
|
11
|
-
id?: string;
|
|
12
|
-
onKeyDown?: React.KeyboardEventHandler;
|
|
13
|
-
onClick?: React.MouseEventHandler;
|
|
14
|
-
onFocus?: React.FocusEventHandler;
|
|
15
12
|
focused?: boolean;
|
|
16
|
-
|
|
17
|
-
ref?: React.Ref<any>;
|
|
18
|
-
endAdornment?: React.ReactNode;
|
|
19
|
-
startAdornment?: React.ReactNode;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
13
|
+
}>;
|
|
22
14
|
/**
|
|
23
15
|
* Props the `root` slot of the multi input field can receive when used inside a picker.
|
|
24
16
|
*/
|
|
@@ -39,9 +31,4 @@ export interface RangeFieldSeparatorProps {
|
|
|
39
31
|
/**
|
|
40
32
|
* Props the `slotProps.field` of a range picker component can receive.
|
|
41
33
|
*/
|
|
42
|
-
export type PickerRangeFieldSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> = PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & RangeFieldSeparatorProps;
|
|
43
|
-
/**
|
|
44
|
-
* Props the text field receives when used with a multi input picker.
|
|
45
|
-
* Only contains what the MUI components are passing to the text field, not what users can pass using the `props.slotProps.textField`.
|
|
46
|
-
*/
|
|
47
|
-
export type BaseMultiInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<UseFieldResponse<TEnableAccessibleFieldDOMStructure, MultiInputFieldSlotTextFieldProps>, 'slots' | 'slotProps' | 'clearable' | 'onClear' | 'openPickerButtonPosition' | 'clearButtonPosition' | 'openPickerAriaLabel'>;
|
|
34
|
+
export type PickerRangeFieldSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> = PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & RangeFieldSeparatorProps;
|
package/hooks/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { usePickerRangePositionContext } from "./usePickerRangePositionContext.js";
|
|
2
|
-
export { useMultiInputRangeField as unstable_useMultiInputRangeField } from "./useMultiInputRangeField/index.js";
|
|
2
|
+
export { useMultiInputRangeField as unstable_useMultiInputRangeField } from "./useMultiInputRangeField/index.js";
|
|
3
|
+
export type { UseMultiInputRangeFieldTextFieldProps } from './useMultiInputRangeField';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { useMultiInputRangeField } from "./useMultiInputRangeField.js";
|
|
1
|
+
export { useMultiInputRangeField } from "./useMultiInputRangeField.js";
|
|
2
|
+
export type { UseMultiInputRangeFieldTextFieldProps } from './useMultiInputRangeField';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps, UseFieldResponse } from '@mui/x-date-pickers/internals';
|
|
2
|
+
import { UseTextFieldBaseForwardedProps } from "./useTextFieldProps.js";
|
|
2
3
|
import { PickerAnyRangeManager } from "../../internals/models/managers.js";
|
|
4
|
+
import { UseMultiInputRangeFieldRootPropsReturnValue } from "./useMultiInputRangeFieldRootProps.js";
|
|
3
5
|
/**
|
|
4
6
|
* Basic example:
|
|
5
7
|
*
|
|
@@ -12,42 +14,59 @@ import { PickerAnyRangeManager } from "../../internals/models/managers.js";
|
|
|
12
14
|
* function MultiInputField(props) {
|
|
13
15
|
* const manager = useDateRangeManager();
|
|
14
16
|
* const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
|
|
15
|
-
* const
|
|
17
|
+
* const response = useMultiInputRangeField({
|
|
16
18
|
* manager,
|
|
17
19
|
* internalProps,
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
+
* startTextFieldProps: {},
|
|
21
|
+
* endTextFieldProps: {},
|
|
22
|
+
* rootProps: forwardedProps,
|
|
20
23
|
* });
|
|
21
24
|
*
|
|
22
25
|
* return (
|
|
23
|
-
* <Box {...
|
|
24
|
-
* <PickersTextField {...
|
|
26
|
+
* <Box {...response.root}>
|
|
27
|
+
* <PickersTextField {...response.startTextField} />
|
|
25
28
|
* <span>{' – '}</span>
|
|
26
|
-
* <PickersTextField {...
|
|
29
|
+
* <PickersTextField {...response.endTextField} />
|
|
27
30
|
* </Box>
|
|
28
31
|
* );
|
|
29
32
|
* }
|
|
30
33
|
* ```
|
|
31
34
|
*
|
|
32
|
-
* @param {UseMultiInputRangeFieldParameters<TManager,
|
|
35
|
+
* @param {UseMultiInputRangeFieldParameters<TManager, TTextFieldProps>} parameters The parameters of the hook.
|
|
33
36
|
* @param {TManager} parameters.manager The manager of the field.
|
|
34
37
|
* @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
|
|
35
|
-
* @param {
|
|
36
|
-
* @param {
|
|
37
|
-
* @returns {UseMultiInputRangeFieldReturnValue<TManager,
|
|
38
|
+
* @param {TTextFieldProps} parameters.startForwardedProps The forwarded props of the start field.
|
|
39
|
+
* @param {TTextFieldProps} parameters.endForwardedProps The forwarded props of the end field.
|
|
40
|
+
* @returns {UseMultiInputRangeFieldReturnValue<TManager, TTextFieldProps>} The props to pass to the start and the end components.
|
|
38
41
|
*/
|
|
39
|
-
export declare function useMultiInputRangeField<TManager extends PickerAnyRangeManager,
|
|
42
|
+
export declare function useMultiInputRangeField<TManager extends PickerAnyRangeManager, TTextFieldProps extends UseTextFieldBaseForwardedProps, TRootProps extends {
|
|
40
43
|
[key: string]: any;
|
|
41
|
-
}>(parameters: UseMultiInputRangeFieldParameters<TManager,
|
|
42
|
-
interface UseMultiInputRangeFieldParameters<TManager extends PickerAnyRangeManager,
|
|
44
|
+
}>(parameters: UseMultiInputRangeFieldParameters<TManager, TTextFieldProps, TRootProps>): UseMultiInputRangeFieldReturnValue<TManager, TTextFieldProps, TRootProps>;
|
|
45
|
+
interface UseMultiInputRangeFieldParameters<TManager extends PickerAnyRangeManager, TTextFieldProps extends {
|
|
46
|
+
[key: string]: any;
|
|
47
|
+
}, TRootProps extends {
|
|
48
|
+
[key: string]: any;
|
|
49
|
+
}> {
|
|
43
50
|
manager: TManager;
|
|
44
51
|
internalProps: PickerManagerFieldInternalProps<TManager>;
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
rootProps: TRootProps;
|
|
53
|
+
startTextFieldProps: TTextFieldProps;
|
|
54
|
+
endTextFieldProps: TTextFieldProps;
|
|
47
55
|
}
|
|
48
|
-
interface UseMultiInputRangeFieldReturnValue<TManager extends PickerAnyRangeManager,
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
interface UseMultiInputRangeFieldReturnValue<TManager extends PickerAnyRangeManager, TTextFieldProps extends {
|
|
57
|
+
[key: string]: any;
|
|
58
|
+
}, TRootProps extends {
|
|
59
|
+
[key: string]: any;
|
|
60
|
+
}> {
|
|
61
|
+
root: UseMultiInputRangeFieldRootPropsReturnValue<TRootProps>;
|
|
62
|
+
startTextField: UseMultiInputRangeFieldTextFieldProps<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TTextFieldProps>;
|
|
63
|
+
endTextField: UseMultiInputRangeFieldTextFieldProps<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TTextFieldProps>;
|
|
51
64
|
enableAccessibleFieldDOMStructure: PickerManagerEnableAccessibleFieldDOMStructure<TManager>;
|
|
52
65
|
}
|
|
66
|
+
export type UseMultiInputRangeFieldTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean, TForwardedProps extends UseTextFieldBaseForwardedProps> = Omit<UseFieldResponse<TEnableAccessibleFieldDOMStructure, TForwardedProps & {
|
|
67
|
+
onKeyDown: React.KeyboardEventHandler;
|
|
68
|
+
onClick: React.MouseEventHandler;
|
|
69
|
+
onFocus: React.FocusEventHandler;
|
|
70
|
+
id: string;
|
|
71
|
+
}>, 'onClear' | 'clearable' | 'openPickerAriaLabel'>;
|
|
53
72
|
export {};
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.useMultiInputRangeField = useMultiInputRangeField;
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
11
8
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
12
9
|
var _validation = require("@mui/x-date-pickers/validation");
|
|
13
|
-
var
|
|
10
|
+
var _useTextFieldProps = require("./useTextFieldProps");
|
|
14
11
|
var _useMultiInputRangeFieldSelectedSections = require("./useMultiInputRangeFieldSelectedSections");
|
|
12
|
+
var _useMultiInputRangeFieldRootProps = require("./useMultiInputRangeFieldRootProps");
|
|
15
13
|
/**
|
|
16
14
|
* Basic example:
|
|
17
15
|
*
|
|
@@ -24,36 +22,38 @@ var _useMultiInputRangeFieldSelectedSections = require("./useMultiInputRangeFiel
|
|
|
24
22
|
* function MultiInputField(props) {
|
|
25
23
|
* const manager = useDateRangeManager();
|
|
26
24
|
* const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
|
|
27
|
-
* const
|
|
25
|
+
* const response = useMultiInputRangeField({
|
|
28
26
|
* manager,
|
|
29
27
|
* internalProps,
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* startTextFieldProps: {},
|
|
29
|
+
* endTextFieldProps: {},
|
|
30
|
+
* rootProps: forwardedProps,
|
|
32
31
|
* });
|
|
33
32
|
*
|
|
34
33
|
* return (
|
|
35
|
-
* <Box {...
|
|
36
|
-
* <PickersTextField {...
|
|
34
|
+
* <Box {...response.root}>
|
|
35
|
+
* <PickersTextField {...response.startTextField} />
|
|
37
36
|
* <span>{' – '}</span>
|
|
38
|
-
* <PickersTextField {...
|
|
37
|
+
* <PickersTextField {...response.endTextField} />
|
|
39
38
|
* </Box>
|
|
40
39
|
* );
|
|
41
40
|
* }
|
|
42
41
|
* ```
|
|
43
42
|
*
|
|
44
|
-
* @param {UseMultiInputRangeFieldParameters<TManager,
|
|
43
|
+
* @param {UseMultiInputRangeFieldParameters<TManager, TTextFieldProps>} parameters The parameters of the hook.
|
|
45
44
|
* @param {TManager} parameters.manager The manager of the field.
|
|
46
45
|
* @param {PickerManagerFieldInternalProps<TManager>} parameters.internalProps The internal props of the field.
|
|
47
|
-
* @param {
|
|
48
|
-
* @param {
|
|
49
|
-
* @returns {UseMultiInputRangeFieldReturnValue<TManager,
|
|
46
|
+
* @param {TTextFieldProps} parameters.startForwardedProps The forwarded props of the start field.
|
|
47
|
+
* @param {TTextFieldProps} parameters.endForwardedProps The forwarded props of the end field.
|
|
48
|
+
* @returns {UseMultiInputRangeFieldReturnValue<TManager, TTextFieldProps>} The props to pass to the start and the end components.
|
|
50
49
|
*/
|
|
51
50
|
function useMultiInputRangeField(parameters) {
|
|
52
51
|
const {
|
|
53
52
|
manager,
|
|
54
53
|
internalProps,
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
rootProps,
|
|
55
|
+
startTextFieldProps,
|
|
56
|
+
endTextFieldProps
|
|
57
57
|
} = parameters;
|
|
58
58
|
const internalPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
|
|
59
59
|
manager,
|
|
@@ -90,34 +90,20 @@ function useMultiInputRangeField(parameters) {
|
|
|
90
90
|
onChange,
|
|
91
91
|
valueManager: manager.internal_valueManager
|
|
92
92
|
});
|
|
93
|
-
const {
|
|
94
|
-
validationError,
|
|
95
|
-
getValidationErrorForNewValue
|
|
96
|
-
} = (0, _validation.useValidation)({
|
|
93
|
+
const validation = (0, _validation.useValidation)({
|
|
97
94
|
props: internalPropsWithDefaults,
|
|
98
95
|
value,
|
|
99
96
|
timezone,
|
|
100
97
|
validator: manager.validator,
|
|
101
98
|
onError: internalPropsWithDefaults.onError
|
|
102
99
|
});
|
|
103
|
-
const buildChangeHandler = index => {
|
|
104
|
-
return (newSingleValue, rawContext) => {
|
|
105
|
-
const newRange = index === 0 ? [newSingleValue, value[1]] : [value[0], newSingleValue];
|
|
106
|
-
const context = (0, _extends2.default)({}, rawContext, {
|
|
107
|
-
validationError: getValidationErrorForNewValue(newRange)
|
|
108
|
-
});
|
|
109
|
-
handleValueChange(newRange, context);
|
|
110
|
-
};
|
|
111
|
-
};
|
|
112
|
-
const handleStartDateChange = (0, _useEventCallback.default)(buildChangeHandler(0));
|
|
113
|
-
const handleEndDateChange = (0, _useEventCallback.default)(buildChangeHandler(1));
|
|
114
100
|
const selectedSectionsResponse = (0, _useMultiInputRangeFieldSelectedSections.useMultiInputRangeFieldSelectedSections)({
|
|
115
101
|
selectedSections,
|
|
116
102
|
onSelectedSectionsChange,
|
|
117
103
|
unstableStartFieldRef,
|
|
118
104
|
unstableEndFieldRef
|
|
119
105
|
});
|
|
120
|
-
const
|
|
106
|
+
const sharedInternalProps = {
|
|
121
107
|
disabled,
|
|
122
108
|
readOnly,
|
|
123
109
|
timezone,
|
|
@@ -126,30 +112,33 @@ function useMultiInputRangeField(parameters) {
|
|
|
126
112
|
shouldRespectLeadingZeros,
|
|
127
113
|
enableAccessibleFieldDOMStructure
|
|
128
114
|
};
|
|
129
|
-
const
|
|
115
|
+
const rootResponse = (0, _useMultiInputRangeFieldRootProps.useMultiInputRangeFieldRootProps)(rootProps);
|
|
116
|
+
const startTextFieldResponse = (0, _useTextFieldProps.useTextFieldProps)({
|
|
130
117
|
valueType: manager.valueType,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
118
|
+
position: 'start',
|
|
119
|
+
value,
|
|
120
|
+
onChange: handleValueChange,
|
|
121
|
+
autoFocus,
|
|
122
|
+
validation,
|
|
123
|
+
forwardedProps: startTextFieldProps,
|
|
124
|
+
selectedSectionProps: selectedSectionsResponse.start,
|
|
125
|
+
sharedInternalProps
|
|
139
126
|
});
|
|
140
|
-
const
|
|
127
|
+
const endTextFieldResponse = (0, _useTextFieldProps.useTextFieldProps)({
|
|
141
128
|
valueType: manager.valueType,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
129
|
+
position: 'end',
|
|
130
|
+
value,
|
|
131
|
+
onChange: handleValueChange,
|
|
132
|
+
autoFocus,
|
|
133
|
+
validation,
|
|
134
|
+
forwardedProps: endTextFieldProps,
|
|
135
|
+
selectedSectionProps: selectedSectionsResponse.end,
|
|
136
|
+
sharedInternalProps
|
|
149
137
|
});
|
|
150
138
|
return {
|
|
151
|
-
|
|
152
|
-
|
|
139
|
+
root: rootResponse,
|
|
140
|
+
startTextField: startTextFieldResponse,
|
|
141
|
+
endTextField: endTextFieldResponse,
|
|
153
142
|
enableAccessibleFieldDOMStructure
|
|
154
143
|
};
|
|
155
144
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ignore - internal hook.
|
|
3
|
+
*/
|
|
4
|
+
export declare function useMultiInputRangeFieldRootProps<TForwardedProps extends {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}>(forwardedProps: TForwardedProps): UseMultiInputRangeFieldRootPropsReturnValue<TForwardedProps>;
|
|
7
|
+
export type UseMultiInputRangeFieldRootPropsReturnValue<TForwardedProps extends {
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}> = Omit<TForwardedProps, 'onBlur'> & {
|
|
10
|
+
onBlur: () => void;
|
|
11
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useMultiInputRangeFieldRootProps = useMultiInputRangeFieldRootProps;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
10
|
+
var _internals = require("@mui/x-date-pickers/internals");
|
|
11
|
+
/**
|
|
12
|
+
* @ignore - internal hook.
|
|
13
|
+
*/
|
|
14
|
+
function useMultiInputRangeFieldRootProps(forwardedProps) {
|
|
15
|
+
const pickerContext = (0, _internals.useNullablePickerContext)();
|
|
16
|
+
const privatePickerContext = (0, _internals.usePickerPrivateContext)();
|
|
17
|
+
const handleBlur = (0, _useEventCallback.default)(() => {
|
|
18
|
+
if (!pickerContext || privatePickerContext.viewContainerRole !== 'tooltip') {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
(0, _internals.executeInTheNextEventLoopTick)(() => {
|
|
22
|
+
if (privatePickerContext.rootRefObject.current?.contains((0, _internals.getActiveElement)(document)) || pickerContext.popupRef.current?.contains((0, _internals.getActiveElement)(document))) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
privatePickerContext.dismissViews();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return (0, _extends2.default)({}, forwardedProps, {
|
|
29
|
+
onBlur: handleBlur
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -3,7 +3,7 @@ import { PickerRangeValue, PickerValue, UseFieldInternalProps } from '@mui/x-dat
|
|
|
3
3
|
import { FieldRef, FieldSelectedSections } from '@mui/x-date-pickers/models';
|
|
4
4
|
import { MultiInputFieldRefs } from "../../models/index.js";
|
|
5
5
|
interface UseMultiInputRangeFieldSelectedSectionsParameters extends Pick<UseFieldInternalProps<PickerRangeValue, any, any>, 'selectedSections' | 'onSelectedSectionsChange'>, MultiInputFieldRefs {}
|
|
6
|
-
interface UseMultiInputFieldSelectedSectionsResponseItem {
|
|
6
|
+
export interface UseMultiInputFieldSelectedSectionsResponseItem {
|
|
7
7
|
unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
|
|
8
8
|
selectedSections: FieldSelectedSections;
|
|
9
9
|
onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
|
|
@@ -12,5 +12,8 @@ interface UseMultiInputFieldSelectedSectionsResponse {
|
|
|
12
12
|
start: UseMultiInputFieldSelectedSectionsResponseItem;
|
|
13
13
|
end: UseMultiInputFieldSelectedSectionsResponseItem;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* @ignore - internal hook.
|
|
17
|
+
*/
|
|
15
18
|
export declare const useMultiInputRangeFieldSelectedSections: (parameters: UseMultiInputRangeFieldSelectedSectionsParameters) => UseMultiInputFieldSelectedSectionsResponse;
|
|
16
19
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
'use client';
|
|
3
2
|
|
|
4
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
@@ -10,6 +9,9 @@ exports.useMultiInputRangeFieldSelectedSections = void 0;
|
|
|
10
9
|
var React = _interopRequireWildcard(require("react"));
|
|
11
10
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
12
11
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
|
+
/**
|
|
13
|
+
* @ignore - internal hook.
|
|
14
|
+
*/
|
|
13
15
|
const useMultiInputRangeFieldSelectedSections = parameters => {
|
|
14
16
|
const unstableEndFieldRef = React.useRef(null);
|
|
15
17
|
const handleUnstableEndFieldRef = (0, _useForkRef.default)(parameters.unstableEndFieldRef, unstableEndFieldRef);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { UseValidationReturnValue } from '@mui/x-date-pickers/validation';
|
|
3
|
+
import { PickerValueType } from '@mui/x-date-pickers/models';
|
|
4
|
+
import { FieldChangeHandler, PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerError, PickerRangeValue, PickerValue, RangePosition, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
|
|
5
|
+
import { PickerAnyRangeManager } from "../../internals/models/managers.js";
|
|
6
|
+
import { UseMultiInputFieldSelectedSectionsResponseItem } from "./useMultiInputRangeFieldSelectedSections.js";
|
|
7
|
+
import type { UseMultiInputRangeFieldTextFieldProps } from './useMultiInputRangeField';
|
|
8
|
+
/**
|
|
9
|
+
* @ignore - internal hook.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useTextFieldProps<TManager extends PickerAnyRangeManager, TForwardedProps extends UseTextFieldBaseForwardedProps>(parameters: UseTextFieldPropsParameters<TManager, TForwardedProps>): UseMultiInputRangeFieldTextFieldProps<PickerManagerEnableAccessibleFieldDOMStructure<TManager>, TForwardedProps>;
|
|
12
|
+
interface UseTextFieldPropsParameters<TManager extends PickerAnyRangeManager, TForwardedProps extends UseTextFieldBaseForwardedProps> {
|
|
13
|
+
valueType: PickerValueType;
|
|
14
|
+
value: PickerRangeValue;
|
|
15
|
+
onChange: FieldChangeHandler<PickerRangeValue, PickerManagerError<TManager>>;
|
|
16
|
+
autoFocus: boolean | undefined;
|
|
17
|
+
forwardedProps: TForwardedProps;
|
|
18
|
+
sharedInternalProps: UseTextFieldSharedInternalProps<TManager>;
|
|
19
|
+
selectedSectionProps: UseMultiInputFieldSelectedSectionsResponseItem;
|
|
20
|
+
position: RangePosition;
|
|
21
|
+
validation: UseValidationReturnValue<PickerRangeValue, PickerManagerError<TManager>>;
|
|
22
|
+
}
|
|
23
|
+
export interface UseTextFieldBaseForwardedProps {
|
|
24
|
+
onKeyDown?: React.KeyboardEventHandler;
|
|
25
|
+
onClick?: React.MouseEventHandler;
|
|
26
|
+
onFocus?: React.FocusEventHandler;
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}
|
|
29
|
+
interface UseTextFieldSharedInternalProps<TManager extends PickerAnyRangeManager> extends Pick<UseFieldInternalProps<PickerValue, PickerManagerEnableAccessibleFieldDOMStructure<TManager>, PickerManagerError<TManager>>, 'enableAccessibleFieldDOMStructure' | 'disabled' | 'readOnly' | 'timezone' | 'format' | 'formatDensity' | 'shouldRespectLeadingZeros'> {}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useTextFieldProps = useTextFieldProps;
|
|
9
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
13
|
+
var _managers = require("@mui/x-date-pickers/managers");
|
|
14
|
+
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
15
|
+
var _internals = require("@mui/x-date-pickers/internals");
|
|
16
|
+
var _useNullablePickerRangePositionContext = require("../../internals/hooks/useNullablePickerRangePositionContext");
|
|
17
|
+
const _excluded = ["clearable", "onClear", "openPickerAriaLabel"];
|
|
18
|
+
/**
|
|
19
|
+
* @ignore - internal hook.
|
|
20
|
+
*/
|
|
21
|
+
function useTextFieldProps(parameters) {
|
|
22
|
+
const pickerContext = (0, _internals.useNullablePickerContext)();
|
|
23
|
+
const fieldPrivateContext = (0, _internals.useNullableFieldPrivateContext)();
|
|
24
|
+
const pickerPrivateContext = (0, _internals.usePickerPrivateContext)();
|
|
25
|
+
const rangePositionContext = (0, _useNullablePickerRangePositionContext.useNullablePickerRangePositionContext)();
|
|
26
|
+
const rangePosition = rangePositionContext?.rangePosition ?? 'start';
|
|
27
|
+
const setRangePosition = rangePositionContext?.setRangePosition;
|
|
28
|
+
const previousRangePosition = React.useRef(rangePosition);
|
|
29
|
+
const {
|
|
30
|
+
forwardedProps,
|
|
31
|
+
sharedInternalProps,
|
|
32
|
+
selectedSectionProps,
|
|
33
|
+
valueType,
|
|
34
|
+
position,
|
|
35
|
+
value,
|
|
36
|
+
onChange,
|
|
37
|
+
autoFocus,
|
|
38
|
+
validation
|
|
39
|
+
} = parameters;
|
|
40
|
+
let useManager;
|
|
41
|
+
switch (valueType) {
|
|
42
|
+
case 'date':
|
|
43
|
+
{
|
|
44
|
+
useManager = _managers.useDateManager;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'time':
|
|
48
|
+
{
|
|
49
|
+
useManager = _managers.useTimeManager;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'date-time':
|
|
53
|
+
{
|
|
54
|
+
useManager = _managers.useDateTimeManager;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
default:
|
|
58
|
+
{
|
|
59
|
+
throw new Error(`Unknown valueType: ${valueType}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const manager = useManager({
|
|
63
|
+
enableAccessibleFieldDOMStructure: sharedInternalProps.enableAccessibleFieldDOMStructure
|
|
64
|
+
});
|
|
65
|
+
const openPickerIfPossible = event => {
|
|
66
|
+
if (!pickerContext) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
setRangePosition?.(position);
|
|
70
|
+
if (pickerContext.triggerStatus === 'enabled') {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
pickerContext.setOpen(true);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const handleKeyDown = (0, _useEventCallback.default)(event => {
|
|
76
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
77
|
+
openPickerIfPossible(event);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Registering `onClick` listener on the root element as well to correctly handle cases where user is clicking on `label`
|
|
82
|
+
// which has `pointer-events: none` and due to DOM structure the `input` does not catch the click event
|
|
83
|
+
const handleClick = (0, _useEventCallback.default)(event => {
|
|
84
|
+
openPickerIfPossible(event);
|
|
85
|
+
});
|
|
86
|
+
const handleFocus = (0, _useEventCallback.default)(event => {
|
|
87
|
+
forwardedProps.onFocus?.(event);
|
|
88
|
+
if (pickerContext?.open) {
|
|
89
|
+
setRangePosition?.(position);
|
|
90
|
+
if (previousRangePosition.current !== position && pickerContext.initialView) {
|
|
91
|
+
pickerContext.setView?.(pickerContext.initialView);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
const handleChange = (0, _useEventCallback.default)((newSingleValue, rawContext) => {
|
|
96
|
+
const newRange = position === 'start' ? [newSingleValue, value[1]] : [value[0], newSingleValue];
|
|
97
|
+
const context = (0, _extends2.default)({}, rawContext, {
|
|
98
|
+
validationError: validation.getValidationErrorForNewValue(newRange)
|
|
99
|
+
});
|
|
100
|
+
onChange(newRange, context);
|
|
101
|
+
});
|
|
102
|
+
const allProps = (0, _extends2.default)({
|
|
103
|
+
value: position === 'start' ? value[0] : value[1],
|
|
104
|
+
error: position === 'start' ? !!validation.validationError[0] : !!validation.validationError[1],
|
|
105
|
+
id: `${pickerPrivateContext.labelId}-${position}`,
|
|
106
|
+
autoFocus: position === 'start' ? autoFocus : undefined
|
|
107
|
+
}, forwardedProps, sharedInternalProps, selectedSectionProps, {
|
|
108
|
+
onClick: handleClick,
|
|
109
|
+
onFocus: handleFocus,
|
|
110
|
+
onKeyDown: handleKeyDown,
|
|
111
|
+
onChange: handleChange
|
|
112
|
+
});
|
|
113
|
+
const splittedProps = (0, _hooks.useSplitFieldProps)(allProps, valueType);
|
|
114
|
+
const internalPropsWithDefaults = (0, _internals.useFieldInternalPropsWithDefaults)({
|
|
115
|
+
manager,
|
|
116
|
+
internalProps: splittedProps.internalProps,
|
|
117
|
+
skipContextFieldRefAssignment: rangePosition !== position
|
|
118
|
+
});
|
|
119
|
+
const _ref = (0, _internals.useField)({
|
|
120
|
+
forwardedProps: splittedProps.forwardedProps,
|
|
121
|
+
internalProps: internalPropsWithDefaults,
|
|
122
|
+
valueManager: manager.internal_valueManager,
|
|
123
|
+
fieldValueManager: manager.internal_fieldValueManager,
|
|
124
|
+
validator: manager.validator,
|
|
125
|
+
valueType: manager.valueType,
|
|
126
|
+
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
127
|
+
getOpenPickerButtonAriaLabel: () => ''
|
|
128
|
+
}),
|
|
129
|
+
fieldResponse = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
130
|
+
React.useEffect(() => {
|
|
131
|
+
if (!pickerContext?.open || pickerContext?.variant === 'mobile') {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
fieldPrivateContext?.fieldRef.current?.focusField();
|
|
135
|
+
if (!fieldPrivateContext?.fieldRef.current || pickerContext.view === pickerContext.initialView) {
|
|
136
|
+
// could happen when the user is switching between the inputs
|
|
137
|
+
previousRangePosition.current = rangePosition;
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// bring back focus to the field
|
|
142
|
+
// currentView is present on DateTimeRangePicker
|
|
143
|
+
fieldPrivateContext?.fieldRef.current.setSelectedSections(
|
|
144
|
+
// use the current view or `0` when the range position has just been swapped
|
|
145
|
+
previousRangePosition.current === rangePosition ? pickerContext.view : 0);
|
|
146
|
+
previousRangePosition.current = rangePosition;
|
|
147
|
+
}, [rangePosition, pickerContext?.open, pickerContext?.variant, pickerContext?.initialView, pickerContext?.view, fieldPrivateContext?.fieldRef]);
|
|
148
|
+
return fieldResponse;
|
|
149
|
+
}
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type { RangeOnlyPickerProps, UseRangePickerProps, UseRangePickerParams } from './useRangePicker';
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import { UsePickerParams, BasePickerProps,
|
|
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'> {
|