@mui/x-date-pickers 8.0.0-alpha.0 → 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 +651 -6
- package/DateCalendar/DateCalendar.js +1 -0
- 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/DatePickerToolbar.js +0 -12
- 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 +3 -4
- package/DateTimePicker/DateTimePickerToolbar.js +6 -15
- 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 -33
- package/DigitalClock/DigitalClock.js +1 -0
- package/MonthCalendar/MonthCalendar.js +1 -0
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
- 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 -39
- package/PickersLayout/PickersLayout.types.d.ts +14 -15
- package/PickersLayout/usePickerLayout.d.ts +5 -4
- package/PickersLayout/usePickerLayout.js +20 -17
- package/PickersShortcuts/PickersShortcuts.d.ts +7 -6
- package/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
- package/PickersTextField/PickersTextField.js +2 -2
- package/README.md +9 -6
- package/TimeClock/Clock.js +1 -0
- package/TimeClock/TimeClock.js +1 -0
- 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/TimePickerToolbar.js +6 -15
- package/TimePicker/shared.d.ts +6 -6
- package/YearCalendar/YearCalendar.js +1 -0
- package/hooks/useParsedFormat.d.ts +2 -2
- package/hooks/useParsedFormat.js +1 -1
- package/hooks/useSplitFieldProps.d.ts +3 -3
- package/index.js +1 -1
- package/internals/components/PickerProvider.d.ts +26 -0
- package/internals/components/PickerProvider.js +3 -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/components/PickersToolbar.js +2 -4
- package/internals/hooks/useClockReferenceDate.d.ts +2 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -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 +46 -46
- 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 +1 -1
- package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
- package/internals/hooks/useField/useFieldV7TextField.js +2 -1
- package/internals/hooks/useFieldOwnerState.d.ts +6 -0
- package/internals/hooks/useFieldOwnerState.js +12 -0
- package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
- 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 +10 -19
- package/internals/hooks/usePicker/usePicker.types.d.ts +8 -8
- package/internals/hooks/usePicker/usePickerProvider.d.ts +21 -6
- package/internals/hooks/usePicker/usePickerProvider.js +61 -5
- package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
- package/internals/hooks/usePicker/usePickerValue.js +18 -7
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +32 -30
- package/internals/hooks/usePicker/usePickerViews.d.ts +11 -10
- package/internals/hooks/usePicker/usePickerViews.js +1 -0
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -6
- package/internals/hooks/useValueWithTimezone.d.ts +20 -15
- package/internals/hooks/useValueWithTimezone.js +13 -1
- package/internals/hooks/useViews.d.ts +5 -5
- package/internals/index.d.ts +5 -3
- package/internals/index.js +1 -0
- package/internals/models/common.d.ts +2 -1
- 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 -2
- package/internals/models/value.d.ts +9 -0
- package/internals/utils/date-utils.d.ts +3 -3
- package/internals/utils/valueManagers.d.ts +4 -3
- package/locales/nlNL.js +7 -7
- package/models/adapters.d.ts +4 -4
- package/models/common.d.ts +1 -0
- package/models/fields.d.ts +19 -6
- package/models/pickers.d.ts +18 -0
- package/models/validation.d.ts +2 -1
- package/modern/AdapterMoment/AdapterMoment.js +10 -0
- package/modern/DateCalendar/DateCalendar.js +1 -0
- package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/modern/DateCalendar/PickersSlideTransition.js +12 -5
- package/modern/DateField/DateField.js +5 -4
- package/modern/DatePicker/DatePickerToolbar.js +0 -12
- package/modern/DateTimeField/DateTimeField.js +5 -4
- package/modern/DateTimePicker/DateTimePickerTabs.js +8 -6
- package/modern/DateTimePicker/DateTimePickerToolbar.js +6 -15
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -33
- package/modern/DigitalClock/DigitalClock.js +1 -0
- package/modern/MonthCalendar/MonthCalendar.js +1 -0
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
- package/modern/PickersLayout/PickersLayout.js +22 -39
- package/modern/PickersLayout/usePickerLayout.js +20 -17
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
- package/modern/PickersTextField/PickersTextField.js +2 -2
- package/modern/TimeClock/Clock.js +1 -0
- package/modern/TimeClock/TimeClock.js +1 -0
- package/modern/TimeField/TimeField.js +5 -4
- package/modern/TimePicker/TimePickerToolbar.js +6 -15
- package/modern/YearCalendar/YearCalendar.js +1 -0
- package/modern/hooks/useParsedFormat.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerProvider.js +3 -1
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
- package/modern/internals/components/PickersToolbar.js +2 -4
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/modern/internals/hooks/useField/useFieldState.js +1 -1
- package/modern/internals/hooks/useField/useFieldV7TextField.js +2 -1
- package/modern/internals/hooks/useFieldOwnerState.js +12 -0
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
- package/modern/internals/hooks/usePicker/usePicker.js +10 -19
- package/modern/internals/hooks/usePicker/usePickerProvider.js +61 -5
- package/modern/internals/hooks/usePicker/usePickerValue.js +18 -7
- package/modern/internals/hooks/usePicker/usePickerViews.js +1 -0
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
- package/modern/internals/hooks/useValueWithTimezone.js +13 -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/DateCalendar.js +1 -0
- package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/node/DateCalendar/PickersSlideTransition.js +12 -5
- package/node/DateField/DateField.js +5 -4
- package/node/DatePicker/DatePickerToolbar.js +0 -12
- package/node/DateTimeField/DateTimeField.js +5 -4
- package/node/DateTimePicker/DateTimePickerTabs.js +8 -6
- package/node/DateTimePicker/DateTimePickerToolbar.js +6 -15
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +11 -34
- package/node/DigitalClock/DigitalClock.js +1 -0
- package/node/MonthCalendar/MonthCalendar.js +1 -0
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +8 -7
- package/node/PickersLayout/PickersLayout.js +22 -39
- package/node/PickersLayout/usePickerLayout.js +20 -17
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +10 -9
- package/node/PickersTextField/PickersTextField.js +2 -2
- package/node/TimeClock/Clock.js +1 -0
- package/node/TimeClock/TimeClock.js +1 -0
- package/node/TimeField/TimeField.js +5 -4
- package/node/TimePicker/TimePickerToolbar.js +6 -15
- package/node/YearCalendar/YearCalendar.js +1 -0
- package/node/hooks/useParsedFormat.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/components/PickerProvider.js +3 -1
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -10
- package/node/internals/components/PickersToolbar.js +2 -4
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -1
- package/node/internals/hooks/useField/useFieldState.js +1 -1
- package/node/internals/hooks/useField/useFieldV7TextField.js +2 -1
- package/node/internals/hooks/useFieldOwnerState.js +20 -0
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +1 -1
- package/node/internals/hooks/usePicker/usePicker.js +11 -19
- package/node/internals/hooks/usePicker/usePickerProvider.js +64 -5
- package/node/internals/hooks/usePicker/usePickerValue.js +18 -6
- package/node/internals/hooks/usePicker/usePickerViews.js +1 -0
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -1
- package/node/internals/hooks/useValueWithTimezone.js +13 -1
- 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 +4 -4
- 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 -33
- package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
- package/internals/hooks/usePicker/usePickerOwnerState.d.ts +0 -10
- package/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
- package/modern/internals/hooks/useIsLandscape.js +0 -35
- package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -34
- package/modern/internals/hooks/usePicker/usePickerOwnerState.js +0 -16
- package/node/internals/hooks/useIsLandscape.js +0 -43
- package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -41
- package/node/internals/hooks/usePicker/usePickerOwnerState.js +0 -23
|
@@ -13,6 +13,7 @@ import { ExportedYearCalendarProps, YearCalendarSlots, YearCalendarSlotProps } f
|
|
|
13
13
|
import { ExportedMonthCalendarProps, MonthCalendarSlots, MonthCalendarSlotProps } from '../MonthCalendar/MonthCalendar.types';
|
|
14
14
|
import { ExportedValidateDateProps } from '../validation/validateDate';
|
|
15
15
|
import { FormProps } from '../internals/models/formProps';
|
|
16
|
+
import { PickerValue } from '../internals/models';
|
|
16
17
|
export interface DateCalendarSlots extends PickersCalendarHeaderSlots, DayCalendarSlots, MonthCalendarSlots, YearCalendarSlots {
|
|
17
18
|
/**
|
|
18
19
|
* Custom component for calendar header.
|
|
@@ -47,7 +48,7 @@ export interface ExportedDateCalendarProps extends ExportedDayCalendarProps, Exp
|
|
|
47
48
|
*/
|
|
48
49
|
onMonthChange?: (month: PickerValidDate) => void;
|
|
49
50
|
}
|
|
50
|
-
export interface DateCalendarProps extends ExportedDateCalendarProps, ExportedUseViewsOptions<
|
|
51
|
+
export interface DateCalendarProps extends ExportedDateCalendarProps, ExportedUseViewsOptions<PickerValue, DateView> {
|
|
51
52
|
/**
|
|
52
53
|
* The selected value.
|
|
53
54
|
* Used when the component is controlled.
|
|
@@ -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", {
|
|
@@ -25,17 +25,19 @@ interface ChangeFocusedDayPayload {
|
|
|
25
25
|
export declare const createCalendarStateReducer: (reduceAnimations: boolean, disableSwitchToMonthOnDayFocus: boolean, utils: MuiPickersAdapter) => (state: CalendarState, action: ReducerAction<"finishMonthSwitchingAnimation"> | ReducerAction<"changeMonth", ChangeMonthPayload> | ReducerAction<"changeMonthTimezone", {
|
|
26
26
|
newTimezone: string;
|
|
27
27
|
}> | ReducerAction<"changeFocusedDay", ChangeFocusedDayPayload>) => CalendarState;
|
|
28
|
-
interface
|
|
28
|
+
interface UseCalendarStateParameters extends Pick<DateCalendarDefaultizedProps, 'referenceDate' | 'disableFuture' | 'disablePast' | 'minDate' | 'maxDate' | 'onMonthChange' | 'reduceAnimations' | 'shouldDisableDate'> {
|
|
29
|
+
value: PickerValidDate | null;
|
|
29
30
|
disableSwitchToMonthOnDayFocus?: boolean;
|
|
30
31
|
timezone: PickersTimezone;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
referenceDate:
|
|
33
|
+
interface UseCalendarStateReturnValue {
|
|
34
|
+
referenceDate: PickerValidDate;
|
|
34
35
|
calendarState: CalendarState;
|
|
35
36
|
changeMonth: (newDate: PickerValidDate) => void;
|
|
36
37
|
changeFocusedDay: (newFocusedDate: PickerValidDate | null, withoutMonthSwitchingAnimation?: boolean) => void;
|
|
37
38
|
isDateDisabled: (day: PickerValidDate | null) => boolean;
|
|
38
39
|
onMonthSwitchingAnimationEnd: () => void;
|
|
39
40
|
handleChangeMonth: (payload: ChangeMonthPayload) => void;
|
|
40
|
-
}
|
|
41
|
+
}
|
|
42
|
+
export declare const useCalendarState: (params: UseCalendarStateParameters) => UseCalendarStateReturnValue;
|
|
41
43
|
export {};
|
package/DateField/DateField.js
CHANGED
|
@@ -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, '')`.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { MakeOptional } from '@mui/x-internals/types';
|
|
4
|
-
import TextField from '@mui/material/TextField';
|
|
2
|
+
import type { TextFieldProps } from '@mui/material/TextField';
|
|
3
|
+
import { MakeOptional, SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
5
4
|
import { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps } from '../hooks/useClearableField';
|
|
6
|
-
import { DateValidationError,
|
|
5
|
+
import { DateValidationError, BuiltInFieldTextFieldProps, FieldOwnerState } from '../models';
|
|
7
6
|
import { UseFieldInternalProps } from '../internals/hooks/useField';
|
|
8
7
|
import { ExportedValidateDateProps } from '../validation/validateDate';
|
|
9
|
-
|
|
8
|
+
import { PickersTextFieldProps } from '../PickersTextField';
|
|
9
|
+
import { PickerValue } from '../internals/models';
|
|
10
|
+
export interface UseDateFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>, 'format'>, ExportedValidateDateProps, ExportedUseClearableFieldProps {
|
|
10
11
|
}
|
|
11
12
|
export type DateFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = UseDateFieldProps<TEnableAccessibleFieldDOMStructure> & Omit<BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure>, keyof UseDateFieldProps<TEnableAccessibleFieldDOMStructure>> & {
|
|
12
13
|
/**
|
|
@@ -18,16 +19,16 @@ export type DateFieldProps<TEnableAccessibleFieldDOMStructure extends boolean =
|
|
|
18
19
|
* The props used for each component slot.
|
|
19
20
|
* @default {}
|
|
20
21
|
*/
|
|
21
|
-
slotProps?: DateFieldSlotProps
|
|
22
|
+
slotProps?: DateFieldSlotProps;
|
|
22
23
|
};
|
|
23
24
|
export type DateFieldOwnerState<TEnableAccessibleFieldDOMStructure extends boolean> = DateFieldProps<TEnableAccessibleFieldDOMStructure>;
|
|
24
25
|
export interface DateFieldSlots extends UseClearableFieldSlots {
|
|
25
26
|
/**
|
|
26
27
|
* Form control with an input to render the value.
|
|
27
|
-
* @default TextField from '@mui/material'
|
|
28
|
+
* @default <PickersTextField />, or <TextField /> from '@mui/material' if `enableAccessibleFieldDOMStructure` is `false`.
|
|
28
29
|
*/
|
|
29
30
|
textField?: React.ElementType;
|
|
30
31
|
}
|
|
31
|
-
export interface DateFieldSlotProps
|
|
32
|
-
textField?:
|
|
32
|
+
export interface DateFieldSlotProps extends UseClearableFieldSlotProps {
|
|
33
|
+
textField?: SlotComponentPropsFromProps<PickersTextFieldProps | TextFieldProps, {}, FieldOwnerState>;
|
|
33
34
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DesktopDatePickerProps, DesktopDatePickerSlots, DesktopDatePickerSlotProps } from '../DesktopDatePicker';
|
|
2
|
-
import { BaseSingleInputFieldProps } from '../internals/models';
|
|
2
|
+
import { BaseSingleInputFieldProps, PickerValue } from '../internals/models';
|
|
3
3
|
import { MobileDatePickerProps, MobileDatePickerSlots, MobileDatePickerSlotProps } from '../MobileDatePicker';
|
|
4
|
-
import { DateValidationError
|
|
4
|
+
import { DateValidationError } from '../models';
|
|
5
5
|
import { ValidateDateProps } from '../validation/validateDate';
|
|
6
6
|
export interface DatePickerSlots extends DesktopDatePickerSlots, MobileDatePickerSlots {
|
|
7
7
|
}
|
|
@@ -33,4 +33,4 @@ export interface DatePickerProps<TEnableAccessibleFieldDOMStructure extends bool
|
|
|
33
33
|
/**
|
|
34
34
|
* Props the field can receive when used inside a date picker (<DatePicker />, <DesktopDatePicker /> or <MobileDatePicker /> component).
|
|
35
35
|
*/
|
|
36
|
-
export type DatePickerFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = ValidateDateProps & BaseSingleInputFieldProps<
|
|
36
|
+
export type DatePickerFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = ValidateDateProps & BaseSingleInputFieldProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
|
|
3
|
-
import { DateView
|
|
3
|
+
import { DateView } from '../models';
|
|
4
4
|
import { DatePickerToolbarClasses } from './datePickerToolbarClasses';
|
|
5
|
-
|
|
5
|
+
import { PickerValue } from '../internals/models';
|
|
6
|
+
export interface DatePickerToolbarProps extends BaseToolbarProps<PickerValue, DateView>, ExportedDatePickerToolbarProps {
|
|
6
7
|
}
|
|
7
8
|
export interface ExportedDatePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
8
9
|
/**
|
|
@@ -107,12 +107,6 @@ process.env.NODE_ENV !== "production" ? DatePickerToolbar.propTypes = {
|
|
|
107
107
|
*/
|
|
108
108
|
classes: PropTypes.object,
|
|
109
109
|
className: PropTypes.string,
|
|
110
|
-
/**
|
|
111
|
-
* If `true`, the component is disabled.
|
|
112
|
-
* When disabled, the value cannot be changed and no interaction is possible.
|
|
113
|
-
* @default false
|
|
114
|
-
*/
|
|
115
|
-
disabled: PropTypes.bool,
|
|
116
110
|
/**
|
|
117
111
|
* If `true`, show the toolbar even in desktop mode.
|
|
118
112
|
* @default `true` for Desktop, `false` for Mobile.
|
|
@@ -126,12 +120,6 @@ process.env.NODE_ENV !== "production" ? DatePickerToolbar.propTypes = {
|
|
|
126
120
|
* @param {TView} view The view to open
|
|
127
121
|
*/
|
|
128
122
|
onViewChange: PropTypes.func.isRequired,
|
|
129
|
-
/**
|
|
130
|
-
* If `true`, the component is read-only.
|
|
131
|
-
* When read-only, the value cannot be changed but the user can interact with the interface.
|
|
132
|
-
* @default false
|
|
133
|
-
*/
|
|
134
|
-
readOnly: PropTypes.bool,
|
|
135
123
|
/**
|
|
136
124
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
137
125
|
*/
|
package/DatePicker/shared.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DefaultizedProps } from '@mui/x-internals/types';
|
|
3
3
|
import { DateCalendarSlots, DateCalendarSlotProps, ExportedDateCalendarProps } from '../DateCalendar/DateCalendar.types';
|
|
4
|
-
import { DateValidationError, DateView
|
|
4
|
+
import { DateValidationError, DateView } from '../models';
|
|
5
5
|
import { BasePickerInputProps } from '../internals/models/props/basePickerProps';
|
|
6
|
-
import { BaseDateValidationProps } from '../internals/models/validation';
|
|
7
6
|
import { LocalizedComponent } from '../locales/utils/pickersLocaleTextApi';
|
|
8
7
|
import { DatePickerToolbarProps, ExportedDatePickerToolbarProps } from './DatePickerToolbar';
|
|
9
8
|
import { PickerViewRendererLookup } from '../internals/hooks/usePicker/usePickerViews';
|
|
10
9
|
import { DateViewRendererProps } from '../dateViewRenderers';
|
|
10
|
+
import { PickerValue } from '../internals/models';
|
|
11
|
+
import { ValidateDatePropsToDefault } from '../validation/validateDate';
|
|
11
12
|
export interface BaseDatePickerSlots extends DateCalendarSlots {
|
|
12
13
|
/**
|
|
13
14
|
* Custom component for the toolbar rendered above the views.
|
|
@@ -18,8 +19,8 @@ export interface BaseDatePickerSlots extends DateCalendarSlots {
|
|
|
18
19
|
export interface BaseDatePickerSlotProps extends DateCalendarSlotProps {
|
|
19
20
|
toolbar?: ExportedDatePickerToolbarProps;
|
|
20
21
|
}
|
|
21
|
-
export type DatePickerViewRenderers<TView extends DateView, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<
|
|
22
|
-
export interface BaseDatePickerProps extends BasePickerInputProps<
|
|
22
|
+
export type DatePickerViewRenderers<TView extends DateView, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<PickerValue, TView, DateViewRendererProps<TView>, TAdditionalProps>;
|
|
23
|
+
export interface BaseDatePickerProps extends BasePickerInputProps<PickerValue, DateView, DateValidationError>, ExportedDateCalendarProps {
|
|
23
24
|
/**
|
|
24
25
|
* Overridable component slots.
|
|
25
26
|
* @default {}
|
|
@@ -37,6 +38,6 @@ export interface BaseDatePickerProps extends BasePickerInputProps<PickerValidDat
|
|
|
37
38
|
*/
|
|
38
39
|
viewRenderers?: Partial<DatePickerViewRenderers<DateView>>;
|
|
39
40
|
}
|
|
40
|
-
type UseDatePickerDefaultizedProps<Props extends BaseDatePickerProps> = LocalizedComponent<DefaultizedProps<Props, 'views' | 'openTo' |
|
|
41
|
+
type UseDatePickerDefaultizedProps<Props extends BaseDatePickerProps> = LocalizedComponent<DefaultizedProps<Props, 'views' | 'openTo' | ValidateDatePropsToDefault>>;
|
|
41
42
|
export declare function useDatePickerDefaultizedProps<Props extends BaseDatePickerProps>(props: Props, name: string): UseDatePickerDefaultizedProps<Props>;
|
|
42
43
|
export {};
|
|
@@ -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, '')`.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { DateTimeValidationError, FieldSection, PickerValidDate, BuiltInFieldTextFieldProps } from '../models';
|
|
2
|
+
import { MakeOptional, SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
3
|
+
import { TextFieldProps } from '@mui/material/TextField';
|
|
4
|
+
import { DateTimeValidationError, BuiltInFieldTextFieldProps, FieldOwnerState } from '../models';
|
|
6
5
|
import { UseFieldInternalProps } from '../internals/hooks/useField';
|
|
7
6
|
import { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps } from '../hooks/useClearableField';
|
|
8
7
|
import { ExportedValidateDateTimeProps } from '../validation/validateDateTime';
|
|
9
8
|
import { AmPmProps } from '../internals/models/props/time';
|
|
10
|
-
|
|
9
|
+
import { PickerValue } from '../internals/models';
|
|
10
|
+
import { PickersTextFieldProps } from '../PickersTextField';
|
|
11
|
+
export interface UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, ExportedUseClearableFieldProps, AmPmProps {
|
|
11
12
|
}
|
|
12
13
|
export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure> & Omit<BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure>, keyof UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>> & {
|
|
13
14
|
/**
|
|
@@ -19,16 +20,15 @@ export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolea
|
|
|
19
20
|
* The props used for each component slot.
|
|
20
21
|
* @default {}
|
|
21
22
|
*/
|
|
22
|
-
slotProps?: DateTimeFieldSlotProps
|
|
23
|
+
slotProps?: DateTimeFieldSlotProps;
|
|
23
24
|
};
|
|
24
|
-
export type DateTimeFieldOwnerState<TEnableAccessibleFieldDOMStructure extends boolean> = DateTimeFieldProps<TEnableAccessibleFieldDOMStructure>;
|
|
25
25
|
export interface DateTimeFieldSlots extends UseClearableFieldSlots {
|
|
26
26
|
/**
|
|
27
27
|
* Form control with an input to render the value.
|
|
28
|
-
* @default TextField from '@mui/material'
|
|
28
|
+
* @default <PickersTextField />, or <TextField /> from '@mui/material' if `enableAccessibleFieldDOMStructure` is `false`.
|
|
29
29
|
*/
|
|
30
30
|
textField?: React.ElementType;
|
|
31
31
|
}
|
|
32
|
-
export interface DateTimeFieldSlotProps
|
|
33
|
-
textField?:
|
|
32
|
+
export interface DateTimeFieldSlotProps extends UseClearableFieldSlotProps {
|
|
33
|
+
textField?: SlotComponentPropsFromProps<PickersTextFieldProps | TextFieldProps, {}, FieldOwnerState>;
|
|
34
34
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DesktopDateTimePickerProps, DesktopDateTimePickerSlots, DesktopDateTimePickerSlotProps } from '../DesktopDateTimePicker';
|
|
2
|
-
import { BaseSingleInputFieldProps, DateOrTimeViewWithMeridiem } from '../internals/models';
|
|
2
|
+
import { BaseSingleInputFieldProps, DateOrTimeViewWithMeridiem, PickerValue } from '../internals/models';
|
|
3
3
|
import { MobileDateTimePickerProps, MobileDateTimePickerSlots, MobileDateTimePickerSlotProps } from '../MobileDateTimePicker';
|
|
4
|
-
import { DateTimeValidationError
|
|
4
|
+
import { DateTimeValidationError } from '../models';
|
|
5
5
|
import { ValidateDateTimeProps } from '../validation';
|
|
6
6
|
import { ExportedYearCalendarProps } from '../YearCalendar/YearCalendar.types';
|
|
7
7
|
export interface DateTimePickerSlots extends DesktopDateTimePickerSlots, MobileDateTimePickerSlots<DateOrTimeViewWithMeridiem> {
|
|
@@ -34,4 +34,4 @@ export interface DateTimePickerProps<TEnableAccessibleFieldDOMStructure extends
|
|
|
34
34
|
/**
|
|
35
35
|
* Props the field can receive when used inside a date time picker (<DateTimePicker />, <DesktopDateTimePicker /> or <MobileDateTimePicker /> component).
|
|
36
36
|
*/
|
|
37
|
-
export type DateTimePickerFieldProps = ValidateDateTimeProps & BaseSingleInputFieldProps<
|
|
37
|
+
export type DateTimePickerFieldProps = ValidateDateTimeProps & BaseSingleInputFieldProps<PickerValue, false, DateTimeValidationError>;
|
|
@@ -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,16 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
import { MakeOptional } from '@mui/x-internals/types';
|
|
3
3
|
import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
|
|
4
4
|
import { DateTimePickerToolbarClasses } from './dateTimePickerToolbarClasses';
|
|
5
|
-
import { DateOrTimeViewWithMeridiem,
|
|
6
|
-
import { PickerValidDate } from '../models';
|
|
5
|
+
import { DateOrTimeViewWithMeridiem, PickerValue, PickerVariant } from '../internals/models';
|
|
7
6
|
export interface ExportedDateTimePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
8
7
|
/**
|
|
9
8
|
* Override or extend the styles applied to the component.
|
|
10
9
|
*/
|
|
11
10
|
classes?: Partial<DateTimePickerToolbarClasses>;
|
|
12
11
|
}
|
|
13
|
-
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, MakeOptional<BaseToolbarProps<
|
|
14
|
-
toolbarVariant?:
|
|
12
|
+
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, MakeOptional<BaseToolbarProps<PickerValue, DateOrTimeViewWithMeridiem>, 'view'> {
|
|
13
|
+
toolbarVariant?: PickerVariant;
|
|
15
14
|
/**
|
|
16
15
|
* If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
|
|
17
16
|
*/
|
|
@@ -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 = ["ampm", "ampmInClock", "value", "onChange", "view", "isLandscape", "onViewChange", "toolbarFormat", "toolbarPlaceholder", "views", "
|
|
5
|
+
const _excluded = ["ampm", "ampmInClock", "value", "onChange", "view", "isLandscape", "onViewChange", "toolbarFormat", "toolbarPlaceholder", "views", "toolbarVariant", "toolbarTitle", "className"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
@@ -20,6 +20,7 @@ import { MULTI_SECTION_CLOCK_SECTION_WIDTH } from "../internals/constants/dimens
|
|
|
20
20
|
import { formatMeridiem } from "../internals/utils/date-utils.js";
|
|
21
21
|
import { pickersToolbarTextClasses } from "../internals/components/pickersToolbarTextClasses.js";
|
|
22
22
|
import { pickersToolbarClasses } from "../internals/components/pickersToolbarClasses.js";
|
|
23
|
+
import { usePickerContext } from "../hooks/usePickerContext.js";
|
|
23
24
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
25
|
const useUtilityClasses = ownerState => {
|
|
25
26
|
const {
|
|
@@ -226,14 +227,16 @@ function DateTimePickerToolbar(inProps) {
|
|
|
226
227
|
toolbarFormat,
|
|
227
228
|
toolbarPlaceholder = '––',
|
|
228
229
|
views,
|
|
229
|
-
disabled,
|
|
230
|
-
readOnly,
|
|
231
230
|
toolbarVariant = 'mobile',
|
|
232
231
|
toolbarTitle: inToolbarTitle,
|
|
233
232
|
className
|
|
234
233
|
} = props,
|
|
235
234
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
236
235
|
const isRtl = useRtl();
|
|
236
|
+
const {
|
|
237
|
+
disabled,
|
|
238
|
+
readOnly
|
|
239
|
+
} = usePickerContext();
|
|
237
240
|
const ownerState = _extends({}, props, {
|
|
238
241
|
isRtl
|
|
239
242
|
});
|
|
@@ -359,12 +362,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
359
362
|
*/
|
|
360
363
|
classes: PropTypes.object,
|
|
361
364
|
className: PropTypes.string,
|
|
362
|
-
/**
|
|
363
|
-
* If `true`, the component is disabled.
|
|
364
|
-
* When disabled, the value cannot be changed and no interaction is possible.
|
|
365
|
-
* @default false
|
|
366
|
-
*/
|
|
367
|
-
disabled: PropTypes.bool,
|
|
368
365
|
/**
|
|
369
366
|
* If `true`, show the toolbar even in desktop mode.
|
|
370
367
|
* @default `true` for Desktop, `false` for Mobile.
|
|
@@ -378,12 +375,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
378
375
|
* @param {TView} view The view to open
|
|
379
376
|
*/
|
|
380
377
|
onViewChange: PropTypes.func.isRequired,
|
|
381
|
-
/**
|
|
382
|
-
* If `true`, the component is read-only.
|
|
383
|
-
* When read-only, the value cannot be changed but the user can interact with the interface.
|
|
384
|
-
* @default false
|
|
385
|
-
*/
|
|
386
|
-
readOnly: PropTypes.bool,
|
|
387
378
|
/**
|
|
388
379
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
389
380
|
*/
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DefaultizedProps } from '@mui/x-internals/types';
|
|
3
|
-
import { DateTimeValidationError
|
|
3
|
+
import { DateTimeValidationError } from '../models';
|
|
4
4
|
import { DateCalendarSlots, DateCalendarSlotProps, ExportedDateCalendarProps } from '../DateCalendar/DateCalendar.types';
|
|
5
5
|
import { TimeClockSlots, TimeClockSlotProps } from '../TimeClock/TimeClock.types';
|
|
6
6
|
import { BasePickerInputProps } from '../internals/models/props/basePickerProps';
|
|
7
7
|
import { DateTimePickerTabsProps, ExportedDateTimePickerTabsProps } from './DateTimePickerTabs';
|
|
8
|
-
import { BaseDateValidationProps, BaseTimeValidationProps, DateTimeValidationProps } from '../internals/models/validation';
|
|
9
8
|
import { LocalizedComponent } from '../locales/utils/pickersLocaleTextApi';
|
|
10
9
|
import { DateTimePickerToolbarProps, ExportedDateTimePickerToolbarProps } from './DateTimePickerToolbar';
|
|
11
10
|
import { PickerViewRendererLookup } from '../internals/hooks/usePicker/usePickerViews';
|
|
12
11
|
import { DateViewRendererProps } from '../dateViewRenderers';
|
|
13
12
|
import { TimeViewRendererProps } from '../timeViewRenderers';
|
|
14
13
|
import { BaseClockProps, ExportedBaseClockProps } from '../internals/models/props/time';
|
|
15
|
-
import { DateOrTimeViewWithMeridiem, TimeViewWithMeridiem } from '../internals/models';
|
|
14
|
+
import { DateOrTimeViewWithMeridiem, PickerValue, TimeViewWithMeridiem } from '../internals/models';
|
|
15
|
+
import { ExportedValidateDateTimeProps, ValidateDateTimePropsToDefault } from '../validation/validateDateTime';
|
|
16
16
|
export interface BaseDateTimePickerSlots extends DateCalendarSlots, TimeClockSlots {
|
|
17
17
|
/**
|
|
18
18
|
* Tabs enabling toggling between date and time pickers.
|
|
@@ -35,8 +35,8 @@ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, Time
|
|
|
35
35
|
*/
|
|
36
36
|
toolbar?: ExportedDateTimePickerToolbarProps;
|
|
37
37
|
}
|
|
38
|
-
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<
|
|
39
|
-
export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<
|
|
38
|
+
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem, TAdditionalProps extends {} = {}> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>, TAdditionalProps>;
|
|
39
|
+
export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<PickerValue, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps, 'onViewChange'>, ExportedBaseClockProps, ExportedValidateDateTimeProps {
|
|
40
40
|
/**
|
|
41
41
|
* Display ampm controls under the clock (instead of in the toolbar).
|
|
42
42
|
* @default true on desktop, false on mobile
|
|
@@ -59,6 +59,6 @@ export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridie
|
|
|
59
59
|
*/
|
|
60
60
|
viewRenderers?: Partial<DateTimePickerViewRenderers<TView>>;
|
|
61
61
|
}
|
|
62
|
-
type UseDateTimePickerDefaultizedProps<TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TView>> = LocalizedComponent<DefaultizedProps<Props, 'views' | 'openTo' | 'orientation' | 'ampm' |
|
|
62
|
+
type UseDateTimePickerDefaultizedProps<TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TView>> = LocalizedComponent<DefaultizedProps<Props, 'views' | 'openTo' | 'orientation' | 'ampm' | ValidateDateTimePropsToDefault>>;
|
|
63
63
|
export declare function useDateTimePickerDefaultizedProps<TView extends DateOrTimeViewWithMeridiem, Props extends BaseDateTimePickerProps<TView>>(props: Props, name: string): UseDateTimePickerDefaultizedProps<TView, Props>;
|
|
64
64
|
export {};
|
|
@@ -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,7 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PickersLayoutProps } from '../PickersLayout';
|
|
3
3
|
import { DateOrTimeViewWithMeridiem } from '../internals/models/common';
|
|
4
|
-
|
|
4
|
+
import { PickerValidValue } from '../internals/models';
|
|
5
|
+
type DesktopDateTimePickerLayoutComponent = (<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem>(props: PickersLayoutProps<TValue, TView> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
|
|
5
6
|
propTypes?: any;
|
|
6
7
|
};
|
|
7
8
|
/**
|