@mui/x-date-pickers 8.0.0-alpha.1 → 8.0.0-alpha.2
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/AdapterMoment/AdapterMoment.js +10 -0
- package/CHANGELOG.md +228 -7
- package/DateCalendar/DateCalendar.types.d.ts +2 -1
- package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/DateCalendar/PickersSlideTransition.js +12 -5
- package/DateCalendar/useCalendarState.d.ts +6 -4
- package/DateField/DateField.js +5 -4
- package/DateField/DateField.types.d.ts +10 -9
- package/DatePicker/DatePicker.types.d.ts +3 -3
- package/DatePicker/DatePickerToolbar.d.ts +3 -2
- package/DatePicker/shared.d.ts +6 -5
- package/DateTimeField/DateTimeField.js +5 -4
- package/DateTimeField/DateTimeField.types.d.ts +10 -10
- package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
- package/DateTimePicker/DateTimePickerTabs.js +8 -6
- package/DateTimePicker/DateTimePickerToolbar.d.ts +2 -3
- package/DateTimePicker/shared.d.ts +6 -6
- package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -1
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -21
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
- package/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
- package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +3 -4
- package/PickersLayout/PickersLayout.d.ts +7 -5
- package/PickersLayout/PickersLayout.js +22 -27
- package/PickersLayout/PickersLayout.types.d.ts +14 -15
- package/PickersLayout/usePickerLayout.d.ts +5 -4
- package/PickersLayout/usePickerLayout.js +19 -12
- package/PickersShortcuts/PickersShortcuts.d.ts +7 -6
- package/README.md +7 -4
- package/TimeField/TimeField.js +5 -4
- package/TimeField/TimeField.types.d.ts +10 -10
- package/TimePicker/TimePicker.types.d.ts +3 -3
- package/TimePicker/TimePickerToolbar.d.ts +2 -3
- package/TimePicker/shared.d.ts +6 -6
- package/hooks/useParsedFormat.d.ts +2 -2
- package/hooks/useParsedFormat.js +1 -1
- package/index.js +1 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
- package/internals/components/PickersToolbar.d.ts +3 -3
- package/internals/hooks/useClockReferenceDate.d.ts +2 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +14 -14
- package/internals/hooks/useField/useField.d.ts +3 -3
- package/internals/hooks/useField/useField.types.d.ts +45 -45
- package/internals/hooks/useField/useField.utils.d.ts +4 -3
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
- package/internals/hooks/useField/useFieldState.d.ts +9 -8
- package/internals/hooks/useField/useFieldState.js +0 -1
- package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
- package/internals/hooks/useFieldOwnerState.d.ts +6 -0
- package/internals/hooks/useFieldOwnerState.js +12 -0
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +11 -11
- package/internals/hooks/usePicker/usePicker.d.ts +3 -3
- package/internals/hooks/usePicker/usePicker.js +2 -8
- package/internals/hooks/usePicker/usePicker.types.d.ts +7 -7
- package/internals/hooks/usePicker/usePickerProvider.d.ts +4 -5
- package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
- package/internals/hooks/usePicker/usePickerValue.js +0 -1
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +25 -24
- package/internals/hooks/usePicker/usePickerViews.d.ts +10 -10
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -6
- package/internals/hooks/useValueWithTimezone.d.ts +5 -4
- package/internals/hooks/useViews.d.ts +5 -5
- package/internals/index.d.ts +4 -2
- package/internals/index.js +1 -0
- package/internals/models/fields.d.ts +6 -1
- package/internals/models/pickers.d.ts +1 -0
- package/internals/models/pickers.js +1 -0
- package/internals/models/props/basePickerProps.d.ts +4 -3
- package/internals/models/props/time.d.ts +2 -1
- package/internals/models/props/toolbar.d.ts +2 -1
- package/internals/models/value.d.ts +9 -0
- package/internals/utils/date-utils.d.ts +1 -1
- package/internals/utils/valueManagers.d.ts +4 -3
- package/locales/nlNL.js +7 -7
- package/models/adapters.d.ts +4 -4
- package/models/fields.d.ts +19 -5
- package/models/validation.d.ts +2 -1
- package/modern/AdapterMoment/AdapterMoment.js +10 -0
- package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/modern/DateCalendar/PickersSlideTransition.js +12 -5
- package/modern/DateField/DateField.js +5 -4
- package/modern/DateTimeField/DateTimeField.js +5 -4
- package/modern/DateTimePicker/DateTimePickerTabs.js +8 -6
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -21
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
- package/modern/PickersLayout/PickersLayout.js +22 -27
- package/modern/PickersLayout/usePickerLayout.js +19 -12
- package/modern/TimeField/TimeField.js +5 -4
- package/modern/hooks/useParsedFormat.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
- package/modern/internals/hooks/useField/useFieldState.js +0 -1
- package/modern/internals/hooks/useFieldOwnerState.js +12 -0
- package/modern/internals/hooks/usePicker/usePicker.js +2 -8
- package/modern/internals/hooks/usePicker/usePickerValue.js +0 -1
- package/modern/internals/index.js +1 -0
- package/modern/internals/models/pickers.js +1 -0
- package/modern/locales/nlNL.js +7 -7
- package/modern/validation/useValidation.js +1 -1
- package/modern/validation/validateDate.js +8 -0
- package/modern/validation/validateDateTime.js +8 -0
- package/modern/validation/validateTime.js +8 -0
- package/node/AdapterMoment/AdapterMoment.js +10 -0
- package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/node/DateCalendar/PickersSlideTransition.js +12 -5
- package/node/DateField/DateField.js +5 -4
- package/node/DateTimeField/DateTimeField.js +5 -4
- package/node/DateTimePicker/DateTimePickerTabs.js +8 -6
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +11 -22
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
- package/node/PickersLayout/PickersLayout.js +22 -27
- package/node/PickersLayout/usePickerLayout.js +19 -12
- package/node/TimeField/TimeField.js +5 -4
- package/node/hooks/useParsedFormat.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
- package/node/internals/hooks/useField/useFieldState.js +0 -1
- package/node/internals/hooks/useFieldOwnerState.js +20 -0
- package/node/internals/hooks/usePicker/usePicker.js +3 -8
- package/node/internals/index.js +7 -0
- package/node/internals/models/pickers.js +5 -0
- package/node/locales/nlNL.js +7 -7
- package/node/validation/useValidation.js +1 -1
- package/node/validation/validateDate.js +8 -0
- package/node/validation/validateDateTime.js +8 -0
- package/node/validation/validateTime.js +8 -0
- package/package.json +2 -2
- package/themeAugmentation/overrides.d.ts +1 -1
- package/themeAugmentation/props.d.ts +3 -2
- package/validation/useValidation.d.ts +7 -6
- package/validation/useValidation.js +1 -1
- package/validation/validateDate.d.ts +12 -3
- package/validation/validateDate.js +8 -0
- package/validation/validateDateTime.d.ts +12 -4
- package/validation/validateDateTime.js +8 -0
- package/validation/validateTime.d.ts +12 -3
- package/validation/validateTime.js +8 -0
- package/internals/hooks/useIsLandscape.d.ts +0 -4
- package/internals/hooks/useIsLandscape.js +0 -35
- package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -32
- package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
- package/modern/internals/hooks/useIsLandscape.js +0 -35
- package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
- package/node/internals/hooks/useIsLandscape.js +0 -43
- package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -38
package/models/fields.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import type { ExportedUseClearableFieldProps, UseClearableFieldResponse } from '
|
|
|
4
4
|
import { ExportedPickersSectionListProps } from '../PickersSectionList';
|
|
5
5
|
import type { UseFieldInternalProps, UseFieldResponse } from '../internals/hooks/useField';
|
|
6
6
|
import type { PickersTextFieldProps } from '../PickersTextField';
|
|
7
|
-
import { BaseForwardedSingleInputFieldProps } from '../internals/models';
|
|
7
|
+
import { BaseForwardedSingleInputFieldProps, FieldRangeSection, PickerRangeValue, PickerValidValue } from '../internals/models';
|
|
8
|
+
import { PickerOwnerState } from './pickers';
|
|
8
9
|
export type FieldSectionType = 'year' | 'month' | 'day' | 'weekDay' | 'hours' | 'minutes' | 'seconds' | 'meridiem' | 'empty';
|
|
9
10
|
export type FieldSectionContentType = 'digit' | 'digit-with-letter' | 'letter';
|
|
10
11
|
export interface FieldSection {
|
|
@@ -69,12 +70,14 @@ export interface FieldSection {
|
|
|
69
70
|
*/
|
|
70
71
|
endSeparator: string;
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
+
type IsAny<T> = boolean extends (T extends never ? true : false) ? true : false;
|
|
74
|
+
export type InferFieldSection<TValue extends PickerValidValue> = IsAny<TValue> extends true ? FieldSection : TValue extends PickerRangeValue ? FieldRangeSection : FieldSection;
|
|
75
|
+
export interface FieldRef<TValue extends PickerValidValue> {
|
|
73
76
|
/**
|
|
74
77
|
* Returns the sections of the current value.
|
|
75
|
-
* @returns {
|
|
78
|
+
* @returns {InferFieldSection<TValue>[]} The sections of the current value.
|
|
76
79
|
*/
|
|
77
|
-
getSections: () =>
|
|
80
|
+
getSections: () => InferFieldSection<TValue>[];
|
|
78
81
|
/**
|
|
79
82
|
* Returns the index of the active section (the first focused section).
|
|
80
83
|
* If no section is active, returns `null`.
|
|
@@ -98,10 +101,20 @@ export interface FieldRef<TSection extends FieldSection> {
|
|
|
98
101
|
isFieldFocused: () => boolean;
|
|
99
102
|
}
|
|
100
103
|
export type FieldSelectedSections = number | FieldSectionType | null | 'all';
|
|
104
|
+
export interface FieldOwnerState extends PickerOwnerState {
|
|
105
|
+
/**
|
|
106
|
+
* `true` if the field is disabled, `false` otherwise.
|
|
107
|
+
*/
|
|
108
|
+
isFieldDisabled: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* `true` if the field is read-only, `false` otherwise.
|
|
111
|
+
*/
|
|
112
|
+
isFieldReadOnly: boolean;
|
|
113
|
+
}
|
|
101
114
|
/**
|
|
102
115
|
* Props the prop `slotProps.field` of a picker can receive.
|
|
103
116
|
*/
|
|
104
|
-
export type PickerFieldSlotProps<TValue
|
|
117
|
+
export type PickerFieldSlotProps<TValue extends PickerValidValue, TEnableAccessibleFieldDOMStructure extends boolean> = ExportedUseClearableFieldProps & Pick<UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, unknown>, 'shouldRespectLeadingZeros' | 'readOnly'> & React.HTMLAttributes<HTMLDivElement> & {
|
|
105
118
|
ref?: React.Ref<HTMLDivElement>;
|
|
106
119
|
};
|
|
107
120
|
/**
|
|
@@ -113,3 +126,4 @@ export type BaseSingleInputPickersTextFieldProps<TEnableAccessibleFieldDOMStruct
|
|
|
113
126
|
* Props the built-in text field component can receive.
|
|
114
127
|
*/
|
|
115
128
|
export type BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = TEnableAccessibleFieldDOMStructure extends false ? Omit<TextFieldProps, 'autoComplete' | 'error' | 'maxRows' | 'minRows' | 'multiline' | 'placeholder' | 'rows' | 'select' | 'SelectProps' | 'type'> : Partial<Omit<PickersTextFieldProps, keyof ExportedPickersSectionListProps>>;
|
|
129
|
+
export {};
|
package/models/validation.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PickerValidValue } from '../internals/models';
|
|
1
2
|
/**
|
|
2
3
|
* Validation error types applicable to both date and time validation
|
|
3
4
|
*/
|
|
@@ -5,7 +6,7 @@ type CommonDateTimeValidationError = 'invalidDate' | 'disableFuture' | 'disableP
|
|
|
5
6
|
export type DateValidationError = CommonDateTimeValidationError | 'shouldDisableDate' | 'shouldDisableMonth' | 'shouldDisableYear' | 'minDate' | 'maxDate';
|
|
6
7
|
export type TimeValidationError = CommonDateTimeValidationError | 'minutesStep' | 'minTime' | 'maxTime' | 'shouldDisableTime-hours' | 'shouldDisableTime-minutes' | 'shouldDisableTime-seconds';
|
|
7
8
|
export type DateTimeValidationError = DateValidationError | TimeValidationError;
|
|
8
|
-
export interface OnErrorProps<TValue, TError> {
|
|
9
|
+
export interface OnErrorProps<TValue extends PickerValidValue, TError> {
|
|
9
10
|
/**
|
|
10
11
|
* Callback fired when the error associated with the current value changes.
|
|
11
12
|
* When a validation error is detected, the `error` parameter contains a non-null value.
|
|
@@ -430,12 +430,22 @@ export class AdapterMoment {
|
|
|
430
430
|
const end = this.endOfWeek(this.endOfMonth(value));
|
|
431
431
|
let count = 0;
|
|
432
432
|
let current = start;
|
|
433
|
+
let currentDayOfYear = current.get('dayOfYear');
|
|
433
434
|
const nestedWeeks = [];
|
|
434
435
|
while (current.isBefore(end)) {
|
|
435
436
|
const weekNumber = Math.floor(count / 7);
|
|
436
437
|
nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
|
|
437
438
|
nestedWeeks[weekNumber].push(current);
|
|
439
|
+
const prevDayOfYear = currentDayOfYear;
|
|
438
440
|
current = this.addDays(current, 1);
|
|
441
|
+
currentDayOfYear = current.get('dayOfYear');
|
|
442
|
+
|
|
443
|
+
// If there is a TZ change at midnight, adding 1 day may only increase the date by 23 hours to 11pm
|
|
444
|
+
// To fix, bump the date into the next day (add 12 hours) and then revert to the start of the day
|
|
445
|
+
// See https://github.com/moment/moment/issues/4743#issuecomment-811306874 for context.
|
|
446
|
+
if (prevDayOfYear === currentDayOfYear) {
|
|
447
|
+
current = current.add(12, 'h').startOf('day');
|
|
448
|
+
}
|
|
439
449
|
count += 1;
|
|
440
450
|
}
|
|
441
451
|
return nestedWeeks;
|
|
@@ -6,10 +6,7 @@ import { styled, useTheme, useThemeProps } from '@mui/material/styles';
|
|
|
6
6
|
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import { getPickersFadeTransitionGroupUtilityClass } from "./pickersFadeTransitionGroupClasses.js";
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
const useUtilityClasses =
|
|
10
|
-
const {
|
|
11
|
-
classes
|
|
12
|
-
} = ownerState;
|
|
9
|
+
const useUtilityClasses = classes => {
|
|
13
10
|
const slots = {
|
|
14
11
|
root: ['root']
|
|
15
12
|
};
|
|
@@ -36,9 +33,10 @@ export function PickersFadeTransitionGroup(inProps) {
|
|
|
36
33
|
children,
|
|
37
34
|
className,
|
|
38
35
|
reduceAnimations,
|
|
39
|
-
transKey
|
|
36
|
+
transKey,
|
|
37
|
+
classes: classesProp
|
|
40
38
|
} = props;
|
|
41
|
-
const classes = useUtilityClasses(
|
|
39
|
+
const classes = useUtilityClasses(classesProp);
|
|
42
40
|
const theme = useTheme();
|
|
43
41
|
if (reduceAnimations) {
|
|
44
42
|
return children;
|
|
@@ -7,10 +7,10 @@ import { styled, useTheme, useThemeProps } from '@mui/material/styles';
|
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { CSSTransition, TransitionGroup } from 'react-transition-group';
|
|
9
9
|
import { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from "./pickersSlideTransitionClasses.js";
|
|
10
|
+
import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
|
|
10
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
const useUtilityClasses = ownerState => {
|
|
12
|
+
const useUtilityClasses = (classes, ownerState) => {
|
|
12
13
|
const {
|
|
13
|
-
classes,
|
|
14
14
|
slideDirection
|
|
15
15
|
} = ownerState;
|
|
16
16
|
const slots = {
|
|
@@ -99,11 +99,18 @@ export function PickersSlideTransition(inProps) {
|
|
|
99
99
|
children,
|
|
100
100
|
className,
|
|
101
101
|
reduceAnimations,
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
slideDirection,
|
|
103
|
+
transKey,
|
|
104
|
+
classes: classesProp
|
|
104
105
|
} = props,
|
|
105
106
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
106
|
-
const
|
|
107
|
+
const {
|
|
108
|
+
ownerState: pickerOwnerState
|
|
109
|
+
} = usePickerPrivateContext();
|
|
110
|
+
const ownerState = _extends({}, pickerOwnerState, {
|
|
111
|
+
slideDirection
|
|
112
|
+
});
|
|
113
|
+
const classes = useUtilityClasses(classesProp, ownerState);
|
|
107
114
|
const theme = useTheme();
|
|
108
115
|
if (reduceAnimations) {
|
|
109
116
|
return /*#__PURE__*/_jsx("div", {
|
|
@@ -13,6 +13,7 @@ import { useDateField } from "./useDateField.js";
|
|
|
13
13
|
import { useClearableField } from "../hooks/index.js";
|
|
14
14
|
import { PickersTextField } from "../PickersTextField/index.js";
|
|
15
15
|
import { convertFieldResponseIntoMuiTextFieldProps } from "../internals/utils/convertFieldResponseIntoMuiTextFieldProps.js";
|
|
16
|
+
import { useFieldOwnerState } from "../internals/hooks/useFieldOwnerState.js";
|
|
16
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
18
|
/**
|
|
18
19
|
* Demos:
|
|
@@ -36,7 +37,7 @@ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRe
|
|
|
36
37
|
inputProps
|
|
37
38
|
} = themeProps,
|
|
38
39
|
other = _objectWithoutPropertiesLoose(themeProps, _excluded);
|
|
39
|
-
const ownerState = themeProps;
|
|
40
|
+
const ownerState = useFieldOwnerState(themeProps);
|
|
40
41
|
const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
|
|
41
42
|
const textFieldProps = useSlotProps({
|
|
42
43
|
elementType: TextField,
|
|
@@ -267,10 +268,10 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
|
|
|
267
268
|
*/
|
|
268
269
|
shouldDisableYear: PropTypes.func,
|
|
269
270
|
/**
|
|
270
|
-
* If `true`, the format will respect the leading zeroes (
|
|
271
|
-
* If `false`, the format will always add leading zeroes (
|
|
271
|
+
* If `true`, the format will respect the leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
|
|
272
|
+
* If `false`, the format will always add leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
|
|
272
273
|
*
|
|
273
|
-
* Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (
|
|
274
|
+
* Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (for example "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
|
|
274
275
|
*
|
|
275
276
|
* Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.
|
|
276
277
|
* If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\u200e/g, '')`.
|
|
@@ -13,6 +13,7 @@ import { useDateTimeField } from "./useDateTimeField.js";
|
|
|
13
13
|
import { useClearableField } from "../hooks/index.js";
|
|
14
14
|
import { PickersTextField } from "../PickersTextField/index.js";
|
|
15
15
|
import { convertFieldResponseIntoMuiTextFieldProps } from "../internals/utils/convertFieldResponseIntoMuiTextFieldProps.js";
|
|
16
|
+
import { useFieldOwnerState } from "../internals/hooks/useFieldOwnerState.js";
|
|
16
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
18
|
/**
|
|
18
19
|
* Demos:
|
|
@@ -36,7 +37,7 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
|
|
|
36
37
|
inputProps
|
|
37
38
|
} = themeProps,
|
|
38
39
|
other = _objectWithoutPropertiesLoose(themeProps, _excluded);
|
|
39
|
-
const ownerState = themeProps;
|
|
40
|
+
const ownerState = useFieldOwnerState(themeProps);
|
|
40
41
|
const TextField = slots?.textField ?? (inProps.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
|
|
41
42
|
const textFieldProps = useSlotProps({
|
|
42
43
|
elementType: TextField,
|
|
@@ -307,10 +308,10 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
|
|
|
307
308
|
*/
|
|
308
309
|
shouldDisableYear: PropTypes.func,
|
|
309
310
|
/**
|
|
310
|
-
* If `true`, the format will respect the leading zeroes (
|
|
311
|
-
* If `false`, the format will always add leading zeroes (
|
|
311
|
+
* If `true`, the format will respect the leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `8/16/2018`)
|
|
312
|
+
* If `false`, the format will always add leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `08/16/2018`)
|
|
312
313
|
*
|
|
313
|
-
* Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (
|
|
314
|
+
* Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (for example "DD"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.
|
|
314
315
|
*
|
|
315
316
|
* Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.
|
|
316
317
|
* If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\u200e/g, '')`.
|
|
@@ -11,6 +11,7 @@ import { TimeIcon, DateRangeIcon } from "../icons/index.js";
|
|
|
11
11
|
import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
|
|
12
12
|
import { getDateTimePickerTabsUtilityClass } from "./dateTimePickerTabsClasses.js";
|
|
13
13
|
import { isDatePickerView } from "../internals/utils/date-utils.js";
|
|
14
|
+
import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
|
|
14
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
16
|
const viewToTab = view => {
|
|
16
17
|
if (isDatePickerView(view)) {
|
|
@@ -24,10 +25,7 @@ const tabToView = tab => {
|
|
|
24
25
|
}
|
|
25
26
|
return 'hours';
|
|
26
27
|
};
|
|
27
|
-
const useUtilityClasses =
|
|
28
|
-
const {
|
|
29
|
-
classes
|
|
30
|
-
} = ownerState;
|
|
28
|
+
const useUtilityClasses = classes => {
|
|
31
29
|
const slots = {
|
|
32
30
|
root: ['root']
|
|
33
31
|
};
|
|
@@ -72,10 +70,14 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps) {
|
|
|
72
70
|
view,
|
|
73
71
|
hidden = typeof window === 'undefined' || window.innerHeight < 667,
|
|
74
72
|
className,
|
|
73
|
+
classes: classesProp,
|
|
75
74
|
sx
|
|
76
75
|
} = props;
|
|
77
76
|
const translations = usePickerTranslations();
|
|
78
|
-
const
|
|
77
|
+
const {
|
|
78
|
+
ownerState
|
|
79
|
+
} = usePickerPrivateContext();
|
|
80
|
+
const classes = useUtilityClasses(classesProp);
|
|
79
81
|
const handleChange = (event, value) => {
|
|
80
82
|
onViewChange(tabToView(value));
|
|
81
83
|
};
|
|
@@ -83,7 +85,7 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps) {
|
|
|
83
85
|
return null;
|
|
84
86
|
}
|
|
85
87
|
return /*#__PURE__*/_jsxs(DateTimePickerTabsRoot, {
|
|
86
|
-
ownerState:
|
|
88
|
+
ownerState: ownerState,
|
|
87
89
|
variant: "fullWidth",
|
|
88
90
|
value: viewToTab(view),
|
|
89
91
|
onChange: handleChange,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["className"];
|
|
5
|
+
const _excluded = ["className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clsx from 'clsx';
|
|
@@ -12,10 +12,7 @@ import composeClasses from '@mui/utils/composeClasses';
|
|
|
12
12
|
import { DAY_SIZE, DAY_MARGIN } from "../internals/constants/dimensions.js";
|
|
13
13
|
import { getDayCalendarSkeletonUtilityClass } from "./dayCalendarSkeletonClasses.js";
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
const useUtilityClasses =
|
|
16
|
-
const {
|
|
17
|
-
classes
|
|
18
|
-
} = ownerState;
|
|
15
|
+
const useUtilityClasses = classes => {
|
|
19
16
|
const slots = {
|
|
20
17
|
root: ['root'],
|
|
21
18
|
week: ['week'],
|
|
@@ -45,14 +42,9 @@ const DayCalendarSkeletonDay = styled(Skeleton, {
|
|
|
45
42
|
overridesResolver: (props, styles) => styles.daySkeleton
|
|
46
43
|
})({
|
|
47
44
|
margin: `0 ${DAY_MARGIN}px`,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
},
|
|
52
|
-
style: {
|
|
53
|
-
visibility: 'hidden'
|
|
54
|
-
}
|
|
55
|
-
}]
|
|
45
|
+
'&[data-day-in-month="0"]': {
|
|
46
|
+
visibility: 'hidden'
|
|
47
|
+
}
|
|
56
48
|
});
|
|
57
49
|
const monthMap = [[0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0]];
|
|
58
50
|
|
|
@@ -71,23 +63,22 @@ function DayCalendarSkeleton(inProps) {
|
|
|
71
63
|
name: 'MuiDayCalendarSkeleton'
|
|
72
64
|
});
|
|
73
65
|
const {
|
|
74
|
-
className
|
|
66
|
+
className,
|
|
67
|
+
classes: classesProp
|
|
75
68
|
} = props,
|
|
76
69
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
77
|
-
const classes = useUtilityClasses(
|
|
70
|
+
const classes = useUtilityClasses(classesProp);
|
|
78
71
|
return /*#__PURE__*/_jsx(DayCalendarSkeletonRoot, _extends({
|
|
79
72
|
className: clsx(classes.root, className)
|
|
80
73
|
}, other, {
|
|
81
74
|
children: monthMap.map((week, index) => /*#__PURE__*/_jsx(DayCalendarSkeletonWeek, {
|
|
82
75
|
className: classes.week,
|
|
83
|
-
children: week.map((
|
|
76
|
+
children: week.map((dayInMonth, index2) => /*#__PURE__*/_jsx(DayCalendarSkeletonDay, {
|
|
84
77
|
variant: "circular",
|
|
85
78
|
width: DAY_SIZE,
|
|
86
79
|
height: DAY_SIZE,
|
|
87
80
|
className: classes.daySkeleton,
|
|
88
|
-
|
|
89
|
-
day
|
|
90
|
-
}
|
|
81
|
+
"data-day-in-month": dayInMonth
|
|
91
82
|
}, index2))
|
|
92
83
|
}, index))
|
|
93
84
|
}));
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import PropTypes from 'prop-types';
|
|
4
3
|
import clsx from 'clsx';
|
|
5
|
-
import { useRtl } from '@mui/system/RtlProvider';
|
|
6
4
|
import Divider from '@mui/material/Divider';
|
|
7
5
|
import { PickersLayoutContentWrapper, PickersLayoutRoot, pickersLayoutClasses, usePickerLayout } from "../PickersLayout/index.js";
|
|
6
|
+
import { usePickerContext } from "../hooks/usePickerContext.js";
|
|
8
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
8
|
/**
|
|
10
9
|
* @ignore - internal component.
|
|
11
10
|
*/
|
|
12
11
|
const DesktopDateTimePickerLayout = /*#__PURE__*/React.forwardRef(function DesktopDateTimePickerLayout(props, ref) {
|
|
13
|
-
const isRtl = useRtl();
|
|
14
12
|
const {
|
|
15
13
|
toolbar,
|
|
16
14
|
tabs,
|
|
17
15
|
content,
|
|
18
16
|
actionBar,
|
|
19
|
-
shortcuts
|
|
17
|
+
shortcuts,
|
|
18
|
+
ownerState
|
|
20
19
|
} = usePickerLayout(props);
|
|
20
|
+
const {
|
|
21
|
+
orientation
|
|
22
|
+
} = usePickerContext();
|
|
21
23
|
const {
|
|
22
24
|
sx,
|
|
23
25
|
className,
|
|
24
|
-
isLandscape,
|
|
25
26
|
classes
|
|
26
27
|
} = props;
|
|
27
28
|
const isActionBarVisible = actionBar && (actionBar.props.actions?.length ?? 0) > 0;
|
|
28
|
-
const ownerState = _extends({}, props, {
|
|
29
|
-
isRtl
|
|
30
|
-
});
|
|
31
29
|
return /*#__PURE__*/_jsxs(PickersLayoutRoot, {
|
|
32
30
|
ref: ref,
|
|
33
31
|
className: clsx(pickersLayoutClasses.root, classes?.root, className),
|
|
@@ -41,8 +39,9 @@ const DesktopDateTimePickerLayout = /*#__PURE__*/React.forwardRef(function Deskt
|
|
|
41
39
|
}
|
|
42
40
|
}, ...(Array.isArray(sx) ? sx : [sx])],
|
|
43
41
|
ownerState: ownerState,
|
|
44
|
-
children: [
|
|
42
|
+
children: [orientation === 'landscape' ? shortcuts : toolbar, orientation === 'landscape' ? toolbar : shortcuts, /*#__PURE__*/_jsxs(PickersLayoutContentWrapper, {
|
|
45
43
|
className: clsx(pickersLayoutClasses.contentWrapper, classes?.contentWrapper),
|
|
44
|
+
ownerState: ownerState,
|
|
46
45
|
sx: {
|
|
47
46
|
display: 'grid'
|
|
48
47
|
},
|
|
@@ -66,11 +65,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
|
|
|
66
65
|
*/
|
|
67
66
|
classes: PropTypes.object,
|
|
68
67
|
className: PropTypes.string,
|
|
69
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
70
|
-
/**
|
|
71
|
-
* `true` if the application is in right-to-left direction.
|
|
72
|
-
*/
|
|
73
|
-
isRtl: PropTypes.bool.isRequired,
|
|
74
68
|
isValid: PropTypes.func.isRequired,
|
|
75
69
|
onAccept: PropTypes.func.isRequired,
|
|
76
70
|
onCancel: PropTypes.func.isRequired,
|
|
@@ -82,10 +76,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
|
|
|
82
76
|
onSelectShortcut: PropTypes.func.isRequired,
|
|
83
77
|
onSetToday: PropTypes.func.isRequired,
|
|
84
78
|
onViewChange: PropTypes.func.isRequired,
|
|
85
|
-
/**
|
|
86
|
-
* Force rendering in particular orientation.
|
|
87
|
-
*/
|
|
88
|
-
orientation: PropTypes.oneOf(['landscape', 'portrait']),
|
|
89
79
|
/**
|
|
90
80
|
* The props used for each component slot.
|
|
91
81
|
* @default {}
|
|
@@ -100,9 +90,8 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
|
|
|
100
90
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
101
91
|
*/
|
|
102
92
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
103
|
-
value: PropTypes.
|
|
93
|
+
value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
|
|
104
94
|
view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
|
|
105
|
-
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
|
|
106
|
-
wrapperVariant: PropTypes.oneOf(['desktop', 'mobile'])
|
|
95
|
+
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
|
|
107
96
|
} : void 0;
|
|
108
97
|
export { DesktopDateTimePickerLayout };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
const _excluded = ["slots", "slotProps", "currentMonth", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onMonthChange", "onViewChange", "view", "reduceAnimations", "views", "labelId", "className", "timezone", "format"],
|
|
5
|
+
const _excluded = ["slots", "slotProps", "currentMonth", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onMonthChange", "onViewChange", "view", "reduceAnimations", "views", "labelId", "className", "classes", "timezone", "format"],
|
|
6
6
|
_excluded2 = ["ownerState"];
|
|
7
7
|
import * as React from 'react';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -19,11 +19,9 @@ import { ArrowDropDownIcon } from "../icons/index.js";
|
|
|
19
19
|
import { PickersArrowSwitcher } from "../internals/components/PickersArrowSwitcher/index.js";
|
|
20
20
|
import { usePreviousMonthDisabled, useNextMonthDisabled } from "../internals/hooks/date-helpers-hooks.js";
|
|
21
21
|
import { getPickersCalendarHeaderUtilityClass, pickersCalendarHeaderClasses } from "./pickersCalendarHeaderClasses.js";
|
|
22
|
+
import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
|
|
22
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
-
const useUtilityClasses =
|
|
24
|
-
const {
|
|
25
|
-
classes
|
|
26
|
-
} = ownerState;
|
|
24
|
+
const useUtilityClasses = classes => {
|
|
27
25
|
const slots = {
|
|
28
26
|
root: ['root'],
|
|
29
27
|
labelContainer: ['labelContainer'],
|
|
@@ -132,12 +130,15 @@ const PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCale
|
|
|
132
130
|
views,
|
|
133
131
|
labelId,
|
|
134
132
|
className,
|
|
133
|
+
classes: classesProp,
|
|
135
134
|
timezone,
|
|
136
135
|
format = `${utils.formats.month} ${utils.formats.year}`
|
|
137
136
|
} = props,
|
|
138
137
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
139
|
-
const
|
|
140
|
-
|
|
138
|
+
const {
|
|
139
|
+
ownerState
|
|
140
|
+
} = usePickerPrivateContext();
|
|
141
|
+
const classes = useUtilityClasses(classesProp);
|
|
141
142
|
const SwitchViewButton = slots?.switchViewButton ?? PickersCalendarHeaderSwitchViewButton;
|
|
142
143
|
const switchViewButtonProps = useSlotProps({
|
|
143
144
|
elementType: SwitchViewButton,
|
|
@@ -7,14 +7,14 @@ import { styled, useThemeProps } from '@mui/material/styles';
|
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { pickersLayoutClasses, getPickersLayoutUtilityClass } from "./pickersLayoutClasses.js";
|
|
9
9
|
import usePickerLayout from "./usePickerLayout.js";
|
|
10
|
+
import { usePickerContext } from "../hooks/usePickerContext.js";
|
|
10
11
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
const useUtilityClasses = ownerState => {
|
|
12
|
+
const useUtilityClasses = (classes, ownerState) => {
|
|
12
13
|
const {
|
|
13
|
-
|
|
14
|
-
classes
|
|
14
|
+
pickerOrientation
|
|
15
15
|
} = ownerState;
|
|
16
16
|
const slots = {
|
|
17
|
-
root: ['root',
|
|
17
|
+
root: ['root', pickerOrientation === 'landscape' && 'landscape'],
|
|
18
18
|
contentWrapper: ['contentWrapper']
|
|
19
19
|
};
|
|
20
20
|
return composeClasses(slots, getPickersLayoutUtilityClass, classes);
|
|
@@ -33,7 +33,7 @@ export const PickersLayoutRoot = styled('div', {
|
|
|
33
33
|
},
|
|
34
34
|
variants: [{
|
|
35
35
|
props: {
|
|
36
|
-
|
|
36
|
+
pickerOrientation: 'landscape'
|
|
37
37
|
},
|
|
38
38
|
style: {
|
|
39
39
|
[`& .${pickersLayoutClasses.toolbar}`]: {
|
|
@@ -47,7 +47,7 @@ export const PickersLayoutRoot = styled('div', {
|
|
|
47
47
|
}
|
|
48
48
|
}, {
|
|
49
49
|
props: {
|
|
50
|
-
|
|
50
|
+
pickerOrientation: 'landscape',
|
|
51
51
|
isRtl: true
|
|
52
52
|
},
|
|
53
53
|
style: {
|
|
@@ -57,7 +57,7 @@ export const PickersLayoutRoot = styled('div', {
|
|
|
57
57
|
}
|
|
58
58
|
}, {
|
|
59
59
|
props: {
|
|
60
|
-
|
|
60
|
+
pickerOrientation: 'portrait'
|
|
61
61
|
},
|
|
62
62
|
style: {
|
|
63
63
|
[`& .${pickersLayoutClasses.toolbar}`]: {
|
|
@@ -71,7 +71,7 @@ export const PickersLayoutRoot = styled('div', {
|
|
|
71
71
|
}
|
|
72
72
|
}, {
|
|
73
73
|
props: {
|
|
74
|
-
|
|
74
|
+
pickerOrientation: 'portrait',
|
|
75
75
|
isRtl: true
|
|
76
76
|
},
|
|
77
77
|
style: {
|
|
@@ -110,23 +110,28 @@ const PickersLayout = /*#__PURE__*/React.forwardRef(function PickersLayout(inPro
|
|
|
110
110
|
content,
|
|
111
111
|
tabs,
|
|
112
112
|
actionBar,
|
|
113
|
-
shortcuts
|
|
113
|
+
shortcuts,
|
|
114
|
+
ownerState
|
|
114
115
|
} = usePickerLayout(props);
|
|
116
|
+
const {
|
|
117
|
+
orientation,
|
|
118
|
+
variant
|
|
119
|
+
} = usePickerContext();
|
|
115
120
|
const {
|
|
116
121
|
sx,
|
|
117
122
|
className,
|
|
118
|
-
|
|
119
|
-
wrapperVariant
|
|
123
|
+
classes: classesProp
|
|
120
124
|
} = props;
|
|
121
|
-
const classes = useUtilityClasses(
|
|
125
|
+
const classes = useUtilityClasses(classesProp, ownerState);
|
|
122
126
|
return /*#__PURE__*/_jsxs(PickersLayoutRoot, {
|
|
123
127
|
ref: ref,
|
|
124
128
|
sx: sx,
|
|
125
129
|
className: clsx(classes.root, className),
|
|
126
|
-
ownerState:
|
|
127
|
-
children: [
|
|
130
|
+
ownerState: ownerState,
|
|
131
|
+
children: [orientation === 'landscape' ? shortcuts : toolbar, orientation === 'landscape' ? toolbar : shortcuts, /*#__PURE__*/_jsx(PickersLayoutContentWrapper, {
|
|
128
132
|
className: classes.contentWrapper,
|
|
129
|
-
|
|
133
|
+
ownerState: ownerState,
|
|
134
|
+
children: variant === 'desktop' ? /*#__PURE__*/_jsxs(React.Fragment, {
|
|
130
135
|
children: [content, tabs]
|
|
131
136
|
}) : /*#__PURE__*/_jsxs(React.Fragment, {
|
|
132
137
|
children: [tabs, content]
|
|
@@ -145,11 +150,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
|
|
|
145
150
|
*/
|
|
146
151
|
classes: PropTypes.object,
|
|
147
152
|
className: PropTypes.string,
|
|
148
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
149
|
-
/**
|
|
150
|
-
* `true` if the application is in right-to-left direction.
|
|
151
|
-
*/
|
|
152
|
-
isRtl: PropTypes.bool.isRequired,
|
|
153
153
|
isValid: PropTypes.func.isRequired,
|
|
154
154
|
onAccept: PropTypes.func.isRequired,
|
|
155
155
|
onCancel: PropTypes.func.isRequired,
|
|
@@ -161,10 +161,6 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
|
|
|
161
161
|
onSelectShortcut: PropTypes.func.isRequired,
|
|
162
162
|
onSetToday: PropTypes.func.isRequired,
|
|
163
163
|
onViewChange: PropTypes.func.isRequired,
|
|
164
|
-
/**
|
|
165
|
-
* Force rendering in particular orientation.
|
|
166
|
-
*/
|
|
167
|
-
orientation: PropTypes.oneOf(['landscape', 'portrait']),
|
|
168
164
|
/**
|
|
169
165
|
* The props used for each component slot.
|
|
170
166
|
* @default {}
|
|
@@ -179,9 +175,8 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
|
|
|
179
175
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
180
176
|
*/
|
|
181
177
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
182
|
-
value: PropTypes.
|
|
178
|
+
value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]),
|
|
183
179
|
view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),
|
|
184
|
-
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
|
|
185
|
-
wrapperVariant: PropTypes.oneOf(['desktop', 'mobile'])
|
|
180
|
+
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired).isRequired
|
|
186
181
|
} : void 0;
|
|
187
182
|
export { PickersLayout };
|