@mui/x-date-pickers 6.11.2 → 6.12.1
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/AdapterDateFns/AdapterDateFns.d.ts +2 -2
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -2
- package/AdapterDayjs/AdapterDayjs.d.ts +2 -2
- package/AdapterLuxon/AdapterLuxon.d.ts +2 -2
- package/AdapterMoment/AdapterMoment.d.ts +2 -2
- package/AdapterMomentHijri/AdapterMomentHijri.d.ts +2 -2
- package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +2 -2
- package/CHANGELOG.md +158 -33
- package/DateCalendar/DateCalendar.js +3 -3
- package/DateCalendar/DateCalendar.types.d.ts +1 -1
- package/DateCalendar/DayCalendar.js +2 -2
- package/DateField/DateField.js +0 -4
- package/DatePicker/DatePicker.js +6 -1
- package/DateTimeField/DateTimeField.js +0 -4
- package/DateTimePicker/DateTimePicker.js +6 -1
- package/DesktopDatePicker/DesktopDatePicker.js +6 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -1
- package/DesktopTimePicker/DesktopTimePicker.js +6 -1
- package/MobileDatePicker/MobileDatePicker.js +6 -1
- package/MobileDateTimePicker/MobileDateTimePicker.js +6 -1
- package/MobileTimePicker/MobileTimePicker.js +6 -1
- package/MonthCalendar/PickersMonth.js +1 -1
- package/StaticDatePicker/StaticDatePicker.js +6 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +6 -1
- package/StaticTimePicker/StaticTimePicker.js +6 -1
- package/TimeField/TimeField.js +0 -4
- package/TimePicker/TimePicker.js +6 -1
- package/YearCalendar/YearCalendar.js +5 -2
- package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +1 -1
- package/dateTimeViewRenderers/dateTimeViewRenderers.js +3 -0
- package/dateViewRenderers/dateViewRenderers.d.ts +1 -1
- package/dateViewRenderers/dateViewRenderers.js +2 -0
- package/index.js +1 -1
- package/internals/components/PickersPopper.d.ts +5 -3
- package/internals/components/PickersPopper.js +58 -30
- package/internals/demo/DemoContainer.d.ts +8 -0
- package/internals/demo/DemoContainer.js +9 -0
- package/internals/hooks/useDefaultReduceAnimations.d.ts +1 -1
- package/internals/hooks/useDefaultReduceAnimations.js +7 -2
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
- package/internals/hooks/useField/useField.js +6 -6
- package/internals/hooks/useField/useField.utils.d.ts +0 -1
- package/internals/hooks/useField/useField.utils.js +0 -48
- package/internals/hooks/useField/useFieldState.js +5 -25
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
- package/internals/hooks/usePicker/usePicker.d.ts +1 -1
- package/internals/hooks/usePicker/usePicker.types.d.ts +3 -3
- package/internals/hooks/usePicker/usePickerValue.js +1 -1
- package/internals/hooks/usePicker/usePickerViews.d.ts +11 -6
- package/internals/hooks/usePicker/usePickerViews.js +1 -1
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +1 -1
- package/internals/hooks/useValidation.d.ts +2 -4
- package/internals/hooks/useValueWithTimezone.js +2 -2
- package/internals/hooks/useViews.js +1 -1
- package/internals/models/props/basePickerProps.d.ts +1 -1
- package/legacy/DateCalendar/DateCalendar.js +3 -3
- package/legacy/DateCalendar/DayCalendar.js +2 -2
- package/legacy/DateField/DateField.js +0 -4
- package/legacy/DatePicker/DatePicker.js +6 -1
- package/legacy/DateTimeField/DateTimeField.js +0 -4
- package/legacy/DateTimePicker/DateTimePicker.js +6 -1
- package/legacy/DesktopDatePicker/DesktopDatePicker.js +6 -1
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -1
- package/legacy/DesktopTimePicker/DesktopTimePicker.js +6 -1
- package/legacy/MobileDatePicker/MobileDatePicker.js +6 -1
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +6 -1
- package/legacy/MobileTimePicker/MobileTimePicker.js +6 -1
- package/legacy/MonthCalendar/PickersMonth.js +1 -1
- package/legacy/StaticDatePicker/StaticDatePicker.js +6 -1
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +6 -1
- package/legacy/StaticTimePicker/StaticTimePicker.js +6 -1
- package/legacy/TimeField/TimeField.js +0 -4
- package/legacy/TimePicker/TimePicker.js +6 -1
- package/legacy/YearCalendar/YearCalendar.js +5 -2
- package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +3 -0
- package/legacy/dateViewRenderers/dateViewRenderers.js +2 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/components/PickersPopper.js +54 -30
- package/legacy/internals/demo/DemoContainer.js +9 -0
- package/legacy/internals/hooks/useDefaultReduceAnimations.js +7 -2
- package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/legacy/internals/hooks/useField/useField.js +6 -6
- package/legacy/internals/hooks/useField/useField.utils.js +0 -52
- package/legacy/internals/hooks/useField/useFieldState.js +4 -24
- package/legacy/internals/hooks/usePicker/usePickerValue.js +1 -1
- package/legacy/internals/hooks/usePicker/usePickerViews.js +1 -1
- package/legacy/internals/hooks/useValueWithTimezone.js +2 -2
- package/legacy/internals/hooks/useViews.js +1 -1
- package/legacy/tests/describeValue/testControlledUnControlled.js +1 -1
- package/legacy/timeViewRenderers/timeViewRenderers.js +6 -0
- package/models/adapters.d.ts +2 -1
- package/modern/DateCalendar/DateCalendar.js +1 -1
- package/modern/DateField/DateField.js +0 -4
- package/modern/DatePicker/DatePicker.js +6 -1
- package/modern/DateTimeField/DateTimeField.js +0 -4
- package/modern/DateTimePicker/DateTimePicker.js +6 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +6 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -1
- package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -1
- package/modern/MobileDatePicker/MobileDatePicker.js +6 -1
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -1
- package/modern/MobileTimePicker/MobileTimePicker.js +6 -1
- package/modern/StaticDatePicker/StaticDatePicker.js +6 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +6 -1
- package/modern/StaticTimePicker/StaticTimePicker.js +6 -1
- package/modern/TimeField/TimeField.js +0 -4
- package/modern/TimePicker/TimePicker.js +6 -1
- package/modern/YearCalendar/YearCalendar.js +4 -1
- package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +3 -0
- package/modern/dateViewRenderers/dateViewRenderers.js +2 -0
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersPopper.js +56 -28
- package/modern/internals/demo/DemoContainer.js +9 -0
- package/modern/internals/hooks/useDefaultReduceAnimations.js +7 -2
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/modern/internals/hooks/useField/useField.utils.js +0 -48
- package/modern/internals/hooks/useField/useFieldState.js +4 -24
- package/modern/timeViewRenderers/timeViewRenderers.js +6 -0
- package/node/DateCalendar/DateCalendar.js +1 -1
- package/node/DateField/DateField.js +0 -4
- package/node/DatePicker/DatePicker.js +6 -1
- package/node/DateTimeField/DateTimeField.js +0 -4
- package/node/DateTimePicker/DateTimePicker.js +6 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +6 -1
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -1
- package/node/DesktopTimePicker/DesktopTimePicker.js +6 -1
- package/node/MobileDatePicker/MobileDatePicker.js +6 -1
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +6 -1
- package/node/MobileTimePicker/MobileTimePicker.js +6 -1
- package/node/StaticDatePicker/StaticDatePicker.js +6 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +6 -1
- package/node/StaticTimePicker/StaticTimePicker.js +6 -1
- package/node/TimeField/TimeField.js +0 -4
- package/node/TimePicker/TimePicker.js +6 -1
- package/node/YearCalendar/YearCalendar.js +4 -1
- package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +3 -0
- package/node/dateViewRenderers/dateViewRenderers.js +2 -0
- package/node/index.js +1 -1
- package/node/internals/components/PickersPopper.js +56 -28
- package/node/internals/demo/DemoContainer.js +9 -0
- package/node/internals/hooks/useDefaultReduceAnimations.js +9 -4
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/node/internals/hooks/useField/useField.utils.js +1 -50
- package/node/internals/hooks/useField/useFieldState.js +3 -23
- package/node/timeViewRenderers/timeViewRenderers.js +6 -0
- package/package.json +3 -3
- package/tests/describeValue/testControlledUnControlled.js +1 -1
- package/timeViewRenderers/timeViewRenderers.d.ts +3 -3
- package/timeViewRenderers/timeViewRenderers.js +6 -0
package/legacy/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
var _excluded = ["PaperComponent", "popperPlacement", "ownerState", "children", "paperSlotProps", "paperClasses", "onPaperClick", "onPaperTouchStart"];
|
|
3
5
|
import * as React from 'react';
|
|
4
6
|
import { useSlotProps } from '@mui/base/utils';
|
|
5
7
|
import Grow from '@mui/material/Grow';
|
|
@@ -42,9 +44,9 @@ var PickersPopperPaper = styled(MuiPaper, {
|
|
|
42
44
|
})(function (_ref2) {
|
|
43
45
|
var ownerState = _ref2.ownerState;
|
|
44
46
|
return _extends({
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}, ownerState.placement
|
|
47
|
+
outline: 0,
|
|
48
|
+
transformOrigin: 'top center'
|
|
49
|
+
}, ownerState.placement.includes('top') && {
|
|
48
50
|
transformOrigin: 'bottom center'
|
|
49
51
|
});
|
|
50
52
|
});
|
|
@@ -163,6 +165,45 @@ function useClickAwayListener(active, onClickAway) {
|
|
|
163
165
|
}, [active, handleClickAway]);
|
|
164
166
|
return [nodeRef, handleSynthetic, handleSynthetic];
|
|
165
167
|
}
|
|
168
|
+
var PickersPopperPaperWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
169
|
+
var PaperComponent = props.PaperComponent,
|
|
170
|
+
popperPlacement = props.popperPlacement,
|
|
171
|
+
inOwnerState = props.ownerState,
|
|
172
|
+
children = props.children,
|
|
173
|
+
paperSlotProps = props.paperSlotProps,
|
|
174
|
+
paperClasses = props.paperClasses,
|
|
175
|
+
onPaperClick = props.onPaperClick,
|
|
176
|
+
onPaperTouchStart = props.onPaperTouchStart,
|
|
177
|
+
other = _objectWithoutProperties(props, _excluded);
|
|
178
|
+
var ownerState = _extends({}, inOwnerState, {
|
|
179
|
+
placement: popperPlacement
|
|
180
|
+
});
|
|
181
|
+
var paperProps = useSlotProps({
|
|
182
|
+
elementType: PaperComponent,
|
|
183
|
+
externalSlotProps: paperSlotProps,
|
|
184
|
+
additionalProps: {
|
|
185
|
+
tabIndex: -1,
|
|
186
|
+
elevation: 8,
|
|
187
|
+
ref: ref
|
|
188
|
+
},
|
|
189
|
+
className: paperClasses,
|
|
190
|
+
ownerState: ownerState
|
|
191
|
+
});
|
|
192
|
+
return /*#__PURE__*/_jsx(PaperComponent, _extends({}, other, paperProps, {
|
|
193
|
+
onClick: function onClick(event) {
|
|
194
|
+
var _paperProps$onClick;
|
|
195
|
+
onPaperClick(event);
|
|
196
|
+
(_paperProps$onClick = paperProps.onClick) == null || _paperProps$onClick.call(paperProps, event);
|
|
197
|
+
},
|
|
198
|
+
onTouchStart: function onTouchStart(event) {
|
|
199
|
+
var _paperProps$onTouchSt;
|
|
200
|
+
onPaperTouchStart(event);
|
|
201
|
+
(_paperProps$onTouchSt = paperProps.onTouchStart) == null || _paperProps$onTouchSt.call(paperProps, event);
|
|
202
|
+
},
|
|
203
|
+
ownerState: ownerState,
|
|
204
|
+
children: children
|
|
205
|
+
}));
|
|
206
|
+
});
|
|
166
207
|
export function PickersPopper(inProps) {
|
|
167
208
|
var _slots$desktopTransit, _slots$desktopTrapFoc, _slots$desktopPaper, _slots$popper;
|
|
168
209
|
var props = useThemeProps({
|
|
@@ -233,18 +274,6 @@ export function PickersPopper(inProps) {
|
|
|
233
274
|
var Transition = ((_slots$desktopTransit = slots == null ? void 0 : slots.desktopTransition) != null ? _slots$desktopTransit : reduceAnimations) ? Fade : Grow;
|
|
234
275
|
var TrapFocus = (_slots$desktopTrapFoc = slots == null ? void 0 : slots.desktopTrapFocus) != null ? _slots$desktopTrapFoc : MuiTrapFocus;
|
|
235
276
|
var Paper = (_slots$desktopPaper = slots == null ? void 0 : slots.desktopPaper) != null ? _slots$desktopPaper : PickersPopperPaper;
|
|
236
|
-
var paperProps = useSlotProps({
|
|
237
|
-
elementType: Paper,
|
|
238
|
-
externalSlotProps: slotProps == null ? void 0 : slotProps.desktopPaper,
|
|
239
|
-
additionalProps: {
|
|
240
|
-
tabIndex: -1,
|
|
241
|
-
elevation: 8,
|
|
242
|
-
ref: handlePaperRef
|
|
243
|
-
},
|
|
244
|
-
className: classes.paper,
|
|
245
|
-
ownerState: {} // Is overridden below to use `placement
|
|
246
|
-
});
|
|
247
|
-
|
|
248
277
|
var Popper = (_slots$popper = slots == null ? void 0 : slots.popper) != null ? _slots$popper : PickersPopperRoot;
|
|
249
278
|
var popperProps = useSlotProps({
|
|
250
279
|
elementType: Popper,
|
|
@@ -278,22 +307,17 @@ export function PickersPopper(inProps) {
|
|
|
278
307
|
}
|
|
279
308
|
}, slotProps == null ? void 0 : slotProps.desktopTrapFocus, {
|
|
280
309
|
children: /*#__PURE__*/_jsx(Transition, _extends({}, TransitionProps, slotProps == null ? void 0 : slotProps.desktopTransition, {
|
|
281
|
-
children: /*#__PURE__*/_jsx(
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
(_paperProps$onTouchSt = paperProps.onTouchStart) == null ? void 0 : _paperProps$onTouchSt.call(paperProps, event);
|
|
291
|
-
},
|
|
292
|
-
ownerState: _extends({}, ownerState, {
|
|
293
|
-
placement: popperPlacement
|
|
294
|
-
}),
|
|
310
|
+
children: /*#__PURE__*/_jsx(PickersPopperPaperWrapper, {
|
|
311
|
+
PaperComponent: Paper,
|
|
312
|
+
ownerState: ownerState,
|
|
313
|
+
popperPlacement: popperPlacement,
|
|
314
|
+
ref: handlePaperRef,
|
|
315
|
+
onPaperClick: onPaperClick,
|
|
316
|
+
onPaperTouchStart: onPaperTouchStart,
|
|
317
|
+
paperClasses: classes.paper,
|
|
318
|
+
paperSlotProps: slotProps == null ? void 0 : slotProps.desktopPaper,
|
|
295
319
|
children: _children
|
|
296
|
-
})
|
|
320
|
+
})
|
|
297
321
|
}))
|
|
298
322
|
}));
|
|
299
323
|
}
|
|
@@ -33,6 +33,10 @@ var getSupportedSectionFromChildName = function getSupportedSectionFromChildName
|
|
|
33
33
|
}
|
|
34
34
|
return 'time';
|
|
35
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* WARNING: This is an internal component used in documentation to achieve a desired layout.
|
|
38
|
+
* Please do not use it in your application.
|
|
39
|
+
*/
|
|
36
40
|
export function DemoItem(props) {
|
|
37
41
|
var label = props.label,
|
|
38
42
|
children = props.children,
|
|
@@ -59,6 +63,11 @@ export function DemoItem(props) {
|
|
|
59
63
|
}), children]
|
|
60
64
|
});
|
|
61
65
|
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* WARNING: This is an internal component used in documentation to achieve a desired layout.
|
|
69
|
+
* Please do not use it in your application.
|
|
70
|
+
*/
|
|
62
71
|
export function DemoContainer(props) {
|
|
63
72
|
var children = props.children,
|
|
64
73
|
components = props.components,
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
2
2
|
var PREFERS_REDUCED_MOTION = '@media (prefers-reduced-motion: reduce)';
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
// detect if user agent has Android version < 10 or iOS version < 13
|
|
5
|
+
var mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userAgent.match(/android\s(\d+)|OS\s(\d+)/i);
|
|
6
|
+
var androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;
|
|
7
|
+
var iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;
|
|
8
|
+
export var slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;
|
|
4
9
|
export var useDefaultReduceAnimations = function useDefaultReduceAnimations() {
|
|
5
10
|
var prefersReduced = useMediaQuery(PREFERS_REDUCED_MOTION, {
|
|
6
11
|
defaultMatches: false
|
|
7
12
|
});
|
|
8
|
-
return prefersReduced ||
|
|
13
|
+
return prefersReduced || slowAnimationDevices;
|
|
9
14
|
};
|
|
@@ -78,7 +78,7 @@ export var useDesktopPicker = function useDesktopPicker(_ref) {
|
|
|
78
78
|
externalSlotProps: innerSlotProps == null ? void 0 : innerSlotProps.openPickerButton,
|
|
79
79
|
additionalProps: {
|
|
80
80
|
disabled: disabled || readOnly,
|
|
81
|
-
onClick: actions.onOpen,
|
|
81
|
+
onClick: open ? actions.onClose : actions.onOpen,
|
|
82
82
|
'aria-label': getOpenDialogAriaText(pickerFieldProps.value, utils),
|
|
83
83
|
edge: inputAdornmentProps.position
|
|
84
84
|
},
|
|
@@ -89,11 +89,11 @@ export var useField = function useField(params) {
|
|
|
89
89
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
90
90
|
args[_key] = arguments[_key];
|
|
91
91
|
}
|
|
92
|
-
onClick == null
|
|
92
|
+
onClick == null || onClick.apply(void 0, _toConsumableArray(args));
|
|
93
93
|
syncSelectionFromDOM();
|
|
94
94
|
});
|
|
95
95
|
var handleInputMouseUp = useEventCallback(function (event) {
|
|
96
|
-
onMouseUp == null
|
|
96
|
+
onMouseUp == null || onMouseUp(event);
|
|
97
97
|
|
|
98
98
|
// Without this, the browser will remove the selected when clicking inside an already-selected section.
|
|
99
99
|
event.preventDefault();
|
|
@@ -102,7 +102,7 @@ export var useField = function useField(params) {
|
|
|
102
102
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
103
103
|
args[_key2] = arguments[_key2];
|
|
104
104
|
}
|
|
105
|
-
onFocus == null
|
|
105
|
+
onFocus == null || onFocus.apply(void 0, _toConsumableArray(args));
|
|
106
106
|
// The ref is guaranteed to be resolved at this point.
|
|
107
107
|
var input = inputRef.current;
|
|
108
108
|
window.clearTimeout(focusTimeoutRef.current);
|
|
@@ -127,11 +127,11 @@ export var useField = function useField(params) {
|
|
|
127
127
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
128
128
|
args[_key3] = arguments[_key3];
|
|
129
129
|
}
|
|
130
|
-
onBlur == null
|
|
130
|
+
onBlur == null || onBlur.apply(void 0, _toConsumableArray(args));
|
|
131
131
|
_setSelectedSections(null);
|
|
132
132
|
});
|
|
133
133
|
var handleInputPaste = useEventCallback(function (event) {
|
|
134
|
-
onPaste == null
|
|
134
|
+
onPaste == null || onPaste(event);
|
|
135
135
|
if (readOnly) {
|
|
136
136
|
event.preventDefault();
|
|
137
137
|
return;
|
|
@@ -212,7 +212,7 @@ export var useField = function useField(params) {
|
|
|
212
212
|
});
|
|
213
213
|
});
|
|
214
214
|
var handleInputKeyDown = useEventCallback(function (event) {
|
|
215
|
-
onKeyDown == null
|
|
215
|
+
onKeyDown == null || onKeyDown(event);
|
|
216
216
|
|
|
217
217
|
// eslint-disable-next-line default-case
|
|
218
218
|
switch (true) {
|
|
@@ -679,58 +679,6 @@ export var mergeDateIntoReferenceDate = function mergeDateIntoReferenceDate(util
|
|
|
679
679
|
export var isAndroid = function isAndroid() {
|
|
680
680
|
return navigator.userAgent.toLowerCase().indexOf('android') > -1;
|
|
681
681
|
};
|
|
682
|
-
export var clampDaySectionIfPossible = function clampDaySectionIfPossible(utils, timezone, sections, sectionsValueBoundaries) {
|
|
683
|
-
// We can only clamp the day value if:
|
|
684
|
-
// 1. if all the sections are filled (except the week day section which can be empty)
|
|
685
|
-
// 2. there is a day section
|
|
686
|
-
var canClamp = sections.every(function (section) {
|
|
687
|
-
return section.type === 'weekDay' || section.value !== '';
|
|
688
|
-
}) && sections.some(function (section) {
|
|
689
|
-
return section.type === 'day';
|
|
690
|
-
});
|
|
691
|
-
if (!canClamp) {
|
|
692
|
-
return null;
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
// We try to generate a valid date representing the start of the month of the invalid date typed by the user.
|
|
696
|
-
var sectionsForStartOfMonth = sections.map(function (section) {
|
|
697
|
-
if (section.type !== 'day') {
|
|
698
|
-
return section;
|
|
699
|
-
}
|
|
700
|
-
var dayBoundaries = sectionsValueBoundaries.day({
|
|
701
|
-
currentDate: null,
|
|
702
|
-
format: section.format,
|
|
703
|
-
contentType: section.contentType
|
|
704
|
-
});
|
|
705
|
-
return _extends({}, section, {
|
|
706
|
-
value: cleanDigitSectionValue(utils, timezone, dayBoundaries.minimum, dayBoundaries, section)
|
|
707
|
-
});
|
|
708
|
-
});
|
|
709
|
-
var startOfMonth = getDateFromDateSections(utils, sectionsForStartOfMonth);
|
|
710
|
-
|
|
711
|
-
// Even the start of the month is invalid, we probably have other invalid sections, the clamping failed.
|
|
712
|
-
if (startOfMonth == null || !utils.isValid(startOfMonth)) {
|
|
713
|
-
return null;
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
// The only invalid section was the day of the month, we replace its value with the maximum boundary for the correct month.
|
|
717
|
-
return sections.map(function (section) {
|
|
718
|
-
if (section.type !== 'day') {
|
|
719
|
-
return section;
|
|
720
|
-
}
|
|
721
|
-
var dayBoundaries = sectionsValueBoundaries.day({
|
|
722
|
-
currentDate: startOfMonth,
|
|
723
|
-
format: section.format,
|
|
724
|
-
contentType: section.contentType
|
|
725
|
-
});
|
|
726
|
-
if (Number(section.value) <= dayBoundaries.maximum) {
|
|
727
|
-
return section;
|
|
728
|
-
}
|
|
729
|
-
return _extends({}, section, {
|
|
730
|
-
value: dayBoundaries.maximum.toString()
|
|
731
|
-
});
|
|
732
|
-
});
|
|
733
|
-
};
|
|
734
682
|
export var getSectionOrder = function getSectionOrder(sections, isRTL) {
|
|
735
683
|
var neighbors = {};
|
|
736
684
|
if (!isRTL) {
|
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import useControlled from '@mui/utils/useControlled';
|
|
6
6
|
import { useTheme } from '@mui/material/styles';
|
|
7
7
|
import { useUtils, useLocaleText, useLocalizationContext } from '../useUtils';
|
|
8
|
-
import { addPositionPropertiesToSections, splitFormatIntoSections,
|
|
8
|
+
import { addPositionPropertiesToSections, splitFormatIntoSections, mergeDateIntoReferenceDate, getSectionsBoundaries, validateSections, getDateFromDateSections } from './useField.utils';
|
|
9
9
|
import { useValueWithTimezone } from '../useValueWithTimezone';
|
|
10
10
|
import { getSectionTypeGranularity } from '../../utils/getDefaultReferenceDate';
|
|
11
11
|
export var useFieldState = function useFieldState(params) {
|
|
@@ -90,7 +90,7 @@ export var useFieldState = function useFieldState(params) {
|
|
|
90
90
|
innerSetSelectedSections = _useControlled2[1];
|
|
91
91
|
var setSelectedSections = function setSelectedSections(newSelectedSections) {
|
|
92
92
|
innerSetSelectedSections(newSelectedSections);
|
|
93
|
-
onSelectedSectionsChange == null
|
|
93
|
+
onSelectedSectionsChange == null || onSelectedSectionsChange(newSelectedSections);
|
|
94
94
|
setState(function (prevState) {
|
|
95
95
|
return _extends({}, prevState, {
|
|
96
96
|
selectedSectionQuery: null
|
|
@@ -233,20 +233,6 @@ export var useFieldState = function useFieldState(params) {
|
|
|
233
233
|
var newSections = setSectionValue(selectedSectionIndexes.startIndex, newSectionValue);
|
|
234
234
|
var newActiveDateSections = activeDateManager.getSections(newSections);
|
|
235
235
|
var newActiveDate = getDateFromDateSections(utils, newActiveDateSections);
|
|
236
|
-
var shouldRegenSections = false;
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* If the date is invalid,
|
|
240
|
-
* Then we can try to clamp the day section to see if that produces a valid date.
|
|
241
|
-
* This can be useful if the month has fewer days than the day value currently provided.
|
|
242
|
-
*/
|
|
243
|
-
if (!utils.isValid(newActiveDate)) {
|
|
244
|
-
var clampedSections = clampDaySectionIfPossible(utils, timezone, newActiveDateSections, sectionsValueBoundaries);
|
|
245
|
-
if (clampedSections != null) {
|
|
246
|
-
shouldRegenSections = true;
|
|
247
|
-
newActiveDate = getDateFromDateSections(utils, clampedSections);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
236
|
var values;
|
|
251
237
|
var shouldPublish;
|
|
252
238
|
|
|
@@ -264,23 +250,17 @@ export var useFieldState = function useFieldState(params) {
|
|
|
264
250
|
shouldPublish = (newActiveDate != null && !utils.isValid(newActiveDate)) !== (activeDateManager.date != null && !utils.isValid(activeDateManager.date));
|
|
265
251
|
}
|
|
266
252
|
|
|
267
|
-
/**
|
|
268
|
-
* If the value has been modified (to clamp the day).
|
|
269
|
-
* Then we need to re-generate the sections to make sure they also have this change.
|
|
270
|
-
*/
|
|
271
|
-
var sections = shouldRegenSections ? getSectionsFromValue(values.value, state.sections) : newSections;
|
|
272
|
-
|
|
273
253
|
/**
|
|
274
254
|
* Publish or update the internal state with the new value and sections.
|
|
275
255
|
*/
|
|
276
256
|
if (shouldPublish) {
|
|
277
257
|
return publishValue(_extends({}, values, {
|
|
278
|
-
sections:
|
|
258
|
+
sections: newSections
|
|
279
259
|
}));
|
|
280
260
|
}
|
|
281
261
|
return setState(function (prevState) {
|
|
282
262
|
return _extends({}, prevState, values, {
|
|
283
|
-
sections:
|
|
263
|
+
sections: newSections,
|
|
284
264
|
tempValueStrAndroid: null
|
|
285
265
|
});
|
|
286
266
|
});
|
|
@@ -315,7 +315,7 @@ export var usePickerValue = function usePickerValue(_ref) {
|
|
|
315
315
|
});
|
|
316
316
|
var handleFieldSelectedSectionsChange = useEventCallback(function (newSelectedSections) {
|
|
317
317
|
setSelectedSections(newSelectedSections);
|
|
318
|
-
onSelectedSectionsChange == null
|
|
318
|
+
onSelectedSectionsChange == null || onSelectedSectionsChange(newSelectedSections);
|
|
319
319
|
});
|
|
320
320
|
var actions = {
|
|
321
321
|
onClear: handleClear,
|
|
@@ -107,7 +107,7 @@ export var usePickerViews = function usePickerViews(_ref) {
|
|
|
107
107
|
setTimeout(function () {
|
|
108
108
|
// focusing the input before the range selection is done
|
|
109
109
|
// calling `onSelectedSectionsChange` outside of timeout results in an inconsistent behavior between Safari And Chrome
|
|
110
|
-
inputRef == null
|
|
110
|
+
inputRef == null || inputRef.current.focus();
|
|
111
111
|
onSelectedSectionsChange(view);
|
|
112
112
|
});
|
|
113
113
|
}
|
|
@@ -36,7 +36,7 @@ export var useValueWithTimezone = function useValueWithTimezone(_ref) {
|
|
|
36
36
|
for (var _len = arguments.length, otherParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
37
37
|
otherParams[_key - 1] = arguments[_key];
|
|
38
38
|
}
|
|
39
|
-
onChange == null
|
|
39
|
+
onChange == null || onChange.apply(void 0, [newValueWithInputTimezone].concat(otherParams));
|
|
40
40
|
});
|
|
41
41
|
return {
|
|
42
42
|
value: valueWithTimezoneToRender,
|
|
@@ -69,7 +69,7 @@ export var useControlledValueWithTimezone = function useControlledValueWithTimez
|
|
|
69
69
|
for (var _len2 = arguments.length, otherParams = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
70
70
|
otherParams[_key2 - 1] = arguments[_key2];
|
|
71
71
|
}
|
|
72
|
-
onChangeProp == null
|
|
72
|
+
onChangeProp == null || onChangeProp.apply(void 0, [newValue].concat(otherParams));
|
|
73
73
|
});
|
|
74
74
|
return useValueWithTimezone({
|
|
75
75
|
timezone: timezoneProp,
|
|
@@ -72,7 +72,7 @@ export function useViews(_ref) {
|
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
onFocusedViewChange == null
|
|
75
|
+
onFocusedViewChange == null || onFocusedViewChange(viewToFocus, hasFocus);
|
|
76
76
|
});
|
|
77
77
|
var handleChangeView = useEventCallback(function (newView) {
|
|
78
78
|
if (newView === view) {
|
|
@@ -76,7 +76,7 @@ export var testControlledUnControlled = function testControlledUnControlled(Elem
|
|
|
76
76
|
setValue = _React$useState2[1];
|
|
77
77
|
var handleChange = React.useCallback(function (newValue) {
|
|
78
78
|
setValue(newValue);
|
|
79
|
-
props == null
|
|
79
|
+
props == null || props.onChange(newValue);
|
|
80
80
|
}, [props]);
|
|
81
81
|
return {
|
|
82
82
|
value: value,
|
|
@@ -12,6 +12,7 @@ export var renderTimeViewClock = function renderTimeViewClock(_ref) {
|
|
|
12
12
|
views = _ref.views,
|
|
13
13
|
value = _ref.value,
|
|
14
14
|
defaultValue = _ref.defaultValue,
|
|
15
|
+
referenceDate = _ref.referenceDate,
|
|
15
16
|
onChange = _ref.onChange,
|
|
16
17
|
className = _ref.className,
|
|
17
18
|
classes = _ref.classes,
|
|
@@ -43,6 +44,7 @@ export var renderTimeViewClock = function renderTimeViewClock(_ref) {
|
|
|
43
44
|
views: views.filter(isTimeView),
|
|
44
45
|
value: value,
|
|
45
46
|
defaultValue: defaultValue,
|
|
47
|
+
referenceDate: referenceDate,
|
|
46
48
|
onChange: onChange,
|
|
47
49
|
className: className,
|
|
48
50
|
classes: classes,
|
|
@@ -76,6 +78,7 @@ export var renderDigitalClockTimeView = function renderDigitalClockTimeView(_ref
|
|
|
76
78
|
views = _ref2.views,
|
|
77
79
|
value = _ref2.value,
|
|
78
80
|
defaultValue = _ref2.defaultValue,
|
|
81
|
+
referenceDate = _ref2.referenceDate,
|
|
79
82
|
onChange = _ref2.onChange,
|
|
80
83
|
className = _ref2.className,
|
|
81
84
|
classes = _ref2.classes,
|
|
@@ -107,6 +110,7 @@ export var renderDigitalClockTimeView = function renderDigitalClockTimeView(_ref
|
|
|
107
110
|
views: views.filter(isTimeView),
|
|
108
111
|
value: value,
|
|
109
112
|
defaultValue: defaultValue,
|
|
113
|
+
referenceDate: referenceDate,
|
|
110
114
|
onChange: onChange,
|
|
111
115
|
className: className,
|
|
112
116
|
classes: classes,
|
|
@@ -140,6 +144,7 @@ export var renderMultiSectionDigitalClockTimeView = function renderMultiSectionD
|
|
|
140
144
|
views = _ref3.views,
|
|
141
145
|
value = _ref3.value,
|
|
142
146
|
defaultValue = _ref3.defaultValue,
|
|
147
|
+
referenceDate = _ref3.referenceDate,
|
|
143
148
|
onChange = _ref3.onChange,
|
|
144
149
|
className = _ref3.className,
|
|
145
150
|
classes = _ref3.classes,
|
|
@@ -171,6 +176,7 @@ export var renderMultiSectionDigitalClockTimeView = function renderMultiSectionD
|
|
|
171
176
|
views: views.filter(isTimeView),
|
|
172
177
|
value: value,
|
|
173
178
|
defaultValue: defaultValue,
|
|
179
|
+
referenceDate: referenceDate,
|
|
174
180
|
onChange: onChange,
|
|
175
181
|
className: className,
|
|
176
182
|
classes: classes,
|
package/models/adapters.d.ts
CHANGED
|
@@ -171,6 +171,7 @@ export type AdapterOptions<TLocale, TInstance> = {
|
|
|
171
171
|
formats?: Partial<AdapterFormats>;
|
|
172
172
|
locale?: TLocale;
|
|
173
173
|
} & PropertyIfNotNever<'instance', TInstance>;
|
|
174
|
+
export type DateBuilderReturnType<T extends string | null | undefined, TDate> = T extends null ? null : TDate;
|
|
174
175
|
export interface MuiPickersAdapter<TDate, TLocale = any> {
|
|
175
176
|
/**
|
|
176
177
|
* A boolean confirming that the adapter used is an MUI adapter.
|
|
@@ -212,7 +213,7 @@ export interface MuiPickersAdapter<TDate, TLocale = any> {
|
|
|
212
213
|
* @param {PickersTimezone} timezone The timezone of the date.
|
|
213
214
|
* @returns {TDate | null} The parsed date.
|
|
214
215
|
*/
|
|
215
|
-
dateWithTimezone
|
|
216
|
+
dateWithTimezone<T extends string | null | undefined>(value: T, timezone: PickersTimezone): DateBuilderReturnType<T, TDate>;
|
|
216
217
|
/**
|
|
217
218
|
* Extracts the timezone from a date.
|
|
218
219
|
* @template TDate
|
|
@@ -485,7 +485,7 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
|
|
|
485
485
|
readOnly: PropTypes.bool,
|
|
486
486
|
/**
|
|
487
487
|
* If `true`, disable heavy animations.
|
|
488
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
488
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
489
489
|
*/
|
|
490
490
|
reduceAnimations: PropTypes.bool,
|
|
491
491
|
/**
|
|
@@ -207,10 +207,6 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
|
|
|
207
207
|
* @param {FieldChangeHandlerContext<TError>} context The context containing the validation result of the current value.
|
|
208
208
|
*/
|
|
209
209
|
onChange: PropTypes.func,
|
|
210
|
-
/**
|
|
211
|
-
* @ignore
|
|
212
|
-
*/
|
|
213
|
-
onClick: PropTypes.func,
|
|
214
210
|
/**
|
|
215
211
|
* Callback fired when the error associated to the current value changes.
|
|
216
212
|
* @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
|
|
@@ -242,9 +242,14 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
|
|
|
242
242
|
readOnly: PropTypes.bool,
|
|
243
243
|
/**
|
|
244
244
|
* If `true`, disable heavy animations.
|
|
245
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
245
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
246
246
|
*/
|
|
247
247
|
reduceAnimations: PropTypes.bool,
|
|
248
|
+
/**
|
|
249
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
250
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
251
|
+
*/
|
|
252
|
+
referenceDate: PropTypes.any,
|
|
248
253
|
/**
|
|
249
254
|
* Component displaying when passed `loading` true.
|
|
250
255
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -240,10 +240,6 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
|
|
|
240
240
|
* @param {FieldChangeHandlerContext<TError>} context The context containing the validation result of the current value.
|
|
241
241
|
*/
|
|
242
242
|
onChange: PropTypes.func,
|
|
243
|
-
/**
|
|
244
|
-
* @ignore
|
|
245
|
-
*/
|
|
246
|
-
onClick: PropTypes.func,
|
|
247
243
|
/**
|
|
248
244
|
* Callback fired when the error associated to the current value changes.
|
|
249
245
|
* @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
|
|
@@ -280,9 +280,14 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
|
|
|
280
280
|
readOnly: PropTypes.bool,
|
|
281
281
|
/**
|
|
282
282
|
* If `true`, disable heavy animations.
|
|
283
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
283
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
284
284
|
*/
|
|
285
285
|
reduceAnimations: PropTypes.bool,
|
|
286
|
+
/**
|
|
287
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
288
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
289
|
+
*/
|
|
290
|
+
referenceDate: PropTypes.any,
|
|
286
291
|
/**
|
|
287
292
|
* Component displaying when passed `loading` true.
|
|
288
293
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -256,9 +256,14 @@ DesktopDatePicker.propTypes = {
|
|
|
256
256
|
readOnly: PropTypes.bool,
|
|
257
257
|
/**
|
|
258
258
|
* If `true`, disable heavy animations.
|
|
259
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
259
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
260
260
|
*/
|
|
261
261
|
reduceAnimations: PropTypes.bool,
|
|
262
|
+
/**
|
|
263
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
264
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
265
|
+
*/
|
|
266
|
+
referenceDate: PropTypes.any,
|
|
262
267
|
/**
|
|
263
268
|
* Component displaying when passed `loading` true.
|
|
264
269
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -330,9 +330,14 @@ DesktopDateTimePicker.propTypes = {
|
|
|
330
330
|
readOnly: PropTypes.bool,
|
|
331
331
|
/**
|
|
332
332
|
* If `true`, disable heavy animations.
|
|
333
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
333
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
334
334
|
*/
|
|
335
335
|
reduceAnimations: PropTypes.bool,
|
|
336
|
+
/**
|
|
337
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
338
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
339
|
+
*/
|
|
340
|
+
referenceDate: PropTypes.any,
|
|
336
341
|
/**
|
|
337
342
|
* Component displaying when passed `loading` true.
|
|
338
343
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -252,9 +252,14 @@ DesktopTimePicker.propTypes = {
|
|
|
252
252
|
readOnly: PropTypes.bool,
|
|
253
253
|
/**
|
|
254
254
|
* If `true`, disable heavy animations.
|
|
255
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
255
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
256
256
|
*/
|
|
257
257
|
reduceAnimations: PropTypes.bool,
|
|
258
|
+
/**
|
|
259
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
260
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
261
|
+
*/
|
|
262
|
+
referenceDate: PropTypes.any,
|
|
258
263
|
/**
|
|
259
264
|
* The currently selected sections.
|
|
260
265
|
* This prop accept four formats:
|
|
@@ -253,9 +253,14 @@ MobileDatePicker.propTypes = {
|
|
|
253
253
|
readOnly: PropTypes.bool,
|
|
254
254
|
/**
|
|
255
255
|
* If `true`, disable heavy animations.
|
|
256
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
256
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
257
257
|
*/
|
|
258
258
|
reduceAnimations: PropTypes.bool,
|
|
259
|
+
/**
|
|
260
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
261
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
262
|
+
*/
|
|
263
|
+
referenceDate: PropTypes.any,
|
|
259
264
|
/**
|
|
260
265
|
* Component displaying when passed `loading` true.
|
|
261
266
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -302,9 +302,14 @@ MobileDateTimePicker.propTypes = {
|
|
|
302
302
|
readOnly: PropTypes.bool,
|
|
303
303
|
/**
|
|
304
304
|
* If `true`, disable heavy animations.
|
|
305
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
305
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
306
306
|
*/
|
|
307
307
|
reduceAnimations: PropTypes.bool,
|
|
308
|
+
/**
|
|
309
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
310
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
311
|
+
*/
|
|
312
|
+
referenceDate: PropTypes.any,
|
|
308
313
|
/**
|
|
309
314
|
* Component displaying when passed `loading` true.
|
|
310
315
|
* @returns {React.ReactNode} The node to render when loading.
|
|
@@ -230,9 +230,14 @@ MobileTimePicker.propTypes = {
|
|
|
230
230
|
readOnly: PropTypes.bool,
|
|
231
231
|
/**
|
|
232
232
|
* If `true`, disable heavy animations.
|
|
233
|
-
* @default `@media(prefers-reduced-motion: reduce)` ||
|
|
233
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
234
234
|
*/
|
|
235
235
|
reduceAnimations: PropTypes.bool,
|
|
236
|
+
/**
|
|
237
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
238
|
+
* @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.
|
|
239
|
+
*/
|
|
240
|
+
referenceDate: PropTypes.any,
|
|
236
241
|
/**
|
|
237
242
|
* The currently selected sections.
|
|
238
243
|
* This prop accept four formats:
|