@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
|
@@ -13,10 +13,10 @@ var _useSlotProps2 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
|
13
13
|
var _xLicense = require("@mui/x-license");
|
|
14
14
|
var _PickersLayout = require("@mui/x-date-pickers/PickersLayout");
|
|
15
15
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
16
|
-
var _useEnrichedRangePickerField = require("../useEnrichedRangePickerField");
|
|
17
16
|
var _releaseInfo = require("../../utils/releaseInfo");
|
|
18
17
|
var _useRangePosition = require("../useRangePosition");
|
|
19
18
|
var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
|
|
19
|
+
var _dateFieldsUtils = require("../../utils/date-fields-utils");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
21
|
const _excluded = ["props"],
|
|
22
22
|
_excluded2 = ["ownerState"];
|
|
@@ -31,27 +31,11 @@ const useDesktopRangePicker = _ref => {
|
|
|
31
31
|
slots,
|
|
32
32
|
slotProps,
|
|
33
33
|
inputRef,
|
|
34
|
-
readOnly,
|
|
35
|
-
autoFocus,
|
|
36
|
-
disableOpenPicker,
|
|
37
34
|
localeText
|
|
38
35
|
} = props;
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const endFieldRef = React.useRef(null);
|
|
43
|
-
const singleInputFieldRef = React.useRef(null);
|
|
44
|
-
const initialView = React.useRef(props.openTo ?? null);
|
|
45
|
-
const fieldType = slots.field.fieldType ?? 'multi-input';
|
|
46
|
-
const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
|
|
47
|
-
let fieldRef;
|
|
48
|
-
if (fieldType === 'single-input') {
|
|
49
|
-
fieldRef = singleInputFieldRef;
|
|
50
|
-
} else if (rangePositionResponse.rangePosition === 'start') {
|
|
51
|
-
fieldRef = startFieldRef;
|
|
52
|
-
} else {
|
|
53
|
-
fieldRef = endFieldRef;
|
|
54
|
-
}
|
|
36
|
+
const fieldType = (0, _dateFieldsUtils.getRangeFieldType)(slots.field);
|
|
37
|
+
const viewContainerRole = fieldType === 'single-input' ? 'dialog' : 'tooltip';
|
|
38
|
+
const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props);
|
|
55
39
|
const {
|
|
56
40
|
providerProps,
|
|
57
41
|
renderCurrentView,
|
|
@@ -59,77 +43,26 @@ const useDesktopRangePicker = _ref => {
|
|
|
59
43
|
} = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
|
|
60
44
|
props,
|
|
61
45
|
variant: 'desktop',
|
|
62
|
-
autoFocusView:
|
|
63
|
-
|
|
46
|
+
autoFocusView: viewContainerRole === 'dialog',
|
|
47
|
+
viewContainerRole,
|
|
64
48
|
localeText
|
|
65
49
|
}));
|
|
66
|
-
|
|
67
|
-
// Temporary hack to hide the opening button on the range pickers until we have migrate them to the new opening logic.
|
|
68
|
-
providerProps.contextValue.triggerStatus = 'hidden';
|
|
69
|
-
React.useEffect(() => {
|
|
70
|
-
if (providerProps.contextValue.view) {
|
|
71
|
-
initialView.current = providerProps.contextValue.view;
|
|
72
|
-
}
|
|
73
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
74
|
-
}, []);
|
|
75
|
-
const handleBlur = () => {
|
|
76
|
-
(0, _internals.executeInTheNextEventLoopTick)(() => {
|
|
77
|
-
if (fieldContainerRef.current?.contains((0, _internals.getActiveElement)(document)) || popperRef.current?.contains((0, _internals.getActiveElement)(document))) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
|
|
82
|
-
providerProps.privateContextValue.dismissViews();
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
50
|
const Field = slots.field;
|
|
86
51
|
const _useSlotProps = (0, _useSlotProps2.default)({
|
|
87
52
|
elementType: Field,
|
|
88
53
|
externalSlotProps: slotProps?.field,
|
|
89
|
-
additionalProps: {
|
|
90
|
-
// Internal props
|
|
91
|
-
readOnly,
|
|
92
|
-
autoFocus: autoFocus && !props.open,
|
|
93
|
-
// Forwarded props
|
|
94
|
-
ref: fieldContainerRef
|
|
95
|
-
},
|
|
96
54
|
ownerState
|
|
97
55
|
}),
|
|
98
56
|
fieldProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
|
|
99
|
-
const enrichedFieldResponse = (0, _useEnrichedRangePickerField.useEnrichedRangePickerField)((0, _extends2.default)({
|
|
100
|
-
variant: 'desktop',
|
|
101
|
-
fieldType,
|
|
102
|
-
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
103
|
-
contextValue: providerProps.contextValue,
|
|
104
|
-
fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
|
|
105
|
-
readOnly,
|
|
106
|
-
disableOpenPicker,
|
|
107
|
-
localeText,
|
|
108
|
-
onBlur: handleBlur,
|
|
109
|
-
pickerSlotProps: slotProps,
|
|
110
|
-
pickerSlots: slots,
|
|
111
|
-
fieldProps,
|
|
112
|
-
anchorRef: providerProps.contextValue.triggerRef,
|
|
113
|
-
startFieldRef,
|
|
114
|
-
endFieldRef,
|
|
115
|
-
singleInputFieldRef,
|
|
116
|
-
currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
|
|
117
|
-
initialView: initialView.current ?? undefined
|
|
118
|
-
}, rangePositionResponse));
|
|
119
57
|
const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
|
|
120
58
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
|
|
121
|
-
// This override will go away once the range fields handle the picker opening
|
|
122
|
-
fieldPrivateContextValue: (0, _extends2.default)({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
|
|
123
59
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerFieldUIContextProvider, {
|
|
124
60
|
slots: slots,
|
|
125
61
|
slotProps: slotProps,
|
|
126
62
|
inputRef: inputRef,
|
|
127
63
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
|
|
128
64
|
value: rangePositionResponse,
|
|
129
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({},
|
|
130
|
-
role: "tooltip",
|
|
131
|
-
containerRef: popperRef,
|
|
132
|
-
onBlur: handleBlur,
|
|
65
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, fieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerPopper, {
|
|
133
66
|
slots: slots,
|
|
134
67
|
slotProps: slotProps,
|
|
135
68
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
2
|
+
import { PickerFieldSlotProps, PickerOwnerState } from '@mui/x-date-pickers/models';
|
|
3
|
+
import { PickerPopperSlots, PickerPopperSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem, PickerRangeValue, PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from '@mui/x-date-pickers/internals';
|
|
4
|
+
import { ExportedPickersLayoutSlotProps, ExportedPickersLayoutSlots } from '@mui/x-date-pickers/PickersLayout';
|
|
5
|
+
import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps } from "../models/useRangePicker.js";
|
|
6
|
+
export interface UseDesktopRangePickerSlots extends PickerPopperSlots, ExportedPickersLayoutSlots<PickerRangeValue>, PickerFieldUISlotsFromContext {
|
|
7
|
+
/**
|
|
8
|
+
* Component used to enter the date with the keyboard.
|
|
9
|
+
*/
|
|
10
|
+
field: React.ElementType;
|
|
11
|
+
}
|
|
12
|
+
export interface UseDesktopRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickerPopperSlotProps, ExportedPickersLayoutSlotProps<PickerRangeValue>, PickerFieldUISlotPropsFromContext {
|
|
13
|
+
field?: SlotComponentPropsFromProps<PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & {
|
|
14
|
+
dateSeparator?: string;
|
|
15
|
+
}, {}, PickerOwnerState>;
|
|
16
|
+
}
|
|
5
17
|
export interface DesktopRangeOnlyPickerProps extends RangeOnlyPickerProps {
|
|
6
18
|
/**
|
|
7
19
|
* If `true`, the start `input` element is focused during the first mount.
|
|
@@ -10,15 +10,15 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _useSlotProps2 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
13
|
+
var _resolveComponentProps = _interopRequireDefault(require("@mui/utils/resolveComponentProps"));
|
|
13
14
|
var _xLicense = require("@mui/x-license");
|
|
14
15
|
var _PickersLayout = require("@mui/x-date-pickers/PickersLayout");
|
|
15
16
|
var _internals = require("@mui/x-date-pickers/internals");
|
|
16
17
|
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
17
|
-
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
18
|
-
var _useEnrichedRangePickerField = require("../useEnrichedRangePickerField");
|
|
19
18
|
var _releaseInfo = require("../../utils/releaseInfo");
|
|
20
19
|
var _useRangePosition = require("../useRangePosition");
|
|
21
20
|
var _usePickerRangePositionContext = require("../../../hooks/usePickerRangePositionContext");
|
|
21
|
+
var _dateFieldsUtils = require("../../utils/date-fields-utils");
|
|
22
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
23
|
const _excluded = ["props"],
|
|
24
24
|
_excluded2 = ["ownerState"];
|
|
@@ -34,25 +34,11 @@ const useMobileRangePicker = _ref => {
|
|
|
34
34
|
slotProps: innerSlotProps,
|
|
35
35
|
label,
|
|
36
36
|
inputRef,
|
|
37
|
-
readOnly,
|
|
38
|
-
disableOpenPicker,
|
|
39
37
|
localeText
|
|
40
38
|
} = props;
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const singleInputFieldRef = React.useRef(null);
|
|
44
|
-
const fieldType = slots.field.fieldType ?? 'multi-input';
|
|
45
|
-
const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props, fieldType === 'single-input' ? singleInputFieldRef : undefined);
|
|
46
|
-
const labelId = (0, _useId.default)();
|
|
39
|
+
const fieldType = (0, _dateFieldsUtils.getRangeFieldType)(slots.field);
|
|
40
|
+
const rangePositionResponse = (0, _useRangePosition.useRangePosition)(props);
|
|
47
41
|
const contextTranslations = (0, _hooks.usePickerTranslations)();
|
|
48
|
-
let fieldRef;
|
|
49
|
-
if (fieldType === 'single-input') {
|
|
50
|
-
fieldRef = singleInputFieldRef;
|
|
51
|
-
} else if (rangePositionResponse.rangePosition === 'start') {
|
|
52
|
-
fieldRef = startFieldRef;
|
|
53
|
-
} else {
|
|
54
|
-
fieldRef = endFieldRef;
|
|
55
|
-
}
|
|
56
42
|
const {
|
|
57
43
|
providerProps,
|
|
58
44
|
renderCurrentView,
|
|
@@ -61,41 +47,21 @@ const useMobileRangePicker = _ref => {
|
|
|
61
47
|
props,
|
|
62
48
|
variant: 'mobile',
|
|
63
49
|
autoFocusView: true,
|
|
64
|
-
|
|
50
|
+
viewContainerRole: 'dialog',
|
|
65
51
|
localeText
|
|
66
52
|
}));
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
providerProps.contextValue.triggerStatus = 'hidden';
|
|
53
|
+
const labelId = providerProps.privateContextValue.labelId;
|
|
54
|
+
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
70
55
|
const Field = slots.field;
|
|
71
56
|
const _useSlotProps = (0, _useSlotProps2.default)({
|
|
72
57
|
elementType: Field,
|
|
73
58
|
externalSlotProps: innerSlotProps?.field,
|
|
74
|
-
additionalProps: {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
},
|
|
59
|
+
additionalProps: (0, _extends2.default)({}, fieldType === 'single-input' && isToolbarHidden && {
|
|
60
|
+
id: labelId
|
|
61
|
+
}),
|
|
78
62
|
ownerState
|
|
79
63
|
}),
|
|
80
64
|
fieldProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
|
|
81
|
-
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
82
|
-
const enrichedFieldResponse = (0, _useEnrichedRangePickerField.useEnrichedRangePickerField)((0, _extends2.default)({
|
|
83
|
-
variant: 'mobile',
|
|
84
|
-
fieldType,
|
|
85
|
-
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
86
|
-
contextValue: providerProps.contextValue,
|
|
87
|
-
fieldPrivateContextValue: providerProps.fieldPrivateContextValue,
|
|
88
|
-
readOnly,
|
|
89
|
-
labelId,
|
|
90
|
-
disableOpenPicker,
|
|
91
|
-
localeText,
|
|
92
|
-
pickerSlots: slots,
|
|
93
|
-
pickerSlotProps: innerSlotProps,
|
|
94
|
-
fieldProps,
|
|
95
|
-
startFieldRef,
|
|
96
|
-
endFieldRef,
|
|
97
|
-
singleInputFieldRef
|
|
98
|
-
}, rangePositionResponse));
|
|
99
65
|
const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
|
|
100
66
|
const finalLocaleText = (0, _extends2.default)({}, contextTranslations, localeText);
|
|
101
67
|
let labelledById = pickerParams.valueType === 'date-time' ? `${labelId}-start-toolbar ${labelId}-end-toolbar` : labelId;
|
|
@@ -120,17 +86,21 @@ const useMobileRangePicker = _ref => {
|
|
|
120
86
|
mobilePaper: (0, _extends2.default)({
|
|
121
87
|
'aria-labelledby': labelledById
|
|
122
88
|
}, innerSlotProps?.mobilePaper)
|
|
89
|
+
}, fieldType === 'multi-input' && {
|
|
90
|
+
textField: slotOwnerState => {
|
|
91
|
+
return (0, _extends2.default)({}, (0, _resolveComponentProps.default)(innerSlotProps?.textField, slotOwnerState), {
|
|
92
|
+
id: `${labelId}-${slotOwnerState.position}`
|
|
93
|
+
});
|
|
94
|
+
}
|
|
123
95
|
});
|
|
124
96
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
|
|
125
|
-
// This override will go away once the range fields handle the picker opening
|
|
126
|
-
fieldPrivateContextValue: (0, _extends2.default)({}, providerProps.fieldPrivateContextValue, enrichedFieldResponse.fieldPrivateContextValue),
|
|
127
97
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickerFieldUIContextProvider, {
|
|
128
98
|
slots: slots,
|
|
129
99
|
slotProps: slotProps,
|
|
130
100
|
inputRef: inputRef,
|
|
131
101
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
|
|
132
102
|
value: rangePositionResponse,
|
|
133
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({},
|
|
103
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, fieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog, {
|
|
134
104
|
slots: slots,
|
|
135
105
|
slotProps: slotProps,
|
|
136
106
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
2
|
+
import { PickerFieldSlotProps, PickerOwnerState } from '@mui/x-date-pickers/models';
|
|
3
|
+
import { PickersModalDialogSlots, PickersModalDialogSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem, PickerRangeValue, PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from '@mui/x-date-pickers/internals';
|
|
4
|
+
import { ExportedPickersLayoutSlotProps, ExportedPickersLayoutSlots, PickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
|
|
5
|
+
import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps } from "../models/useRangePicker.js";
|
|
6
|
+
export interface UseMobileRangePickerSlots extends PickersModalDialogSlots, ExportedPickersLayoutSlots<PickerRangeValue>, PickerFieldUISlotsFromContext {
|
|
7
|
+
/**
|
|
8
|
+
* Component used to enter the date with the keyboard.
|
|
9
|
+
*/
|
|
10
|
+
field: React.ElementType;
|
|
11
|
+
}
|
|
12
|
+
export interface ExportedUseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<PickerRangeValue>, PickerFieldUISlotPropsFromContext {
|
|
13
|
+
field?: SlotComponentPropsFromProps<PickerFieldSlotProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure> & {
|
|
14
|
+
dateSeparator?: string;
|
|
15
|
+
}, {}, PickerOwnerState>;
|
|
16
|
+
}
|
|
17
|
+
export interface UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedUseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, Pick<PickersLayoutSlotProps<PickerRangeValue>, 'toolbar'> {}
|
|
5
18
|
export interface MobileRangeOnlyPickerProps extends RangeOnlyPickerProps {}
|
|
6
19
|
export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
|
|
7
20
|
/**
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { FieldRef } from '@mui/x-date-pickers/models';
|
|
3
|
-
import { PickerRangeValue } from '@mui/x-date-pickers/internals';
|
|
4
1
|
import { RangePosition } from "../../models/index.js";
|
|
5
2
|
export interface UseRangePositionProps {
|
|
6
3
|
/**
|
|
@@ -24,4 +21,4 @@ export interface UseRangePositionResponse {
|
|
|
24
21
|
rangePosition: RangePosition;
|
|
25
22
|
setRangePosition: (newPosition: RangePosition) => void;
|
|
26
23
|
}
|
|
27
|
-
export declare const useRangePosition: (props: UseRangePositionProps
|
|
24
|
+
export declare const useRangePosition: (props: UseRangePositionProps) => UseRangePositionResponse;
|
|
@@ -7,33 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useRangePosition = void 0;
|
|
8
8
|
var _useControlled = _interopRequireDefault(require("@mui/utils/useControlled"));
|
|
9
9
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
10
|
-
const useRangePosition =
|
|
10
|
+
const useRangePosition = props => {
|
|
11
11
|
const [rangePosition, setRangePosition] = (0, _useControlled.default)({
|
|
12
12
|
name: 'useRangePosition',
|
|
13
13
|
state: 'rangePosition',
|
|
14
14
|
controlled: props.rangePosition,
|
|
15
15
|
default: props.defaultRangePosition ?? 'start'
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
// When using a single input field,
|
|
19
|
-
// we want to select the 1st section of the edited date when updating the range position.
|
|
20
|
-
const syncRangePositionWithSingleInputField = newRangePosition => {
|
|
21
|
-
if (singleInputFieldRef?.current == null) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const sections = singleInputFieldRef.current.getSections();
|
|
25
|
-
const targetActiveSectionIndex = newRangePosition === 'start' ? 0 : sections.length / 2;
|
|
26
|
-
const activeSectionIndex = singleInputFieldRef.current.getActiveSectionIndex();
|
|
27
|
-
// if the active section is already within the target range, we don't need to update it.
|
|
28
|
-
if (activeSectionIndex && activeSectionIndex >= targetActiveSectionIndex && activeSectionIndex < targetActiveSectionIndex + sections.length / 2) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
singleInputFieldRef.current.setSelectedSections(targetActiveSectionIndex);
|
|
32
|
-
};
|
|
33
17
|
const handleRangePositionChange = (0, _useEventCallback.default)(newRangePosition => {
|
|
34
18
|
setRangePosition(newRangePosition);
|
|
35
19
|
props.onRangePositionChange?.(newRangePosition);
|
|
36
|
-
syncRangePositionWithSingleInputField(newRangePosition);
|
|
37
20
|
});
|
|
38
21
|
return {
|
|
39
22
|
rangePosition,
|
|
@@ -47,10 +47,10 @@ const useStaticRangePicker = _ref => {
|
|
|
47
47
|
renderCurrentView
|
|
48
48
|
} = (0, _internals.usePicker)((0, _extends2.default)({}, pickerParams, {
|
|
49
49
|
props,
|
|
50
|
+
variant: displayStaticWrapperAs,
|
|
50
51
|
autoFocusView: autoFocus ?? false,
|
|
51
|
-
|
|
52
|
-
localeText
|
|
53
|
-
variant: displayStaticWrapperAs
|
|
52
|
+
viewContainerRole: null,
|
|
53
|
+
localeText
|
|
54
54
|
}));
|
|
55
55
|
const Layout = slots?.layout ?? PickerStaticLayout;
|
|
56
56
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_usePickerRangePositionContext.PickerRangePositionContext.Provider, {
|
|
@@ -22,6 +22,7 @@ var _internals = require("@mui/x-date-pickers/internals");
|
|
|
22
22
|
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
23
23
|
var _PickersTextField = require("@mui/x-date-pickers/PickersTextField");
|
|
24
24
|
var _useMultiInputRangeField = require("../../../hooks/useMultiInputRangeField");
|
|
25
|
+
var _useTextFieldProps = require("./useTextFieldProps");
|
|
25
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
27
|
const _excluded = ["slots", "slotProps", "className", "classes"];
|
|
27
28
|
function createMultiInputRangeField({
|
|
@@ -59,14 +60,19 @@ function createMultiInputRangeField({
|
|
|
59
60
|
// eslint-disable-next-line material-ui/mui-name-matches-component-name
|
|
60
61
|
name
|
|
61
62
|
});
|
|
63
|
+
const pickerFieldUIContext = React.useContext(_internals.PickerFieldUIContext);
|
|
64
|
+
const pickerContext = (0, _internals.useNullablePickerContext)();
|
|
62
65
|
const manager = useManager({
|
|
63
66
|
enableAccessibleFieldDOMStructure: props.enableAccessibleFieldDOMStructure,
|
|
64
67
|
dateSeparator: props.dateSeparator
|
|
65
68
|
});
|
|
66
69
|
const {
|
|
67
|
-
internalProps,
|
|
70
|
+
internalProps: rawInternalProps,
|
|
68
71
|
forwardedProps
|
|
69
72
|
} = (0, _hooks.useSplitFieldProps)(themeProps, manager.valueType);
|
|
73
|
+
const internalProps = pickerContext?.variant === 'mobile' ? (0, _extends2.default)({}, rawInternalProps, {
|
|
74
|
+
readOnly: true
|
|
75
|
+
}) : rawInternalProps;
|
|
70
76
|
const {
|
|
71
77
|
slots,
|
|
72
78
|
slotProps,
|
|
@@ -76,7 +82,6 @@ function createMultiInputRangeField({
|
|
|
76
82
|
otherForwardedProps = (0, _objectWithoutPropertiesLoose2.default)(forwardedProps, _excluded);
|
|
77
83
|
const classes = useUtilityClasses(classesProp);
|
|
78
84
|
const ownerState = (0, _internals.useFieldOwnerState)(internalProps);
|
|
79
|
-
const pickerContext = (0, _internals.useNullablePickerContext)();
|
|
80
85
|
const handleRef = (0, _useForkRef.default)(ref, pickerContext?.rootRef);
|
|
81
86
|
const Root = slots?.root ?? MultiInputRangeFieldRoot;
|
|
82
87
|
const rootProps = (0, _useSlotProps.default)({
|
|
@@ -89,29 +94,22 @@ function createMultiInputRangeField({
|
|
|
89
94
|
ownerState,
|
|
90
95
|
className: (0, _clsx.default)(className, classes.root)
|
|
91
96
|
});
|
|
92
|
-
const startTextFieldProps = (0,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
position: 'start'
|
|
97
|
-
})
|
|
97
|
+
const startTextFieldProps = (0, _useTextFieldProps.useTextFieldProps)({
|
|
98
|
+
slotProps,
|
|
99
|
+
ownerState,
|
|
100
|
+
position: 'start'
|
|
98
101
|
});
|
|
99
|
-
const endTextFieldProps = (0,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
position: 'end'
|
|
104
|
-
})
|
|
102
|
+
const endTextFieldProps = (0, _useTextFieldProps.useTextFieldProps)({
|
|
103
|
+
slotProps,
|
|
104
|
+
ownerState,
|
|
105
|
+
position: 'end'
|
|
105
106
|
});
|
|
106
|
-
const {
|
|
107
|
-
startDate,
|
|
108
|
-
endDate,
|
|
109
|
-
enableAccessibleFieldDOMStructure
|
|
110
|
-
} = (0, _useMultiInputRangeField.useMultiInputRangeField)({
|
|
107
|
+
const fieldResponse = (0, _useMultiInputRangeField.useMultiInputRangeField)({
|
|
111
108
|
manager,
|
|
112
109
|
internalProps,
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
rootProps,
|
|
111
|
+
startTextFieldProps,
|
|
112
|
+
endTextFieldProps
|
|
115
113
|
});
|
|
116
114
|
const Separator = slots?.separator ?? MultiInputRangeFieldSeparator;
|
|
117
115
|
const separatorProps = (0, _useSlotProps.default)({
|
|
@@ -123,19 +121,15 @@ function createMultiInputRangeField({
|
|
|
123
121
|
ownerState,
|
|
124
122
|
className: classes.separator
|
|
125
123
|
});
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
textFieldProps: endDateProps
|
|
131
|
-
} = (0, _internals.cleanFieldResponse)(endDate);
|
|
132
|
-
const TextField = slots?.textField ?? (enableAccessibleFieldDOMStructure === false ? _TextField.default : _PickersTextField.PickersTextField);
|
|
133
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, rootProps, {
|
|
124
|
+
const cleanStartTextFieldResponse = (0, _internals.cleanFieldResponse)(fieldResponse.startTextField);
|
|
125
|
+
const cleanEndTextFieldResponse = (0, _internals.cleanFieldResponse)(fieldResponse.endTextField);
|
|
126
|
+
const TextField = slots?.textField ?? pickerFieldUIContext.slots.textField ?? (fieldResponse.enableAccessibleFieldDOMStructure === false ? _TextField.default : _PickersTextField.PickersTextField);
|
|
127
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, fieldResponse.root, {
|
|
134
128
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(TextField, (0, _extends2.default)({
|
|
135
129
|
fullWidth: true
|
|
136
|
-
},
|
|
130
|
+
}, cleanStartTextFieldResponse.textFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(Separator, (0, _extends2.default)({}, separatorProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(TextField, (0, _extends2.default)({
|
|
137
131
|
fullWidth: true
|
|
138
|
-
},
|
|
132
|
+
}, cleanEndTextFieldResponse.textFieldProps))]
|
|
139
133
|
}));
|
|
140
134
|
});
|
|
141
135
|
MultiInputRangeField.fieldType = 'multi-input';
|
|
@@ -7,7 +7,7 @@ import { FieldOwnerState } from '@mui/x-date-pickers/models';
|
|
|
7
7
|
import { PickerManagerEnableAccessibleFieldDOMStructure, PickerManagerFieldInternalProps } from '@mui/x-date-pickers/internals';
|
|
8
8
|
import { FieldType, MultiInputFieldRefs, RangeFieldSeparatorProps, RangePosition } from "../../../models/index.js";
|
|
9
9
|
import { PickerAnyRangeManager } from "../../models/managers.js";
|
|
10
|
-
export type MultiInputRangeFieldProps<TManager extends PickerAnyRangeManager> = MultiInputFieldRefs & RangeFieldSeparatorProps & Omit<PickerManagerFieldInternalProps<TManager>, 'unstableFieldRef' | 'clearable' | 'onClear'> & Omit<StackProps, 'position' | keyof PickerManagerFieldInternalProps<TManager>> & {
|
|
10
|
+
export type MultiInputRangeFieldProps<TManager extends PickerAnyRangeManager> = MultiInputFieldRefs & RangeFieldSeparatorProps & Omit<PickerManagerFieldInternalProps<TManager>, 'unstableFieldRef' | 'clearable' | 'onClear' | 'focused'> & Omit<StackProps, 'position' | keyof PickerManagerFieldInternalProps<TManager>> & {
|
|
11
11
|
/**
|
|
12
12
|
* If `true`, the field is focused during the first mount.
|
|
13
13
|
* @default false
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PickersTextFieldProps } from '@mui/x-date-pickers/PickersTextField';
|
|
2
|
+
import { FieldOwnerState } from '@mui/x-date-pickers/models';
|
|
3
|
+
import { MultiInputRangeFieldSlotProps } from "./createMultiInputRangeField.types.js";
|
|
4
|
+
export declare function useTextFieldProps({
|
|
5
|
+
slotProps,
|
|
6
|
+
ownerState,
|
|
7
|
+
position
|
|
8
|
+
}: {
|
|
9
|
+
slotProps: MultiInputRangeFieldSlotProps | undefined;
|
|
10
|
+
ownerState: FieldOwnerState;
|
|
11
|
+
position: 'start' | 'end';
|
|
12
|
+
}): PickersTextFieldProps;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useTextFieldProps = useTextFieldProps;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
12
|
+
var _PickersTextField = require("@mui/x-date-pickers/PickersTextField");
|
|
13
|
+
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
14
|
+
var _internals = require("@mui/x-date-pickers/internals");
|
|
15
|
+
var _useNullablePickerRangePositionContext = require("../../hooks/useNullablePickerRangePositionContext");
|
|
16
|
+
function useTextFieldProps({
|
|
17
|
+
slotProps,
|
|
18
|
+
ownerState,
|
|
19
|
+
position
|
|
20
|
+
}) {
|
|
21
|
+
const pickerContext = (0, _internals.useNullablePickerContext)();
|
|
22
|
+
const translations = (0, _hooks.usePickerTranslations)();
|
|
23
|
+
const pickerFieldUIContext = React.useContext(_internals.PickerFieldUIContext);
|
|
24
|
+
const rangePositionContext = (0, _useNullablePickerRangePositionContext.useNullablePickerRangePositionContext)();
|
|
25
|
+
const textFieldProps = (0, _useSlotProps.default)({
|
|
26
|
+
elementType: _PickersTextField.PickersTextField,
|
|
27
|
+
externalSlotProps: (0, _internals.mergeSlotProps)(pickerFieldUIContext.slotProps.textField, slotProps?.textField),
|
|
28
|
+
additionalProps: {
|
|
29
|
+
// TODO: Decide if we also want to set the default labels on standalone fields.
|
|
30
|
+
label: pickerContext ? translations[position] : undefined,
|
|
31
|
+
focused: pickerContext?.open ? rangePositionContext?.rangePosition === position : undefined
|
|
32
|
+
},
|
|
33
|
+
ownerState: (0, _extends2.default)({}, ownerState, {
|
|
34
|
+
position
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
if (!textFieldProps.InputProps) {
|
|
38
|
+
textFieldProps.InputProps = {};
|
|
39
|
+
}
|
|
40
|
+
if (pickerContext && position === 'start') {
|
|
41
|
+
textFieldProps.InputProps.ref = pickerContext.triggerRef;
|
|
42
|
+
}
|
|
43
|
+
return textFieldProps;
|
|
44
|
+
}
|
|
@@ -17,4 +17,7 @@ export declare const removeLastSeparator: (dateSections: FieldRangeSection[]) =>
|
|
|
17
17
|
modified: boolean;
|
|
18
18
|
startSeparator: string;
|
|
19
19
|
endSeparator: string;
|
|
20
|
-
})[];
|
|
20
|
+
})[];
|
|
21
|
+
export declare function getRangeFieldType(field: React.ElementType & {
|
|
22
|
+
fieldType?: 'single-input' | 'multi-input';
|
|
23
|
+
}): "single-input" | "multi-input";
|
|
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.getRangeFieldType = getRangeFieldType;
|
|
7
8
|
exports.splitDateRangeSections = exports.removeLastSeparator = void 0;
|
|
8
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
10
|
const splitDateRangeSections = sections => {
|
|
@@ -30,4 +31,8 @@ const removeLastSeparator = dateSections => dateSections.map((section, sectionIn
|
|
|
30
31
|
}
|
|
31
32
|
return section;
|
|
32
33
|
});
|
|
33
|
-
exports.removeLastSeparator = removeLastSeparator;
|
|
34
|
+
exports.removeLastSeparator = removeLastSeparator;
|
|
35
|
+
function getRangeFieldType(field) {
|
|
36
|
+
const fieldType = field.fieldType ?? 'multi-input';
|
|
37
|
+
return fieldType;
|
|
38
|
+
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getReleaseInfo = void 0;
|
|
7
7
|
var _utils = require("@mui/utils");
|
|
8
8
|
const getReleaseInfo = () => {
|
|
9
|
-
const releaseInfo = "
|
|
9
|
+
const releaseInfo = "MTc0MDY5NzIwMDAwMA==";
|
|
10
10
|
if (process.env.NODE_ENV !== 'production') {
|
|
11
11
|
// A simple hack to set the value in the test environment (has no build step).
|
|
12
12
|
// eslint-disable-next-line no-useless-concat
|
|
@@ -35,6 +35,13 @@ function useDateRangeManager(parameters = {}) {
|
|
|
35
35
|
internalProps
|
|
36
36
|
})),
|
|
37
37
|
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
38
|
-
internal_getOpenPickerButtonAriaLabel: (
|
|
38
|
+
internal_getOpenPickerButtonAriaLabel: ({
|
|
39
|
+
value,
|
|
40
|
+
utils,
|
|
41
|
+
localeText
|
|
42
|
+
}) => {
|
|
43
|
+
const formattedValue = utils.isValid(value[0]) ? utils.format(value[0], 'fullDate') : null;
|
|
44
|
+
return localeText.openDatePickerDialogue(formattedValue);
|
|
45
|
+
}
|
|
39
46
|
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
40
47
|
}
|
|
@@ -35,6 +35,13 @@ function useDateTimeRangeManager(parameters = {}) {
|
|
|
35
35
|
defaultDates
|
|
36
36
|
})),
|
|
37
37
|
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
38
|
-
internal_getOpenPickerButtonAriaLabel: (
|
|
38
|
+
internal_getOpenPickerButtonAriaLabel: ({
|
|
39
|
+
value,
|
|
40
|
+
utils,
|
|
41
|
+
localeText
|
|
42
|
+
}) => {
|
|
43
|
+
const formattedValue = utils.isValid(value[0]) ? utils.format(value[0], 'fullDate') : null;
|
|
44
|
+
return localeText.openDatePickerDialogue(formattedValue);
|
|
45
|
+
}
|
|
39
46
|
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
40
47
|
}
|
|
@@ -33,6 +33,15 @@ function useTimeRangeManager(parameters = {}) {
|
|
|
33
33
|
internalProps
|
|
34
34
|
})),
|
|
35
35
|
// TODO v8: Add a real aria label before moving the opening logic to the field on range pickers.
|
|
36
|
-
internal_getOpenPickerButtonAriaLabel: (
|
|
36
|
+
internal_getOpenPickerButtonAriaLabel: ({
|
|
37
|
+
value,
|
|
38
|
+
utils,
|
|
39
|
+
localeText
|
|
40
|
+
}) => {
|
|
41
|
+
// TODO: Use ampm prop?
|
|
42
|
+
const ampm = utils.is12HourCycleInCurrentLocale();
|
|
43
|
+
const formattedValue = utils.isValid(value[0]) ? utils.format(value[0], ampm ? 'fullTime12h' : 'fullTime24h') : null;
|
|
44
|
+
return localeText.openTimePickerDialogue(formattedValue);
|
|
45
|
+
}
|
|
37
46
|
}), [enableAccessibleFieldDOMStructure, dateSeparator]);
|
|
38
47
|
}
|