@mui/x-date-pickers 8.0.0-alpha.7 → 8.0.0-alpha.9
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 +551 -3
- package/DateCalendar/DayCalendar.js +2 -0
- package/DateField/DateField.js +26 -31
- package/DateField/DateField.types.d.ts +6 -15
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +2 -1
- package/DateTimeField/DateTimeField.js +26 -31
- package/DateTimeField/DateTimeField.types.d.ts +6 -15
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +2 -1
- package/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/MobileDatePicker/MobileDatePicker.js +0 -9
- package/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/MobileTimePicker/MobileTimePicker.js +0 -9
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -0
- package/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/TimeClock/ClockPointer.js +2 -0
- package/TimeField/TimeField.js +25 -30
- package/TimeField/TimeField.types.d.ts +6 -15
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +2 -1
- package/hooks/useParsedFormat.d.ts +8 -6
- package/hooks/useParsedFormat.js +10 -12
- package/hooks/usePickerActionsContext.d.ts +1 -1
- package/hooks/usePickerContext.d.ts +4 -2
- package/hooks/usePickerContext.js +2 -1
- package/hooks/useSplitFieldProps.d.ts +12 -3
- package/hooks/useSplitFieldProps.js +8 -3
- package/index.js +1 -1
- package/internals/components/PickerFieldUI.d.ts +132 -0
- package/internals/components/PickerFieldUI.js +306 -0
- package/internals/components/PickerProvider.d.ts +25 -4
- package/internals/components/PickerProvider.js +11 -6
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -94
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -31
- package/internals/hooks/useField/index.d.ts +3 -1
- package/internals/hooks/useField/index.js +3 -2
- package/internals/hooks/useField/useField.d.ts +1 -10
- package/internals/hooks/useField/useField.js +16 -19
- package/internals/hooks/useField/useField.types.d.ts +11 -4
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/internals/hooks/useFieldOwnerState.d.ts +1 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
- package/internals/hooks/useMobilePicker/useMobilePicker.js +20 -49
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +6 -14
- package/internals/hooks/useNullablePickerContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerContext.js +10 -0
- package/internals/hooks/usePicker/usePicker.d.ts +1 -2
- package/internals/hooks/usePicker/usePicker.js +0 -3
- package/internals/hooks/usePicker/usePicker.types.d.ts +2 -3
- package/internals/hooks/usePicker/usePickerProvider.d.ts +8 -2
- package/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +5 -2
- package/internals/hooks/useUtils.d.ts +4 -3
- package/internals/index.d.ts +6 -3
- package/internals/index.js +1 -1
- package/internals/models/fields.d.ts +3 -16
- package/internals/models/manager.d.ts +3 -0
- package/internals/models/props/basePickerProps.d.ts +0 -12
- package/locales/utils/getPickersLocalization.d.ts +0 -7
- package/locales/utils/getPickersLocalization.js +0 -13
- package/managers/index.d.ts +3 -3
- package/managers/useDateManager.d.ts +1 -1
- package/managers/useDateManager.js +9 -1
- package/managers/useDateTimeManager.d.ts +1 -1
- package/managers/useDateTimeManager.js +9 -1
- package/managers/useTimeManager.d.ts +1 -1
- package/managers/useTimeManager.js +9 -1
- package/models/fields.d.ts +4 -4
- package/models/manager.d.ts +12 -3
- package/modern/DateCalendar/DayCalendar.js +2 -0
- package/modern/DateField/DateField.js +26 -31
- package/modern/DateField/useDateField.js +2 -1
- package/modern/DateTimeField/DateTimeField.js +26 -31
- package/modern/DateTimeField/useDateTimeField.js +2 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/modern/MobileDatePicker/MobileDatePicker.js +0 -9
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/modern/MobileTimePicker/MobileTimePicker.js +0 -9
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -0
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/modern/TimeClock/ClockPointer.js +2 -0
- package/modern/TimeField/TimeField.js +25 -30
- package/modern/TimeField/useTimeField.js +2 -1
- package/modern/hooks/useParsedFormat.js +10 -12
- package/modern/hooks/usePickerContext.js +2 -1
- package/modern/hooks/useSplitFieldProps.js +8 -3
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerFieldUI.js +306 -0
- package/modern/internals/components/PickerProvider.js +11 -6
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -94
- package/modern/internals/hooks/useField/index.js +3 -2
- package/modern/internals/hooks/useField/useField.js +16 -19
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/modern/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/modern/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +20 -49
- package/modern/internals/hooks/useNullablePickerContext.js +10 -0
- package/modern/internals/hooks/usePicker/usePicker.js +0 -3
- package/modern/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/modern/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/modern/internals/index.js +1 -1
- package/modern/locales/utils/getPickersLocalization.js +0 -13
- package/modern/managers/useDateManager.js +9 -1
- package/modern/managers/useDateTimeManager.js +9 -1
- package/modern/managers/useTimeManager.js +9 -1
- package/node/DateCalendar/DayCalendar.js +1 -0
- package/node/DateField/DateField.js +26 -31
- package/node/DateField/useDateField.js +2 -1
- package/node/DateTimeField/DateTimeField.js +26 -31
- package/node/DateTimeField/useDateTimeField.js +2 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/node/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/node/MobileDatePicker/MobileDatePicker.js +0 -9
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/node/MobileTimePicker/MobileTimePicker.js +0 -9
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -0
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/node/TimeClock/ClockPointer.js +1 -0
- package/node/TimeField/TimeField.js +25 -30
- package/node/TimeField/useTimeField.js +2 -1
- package/node/hooks/useParsedFormat.js +10 -12
- package/node/hooks/usePickerContext.js +4 -3
- package/node/hooks/useSplitFieldProps.js +7 -2
- package/node/index.js +1 -1
- package/node/internals/components/PickerFieldUI.js +318 -0
- package/node/internals/components/PickerProvider.js +13 -8
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +23 -96
- package/node/internals/hooks/useField/index.js +3 -2
- package/node/internals/hooks/useField/useField.js +17 -21
- package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +55 -0
- package/node/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/node/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +20 -49
- package/node/internals/hooks/useNullablePickerContext.js +16 -0
- package/node/internals/hooks/usePicker/usePicker.js +0 -3
- package/node/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/node/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/node/internals/index.js +21 -3
- package/node/locales/utils/getPickersLocalization.js +2 -16
- package/node/managers/useDateManager.js +9 -1
- package/node/managers/useDateTimeManager.js +9 -1
- package/node/managers/useTimeManager.js +9 -1
- package/package.json +2 -2
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["props"
|
|
3
|
+
const _excluded = ["props"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import useSlotProps from '@mui/utils/useSlotProps';
|
|
6
6
|
import useForkRef from '@mui/utils/useForkRef';
|
|
7
7
|
import useId from '@mui/utils/useId';
|
|
8
8
|
import { PickersModalDialog } from "../../components/PickersModalDialog.js";
|
|
9
9
|
import { usePicker } from "../usePicker/index.js";
|
|
10
|
-
import { onSpaceOrEnter } from "../../utils/utils.js";
|
|
11
10
|
import { PickersLayout } from "../../../PickersLayout/index.js";
|
|
12
11
|
import { PickerProvider } from "../../components/PickerProvider.js";
|
|
12
|
+
import { PickerFieldUIContextProvider } from "../../components/PickerFieldUI.js";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Hook managing all the single-date mobile pickers:
|
|
@@ -20,8 +20,7 @@ import { PickerProvider } from "../../components/PickerProvider.js";
|
|
|
20
20
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
21
21
|
export const useMobilePicker = _ref => {
|
|
22
22
|
let {
|
|
23
|
-
props
|
|
24
|
-
getOpenDialogAriaText
|
|
23
|
+
props
|
|
25
24
|
} = _ref,
|
|
26
25
|
pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
27
26
|
const {
|
|
@@ -29,17 +28,11 @@ export const useMobilePicker = _ref => {
|
|
|
29
28
|
slotProps: innerSlotProps,
|
|
30
29
|
className,
|
|
31
30
|
sx,
|
|
32
|
-
format,
|
|
33
|
-
formatDensity,
|
|
34
|
-
enableAccessibleFieldDOMStructure,
|
|
35
|
-
selectedSections,
|
|
36
|
-
onSelectedSectionsChange,
|
|
37
|
-
timezone,
|
|
38
31
|
name,
|
|
39
32
|
label,
|
|
40
33
|
inputRef,
|
|
41
34
|
readOnly,
|
|
42
|
-
|
|
35
|
+
autoFocus,
|
|
43
36
|
localeText
|
|
44
37
|
} = props;
|
|
45
38
|
const fieldRef = React.useRef(null);
|
|
@@ -48,7 +41,6 @@ export const useMobilePicker = _ref => {
|
|
|
48
41
|
const {
|
|
49
42
|
providerProps,
|
|
50
43
|
renderCurrentView,
|
|
51
|
-
fieldProps: pickerFieldProps,
|
|
52
44
|
ownerState
|
|
53
45
|
} = usePicker(_extends({}, pickerParams, {
|
|
54
46
|
props,
|
|
@@ -63,44 +55,21 @@ export const useMobilePicker = _ref => {
|
|
|
63
55
|
externalSlotProps: innerSlotProps?.field,
|
|
64
56
|
additionalProps: _extends({
|
|
65
57
|
// Internal props
|
|
66
|
-
readOnly
|
|
67
|
-
|
|
68
|
-
format,
|
|
69
|
-
formatDensity,
|
|
70
|
-
enableAccessibleFieldDOMStructure,
|
|
71
|
-
selectedSections,
|
|
72
|
-
onSelectedSectionsChange,
|
|
73
|
-
timezone
|
|
74
|
-
}, pickerFieldProps, {
|
|
75
|
-
// onChange and value
|
|
76
|
-
|
|
58
|
+
readOnly,
|
|
59
|
+
autoFocus: autoFocus && !props.open,
|
|
77
60
|
// Forwarded props
|
|
78
61
|
className,
|
|
79
62
|
sx,
|
|
80
63
|
label,
|
|
81
|
-
name
|
|
64
|
+
name,
|
|
65
|
+
focused: providerProps.contextValue.open ? true : undefined
|
|
82
66
|
}, isToolbarHidden && {
|
|
83
67
|
id: labelId
|
|
84
|
-
}, !(disabled || readOnly) && {
|
|
85
|
-
// These direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
|
|
86
|
-
onClick: event => {
|
|
87
|
-
event.preventDefault();
|
|
88
|
-
providerProps.contextValue.setOpen(true);
|
|
89
|
-
},
|
|
90
|
-
onKeyDown: onSpaceOrEnter(() => providerProps.contextValue.setOpen(true))
|
|
91
68
|
}, !!inputRef && {
|
|
92
69
|
inputRef
|
|
93
70
|
}),
|
|
94
71
|
ownerState
|
|
95
72
|
});
|
|
96
|
-
|
|
97
|
-
// TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
|
|
98
|
-
fieldProps.inputProps = _extends({}, fieldProps.inputProps, {
|
|
99
|
-
'aria-label': getOpenDialogAriaText(pickerFieldProps.value)
|
|
100
|
-
});
|
|
101
|
-
const slotsForField = _extends({
|
|
102
|
-
textField: slots.textField
|
|
103
|
-
}, fieldProps.slots);
|
|
104
73
|
const Layout = slots.layout ?? PickersLayout;
|
|
105
74
|
let labelledById = labelId;
|
|
106
75
|
if (isToolbarHidden) {
|
|
@@ -119,20 +88,22 @@ export const useMobilePicker = _ref => {
|
|
|
119
88
|
}, innerSlotProps?.mobilePaper)
|
|
120
89
|
});
|
|
121
90
|
const handleFieldRef = useForkRef(fieldRef, fieldProps.unstableFieldRef);
|
|
122
|
-
const renderPicker = () => /*#__PURE__*/
|
|
123
|
-
children:
|
|
124
|
-
slots: slotsForField,
|
|
125
|
-
slotProps: slotProps,
|
|
126
|
-
unstableFieldRef: handleFieldRef
|
|
127
|
-
})), /*#__PURE__*/_jsx(PickersModalDialog, {
|
|
91
|
+
const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
|
|
92
|
+
children: /*#__PURE__*/_jsxs(PickerFieldUIContextProvider, {
|
|
128
93
|
slots: slots,
|
|
129
94
|
slotProps: slotProps,
|
|
130
|
-
children: /*#__PURE__*/_jsx(
|
|
95
|
+
children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {
|
|
96
|
+
unstableFieldRef: handleFieldRef
|
|
97
|
+
})), /*#__PURE__*/_jsx(PickersModalDialog, {
|
|
131
98
|
slots: slots,
|
|
132
99
|
slotProps: slotProps,
|
|
133
|
-
children:
|
|
134
|
-
|
|
135
|
-
|
|
100
|
+
children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
|
|
101
|
+
slots: slots,
|
|
102
|
+
slotProps: slotProps,
|
|
103
|
+
children: renderCurrentView()
|
|
104
|
+
}))
|
|
105
|
+
})]
|
|
106
|
+
})
|
|
136
107
|
}));
|
|
137
108
|
return {
|
|
138
109
|
renderPicker
|
|
@@ -1,34 +1,27 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { TextFieldProps } from '@mui/material/TextField';
|
|
3
2
|
import { MakeRequired, SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
4
|
-
import {
|
|
3
|
+
import { BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps';
|
|
5
4
|
import { PickersModalDialogSlots, PickersModalDialogSlotProps } from '../../components/PickersModalDialog';
|
|
6
5
|
import { UsePickerParams } from '../usePicker';
|
|
7
|
-
import {
|
|
6
|
+
import { PickerFieldSlotProps, PickerOwnerState } from '../../../models';
|
|
8
7
|
import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayoutSlotProps } from '../../../PickersLayout/PickersLayout.types';
|
|
9
8
|
import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types';
|
|
10
9
|
import { UsePickerViewsProps } from '../usePicker/usePickerViews';
|
|
11
10
|
import { DateOrTimeViewWithMeridiem, PickerValue } from '../../models';
|
|
12
|
-
import { PickersTextFieldProps } from '../../../PickersTextField';
|
|
13
11
|
import { UsePickerProviderNonStaticProps } from '../usePicker/usePickerProvider';
|
|
14
|
-
|
|
12
|
+
import { PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from '../../components/PickerFieldUI';
|
|
13
|
+
export interface UseMobilePickerSlots extends PickersModalDialogSlots, ExportedPickersLayoutSlots<PickerValue>, PickerFieldUISlotsFromContext {
|
|
15
14
|
/**
|
|
16
15
|
* Component used to enter the date with the keyboard.
|
|
17
16
|
*/
|
|
18
17
|
field: React.ElementType;
|
|
19
|
-
/**
|
|
20
|
-
* Form control with an input to render the value inside the default field.
|
|
21
|
-
* @default TextField from '@mui/material' or PickersTextField if `enableAccessibleFieldDOMStructure` is `true`.
|
|
22
|
-
*/
|
|
23
|
-
textField?: React.ElementType;
|
|
24
18
|
}
|
|
25
|
-
export interface ExportedUseMobilePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<PickerValue
|
|
19
|
+
export interface ExportedUseMobilePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<PickerValue>, PickerFieldUISlotPropsFromContext {
|
|
26
20
|
field?: SlotComponentPropsFromProps<PickerFieldSlotProps<PickerValue, TEnableAccessibleFieldDOMStructure>, {}, PickerOwnerState>;
|
|
27
|
-
textField?: SlotComponentPropsFromProps<PickersTextFieldProps | TextFieldProps, {}, FieldOwnerState>;
|
|
28
21
|
}
|
|
29
22
|
export interface UseMobilePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedUseMobilePickerSlotProps<TEnableAccessibleFieldDOMStructure>, Pick<PickersLayoutSlotProps<PickerValue>, 'toolbar'> {
|
|
30
23
|
}
|
|
31
|
-
export interface MobileOnlyPickerProps extends
|
|
24
|
+
export interface MobileOnlyPickerProps extends BaseNonRangeNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerProviderNonStaticProps {
|
|
32
25
|
}
|
|
33
26
|
export interface UseMobilePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends BasePickerProps<PickerValue, TView, TError, TExternalProps>, MakeRequired<MobileOnlyPickerProps, 'format'> {
|
|
34
27
|
/**
|
|
@@ -44,5 +37,4 @@ export interface UseMobilePickerProps<TView extends DateOrTimeViewWithMeridiem,
|
|
|
44
37
|
}
|
|
45
38
|
export interface UseMobilePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobilePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends Pick<UsePickerParams<PickerValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator'> {
|
|
46
39
|
props: TExternalProps;
|
|
47
|
-
getOpenDialogAriaText: (date: PickerValidDate | null) => string;
|
|
48
40
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { PickerContext } from "../../hooks/usePickerContext.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns the context passed by the picker that wraps the current component.
|
|
8
|
+
* If the context is not found, returns `null`.
|
|
9
|
+
*/
|
|
10
|
+
export const useNullablePickerContext = () => React.useContext(PickerContext);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { UsePickerParams, UsePickerProps, UsePickerResponse } from './usePicker.types';
|
|
2
|
-
import { InferError } from '../../../models';
|
|
3
2
|
import { DateOrTimeViewWithMeridiem, PickerValidValue } from '../../models';
|
|
4
|
-
export declare const usePicker: <TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerProps<TValue, TView, any, any>>({ props, valueManager, valueType, variant, validator, autoFocusView, rendererInterceptor, fieldRef, localeText, }: UsePickerParams<TValue, TView, TExternalProps>) => UsePickerResponse<TValue, TView
|
|
3
|
+
export declare const usePicker: <TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerProps<TValue, TView, any, any>>({ props, valueManager, valueType, variant, validator, autoFocusView, rendererInterceptor, fieldRef, localeText, }: UsePickerParams<TValue, TView, TExternalProps>) => UsePickerResponse<TValue, TView>;
|
|
@@ -40,11 +40,8 @@ export const usePicker = ({
|
|
|
40
40
|
paramsFromUsePickerViews: pickerViewsResponse.provider
|
|
41
41
|
});
|
|
42
42
|
return {
|
|
43
|
-
// Picker value
|
|
44
|
-
fieldProps: pickerValueResponse.fieldProps,
|
|
45
43
|
// Picker views
|
|
46
44
|
renderCurrentView: pickerViewsResponse.renderCurrentView,
|
|
47
|
-
hasUIView: pickerViewsResponse.provider.hasUIView,
|
|
48
45
|
shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,
|
|
49
46
|
// Picker provider
|
|
50
47
|
providerProps,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UsePickerValueParams, UsePickerValueProps, UsePickerValueBaseProps
|
|
1
|
+
import { UsePickerValueParams, UsePickerValueProps, UsePickerValueBaseProps } from './usePickerValue.types';
|
|
2
2
|
import { UsePickerViewsProps, UsePickerViewParams, UsePickerViewsResponse, UsePickerViewsBaseProps } from './usePickerViews';
|
|
3
3
|
import { InferError, PickerOwnerState } from '../../../models';
|
|
4
4
|
import { DateOrTimeViewWithMeridiem, PickerValidValue } from '../../models';
|
|
@@ -13,8 +13,7 @@ export interface UsePickerProps<TValue extends PickerValidValue, TView extends D
|
|
|
13
13
|
export interface UsePickerParams<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerProps<TValue, TView, any, any>> extends Pick<UsePickerValueParams<TValue, TExternalProps>, 'valueManager' | 'valueType' | 'validator'>, Pick<UsePickerViewParams<TValue, TView, TExternalProps>, 'autoFocusView' | 'rendererInterceptor' | 'fieldRef'>, Pick<UsePickerProviderParameters<TValue, TView, InferError<TExternalProps>>, 'localeText' | 'variant'> {
|
|
14
14
|
props: TExternalProps;
|
|
15
15
|
}
|
|
16
|
-
export interface UsePickerResponse<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem
|
|
16
|
+
export interface UsePickerResponse<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem> extends Pick<UsePickerViewsResponse<TView>, 'shouldRestoreFocus' | 'renderCurrentView'> {
|
|
17
17
|
ownerState: PickerOwnerState;
|
|
18
18
|
providerProps: UsePickerProviderReturnValue<TValue>;
|
|
19
|
-
hasUIView: boolean;
|
|
20
19
|
}
|
|
@@ -3,10 +3,11 @@ import { PickerProviderProps } from '../../components/PickerProvider';
|
|
|
3
3
|
import type { UsePickerProps } from './usePicker.types';
|
|
4
4
|
import { DateOrTimeViewWithMeridiem, FormProps, PickerOrientation, PickerValidValue, PickerVariant } from '../../models';
|
|
5
5
|
import { UsePickerViewsProviderParams } from './usePickerViews';
|
|
6
|
+
import { PickerFieldPrivateContextValue } from '../useField/useFieldInternalPropsWithDefaults';
|
|
6
7
|
export declare const usePickerOrientation: (views: readonly DateOrTimeViewWithMeridiem[], customOrientation: PickerOrientation | undefined) => PickerOrientation;
|
|
7
8
|
export declare function usePickerProvider<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError>(parameters: UsePickerProviderParameters<TValue, TView, TError>): UsePickerProviderReturnValue<TValue>;
|
|
8
9
|
export interface UsePickerProviderParameters<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError> extends Pick<PickerProviderProps<TValue>, 'localeText'> {
|
|
9
|
-
props: UsePickerProps<TValue, any, any, any
|
|
10
|
+
props: UsePickerProps<TValue, any, any, any> & UsePickerProviderNonStaticProps;
|
|
10
11
|
valueManager: PickerValueManager<TValue, any>;
|
|
11
12
|
variant: PickerVariant;
|
|
12
13
|
paramsFromUsePickerValue: UsePickerValueProviderParams<TValue, TError>;
|
|
@@ -27,7 +28,12 @@ export interface UsePickerProviderProps extends FormProps {
|
|
|
27
28
|
/**
|
|
28
29
|
* Props used to create the picker's contexts and that are not available on static pickers.
|
|
29
30
|
*/
|
|
30
|
-
export interface UsePickerProviderNonStaticProps {
|
|
31
|
+
export interface UsePickerProviderNonStaticProps extends PickerFieldPrivateContextValue {
|
|
32
|
+
/**
|
|
33
|
+
* Format of the date when rendered in the input(s).
|
|
34
|
+
* Defaults to localized format based on the used `views`.
|
|
35
|
+
*/
|
|
36
|
+
format?: string;
|
|
31
37
|
/**
|
|
32
38
|
* If `true`, the open picker button will not be rendered (renders only the field).
|
|
33
39
|
* @default false
|
|
@@ -45,6 +45,7 @@ export function usePickerProvider(parameters) {
|
|
|
45
45
|
} = parameters;
|
|
46
46
|
const utils = useUtils();
|
|
47
47
|
const orientation = usePickerOrientation(paramsFromUsePickerViews.views, props.orientation);
|
|
48
|
+
const triggerRef = React.useRef(null);
|
|
48
49
|
const ownerState = React.useMemo(() => ({
|
|
49
50
|
isPickerValueEmpty: valueManager.areValuesEqual(utils, paramsFromUsePickerValue.value, valueManager.emptyValue),
|
|
50
51
|
isPickerOpen: paramsFromUsePickerValue.contextValue.open,
|
|
@@ -53,21 +54,40 @@ export function usePickerProvider(parameters) {
|
|
|
53
54
|
pickerOrientation: orientation,
|
|
54
55
|
pickerVariant: variant
|
|
55
56
|
}), [utils, valueManager, paramsFromUsePickerValue.value, paramsFromUsePickerValue.contextValue.open, orientation, variant, props.disabled, props.readOnly]);
|
|
57
|
+
const triggerStatus = React.useMemo(() => {
|
|
58
|
+
if (props.disableOpenPicker || !paramsFromUsePickerViews.hasUIView) {
|
|
59
|
+
return 'hidden';
|
|
60
|
+
}
|
|
61
|
+
if (props.disabled || props.readOnly) {
|
|
62
|
+
return 'disabled';
|
|
63
|
+
}
|
|
64
|
+
return 'enabled';
|
|
65
|
+
}, [props.disableOpenPicker, paramsFromUsePickerViews.hasUIView, props.disabled, props.readOnly]);
|
|
56
66
|
const contextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, {
|
|
57
67
|
disabled: props.disabled ?? false,
|
|
58
68
|
readOnly: props.readOnly ?? false,
|
|
59
69
|
variant,
|
|
60
|
-
orientation
|
|
61
|
-
|
|
70
|
+
orientation,
|
|
71
|
+
triggerRef,
|
|
72
|
+
triggerStatus,
|
|
73
|
+
fieldFormat: props.format ?? ''
|
|
74
|
+
}), [paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, variant, orientation, props.disabled, props.readOnly, triggerRef, triggerStatus, props.format]);
|
|
62
75
|
const privateContextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.privateContextValue, {
|
|
63
76
|
ownerState
|
|
64
77
|
}), [paramsFromUsePickerValue, ownerState]);
|
|
65
78
|
const actionsContextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.actionsContextValue, paramsFromUsePickerViews.actionsContextValue), [paramsFromUsePickerValue.actionsContextValue, paramsFromUsePickerViews.actionsContextValue]);
|
|
79
|
+
const fieldPrivateContextValue = React.useMemo(() => ({
|
|
80
|
+
formatDensity: props.formatDensity,
|
|
81
|
+
enableAccessibleFieldDOMStructure: props.enableAccessibleFieldDOMStructure,
|
|
82
|
+
selectedSections: props.selectedSections,
|
|
83
|
+
onSelectedSectionsChange: props.onSelectedSectionsChange
|
|
84
|
+
}), [props.formatDensity, props.enableAccessibleFieldDOMStructure, props.selectedSections, props.onSelectedSectionsChange]);
|
|
66
85
|
return {
|
|
67
86
|
localeText,
|
|
68
87
|
contextValue,
|
|
69
88
|
privateContextValue,
|
|
70
89
|
actionsContextValue,
|
|
90
|
+
fieldPrivateContextValue,
|
|
71
91
|
isValidContextValue: paramsFromUsePickerValue.isValidContextValue
|
|
72
92
|
};
|
|
73
93
|
}
|
|
@@ -176,12 +176,6 @@ export const usePickerValue = ({
|
|
|
176
176
|
skipPublicationIfPristine: true
|
|
177
177
|
});
|
|
178
178
|
});
|
|
179
|
-
const fieldResponse = {
|
|
180
|
-
value: dateState.draft,
|
|
181
|
-
onChange: (newValue, context) => setValue(newValue, {
|
|
182
|
-
validationError: context.validationError
|
|
183
|
-
})
|
|
184
|
-
};
|
|
185
179
|
const setValueFromView = useEventCallback((newValue, selectionState = 'partial') => {
|
|
186
180
|
// TODO: Expose a new method (private?) like `setView` that only updates the draft value.
|
|
187
181
|
if (selectionState === 'shallow') {
|
|
@@ -210,21 +204,21 @@ export const usePickerValue = ({
|
|
|
210
204
|
cancelValueChanges
|
|
211
205
|
}), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
|
|
212
206
|
const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
207
|
+
value: dateState.draft,
|
|
208
|
+
timezone,
|
|
209
|
+
open
|
|
210
|
+
}), [actionsContextValue, timezone, open, dateState.draft]);
|
|
216
211
|
const privateContextValue = React.useMemo(() => ({
|
|
217
212
|
dismissViews
|
|
218
213
|
}), [dismissViews]);
|
|
219
214
|
const providerParams = {
|
|
220
|
-
value:
|
|
215
|
+
value: dateState.draft,
|
|
221
216
|
contextValue,
|
|
222
217
|
actionsContextValue,
|
|
223
218
|
privateContextValue,
|
|
224
219
|
isValidContextValue: isValid
|
|
225
220
|
};
|
|
226
221
|
return {
|
|
227
|
-
fieldProps: fieldResponse,
|
|
228
222
|
viewProps: viewResponse,
|
|
229
223
|
provider: providerParams
|
|
230
224
|
};
|
|
@@ -226,7 +226,6 @@ export interface UsePickerValueProviderParams<TValue extends PickerValidValue, T
|
|
|
226
226
|
}
|
|
227
227
|
export interface UsePickerValueResponse<TValue extends PickerValidValue, TError> {
|
|
228
228
|
viewProps: UsePickerValueViewsResponse<TValue>;
|
|
229
|
-
fieldProps: UsePickerValueFieldResponse<TValue, TError>;
|
|
230
229
|
provider: UsePickerValueProviderParams<TValue, TError>;
|
|
231
230
|
}
|
|
232
231
|
export interface UsePickerValueContextValue<TValue extends PickerValidValue, TError> extends UsePickerValueActionsContextValue<TValue, TError> {
|
|
@@ -234,6 +233,10 @@ export interface UsePickerValueContextValue<TValue extends PickerValidValue, TEr
|
|
|
234
233
|
* The current value of the picker.
|
|
235
234
|
*/
|
|
236
235
|
value: TValue;
|
|
236
|
+
/**
|
|
237
|
+
* The timezone to use when rendering the dates.
|
|
238
|
+
*/
|
|
239
|
+
timezone: PickersTimezone;
|
|
237
240
|
/**
|
|
238
241
|
* `true` if the picker is open, `false` otherwise.
|
|
239
242
|
*/
|
|
@@ -286,7 +289,7 @@ export interface UsePickerValuePrivateContextValue {
|
|
|
286
289
|
*/
|
|
287
290
|
dismissViews: () => void;
|
|
288
291
|
}
|
|
289
|
-
export interface SetValueActionOptions<TError = string> {
|
|
292
|
+
export interface SetValueActionOptions<TError = string | null> {
|
|
290
293
|
/**
|
|
291
294
|
* Importance of the change when picking a value:
|
|
292
295
|
* - "accept": fires `onChange`, fires `onAccept` and closes the picker.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { MuiPickersAdapterContextValue } from '../../LocalizationProvider/LocalizationProvider';
|
|
2
2
|
import { PickersLocaleText } from '../../locales/utils/pickersLocaleTextApi';
|
|
3
3
|
import { PickersTimezone, PickerValidDate } from '../../models';
|
|
4
|
-
export declare const useLocalizationContext: () =>
|
|
5
|
-
localeText: PickersLocaleText;
|
|
6
|
-
};
|
|
4
|
+
export declare const useLocalizationContext: () => UseLocalizationContextReturnValue;
|
|
7
5
|
export declare const useUtils: () => import("@mui/x-date-pickers/models").MuiPickersAdapter<any>;
|
|
8
6
|
export declare const useDefaultDates: () => {
|
|
9
7
|
minDate: PickerValidDate;
|
|
10
8
|
maxDate: PickerValidDate;
|
|
11
9
|
};
|
|
12
10
|
export declare const useNow: (timezone: PickersTimezone) => PickerValidDate;
|
|
11
|
+
export interface UseLocalizationContextReturnValue extends Omit<MuiPickersAdapterContextValue, 'localeText'> {
|
|
12
|
+
localeText: PickersLocaleText;
|
|
13
|
+
}
|
package/internals/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { PickersArrowSwitcher } from './components/PickersArrowSwitcher/PickersArrowSwitcher';
|
|
2
2
|
export type { ExportedPickersArrowSwitcherProps, PickersArrowSwitcherSlots, PickersArrowSwitcherSlotProps, } from './components/PickersArrowSwitcher';
|
|
3
|
+
export { PickerFieldUI, PickerFieldUIContextProvider, cleanFieldResponse, useFieldTextFieldProps, } from './components/PickerFieldUI';
|
|
4
|
+
export type { ExportedPickerFieldUIProps, PickerFieldUISlots, PickerFieldUISlotProps, } from './components/PickerFieldUI';
|
|
3
5
|
export { PickerProvider } from './components/PickerProvider';
|
|
6
|
+
export type { PickerContextValue } from './components/PickerProvider';
|
|
4
7
|
export { PickersModalDialog } from './components/PickersModalDialog';
|
|
5
8
|
export type { PickersModalDialogSlots, PickersModalDialogSlotProps, } from './components/PickersModalDialog';
|
|
6
9
|
export { PickersPopper } from './components/PickersPopper';
|
|
@@ -25,7 +28,7 @@ export { DAY_MARGIN, DIALOG_WIDTH, VIEW_HEIGHT } from './constants/dimensions';
|
|
|
25
28
|
export { useControlledValueWithTimezone } from './hooks/useValueWithTimezone';
|
|
26
29
|
export type { DesktopOnlyPickerProps } from './hooks/useDesktopPicker';
|
|
27
30
|
export { useField, useFieldInternalPropsWithDefaults, createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections, } from './hooks/useField';
|
|
28
|
-
export type { UseFieldInternalProps, UseFieldParams, UseFieldResponse, FieldValueManager, FieldChangeHandler, FieldChangeHandlerContext, } from './hooks/useField';
|
|
31
|
+
export type { UseFieldInternalProps, UseFieldParams, UseFieldResponse, FieldValueManager, FieldChangeHandler, FieldChangeHandlerContext, PickerFieldPrivateContextValue, } from './hooks/useField';
|
|
29
32
|
export { useFieldOwnerState } from './hooks/useFieldOwnerState';
|
|
30
33
|
export type { MobileOnlyPickerProps } from './hooks/useMobilePicker';
|
|
31
34
|
export { usePicker } from './hooks/usePicker';
|
|
@@ -42,9 +45,10 @@ export { useLocalizationContext, useDefaultDates, useUtils, useNow } from './hoo
|
|
|
42
45
|
export type { ExportedUseViewsOptions, UseViewsOptions } from './hooks/useViews';
|
|
43
46
|
export { useViews } from './hooks/useViews';
|
|
44
47
|
export { usePreviousMonthDisabled, useNextMonthDisabled } from './hooks/date-helpers-hooks';
|
|
48
|
+
export type { PickerAnyManager, PickerManagerFieldInternalProps, PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerError, } from './models/manager';
|
|
45
49
|
export type { RangePosition } from './models/pickers';
|
|
46
50
|
export type { BaseSingleInputFieldProps, FieldRangeSection } from './models/fields';
|
|
47
|
-
export type { BasePickerProps, BasePickerInputProps
|
|
51
|
+
export type { BasePickerProps, BasePickerInputProps } from './models/props/basePickerProps';
|
|
48
52
|
export type { BaseClockProps, DesktopOnlyTimePickerProps, AmPmProps } from './models/props/time';
|
|
49
53
|
export type { ExportedBaseTabsProps } from './models/props/tabs';
|
|
50
54
|
export type { BaseToolbarProps, ExportedBaseToolbarProps } from './models/props/toolbar';
|
|
@@ -52,7 +56,6 @@ export type { FormProps } from './models/formProps';
|
|
|
52
56
|
export type { PickerVariant, TimeViewWithMeridiem, DateOrTimeViewWithMeridiem, } from './models/common';
|
|
53
57
|
export type { BaseDateValidationProps, BaseTimeValidationProps, TimeValidationProps, MonthValidationProps, YearValidationProps, DayValidationProps, DateTimeValidationProps, } from './models/validation';
|
|
54
58
|
export type { PickerValue, PickerRangeValue, PickerNonNullableRangeValue, InferNonNullablePickerValue, PickerValidValue, } from './models/value';
|
|
55
|
-
export { convertFieldResponseIntoMuiTextFieldProps } from './utils/convertFieldResponseIntoMuiTextFieldProps';
|
|
56
59
|
export { applyDefaultDate, replaceInvalidDateByNull, areDatesEqual, getTodayDate, isDatePickerView, mergeDateAndTime, formatMeridiem, } from './utils/date-utils';
|
|
57
60
|
export { resolveTimeViewsResponse, resolveDateTimeFormat } from './utils/date-time-utils';
|
|
58
61
|
export { getDefaultReferenceDate } from './utils/getDefaultReferenceDate';
|
package/internals/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { PickersArrowSwitcher } from "./components/PickersArrowSwitcher/PickersArrowSwitcher.js";
|
|
2
|
+
export { PickerFieldUI, PickerFieldUIContextProvider, cleanFieldResponse, useFieldTextFieldProps } from "./components/PickerFieldUI.js";
|
|
2
3
|
export { PickerProvider } from "./components/PickerProvider.js";
|
|
3
4
|
export { PickersModalDialog } from "./components/PickersModalDialog.js";
|
|
4
5
|
export { PickersPopper } from "./components/PickersPopper.js";
|
|
@@ -20,7 +21,6 @@ export { useToolbarOwnerState } from "./hooks/useToolbarOwnerState.js";
|
|
|
20
21
|
export { useLocalizationContext, useDefaultDates, useUtils, useNow } from "./hooks/useUtils.js";
|
|
21
22
|
export { useViews } from "./hooks/useViews.js";
|
|
22
23
|
export { usePreviousMonthDisabled, useNextMonthDisabled } from "./hooks/date-helpers-hooks.js";
|
|
23
|
-
export { convertFieldResponseIntoMuiTextFieldProps } from "./utils/convertFieldResponseIntoMuiTextFieldProps.js";
|
|
24
24
|
export { applyDefaultDate, replaceInvalidDateByNull, areDatesEqual, getTodayDate, isDatePickerView, mergeDateAndTime, formatMeridiem } from "./utils/date-utils.js";
|
|
25
25
|
export { resolveTimeViewsResponse, resolveDateTimeFormat } from "./utils/date-time-utils.js";
|
|
26
26
|
export { getDefaultReferenceDate } from "./utils/getDefaultReferenceDate.js";
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { SxProps } from '@mui/material/styles';
|
|
2
|
-
import { MakeRequired } from '@mui/x-internals/types';
|
|
3
|
-
import type { ExportedUseClearableFieldProps, UseClearableFieldSlotProps, UseClearableFieldSlots } from '../../hooks/useClearableField';
|
|
4
2
|
import type { FieldSection, PickerOwnerState } from '../../models';
|
|
5
3
|
import type { UseFieldInternalProps } from '../hooks/useField';
|
|
6
4
|
import { RangePosition } from './pickers';
|
|
7
5
|
import { PickerValidValue } from './value';
|
|
6
|
+
import type { ExportedPickerFieldUIProps } from '../components/PickerFieldUI';
|
|
8
7
|
export interface FieldRangeSection extends FieldSection {
|
|
9
8
|
dateName: RangePosition;
|
|
10
9
|
}
|
|
11
|
-
export interface BaseForwardedSingleInputFieldProps extends
|
|
10
|
+
export interface BaseForwardedSingleInputFieldProps extends Pick<ExportedPickerFieldUIProps, 'clearable' | 'onClear'> {
|
|
12
11
|
className: string | undefined;
|
|
13
12
|
sx: SxProps<any> | undefined;
|
|
14
13
|
label: React.ReactNode | undefined;
|
|
@@ -19,22 +18,10 @@ export interface BaseForwardedSingleInputFieldProps extends ExportedUseClearable
|
|
|
19
18
|
onBlur?: React.FocusEventHandler;
|
|
20
19
|
ref?: React.Ref<HTMLDivElement>;
|
|
21
20
|
inputRef?: React.Ref<HTMLInputElement>;
|
|
22
|
-
InputProps?: {
|
|
23
|
-
ref?: React.Ref<any>;
|
|
24
|
-
endAdornment?: React.ReactNode;
|
|
25
|
-
startAdornment?: React.ReactNode;
|
|
26
|
-
};
|
|
27
|
-
inputProps?: {
|
|
28
|
-
'aria-label'?: string;
|
|
29
|
-
};
|
|
30
|
-
slots?: UseClearableFieldSlots;
|
|
31
|
-
slotProps?: UseClearableFieldSlotProps & {
|
|
32
|
-
textField?: {};
|
|
33
|
-
};
|
|
34
21
|
ownerState: PickerOwnerState;
|
|
35
22
|
}
|
|
36
23
|
/**
|
|
37
24
|
* Props the single input field can receive when used inside a picker.
|
|
38
25
|
* Only contains what the MUI components are passing to the field, not what users can pass using the `props.slotProps.field`.
|
|
39
26
|
*/
|
|
40
|
-
export type BaseSingleInputFieldProps<TValue extends PickerValidValue, TEnableAccessibleFieldDOMStructure extends boolean, TError> =
|
|
27
|
+
export type BaseSingleInputFieldProps<TValue extends PickerValidValue, TEnableAccessibleFieldDOMStructure extends boolean, TError> = Pick<UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, TError>, 'readOnly' | 'unstableFieldRef' | 'autoFocus'> & BaseForwardedSingleInputFieldProps;
|
|
@@ -7,6 +7,9 @@ type PickerManagerProperties<TManager extends PickerAnyManager> = TManager exten
|
|
|
7
7
|
fieldInternalProps: TFieldInternalProps;
|
|
8
8
|
fieldInternalPropsWithDefaults: TFieldInternalPropsWithDefaults;
|
|
9
9
|
} : never;
|
|
10
|
+
export type PickerManagerValue<TManager extends PickerAnyManager> = PickerManagerProperties<TManager>['value'];
|
|
11
|
+
export type PickerManagerError<TManager extends PickerAnyManager> = PickerManagerProperties<TManager>['error'];
|
|
10
12
|
export type PickerManagerFieldInternalProps<TManager extends PickerAnyManager> = PickerManagerProperties<TManager>['fieldInternalProps'];
|
|
11
13
|
export type PickerManagerFieldInternalPropsWithDefaults<TManager extends PickerAnyManager> = PickerManagerProperties<TManager>['fieldInternalPropsWithDefaults'];
|
|
14
|
+
export type PickerManagerEnableAccessibleFieldDOMStructure<TManager extends PickerAnyManager> = PickerManagerProperties<TManager>['enableAccessibleFieldDOMStructure'];
|
|
12
15
|
export {};
|
|
@@ -6,7 +6,6 @@ import { UsePickerBaseProps } from '../../hooks/usePicker';
|
|
|
6
6
|
import { PickersInputComponentLocaleText } from '../../../locales/utils/pickersLocaleTextApi';
|
|
7
7
|
import type { UsePickerViewsProps } from '../../hooks/usePicker/usePickerViews';
|
|
8
8
|
import { DateOrTimeViewWithMeridiem } from '../common';
|
|
9
|
-
import { UseFieldInternalProps } from '../../hooks/useField';
|
|
10
9
|
import { PickerValidValue } from '../value';
|
|
11
10
|
/**
|
|
12
11
|
* Props common to all pickers after applying the default props on each picker.
|
|
@@ -28,17 +27,6 @@ export interface BasePickerProps<TValue extends PickerValidValue, TView extends
|
|
|
28
27
|
*/
|
|
29
28
|
export interface BasePickerInputProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError> extends Omit<MakeOptional<BasePickerProps<TValue, TView, TError, any>, 'openTo' | 'views'>, 'viewRenderers'> {
|
|
30
29
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Props common to all non-static pickers.
|
|
33
|
-
* These props are handled by the headless wrappers.
|
|
34
|
-
*/
|
|
35
|
-
export interface BaseNonStaticPickerProps extends Pick<UseFieldInternalProps<any, any, any>, 'formatDensity' | 'enableAccessibleFieldDOMStructure' | 'selectedSections' | 'onSelectedSectionsChange'> {
|
|
36
|
-
/**
|
|
37
|
-
* Format of the date when rendered in the input(s).
|
|
38
|
-
* Defaults to localized format based on the used `views`.
|
|
39
|
-
*/
|
|
40
|
-
format?: string;
|
|
41
|
-
}
|
|
42
30
|
/**
|
|
43
31
|
* Props common to all non-range non-static pickers.
|
|
44
32
|
* These props are handled by the headless wrappers.
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AdapterFormats, MuiPickersAdapter, PickerValidDate } from '../../models';
|
|
2
1
|
import { PickersLocaleText } from './pickersLocaleTextApi';
|
|
3
2
|
export declare const getPickersLocalization: (pickersTranslations: Partial<PickersLocaleText>) => {
|
|
4
3
|
components: {
|
|
@@ -79,9 +78,3 @@ export declare const getPickersLocalization: (pickersTranslations: Partial<Picke
|
|
|
79
78
|
};
|
|
80
79
|
};
|
|
81
80
|
};
|
|
82
|
-
export declare const buildGetOpenDialogAriaText: (params: {
|
|
83
|
-
utils: MuiPickersAdapter;
|
|
84
|
-
formatKey: keyof AdapterFormats;
|
|
85
|
-
contextTranslation: (formattedValue: string | null) => string;
|
|
86
|
-
propsTranslation: ((formattedValue: string | null) => string) | undefined;
|
|
87
|
-
}) => (value: PickerValidDate | null) => string;
|
|
@@ -9,17 +9,4 @@ export const getPickersLocalization = pickersTranslations => {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
};
|
|
13
|
-
export const buildGetOpenDialogAriaText = params => {
|
|
14
|
-
const {
|
|
15
|
-
utils,
|
|
16
|
-
formatKey,
|
|
17
|
-
contextTranslation,
|
|
18
|
-
propsTranslation
|
|
19
|
-
} = params;
|
|
20
|
-
return value => {
|
|
21
|
-
const formattedValue = utils.isValid(value) ? utils.format(value, formatKey) : null;
|
|
22
|
-
const translation = propsTranslation ?? contextTranslation;
|
|
23
|
-
return translation(formattedValue);
|
|
24
|
-
};
|
|
25
12
|
};
|
package/managers/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { useDateManager } from './useDateManager';
|
|
2
|
-
export type { UseDateManagerReturnValue, UseDateManagerParameters } from './useDateManager';
|
|
2
|
+
export type { UseDateManagerReturnValue, UseDateManagerParameters, DateManagerFieldInternalProps, } from './useDateManager';
|
|
3
3
|
export { useTimeManager } from './useTimeManager';
|
|
4
|
-
export type { UseTimeManagerReturnValue, UseTimeManagerParameters } from './useTimeManager';
|
|
4
|
+
export type { UseTimeManagerReturnValue, UseTimeManagerParameters, TimeManagerFieldInternalProps, } from './useTimeManager';
|
|
5
5
|
export { useDateTimeManager } from './useDateTimeManager';
|
|
6
|
-
export type { UseDateTimeManagerReturnValue, UseDateTimeManagerParameters, } from './useDateTimeManager';
|
|
6
|
+
export type { UseDateTimeManagerReturnValue, UseDateTimeManagerParameters, DateTimeManagerFieldInternalProps, } from './useDateTimeManager';
|
|
@@ -14,7 +14,7 @@ export interface UseDateManagerParameters<TEnableAccessibleFieldDOMStructure ext
|
|
|
14
14
|
enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
|
|
15
15
|
}
|
|
16
16
|
export type UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError, DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, DateManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
|
|
17
|
-
interface DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>, 'format'>, ExportedValidateDateProps {
|
|
17
|
+
export interface DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>, 'format'>, ExportedValidateDateProps {
|
|
18
18
|
}
|
|
19
19
|
interface DateManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>, ValidateDateProps {
|
|
20
20
|
}
|
|
@@ -23,7 +23,15 @@ export function useDateManager(parameters = {}) {
|
|
|
23
23
|
defaultDates,
|
|
24
24
|
utils,
|
|
25
25
|
internalProps
|
|
26
|
-
}))
|
|
26
|
+
})),
|
|
27
|
+
internal_getOpenPickerButtonAriaLabel: ({
|
|
28
|
+
value,
|
|
29
|
+
utils,
|
|
30
|
+
localeText
|
|
31
|
+
}) => {
|
|
32
|
+
const formattedValue = utils.isValid(value) ? utils.format(value, 'fullDate') : null;
|
|
33
|
+
return localeText.openDatePickerDialogue(formattedValue);
|
|
34
|
+
}
|
|
27
35
|
}), [enableAccessibleFieldDOMStructure]);
|
|
28
36
|
}
|
|
29
37
|
|
|
@@ -15,7 +15,7 @@ export interface UseDateTimeManagerParameters<TEnableAccessibleFieldDOMStructure
|
|
|
15
15
|
enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
|
|
16
16
|
}
|
|
17
17
|
export type UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError, DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, DateTimeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
|
|
18
|
-
interface DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, AmPmProps {
|
|
18
|
+
export interface DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, AmPmProps {
|
|
19
19
|
}
|
|
20
20
|
interface DateTimeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, ValidateDateTimeProps {
|
|
21
21
|
}
|