@mui/x-date-pickers 6.7.0 → 6.9.0
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/AdapterDayjs/AdapterDayjs.d.ts +5 -1
- package/AdapterDayjs/AdapterDayjs.js +42 -15
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -0
- package/AdapterLuxon/AdapterLuxon.js +12 -5
- package/AdapterMoment/AdapterMoment.js +18 -9
- package/CHANGELOG.md +145 -5541
- package/DateCalendar/DateCalendar.js +49 -21
- package/DateCalendar/DateCalendar.types.d.ts +8 -3
- package/DateCalendar/DayCalendar.d.ts +3 -1
- package/DateCalendar/DayCalendar.js +24 -17
- package/DateCalendar/PickersCalendarHeader.js +6 -3
- package/DateCalendar/useCalendarState.d.ts +5 -3
- package/DateCalendar/useCalendarState.js +41 -17
- package/DateCalendar/useIsDateDisabled.d.ts +1 -1
- package/DateCalendar/useIsDateDisabled.js +5 -3
- package/DateField/DateField.js +9 -1
- package/DatePicker/DatePicker.js +9 -1
- package/DateTimeField/DateTimeField.js +9 -1
- package/DateTimePicker/DateTimePicker.js +9 -1
- package/DesktopDatePicker/DesktopDatePicker.js +9 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
- package/DesktopTimePicker/DesktopTimePicker.js +8 -0
- package/DigitalClock/DigitalClock.js +28 -15
- package/MobileDatePicker/MobileDatePicker.js +9 -1
- package/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/MobileTimePicker/MobileTimePicker.js +8 -0
- package/MonthCalendar/MonthCalendar.js +57 -24
- package/MonthCalendar/MonthCalendar.types.d.ts +8 -2
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/PickersLayout/PickersLayout.js +1 -0
- package/PickersLayout/usePickerLayout.js +4 -3
- package/PickersShortcuts/PickersShortcuts.d.ts +12 -2
- package/PickersShortcuts/PickersShortcuts.js +10 -2
- package/PickersShortcuts/index.d.ts +1 -1
- package/StaticDatePicker/StaticDatePicker.js +9 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/StaticTimePicker/StaticTimePicker.js +8 -0
- package/TimeClock/TimeClock.js +27 -15
- package/TimeField/TimeField.js +9 -1
- package/TimePicker/TimePicker.js +8 -0
- package/YearCalendar/YearCalendar.js +55 -22
- package/YearCalendar/YearCalendar.types.d.ts +8 -2
- package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +1 -1
- package/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
- package/dateViewRenderers/dateViewRenderers.d.ts +1 -1
- package/dateViewRenderers/dateViewRenderers.js +4 -2
- package/index.js +1 -1
- package/internals/hooks/date-helpers-hooks.d.ts +4 -2
- package/internals/hooks/date-helpers-hooks.js +8 -6
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
- package/internals/hooks/useField/useField.d.ts +3 -1
- package/internals/hooks/useField/useField.js +23 -7
- package/internals/hooks/useField/useField.types.d.ts +6 -4
- package/internals/hooks/useField/useField.utils.d.ts +13 -11
- package/internals/hooks/useField/useField.utils.js +55 -43
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +3 -2
- package/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
- package/internals/hooks/useField/useFieldState.d.ts +1 -0
- package/internals/hooks/useField/useFieldState.js +33 -23
- package/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
- package/internals/hooks/usePicker/usePickerValue.js +45 -9
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +22 -6
- package/internals/hooks/usePicker/usePickerViews.d.ts +2 -1
- package/internals/hooks/usePicker/usePickerViews.js +7 -2
- package/internals/hooks/useUtils.d.ts +3 -2
- package/internals/hooks/useUtils.js +5 -2
- package/internals/hooks/useValueWithTimezone.d.ts +33 -0
- package/internals/hooks/useValueWithTimezone.js +69 -0
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/models/props/clock.d.ts +2 -2
- package/internals/utils/date-utils.d.ts +4 -4
- package/internals/utils/date-utils.js +4 -12
- package/internals/utils/fields.js +1 -1
- package/internals/utils/getDefaultReferenceDate.d.ts +12 -3
- package/internals/utils/getDefaultReferenceDate.js +4 -4
- package/internals/utils/validation/extractValidationProps.d.ts +1 -1
- package/internals/utils/validation/validateDate.d.ts +3 -2
- package/internals/utils/validation/validateDate.js +14 -6
- package/internals/utils/validation/validateTime.d.ts +3 -2
- package/internals/utils/validation/validateTime.js +8 -8
- package/internals/utils/valueManagers.js +2 -1
- package/legacy/AdapterDayjs/AdapterDayjs.js +45 -16
- package/legacy/AdapterLuxon/AdapterLuxon.js +13 -6
- package/legacy/AdapterMoment/AdapterMoment.js +18 -9
- package/legacy/DateCalendar/DateCalendar.js +47 -24
- package/legacy/DateCalendar/DayCalendar.js +24 -17
- package/legacy/DateCalendar/PickersCalendarHeader.js +6 -3
- package/legacy/DateCalendar/useCalendarState.js +40 -17
- package/legacy/DateCalendar/useIsDateDisabled.js +5 -3
- package/legacy/DateField/DateField.js +9 -1
- package/legacy/DatePicker/DatePicker.js +9 -1
- package/legacy/DateTimeField/DateTimeField.js +9 -1
- package/legacy/DateTimePicker/DateTimePicker.js +9 -1
- package/legacy/DesktopDatePicker/DesktopDatePicker.js +9 -1
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
- package/legacy/DesktopTimePicker/DesktopTimePicker.js +8 -0
- package/legacy/DigitalClock/DigitalClock.js +26 -16
- package/legacy/MobileDatePicker/MobileDatePicker.js +9 -1
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/legacy/MobileTimePicker/MobileTimePicker.js +8 -0
- package/legacy/MonthCalendar/MonthCalendar.js +61 -32
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +27 -16
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/legacy/PickersLayout/PickersLayout.js +1 -0
- package/legacy/PickersLayout/usePickerLayout.js +3 -2
- package/legacy/PickersShortcuts/PickersShortcuts.js +10 -2
- package/legacy/StaticDatePicker/StaticDatePicker.js +9 -1
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/legacy/StaticTimePicker/StaticTimePicker.js +8 -0
- package/legacy/TimeClock/TimeClock.js +25 -18
- package/legacy/TimeField/TimeField.js +9 -1
- package/legacy/TimePicker/TimePicker.js +8 -0
- package/legacy/YearCalendar/YearCalendar.js +59 -30
- package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
- package/legacy/dateViewRenderers/dateViewRenderers.js +4 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/hooks/date-helpers-hooks.js +8 -6
- package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
- package/legacy/internals/hooks/useField/useField.js +22 -6
- package/legacy/internals/hooks/useField/useField.utils.js +56 -44
- package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
- package/legacy/internals/hooks/useField/useFieldState.js +42 -33
- package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
- package/legacy/internals/hooks/usePicker/usePickerValue.js +46 -9
- package/legacy/internals/hooks/usePicker/usePickerViews.js +7 -2
- package/legacy/internals/hooks/useUtils.js +5 -2
- package/legacy/internals/hooks/useValueWithTimezone.js +81 -0
- package/legacy/internals/index.js +1 -0
- package/legacy/internals/utils/date-utils.js +5 -13
- package/legacy/internals/utils/fields.js +1 -1
- package/legacy/internals/utils/getDefaultReferenceDate.js +4 -4
- package/legacy/internals/utils/validation/validateDate.js +12 -6
- package/legacy/internals/utils/validation/validateTime.js +8 -8
- package/legacy/internals/utils/valueManagers.js +3 -0
- package/legacy/locales/csCZ.js +2 -2
- package/legacy/locales/elGR.js +93 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/tests/describeAdapters/describeAdapters.js +3 -1
- package/legacy/tests/describeGregorianAdapter/testCalculations.js +69 -27
- package/legacy/tests/describeJalaliAdapter/testCalculations.js +21 -0
- package/legacy/timeViewRenderers/timeViewRenderers.js +12 -6
- package/locales/csCZ.js +2 -2
- package/locales/elGR.d.ts +53 -0
- package/locales/elGR.js +57 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/models/adapters.d.ts +2 -2
- package/models/timezone.d.ts +10 -0
- package/modern/AdapterDayjs/AdapterDayjs.js +41 -15
- package/modern/AdapterLuxon/AdapterLuxon.js +12 -4
- package/modern/AdapterMoment/AdapterMoment.js +18 -9
- package/modern/DateCalendar/DateCalendar.js +49 -21
- package/modern/DateCalendar/DayCalendar.js +24 -17
- package/modern/DateCalendar/PickersCalendarHeader.js +6 -3
- package/modern/DateCalendar/useCalendarState.js +41 -16
- package/modern/DateCalendar/useIsDateDisabled.js +5 -3
- package/modern/DateField/DateField.js +9 -1
- package/modern/DatePicker/DatePicker.js +9 -1
- package/modern/DateTimeField/DateTimeField.js +9 -1
- package/modern/DateTimePicker/DateTimePicker.js +9 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
- package/modern/DesktopTimePicker/DesktopTimePicker.js +8 -0
- package/modern/DigitalClock/DigitalClock.js +28 -15
- package/modern/MobileDatePicker/MobileDatePicker.js +9 -1
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/modern/MobileTimePicker/MobileTimePicker.js +8 -0
- package/modern/MonthCalendar/MonthCalendar.js +57 -24
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/modern/PickersLayout/PickersLayout.js +1 -0
- package/modern/PickersLayout/usePickerLayout.js +4 -3
- package/modern/PickersShortcuts/PickersShortcuts.js +10 -2
- package/modern/StaticDatePicker/StaticDatePicker.js +9 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/modern/StaticTimePicker/StaticTimePicker.js +8 -0
- package/modern/TimeClock/TimeClock.js +27 -15
- package/modern/TimeField/TimeField.js +9 -1
- package/modern/TimePicker/TimePicker.js +8 -0
- package/modern/YearCalendar/YearCalendar.js +55 -22
- package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
- package/modern/dateViewRenderers/dateViewRenderers.js +4 -2
- package/modern/index.js +1 -1
- package/modern/internals/hooks/date-helpers-hooks.js +8 -6
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
- package/modern/internals/hooks/useField/useField.js +23 -7
- package/modern/internals/hooks/useField/useField.utils.js +55 -43
- package/modern/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
- package/modern/internals/hooks/useField/useFieldState.js +33 -22
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
- package/modern/internals/hooks/usePicker/usePickerValue.js +45 -9
- package/modern/internals/hooks/usePicker/usePickerViews.js +7 -2
- package/modern/internals/hooks/useUtils.js +5 -2
- package/modern/internals/hooks/useValueWithTimezone.js +68 -0
- package/modern/internals/index.js +1 -0
- package/modern/internals/utils/date-utils.js +4 -12
- package/modern/internals/utils/fields.js +1 -1
- package/modern/internals/utils/getDefaultReferenceDate.js +4 -4
- package/modern/internals/utils/validation/validateDate.js +14 -6
- package/modern/internals/utils/validation/validateTime.js +8 -8
- package/modern/internals/utils/valueManagers.js +2 -1
- package/modern/locales/csCZ.js +2 -2
- package/modern/locales/elGR.js +57 -0
- package/modern/locales/index.js +1 -0
- package/modern/tests/describeAdapters/describeAdapters.js +3 -1
- package/modern/tests/describeGregorianAdapter/testCalculations.js +69 -27
- package/modern/tests/describeJalaliAdapter/testCalculations.js +21 -0
- package/modern/timeViewRenderers/timeViewRenderers.js +12 -6
- package/node/AdapterDayjs/AdapterDayjs.js +41 -15
- package/node/AdapterLuxon/AdapterLuxon.js +12 -4
- package/node/AdapterMoment/AdapterMoment.js +18 -9
- package/node/DateCalendar/DateCalendar.js +48 -20
- package/node/DateCalendar/DayCalendar.js +24 -17
- package/node/DateCalendar/PickersCalendarHeader.js +6 -3
- package/node/DateCalendar/useCalendarState.js +41 -16
- package/node/DateCalendar/useIsDateDisabled.js +5 -3
- package/node/DateField/DateField.js +9 -1
- package/node/DatePicker/DatePicker.js +9 -1
- package/node/DateTimeField/DateTimeField.js +9 -1
- package/node/DateTimePicker/DateTimePicker.js +9 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +9 -1
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
- package/node/DesktopTimePicker/DesktopTimePicker.js +8 -0
- package/node/DigitalClock/DigitalClock.js +28 -15
- package/node/MobileDatePicker/MobileDatePicker.js +9 -1
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/node/MobileTimePicker/MobileTimePicker.js +8 -0
- package/node/MonthCalendar/MonthCalendar.js +57 -24
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/node/PickersLayout/PickersLayout.js +1 -0
- package/node/PickersLayout/usePickerLayout.js +4 -3
- package/node/PickersShortcuts/PickersShortcuts.js +10 -2
- package/node/StaticDatePicker/StaticDatePicker.js +9 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/node/StaticTimePicker/StaticTimePicker.js +8 -0
- package/node/TimeClock/TimeClock.js +26 -14
- package/node/TimeField/TimeField.js +9 -1
- package/node/TimePicker/TimePicker.js +8 -0
- package/node/YearCalendar/YearCalendar.js +55 -22
- package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
- package/node/dateViewRenderers/dateViewRenderers.js +4 -2
- package/node/index.js +1 -1
- package/node/internals/hooks/date-helpers-hooks.js +8 -6
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
- package/node/internals/hooks/useField/useField.js +23 -7
- package/node/internals/hooks/useField/useField.utils.js +55 -43
- package/node/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
- package/node/internals/hooks/useField/useFieldState.js +33 -22
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
- package/node/internals/hooks/usePicker/usePickerValue.js +44 -9
- package/node/internals/hooks/usePicker/usePickerViews.js +7 -2
- package/node/internals/hooks/useUtils.js +5 -2
- package/node/internals/hooks/useValueWithTimezone.js +79 -0
- package/node/internals/index.js +7 -0
- package/node/internals/utils/date-utils.js +5 -14
- package/node/internals/utils/fields.js +1 -1
- package/node/internals/utils/getDefaultReferenceDate.js +5 -4
- package/node/internals/utils/validation/validateDate.js +14 -6
- package/node/internals/utils/validation/validateTime.js +8 -8
- package/node/internals/utils/valueManagers.js +2 -1
- package/node/locales/csCZ.js +2 -2
- package/node/locales/elGR.js +64 -0
- package/node/locales/index.js +11 -0
- package/node/tests/describeAdapters/describeAdapters.js +3 -1
- package/node/tests/describeGregorianAdapter/testCalculations.js +69 -27
- package/node/tests/describeJalaliAdapter/testCalculations.js +21 -0
- package/node/timeViewRenderers/timeViewRenderers.js +12 -6
- package/package.json +2 -2
- package/tests/describeAdapters/describeAdapters.js +3 -1
- package/tests/describeGregorianAdapter/testCalculations.js +69 -27
- package/tests/describeJalaliAdapter/testCalculations.js +21 -0
- package/timeViewRenderers/timeViewRenderers.d.ts +3 -3
- package/timeViewRenderers/timeViewRenderers.js +12 -6
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
3
|
+
import useControlled from '@mui/utils/useControlled';
|
|
4
|
+
import { useUtils } from './useUtils';
|
|
5
|
+
/**
|
|
6
|
+
* Hooks making sure that:
|
|
7
|
+
* - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined
|
|
8
|
+
* - The value rendered is always the one from `props.timezone` if defined
|
|
9
|
+
*/
|
|
10
|
+
export const useValueWithTimezone = ({
|
|
11
|
+
timezone: timezoneProp,
|
|
12
|
+
value: valueProp,
|
|
13
|
+
defaultValue,
|
|
14
|
+
onChange,
|
|
15
|
+
valueManager
|
|
16
|
+
}) => {
|
|
17
|
+
const utils = useUtils();
|
|
18
|
+
const firstDefaultValue = React.useRef(defaultValue);
|
|
19
|
+
const inputValue = valueProp ?? firstDefaultValue.current ?? valueManager.emptyValue;
|
|
20
|
+
const inputTimezone = React.useMemo(() => valueManager.getTimezone(utils, inputValue), [utils, valueManager, inputValue]);
|
|
21
|
+
const setInputTimezone = useEventCallback(newValue => {
|
|
22
|
+
if (inputTimezone == null) {
|
|
23
|
+
return newValue;
|
|
24
|
+
}
|
|
25
|
+
return valueManager.setTimezone(utils, inputTimezone, newValue);
|
|
26
|
+
});
|
|
27
|
+
const timezoneToRender = timezoneProp ?? inputTimezone ?? 'default';
|
|
28
|
+
const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(utils, timezoneToRender, inputValue), [valueManager, utils, timezoneToRender, inputValue]);
|
|
29
|
+
const handleValueChange = useEventCallback((newValue, ...otherParams) => {
|
|
30
|
+
const newValueWithInputTimezone = setInputTimezone(newValue);
|
|
31
|
+
onChange?.(newValueWithInputTimezone, ...otherParams);
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
value: valueWithTimezoneToRender,
|
|
35
|
+
handleValueChange,
|
|
36
|
+
timezone: timezoneToRender
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Wrapper around `useControlled` and `useValueWithTimezone`
|
|
42
|
+
*/
|
|
43
|
+
export const useControlledValueWithTimezone = ({
|
|
44
|
+
name,
|
|
45
|
+
timezone: timezoneProp,
|
|
46
|
+
value: valueProp,
|
|
47
|
+
defaultValue,
|
|
48
|
+
onChange: onChangeProp,
|
|
49
|
+
valueManager
|
|
50
|
+
}) => {
|
|
51
|
+
const [valueWithInputTimezone, setValue] = useControlled({
|
|
52
|
+
name,
|
|
53
|
+
state: 'value',
|
|
54
|
+
controlled: valueProp,
|
|
55
|
+
default: defaultValue ?? valueManager.emptyValue
|
|
56
|
+
});
|
|
57
|
+
const onChange = useEventCallback((newValue, ...otherParams) => {
|
|
58
|
+
setValue(newValue);
|
|
59
|
+
onChangeProp?.(newValue, ...otherParams);
|
|
60
|
+
});
|
|
61
|
+
return useValueWithTimezone({
|
|
62
|
+
timezone: timezoneProp,
|
|
63
|
+
value: valueWithInputTimezone,
|
|
64
|
+
defaultValue: undefined,
|
|
65
|
+
onChange,
|
|
66
|
+
valueManager
|
|
67
|
+
});
|
|
68
|
+
};
|
|
@@ -9,6 +9,7 @@ export { pickersArrowSwitcherClasses } from './components/PickersArrowSwitcher/p
|
|
|
9
9
|
export { pickersPopperClasses } from './components/pickersPopperClasses';
|
|
10
10
|
export { PickersToolbarButton } from './components/PickersToolbarButton';
|
|
11
11
|
export { DAY_MARGIN, DIALOG_WIDTH } from './constants/dimensions';
|
|
12
|
+
export { useControlledValueWithTimezone } from './hooks/useValueWithTimezone';
|
|
12
13
|
export { useField, createDateStrForInputFromSections, addPositionPropertiesToSections } from './hooks/useField';
|
|
13
14
|
export { usePicker } from './hooks/usePicker';
|
|
14
15
|
export { useStaticPicker } from './hooks/useStaticPicker';
|
|
@@ -6,9 +6,10 @@ export const findClosestEnabledDate = ({
|
|
|
6
6
|
maxDate,
|
|
7
7
|
minDate,
|
|
8
8
|
isDateDisabled,
|
|
9
|
-
utils
|
|
9
|
+
utils,
|
|
10
|
+
timezone
|
|
10
11
|
}) => {
|
|
11
|
-
const today = utils.startOfDay(utils.
|
|
12
|
+
const today = utils.startOfDay(utils.dateWithTimezone(undefined, timezone));
|
|
12
13
|
if (disablePast && utils.isBefore(minDate, today)) {
|
|
13
14
|
minDate = today;
|
|
14
15
|
}
|
|
@@ -49,15 +50,6 @@ export const findClosestEnabledDate = ({
|
|
|
49
50
|
}
|
|
50
51
|
return null;
|
|
51
52
|
};
|
|
52
|
-
export const clamp = (utils, value, minDate, maxDate) => {
|
|
53
|
-
if (utils.isBefore(value, minDate)) {
|
|
54
|
-
return minDate;
|
|
55
|
-
}
|
|
56
|
-
if (utils.isAfter(value, maxDate)) {
|
|
57
|
-
return maxDate;
|
|
58
|
-
}
|
|
59
|
-
return value;
|
|
60
|
-
};
|
|
61
53
|
export const replaceInvalidDateByNull = (utils, value) => value == null || !utils.isValid(value) ? null : value;
|
|
62
54
|
export const applyDefaultDate = (utils, value, defaultValue) => {
|
|
63
55
|
if (value == null || !utils.isValid(value)) {
|
|
@@ -87,7 +79,7 @@ export const mergeDateAndTime = (utils, dateParam, timeParam) => {
|
|
|
87
79
|
mergedDate = utils.setSeconds(mergedDate, utils.getSeconds(timeParam));
|
|
88
80
|
return mergedDate;
|
|
89
81
|
};
|
|
90
|
-
export const getTodayDate = (utils, valueType) => valueType === 'date' ? utils.startOfDay(utils.
|
|
82
|
+
export const getTodayDate = (utils, timezone, valueType) => valueType === 'date' ? utils.startOfDay(utils.dateWithTimezone(undefined, timezone)) : utils.dateWithTimezone(undefined, timezone);
|
|
91
83
|
const dateViews = ['year', 'month', 'day'];
|
|
92
84
|
export const isDatePickerView = view => dateViews.includes(view);
|
|
93
85
|
export const resolveDateFormat = (utils, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { DATE_TIME_VALIDATION_PROP_NAMES, DATE_VALIDATION_PROP_NAMES, TIME_VALIDATION_PROP_NAMES } from './validation/extractValidationProps';
|
|
3
|
-
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'readOnly', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef'];
|
|
3
|
+
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'readOnly', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef'];
|
|
4
4
|
export const splitFieldInternalAndForwardedProps = (props, valueType) => {
|
|
5
5
|
const forwardedProps = _extends({}, props);
|
|
6
6
|
const internalProps = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createIsAfterIgnoreDatePart } from './time-utils';
|
|
2
2
|
import { mergeDateAndTime, getTodayDate } from './date-utils';
|
|
3
|
-
const SECTION_TYPE_GRANULARITY = {
|
|
3
|
+
export const SECTION_TYPE_GRANULARITY = {
|
|
4
4
|
year: 1,
|
|
5
5
|
month: 2,
|
|
6
6
|
day: 3,
|
|
@@ -37,10 +37,10 @@ const roundDate = (utils, granularity, date) => {
|
|
|
37
37
|
export const getDefaultReferenceDate = ({
|
|
38
38
|
props,
|
|
39
39
|
utils,
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
granularity,
|
|
41
|
+
timezone
|
|
42
42
|
}) => {
|
|
43
|
-
let referenceDate = roundDate(utils, granularity, getTodayDate(utils,
|
|
43
|
+
let referenceDate = roundDate(utils, granularity, getTodayDate(utils, timezone));
|
|
44
44
|
if (props.minDate != null && utils.isAfterDay(props.minDate, referenceDate)) {
|
|
45
45
|
referenceDate = roundDate(utils, granularity, props.minDate);
|
|
46
46
|
}
|
|
@@ -7,21 +7,29 @@ export const validateDate = ({
|
|
|
7
7
|
if (value === null) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
10
|
-
const
|
|
10
|
+
const {
|
|
11
|
+
shouldDisableDate,
|
|
12
|
+
shouldDisableMonth,
|
|
13
|
+
shouldDisableYear,
|
|
14
|
+
disablePast,
|
|
15
|
+
disableFuture,
|
|
16
|
+
timezone
|
|
17
|
+
} = props;
|
|
18
|
+
const now = adapter.utils.dateWithTimezone(undefined, timezone);
|
|
11
19
|
const minDate = applyDefaultDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);
|
|
12
20
|
const maxDate = applyDefaultDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);
|
|
13
21
|
switch (true) {
|
|
14
22
|
case !adapter.utils.isValid(value):
|
|
15
23
|
return 'invalidDate';
|
|
16
|
-
case Boolean(
|
|
24
|
+
case Boolean(shouldDisableDate && shouldDisableDate(value)):
|
|
17
25
|
return 'shouldDisableDate';
|
|
18
|
-
case Boolean(
|
|
26
|
+
case Boolean(shouldDisableMonth && shouldDisableMonth(value)):
|
|
19
27
|
return 'shouldDisableMonth';
|
|
20
|
-
case Boolean(
|
|
28
|
+
case Boolean(shouldDisableYear && shouldDisableYear(value)):
|
|
21
29
|
return 'shouldDisableYear';
|
|
22
|
-
case Boolean(
|
|
30
|
+
case Boolean(disableFuture && adapter.utils.isAfterDay(value, now)):
|
|
23
31
|
return 'disableFuture';
|
|
24
|
-
case Boolean(
|
|
32
|
+
case Boolean(disablePast && adapter.utils.isBeforeDay(value, now)):
|
|
25
33
|
return 'disablePast';
|
|
26
34
|
case Boolean(minDate && adapter.utils.isBeforeDay(value, minDate)):
|
|
27
35
|
return 'minDate';
|
|
@@ -4,6 +4,9 @@ export const validateTime = ({
|
|
|
4
4
|
value,
|
|
5
5
|
props
|
|
6
6
|
}) => {
|
|
7
|
+
if (value === null) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
7
10
|
const {
|
|
8
11
|
minTime,
|
|
9
12
|
maxTime,
|
|
@@ -12,14 +15,11 @@ export const validateTime = ({
|
|
|
12
15
|
shouldDisableTime,
|
|
13
16
|
disableIgnoringDatePartForTimeValidation = false,
|
|
14
17
|
disablePast,
|
|
15
|
-
disableFuture
|
|
18
|
+
disableFuture,
|
|
19
|
+
timezone
|
|
16
20
|
} = props;
|
|
17
|
-
const now = adapter.utils.
|
|
18
|
-
const date = adapter.utils.date(value);
|
|
21
|
+
const now = adapter.utils.dateWithTimezone(undefined, timezone);
|
|
19
22
|
const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter.utils);
|
|
20
|
-
if (value === null) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
23
|
switch (true) {
|
|
24
24
|
case !adapter.utils.isValid(value):
|
|
25
25
|
return 'invalidDate';
|
|
@@ -27,9 +27,9 @@ export const validateTime = ({
|
|
|
27
27
|
return 'minTime';
|
|
28
28
|
case Boolean(maxTime && isAfter(value, maxTime)):
|
|
29
29
|
return 'maxTime';
|
|
30
|
-
case Boolean(disableFuture && adapter.utils.isAfter(
|
|
30
|
+
case Boolean(disableFuture && adapter.utils.isAfter(value, now)):
|
|
31
31
|
return 'disableFuture';
|
|
32
|
-
case Boolean(disablePast && adapter.utils.isBefore(
|
|
32
|
+
case Boolean(disablePast && adapter.utils.isBefore(value, now)):
|
|
33
33
|
return 'disablePast';
|
|
34
34
|
case Boolean(shouldDisableTime && shouldDisableTime(value, 'hours')):
|
|
35
35
|
return 'shouldDisableTime-hours';
|
|
@@ -25,7 +25,8 @@ export const singleItemValueManager = {
|
|
|
25
25
|
isSameError: (a, b) => a === b,
|
|
26
26
|
hasError: error => error != null,
|
|
27
27
|
defaultErrorState: null,
|
|
28
|
-
getTimezone: (utils, value) => value == null ? null : utils.getTimezone(value)
|
|
28
|
+
getTimezone: (utils, value) => value == null ? null : utils.getTimezone(value),
|
|
29
|
+
setTimezone: (utils, timezone, value) => value == null ? null : utils.setTimezone(value, timezone)
|
|
29
30
|
};
|
|
30
31
|
export const singleItemFieldValueManager = {
|
|
31
32
|
updateReferenceValue: (utils, value, prevReferenceValue) => value == null || !utils.isValid(value) ? prevReferenceValue : value,
|
package/modern/locales/csCZ.js
CHANGED
|
@@ -8,8 +8,8 @@ const timeViews = {
|
|
|
8
8
|
};
|
|
9
9
|
const csCZPickers = {
|
|
10
10
|
// Calendar navigation
|
|
11
|
-
previousMonth: '
|
|
12
|
-
nextMonth: '
|
|
11
|
+
previousMonth: 'Předchozí měsíc',
|
|
12
|
+
nextMonth: 'Další měsíc',
|
|
13
13
|
// View navigation
|
|
14
14
|
openPreviousView: 'otevřít předchozí zobrazení',
|
|
15
15
|
openNextView: 'otevřít další zobrazení',
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getPickersLocalization } from './utils/getPickersLocalization';
|
|
2
|
+
const views = {
|
|
3
|
+
hours: 'ώρες',
|
|
4
|
+
minutes: 'λεπτά',
|
|
5
|
+
seconds: 'δευτερόλεπτα',
|
|
6
|
+
meridiem: 'μεσημβρία'
|
|
7
|
+
};
|
|
8
|
+
const elGRPickers = {
|
|
9
|
+
// Calendar navigation
|
|
10
|
+
previousMonth: 'Προηγούμενος μήνας',
|
|
11
|
+
nextMonth: 'Επόμενος μήνας',
|
|
12
|
+
// View navigation
|
|
13
|
+
openPreviousView: 'ανοίγμα προηγούμενης προβολή',
|
|
14
|
+
openNextView: 'ανοίγμα επόμενης προβολή',
|
|
15
|
+
calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'η προβολή έτους είναι ανοιχτή, μεταβείτε στην προβολή ημερολογίου' : 'η προβολή ημερολογίου είναι ανοιχτή, μεταβείτε στην προβολή έτους',
|
|
16
|
+
// DateRange placeholders
|
|
17
|
+
start: 'Αρχή',
|
|
18
|
+
end: 'Τέλος',
|
|
19
|
+
// Action bar
|
|
20
|
+
cancelButtonLabel: 'Άκυρο',
|
|
21
|
+
clearButtonLabel: 'Καθαρισμός',
|
|
22
|
+
okButtonLabel: 'OK',
|
|
23
|
+
todayButtonLabel: 'Σήμερα',
|
|
24
|
+
// Toolbar titles
|
|
25
|
+
datePickerToolbarTitle: 'Επιλέξτε ημερομηνία',
|
|
26
|
+
dateTimePickerToolbarTitle: 'Επιλέξτε ημερομηνία και ώρα',
|
|
27
|
+
timePickerToolbarTitle: 'Επιλέξτε ώρα',
|
|
28
|
+
dateRangePickerToolbarTitle: 'Επιλέξτε εύρος ημερομηνιών',
|
|
29
|
+
// Clock labels
|
|
30
|
+
clockLabelText: (view, time, adapter) => `Επιλέξτε ${views[view]}. ${time === null ? 'Δεν έχει επιλεγεί ώρα' : `Η επιλεγμένη ώρα είναι ${adapter.format(time, 'fullTime')}`}`,
|
|
31
|
+
hoursClockNumberText: hours => `${hours} ώρες`,
|
|
32
|
+
minutesClockNumberText: minutes => `${minutes} λεπτά`,
|
|
33
|
+
secondsClockNumberText: seconds => `${seconds} δευτερόλεπτα`,
|
|
34
|
+
// Digital clock labels
|
|
35
|
+
selectViewText: view => `Επιλέξτε ${views[view]}`,
|
|
36
|
+
// Calendar labels
|
|
37
|
+
calendarWeekNumberHeaderLabel: 'Αριθμός εβδομάδας',
|
|
38
|
+
calendarWeekNumberHeaderText: '#',
|
|
39
|
+
calendarWeekNumberAriaLabelText: weekNumber => `Εβδομάδα ${weekNumber}`,
|
|
40
|
+
calendarWeekNumberText: weekNumber => `${weekNumber}`,
|
|
41
|
+
// Open picker labels
|
|
42
|
+
openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Επιλέξτε ημερομηνία, η επιλεγμένη ημερομηνία είναι ${utils.format(value, 'fullDate')}` : 'Επιλέξτε ημερομηνία',
|
|
43
|
+
openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Επιλέξτε ώρα, η επιλεγμένη ώρα είναι ${utils.format(value, 'fullTime')}` : 'Επιλέξτε ώρα',
|
|
44
|
+
// Table labels
|
|
45
|
+
timeTableLabel: 'επιλέξτε ώρα',
|
|
46
|
+
dateTableLabel: 'επιλέξτε ημερομηνία',
|
|
47
|
+
// Field section placeholders
|
|
48
|
+
fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
|
|
49
|
+
fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
|
|
50
|
+
fieldDayPlaceholder: () => 'DD',
|
|
51
|
+
fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
|
|
52
|
+
fieldHoursPlaceholder: () => 'hh',
|
|
53
|
+
fieldMinutesPlaceholder: () => 'mm',
|
|
54
|
+
fieldSecondsPlaceholder: () => 'ss',
|
|
55
|
+
fieldMeridiemPlaceholder: () => 'aa'
|
|
56
|
+
};
|
|
57
|
+
export const elGR = getPickersLocalization(elGRPickers);
|
package/modern/locales/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import moment from 'moment';
|
|
3
|
+
import momentTZ from 'moment-timezone';
|
|
3
4
|
import createDescribe from '@mui/monorepo/test/utils/createDescribe';
|
|
4
5
|
import { buildFieldInteractions, createPickerRenderer } from 'test/utils/pickers-utils';
|
|
5
6
|
const ADAPTERS = ['dayjs', 'date-fns', 'luxon', 'moment'];
|
|
@@ -13,7 +14,8 @@ function innerDescribeAdapters(title, FieldComponent, testRunner) {
|
|
|
13
14
|
const pickerRendererResponse = createPickerRenderer({
|
|
14
15
|
adapterName,
|
|
15
16
|
clock: 'fake',
|
|
16
|
-
clockConfig: new Date(2022, 5, 15)
|
|
17
|
+
clockConfig: new Date(2022, 5, 15),
|
|
18
|
+
instance: adapterName === 'moment' ? momentTZ : undefined
|
|
17
19
|
});
|
|
18
20
|
const fieldInteractions = buildFieldInteractions({
|
|
19
21
|
clock: pickerRendererResponse.clock,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
+
import { getDateOffset } from 'test/utils/pickers-utils';
|
|
2
3
|
import { TEST_DATE_ISO_STRING, TEST_DATE_LOCALE_STRING } from './describeGregorianAdapter.utils';
|
|
3
4
|
export const testCalculations = ({
|
|
4
5
|
adapter,
|
|
5
6
|
adapterTZ,
|
|
6
7
|
adapterFr,
|
|
7
|
-
setDefaultTimezone
|
|
8
|
+
setDefaultTimezone,
|
|
9
|
+
getLocaleFromDate
|
|
8
10
|
}) => {
|
|
9
11
|
const testDateIso = adapter.date(TEST_DATE_ISO_STRING);
|
|
10
12
|
const testDateLocale = adapter.date(TEST_DATE_LOCALE_STRING);
|
|
@@ -113,25 +115,27 @@ export const testCalculations = ({
|
|
|
113
115
|
testTimezone('default', 'America/Chicago');
|
|
114
116
|
setDefaultTimezone(undefined);
|
|
115
117
|
});
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
test('Europe/Paris');
|
|
118
|
+
it('Method: setTimezone', () => {
|
|
119
|
+
if (adapter.isTimezoneCompatible) {
|
|
120
|
+
const test = timezone => {
|
|
121
|
+
setDefaultTimezone(timezone);
|
|
122
|
+
const dateWithLocaleTimezone = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'system');
|
|
123
|
+
const dateWithDefaultTimezone = adapter.setTimezone(dateWithLocaleTimezone, 'default');
|
|
124
|
+
expect(adapter.getTimezone(dateWithDefaultTimezone)).to.equal(timezone);
|
|
125
|
+
};
|
|
126
|
+
test('America/New_York');
|
|
127
|
+
test('Europe/Paris');
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
// Reset to the default timezone
|
|
130
|
+
setDefaultTimezone(undefined);
|
|
131
|
+
} else {
|
|
132
|
+
const systemDate = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'system');
|
|
133
|
+
expect(adapter.setTimezone(systemDate, 'default')).toEqualDateTime(systemDate);
|
|
134
|
+
expect(adapter.setTimezone(systemDate, 'system')).toEqualDateTime(systemDate);
|
|
135
|
+
const defaultDate = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'default');
|
|
136
|
+
expect(adapter.setTimezone(systemDate, 'default')).toEqualDateTime(defaultDate);
|
|
137
|
+
expect(adapter.setTimezone(systemDate, 'system')).toEqualDateTime(defaultDate);
|
|
138
|
+
}
|
|
135
139
|
});
|
|
136
140
|
it('Method: toJsDate', () => {
|
|
137
141
|
expect(adapter.toJsDate(testDateIso)).to.be.instanceOf(Date);
|
|
@@ -145,9 +149,6 @@ export const testCalculations = ({
|
|
|
145
149
|
if (adapter.lib === 'date-fns') {
|
|
146
150
|
// date-fns never suppress useless milliseconds in the end
|
|
147
151
|
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING.replace('.000Z', 'Z'));
|
|
148
|
-
} else if (adapter.lib === 'luxon') {
|
|
149
|
-
// luxon does not shorthand +00:00 to Z, which is also valid ISO string
|
|
150
|
-
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING.replace('Z', '+00:00'));
|
|
151
152
|
} else {
|
|
152
153
|
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING);
|
|
153
154
|
}
|
|
@@ -548,6 +549,9 @@ export const testCalculations = ({
|
|
|
548
549
|
it('Method: getSeconds', () => {
|
|
549
550
|
expect(adapter.getSeconds(testDateIso)).to.equal(0);
|
|
550
551
|
});
|
|
552
|
+
it('Method: getMilliseconds', () => {
|
|
553
|
+
expect(adapter.getMilliseconds(testDateIso)).to.equal(0);
|
|
554
|
+
});
|
|
551
555
|
it('Method: setYear', () => {
|
|
552
556
|
expect(adapter.setYear(testDateIso, 2011)).toEqualDateTime('2011-10-30T11:44:00.000Z');
|
|
553
557
|
});
|
|
@@ -566,6 +570,9 @@ export const testCalculations = ({
|
|
|
566
570
|
it('Method: setSeconds', () => {
|
|
567
571
|
expect(adapter.setSeconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:11.000Z');
|
|
568
572
|
});
|
|
573
|
+
it('Method: setMilliseconds', () => {
|
|
574
|
+
expect(adapter.setMilliseconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:00.011Z');
|
|
575
|
+
});
|
|
569
576
|
it('Method: getDaysInMonth', () => {
|
|
570
577
|
expect(adapter.getDaysInMonth(testDateIso)).to.equal(31);
|
|
571
578
|
expect(adapter.getDaysInMonth(testDateLocale)).to.equal(31);
|
|
@@ -597,11 +604,46 @@ export const testCalculations = ({
|
|
|
597
604
|
date = adapter.addDays(date, 1);
|
|
598
605
|
});
|
|
599
606
|
});
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
expect(
|
|
607
|
+
describe('Method: getWeekArray', () => {
|
|
608
|
+
it('should work without timezones', () => {
|
|
609
|
+
const weekArray = adapter.getWeekArray(testDateIso);
|
|
610
|
+
let expectedDate = adapter.startOfWeek(adapter.startOfMonth(testDateIso));
|
|
611
|
+
expect(weekArray).to.have.length(5);
|
|
612
|
+
weekArray.forEach(week => {
|
|
613
|
+
expect(week).to.have.length(7);
|
|
614
|
+
week.forEach(day => {
|
|
615
|
+
expect(day).toEqualDateTime(expectedDate);
|
|
616
|
+
expectedDate = adapter.addDays(expectedDate, 1);
|
|
617
|
+
});
|
|
618
|
+
});
|
|
619
|
+
});
|
|
620
|
+
it('should respect the DST', function test() {
|
|
621
|
+
if (!adapterTZ.isTimezoneCompatible) {
|
|
622
|
+
this.skip();
|
|
623
|
+
}
|
|
624
|
+
const referenceDate = adapterTZ.dateWithTimezone('2022-03-17', 'Europe/Paris');
|
|
625
|
+
const weekArray = adapterTZ.getWeekArray(referenceDate);
|
|
626
|
+
let expectedDate = adapter.startOfWeek(adapter.startOfMonth(referenceDate));
|
|
627
|
+
const lastNonDSTDay = adapterTZ.dateWithTimezone('2022-03-27', 'Europe/Paris');
|
|
628
|
+
expect(weekArray).to.have.length(5);
|
|
629
|
+
weekArray.forEach(week => {
|
|
630
|
+
expect(week).to.have.length(7);
|
|
631
|
+
week.forEach(day => {
|
|
632
|
+
expect(adapterTZ.startOfDay(day)).toEqualDateTime(adapterTZ.startOfDay(expectedDate));
|
|
633
|
+
expectedDate = adapterTZ.addDays(expectedDate, 1);
|
|
634
|
+
expect(getDateOffset(adapterTZ, day)).to.equal(adapterTZ.isAfter(day, lastNonDSTDay) ? 120 : 60);
|
|
635
|
+
});
|
|
636
|
+
});
|
|
637
|
+
});
|
|
638
|
+
it('should respect the locale of the adapter, not the locale of the date', function test() {
|
|
639
|
+
const dateFr = adapterFr.dateWithTimezone('2022-03-17', 'default');
|
|
640
|
+
const weekArray = adapter.getWeekArray(dateFr);
|
|
641
|
+
if (getLocaleFromDate) {
|
|
642
|
+
expect(getLocaleFromDate(weekArray[0][0])).to.match(/en/);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// Week should start on Monday (28th of March) for adapters supporting locale-based week start.
|
|
646
|
+
expect(adapter.getDate(weekArray[0][0])).to.equal(adapter.lib === 'luxon' ? 28 : 27);
|
|
605
647
|
});
|
|
606
648
|
});
|
|
607
649
|
it('Method: getWeekNumber', () => {
|
|
@@ -163,6 +163,15 @@ export const testCalculations = ({
|
|
|
163
163
|
it('Method: getDate', () => {
|
|
164
164
|
expect(adapter.getDate(testDateIso)).to.equal(8);
|
|
165
165
|
});
|
|
166
|
+
it('Method: getMinutes', () => {
|
|
167
|
+
expect(adapter.getMinutes(testDateIso)).to.equal(44);
|
|
168
|
+
});
|
|
169
|
+
it('Method: getSeconds', () => {
|
|
170
|
+
expect(adapter.getSeconds(testDateIso)).to.equal(0);
|
|
171
|
+
});
|
|
172
|
+
it('Method: getMilliseconds', () => {
|
|
173
|
+
expect(adapter.getMilliseconds(testDateIso)).to.equal(0);
|
|
174
|
+
});
|
|
166
175
|
it('Method: setYear', () => {
|
|
167
176
|
expect(adapter.setYear(testDateIso, 1398)).toEqualDateTime('2019-10-30T11:44:00.000Z');
|
|
168
177
|
});
|
|
@@ -172,6 +181,18 @@ export const testCalculations = ({
|
|
|
172
181
|
it('Method: setDate', () => {
|
|
173
182
|
expect(adapter.setDate(testDateIso, 9)).toEqualDateTime('2018-10-31T11:44:00.000Z');
|
|
174
183
|
});
|
|
184
|
+
it('Method: setHours', () => {
|
|
185
|
+
expect(adapter.setHours(testDateIso, 0)).toEqualDateTime('2018-10-30T00:44:00.000Z');
|
|
186
|
+
});
|
|
187
|
+
it('Method: setMinutes', () => {
|
|
188
|
+
expect(adapter.setMinutes(testDateIso, 12)).toEqualDateTime('2018-10-30T11:12:00.000Z');
|
|
189
|
+
});
|
|
190
|
+
it('Method: setSeconds', () => {
|
|
191
|
+
expect(adapter.setSeconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:11.000Z');
|
|
192
|
+
});
|
|
193
|
+
it('Method: setMilliseconds', () => {
|
|
194
|
+
expect(adapter.setMilliseconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:00.011Z');
|
|
195
|
+
});
|
|
175
196
|
it('Method: getNextMonth', () => {
|
|
176
197
|
expect(adapter.getNextMonth(testDateIso)).toEqualDateTime('2018-11-29T11:44:00.000Z');
|
|
177
198
|
});
|
|
@@ -33,7 +33,8 @@ export const renderTimeViewClock = ({
|
|
|
33
33
|
sx,
|
|
34
34
|
autoFocus,
|
|
35
35
|
showViewSwitcher,
|
|
36
|
-
disableIgnoringDatePartForTimeValidation
|
|
36
|
+
disableIgnoringDatePartForTimeValidation,
|
|
37
|
+
timezone
|
|
37
38
|
}) => /*#__PURE__*/_jsx(TimeClock, {
|
|
38
39
|
view: view,
|
|
39
40
|
onViewChange: onViewChange,
|
|
@@ -63,7 +64,8 @@ export const renderTimeViewClock = ({
|
|
|
63
64
|
sx: sx,
|
|
64
65
|
autoFocus: autoFocus,
|
|
65
66
|
showViewSwitcher: showViewSwitcher,
|
|
66
|
-
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation
|
|
67
|
+
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
|
|
68
|
+
timezone: timezone
|
|
67
69
|
});
|
|
68
70
|
export const renderDigitalClockTimeView = ({
|
|
69
71
|
view,
|
|
@@ -94,7 +96,8 @@ export const renderDigitalClockTimeView = ({
|
|
|
94
96
|
autoFocus,
|
|
95
97
|
disableIgnoringDatePartForTimeValidation,
|
|
96
98
|
timeSteps,
|
|
97
|
-
skipDisabled
|
|
99
|
+
skipDisabled,
|
|
100
|
+
timezone
|
|
98
101
|
}) => /*#__PURE__*/_jsx(DigitalClock, {
|
|
99
102
|
view: view,
|
|
100
103
|
onViewChange: onViewChange,
|
|
@@ -124,7 +127,8 @@ export const renderDigitalClockTimeView = ({
|
|
|
124
127
|
autoFocus: autoFocus,
|
|
125
128
|
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
|
|
126
129
|
timeStep: timeSteps?.minutes,
|
|
127
|
-
skipDisabled: skipDisabled
|
|
130
|
+
skipDisabled: skipDisabled,
|
|
131
|
+
timezone: timezone
|
|
128
132
|
});
|
|
129
133
|
export const renderMultiSectionDigitalClockTimeView = ({
|
|
130
134
|
view,
|
|
@@ -155,7 +159,8 @@ export const renderMultiSectionDigitalClockTimeView = ({
|
|
|
155
159
|
autoFocus,
|
|
156
160
|
disableIgnoringDatePartForTimeValidation,
|
|
157
161
|
timeSteps,
|
|
158
|
-
skipDisabled
|
|
162
|
+
skipDisabled,
|
|
163
|
+
timezone
|
|
159
164
|
}) => /*#__PURE__*/_jsx(MultiSectionDigitalClock, {
|
|
160
165
|
view: view,
|
|
161
166
|
onViewChange: onViewChange,
|
|
@@ -185,5 +190,6 @@ export const renderMultiSectionDigitalClockTimeView = ({
|
|
|
185
190
|
autoFocus: autoFocus,
|
|
186
191
|
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
|
|
187
192
|
timeSteps: timeSteps,
|
|
188
|
-
skipDisabled: skipDisabled
|
|
193
|
+
skipDisabled: skipDisabled,
|
|
194
|
+
timezone: timezone
|
|
189
195
|
});
|