@mui/x-date-pickers 8.5.3 → 8.6.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/CHANGELOG.md +107 -0
- package/DateCalendar/DateCalendar.js +16 -16
- package/DateCalendar/DayCalendar.js +48 -48
- package/DateCalendar/useCalendarState.js +25 -25
- package/DateCalendar/useIsDateDisabled.js +2 -2
- package/DatePicker/DatePickerToolbar.js +7 -9
- package/DateTimeField/DateTimeField.js +1 -1
- package/DateTimePicker/DateTimePicker.js +1 -1
- package/DateTimePicker/DateTimePickerToolbar.js +12 -13
- package/DateTimePicker/shared.js +3 -3
- package/DesktopDatePicker/DesktopDatePicker.js +3 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +4 -4
- package/DesktopTimePicker/DesktopTimePicker.js +4 -4
- package/DigitalClock/DigitalClock.d.ts +1 -1
- package/DigitalClock/DigitalClock.js +16 -16
- package/LocalizationProvider/LocalizationProvider.d.ts +9 -3
- package/LocalizationProvider/LocalizationProvider.js +28 -19
- package/MobileDatePicker/MobileDatePicker.js +3 -3
- package/MobileDateTimePicker/MobileDateTimePicker.js +4 -4
- package/MobileTimePicker/MobileTimePicker.js +4 -4
- package/MonthCalendar/MonthCalendar.js +19 -18
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +32 -32
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.d.ts +4 -4
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +7 -7
- package/PickerDay2/PickerDay2.js +3 -3
- package/PickersActionBar/PickersActionBar.d.ts +2 -2
- package/PickersActionBar/PickersActionBar.js +2 -2
- package/PickersCalendarHeader/PickersCalendarHeader.js +7 -8
- package/PickersDay/PickersDay.js +3 -3
- package/PickersDay/usePickerDayOwnerState.js +5 -5
- package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/StaticTimePicker/StaticTimePicker.js +1 -1
- package/TimeClock/Clock.js +8 -9
- package/TimeClock/ClockNumbers.d.ts +3 -3
- package/TimeClock/ClockNumbers.js +5 -5
- package/TimeClock/TimeClock.js +29 -29
- package/TimeField/TimeField.js +1 -1
- package/TimePicker/TimePicker.js +1 -1
- package/TimePicker/TimePickerToolbar.js +7 -9
- package/TimePicker/shared.js +3 -3
- package/YearCalendar/YearCalendar.js +19 -18
- package/esm/DateCalendar/DateCalendar.js +16 -16
- package/esm/DateCalendar/DayCalendar.js +48 -48
- package/esm/DateCalendar/useCalendarState.js +25 -25
- package/esm/DateCalendar/useIsDateDisabled.js +2 -2
- package/esm/DatePicker/DatePickerToolbar.js +6 -8
- package/esm/DateTimeField/DateTimeField.js +1 -1
- package/esm/DateTimePicker/DateTimePicker.js +1 -1
- package/esm/DateTimePicker/DateTimePickerToolbar.js +11 -12
- package/esm/DateTimePicker/shared.js +3 -3
- package/esm/DesktopDatePicker/DesktopDatePicker.js +3 -3
- package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +4 -4
- package/esm/DesktopTimePicker/DesktopTimePicker.js +4 -4
- package/esm/DigitalClock/DigitalClock.d.ts +1 -1
- package/esm/DigitalClock/DigitalClock.js +16 -16
- package/esm/LocalizationProvider/LocalizationProvider.d.ts +9 -3
- package/esm/LocalizationProvider/LocalizationProvider.js +27 -18
- package/esm/MobileDatePicker/MobileDatePicker.js +3 -3
- package/esm/MobileDateTimePicker/MobileDateTimePicker.js +4 -4
- package/esm/MobileTimePicker/MobileTimePicker.js +4 -4
- package/esm/MonthCalendar/MonthCalendar.js +20 -19
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.js +32 -32
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.d.ts +4 -4
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +7 -7
- package/esm/PickerDay2/PickerDay2.js +3 -3
- package/esm/PickersActionBar/PickersActionBar.d.ts +2 -2
- package/esm/PickersActionBar/PickersActionBar.js +2 -2
- package/esm/PickersCalendarHeader/PickersCalendarHeader.js +6 -7
- package/esm/PickersDay/PickersDay.js +3 -3
- package/esm/PickersDay/usePickerDayOwnerState.js +5 -5
- package/esm/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/esm/StaticTimePicker/StaticTimePicker.js +1 -1
- package/esm/TimeClock/Clock.js +7 -8
- package/esm/TimeClock/ClockNumbers.d.ts +3 -3
- package/esm/TimeClock/ClockNumbers.js +5 -5
- package/esm/TimeClock/TimeClock.js +29 -29
- package/esm/TimeField/TimeField.js +1 -1
- package/esm/TimePicker/TimePicker.js +1 -1
- package/esm/TimePicker/TimePickerToolbar.js +6 -8
- package/esm/TimePicker/shared.js +3 -3
- package/esm/YearCalendar/YearCalendar.js +20 -19
- package/esm/hooks/index.d.ts +2 -1
- package/esm/hooks/index.js +2 -1
- package/esm/hooks/useParsedFormat.js +6 -6
- package/esm/hooks/usePickerAdapter.d.ts +7 -0
- package/esm/hooks/usePickerAdapter.js +20 -0
- package/esm/hooks/usePickerTranslations.js +1 -1
- package/esm/index.js +1 -1
- package/esm/internals/components/pickersToolbarClasses.d.ts +1 -1
- package/esm/internals/demo/DemoContainer.d.ts +2 -3
- package/esm/internals/demo/DemoContainer.js +3 -2
- package/esm/internals/hooks/date-helpers-hooks.js +16 -16
- package/esm/internals/hooks/useClockReferenceDate.d.ts +2 -2
- package/esm/internals/hooks/useClockReferenceDate.js +3 -3
- package/esm/internals/hooks/useControlledValue.js +8 -7
- package/esm/internals/hooks/useField/buildSectionsFromFormat.d.ts +1 -1
- package/esm/internals/hooks/useField/buildSectionsFromFormat.js +17 -17
- package/esm/internals/hooks/useField/useField.types.d.ts +2 -2
- package/esm/internals/hooks/useField/useField.utils.d.ts +10 -10
- package/esm/internals/hooks/useField/useField.utils.js +69 -69
- package/esm/internals/hooks/useField/useFieldCharacterEditing.js +11 -11
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +7 -7
- package/esm/internals/hooks/useField/useFieldSectionContentProps.js +15 -16
- package/esm/internals/hooks/useField/useFieldState.js +22 -24
- package/esm/internals/hooks/usePicker/hooks/useValueAndOpenStates.js +6 -6
- package/esm/internals/hooks/usePicker/usePicker.js +5 -6
- package/esm/internals/hooks/useUtils.d.ts +1 -8
- package/esm/internals/hooks/useUtils.js +3 -19
- package/esm/internals/index.d.ts +2 -1
- package/esm/internals/index.js +2 -1
- package/esm/internals/models/manager.d.ts +14 -14
- package/esm/internals/models/props/time.d.ts +1 -1
- package/esm/internals/utils/date-time-utils.d.ts +1 -1
- package/esm/internals/utils/date-time-utils.js +5 -5
- package/esm/internals/utils/date-utils.d.ts +11 -11
- package/esm/internals/utils/date-utils.js +34 -34
- package/esm/internals/utils/getDefaultReferenceDate.d.ts +2 -2
- package/esm/internals/utils/getDefaultReferenceDate.js +16 -16
- package/esm/internals/utils/time-utils.d.ts +5 -5
- package/esm/internals/utils/time-utils.js +12 -12
- package/esm/internals/utils/valueManagers.js +4 -4
- package/esm/managers/useDateManager.js +12 -12
- package/esm/managers/useDateTimeManager.js +13 -13
- package/esm/managers/useTimeManager.js +9 -10
- package/esm/validation/useValidation.d.ts +2 -3
- package/esm/validation/useValidation.js +2 -2
- package/esm/validation/validateDate.js +6 -6
- package/esm/validation/validateTime.js +6 -6
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +8 -1
- package/hooks/useParsedFormat.js +6 -6
- package/hooks/usePickerAdapter.d.ts +7 -0
- package/hooks/usePickerAdapter.js +29 -0
- package/hooks/usePickerTranslations.js +2 -2
- package/index.js +1 -1
- package/internals/components/pickersToolbarClasses.d.ts +1 -1
- package/internals/demo/DemoContainer.d.ts +2 -3
- package/internals/demo/DemoContainer.js +3 -2
- package/internals/hooks/date-helpers-hooks.js +16 -16
- package/internals/hooks/useClockReferenceDate.d.ts +2 -2
- package/internals/hooks/useClockReferenceDate.js +3 -3
- package/internals/hooks/useControlledValue.js +7 -7
- package/internals/hooks/useField/buildSectionsFromFormat.d.ts +1 -1
- package/internals/hooks/useField/buildSectionsFromFormat.js +17 -17
- package/internals/hooks/useField/useField.types.d.ts +2 -2
- package/internals/hooks/useField/useField.utils.d.ts +10 -10
- package/internals/hooks/useField/useField.utils.js +69 -69
- package/internals/hooks/useField/useFieldCharacterEditing.js +11 -11
- package/internals/hooks/useField/useFieldRootHandleKeyDown.js +7 -7
- package/internals/hooks/useField/useFieldSectionContentProps.js +14 -15
- package/internals/hooks/useField/useFieldState.js +23 -25
- package/internals/hooks/usePicker/hooks/useValueAndOpenStates.js +6 -6
- package/internals/hooks/usePicker/usePicker.js +5 -6
- package/internals/hooks/useUtils.d.ts +1 -8
- package/internals/hooks/useUtils.js +5 -24
- package/internals/index.d.ts +2 -1
- package/internals/index.js +2 -7
- package/internals/models/manager.d.ts +14 -14
- package/internals/models/props/time.d.ts +1 -1
- package/internals/utils/date-time-utils.d.ts +1 -1
- package/internals/utils/date-time-utils.js +5 -5
- package/internals/utils/date-utils.d.ts +11 -11
- package/internals/utils/date-utils.js +34 -34
- package/internals/utils/getDefaultReferenceDate.d.ts +2 -2
- package/internals/utils/getDefaultReferenceDate.js +16 -16
- package/internals/utils/time-utils.d.ts +5 -5
- package/internals/utils/time-utils.js +12 -12
- package/internals/utils/valueManagers.js +4 -4
- package/managers/useDateManager.js +12 -12
- package/managers/useDateTimeManager.js +13 -13
- package/managers/useTimeManager.js +10 -11
- package/package.json +2 -2
- package/validation/useValidation.d.ts +2 -3
- package/validation/useValidation.js +2 -2
- package/validation/validateDate.js +6 -6
- package/validation/validateTime.js +6 -6
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { areViewsEqual } from "./views.js";
|
|
2
|
-
export const mergeDateAndTime = (
|
|
2
|
+
export const mergeDateAndTime = (adapter, dateParam, timeParam) => {
|
|
3
3
|
let mergedDate = dateParam;
|
|
4
|
-
mergedDate =
|
|
5
|
-
mergedDate =
|
|
6
|
-
mergedDate =
|
|
7
|
-
mergedDate =
|
|
4
|
+
mergedDate = adapter.setHours(mergedDate, adapter.getHours(timeParam));
|
|
5
|
+
mergedDate = adapter.setMinutes(mergedDate, adapter.getMinutes(timeParam));
|
|
6
|
+
mergedDate = adapter.setSeconds(mergedDate, adapter.getSeconds(timeParam));
|
|
7
|
+
mergedDate = adapter.setMilliseconds(mergedDate, adapter.getMilliseconds(timeParam));
|
|
8
8
|
return mergedDate;
|
|
9
9
|
};
|
|
10
10
|
export const findClosestEnabledDate = ({
|
|
@@ -14,87 +14,87 @@ export const findClosestEnabledDate = ({
|
|
|
14
14
|
maxDate,
|
|
15
15
|
minDate,
|
|
16
16
|
isDateDisabled,
|
|
17
|
-
|
|
17
|
+
adapter,
|
|
18
18
|
timezone
|
|
19
19
|
}) => {
|
|
20
|
-
const today = mergeDateAndTime(
|
|
21
|
-
if (disablePast &&
|
|
20
|
+
const today = mergeDateAndTime(adapter, adapter.date(undefined, timezone), date);
|
|
21
|
+
if (disablePast && adapter.isBefore(minDate, today)) {
|
|
22
22
|
minDate = today;
|
|
23
23
|
}
|
|
24
|
-
if (disableFuture &&
|
|
24
|
+
if (disableFuture && adapter.isAfter(maxDate, today)) {
|
|
25
25
|
maxDate = today;
|
|
26
26
|
}
|
|
27
27
|
let forward = date;
|
|
28
28
|
let backward = date;
|
|
29
|
-
if (
|
|
29
|
+
if (adapter.isBefore(date, minDate)) {
|
|
30
30
|
forward = minDate;
|
|
31
31
|
backward = null;
|
|
32
32
|
}
|
|
33
|
-
if (
|
|
33
|
+
if (adapter.isAfter(date, maxDate)) {
|
|
34
34
|
if (backward) {
|
|
35
35
|
backward = maxDate;
|
|
36
36
|
}
|
|
37
37
|
forward = null;
|
|
38
38
|
}
|
|
39
39
|
while (forward || backward) {
|
|
40
|
-
if (forward &&
|
|
40
|
+
if (forward && adapter.isAfter(forward, maxDate)) {
|
|
41
41
|
forward = null;
|
|
42
42
|
}
|
|
43
|
-
if (backward &&
|
|
43
|
+
if (backward && adapter.isBefore(backward, minDate)) {
|
|
44
44
|
backward = null;
|
|
45
45
|
}
|
|
46
46
|
if (forward) {
|
|
47
47
|
if (!isDateDisabled(forward)) {
|
|
48
48
|
return forward;
|
|
49
49
|
}
|
|
50
|
-
forward =
|
|
50
|
+
forward = adapter.addDays(forward, 1);
|
|
51
51
|
}
|
|
52
52
|
if (backward) {
|
|
53
53
|
if (!isDateDisabled(backward)) {
|
|
54
54
|
return backward;
|
|
55
55
|
}
|
|
56
|
-
backward =
|
|
56
|
+
backward = adapter.addDays(backward, -1);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
return null;
|
|
60
60
|
};
|
|
61
|
-
export const replaceInvalidDateByNull = (
|
|
62
|
-
export const applyDefaultDate = (
|
|
63
|
-
if (value == null || !
|
|
61
|
+
export const replaceInvalidDateByNull = (adapter, value) => !adapter.isValid(value) ? null : value;
|
|
62
|
+
export const applyDefaultDate = (adapter, value, defaultValue) => {
|
|
63
|
+
if (value == null || !adapter.isValid(value)) {
|
|
64
64
|
return defaultValue;
|
|
65
65
|
}
|
|
66
66
|
return value;
|
|
67
67
|
};
|
|
68
|
-
export const areDatesEqual = (
|
|
69
|
-
if (!
|
|
68
|
+
export const areDatesEqual = (adapter, a, b) => {
|
|
69
|
+
if (!adapter.isValid(a) && a != null && !adapter.isValid(b) && b != null) {
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
|
-
return
|
|
72
|
+
return adapter.isEqual(a, b);
|
|
73
73
|
};
|
|
74
|
-
export const getMonthsInYear = (
|
|
75
|
-
const firstMonth =
|
|
74
|
+
export const getMonthsInYear = (adapter, year) => {
|
|
75
|
+
const firstMonth = adapter.startOfYear(year);
|
|
76
76
|
const months = [firstMonth];
|
|
77
77
|
while (months.length < 12) {
|
|
78
78
|
const prevMonth = months[months.length - 1];
|
|
79
|
-
months.push(
|
|
79
|
+
months.push(adapter.addMonths(prevMonth, 1));
|
|
80
80
|
}
|
|
81
81
|
return months;
|
|
82
82
|
};
|
|
83
|
-
export const getTodayDate = (
|
|
84
|
-
export const formatMeridiem = (
|
|
85
|
-
const date =
|
|
86
|
-
return
|
|
83
|
+
export const getTodayDate = (adapter, timezone, valueType) => valueType === 'date' ? adapter.startOfDay(adapter.date(undefined, timezone)) : adapter.date(undefined, timezone);
|
|
84
|
+
export const formatMeridiem = (adapter, meridiem) => {
|
|
85
|
+
const date = adapter.setHours(adapter.date(), meridiem === 'am' ? 2 : 14);
|
|
86
|
+
return adapter.format(date, 'meridiem');
|
|
87
87
|
};
|
|
88
88
|
export const DATE_VIEWS = ['year', 'month', 'day'];
|
|
89
89
|
export const isDatePickerView = view => DATE_VIEWS.includes(view);
|
|
90
|
-
export const resolveDateFormat = (
|
|
90
|
+
export const resolveDateFormat = (adapter, {
|
|
91
91
|
format,
|
|
92
92
|
views
|
|
93
93
|
}, isInToolbar) => {
|
|
94
94
|
if (format != null) {
|
|
95
95
|
return format;
|
|
96
96
|
}
|
|
97
|
-
const formats =
|
|
97
|
+
const formats = adapter.formats;
|
|
98
98
|
if (areViewsEqual(views, ['year'])) {
|
|
99
99
|
return formats.year;
|
|
100
100
|
}
|
|
@@ -114,11 +114,11 @@ export const resolveDateFormat = (utils, {
|
|
|
114
114
|
// Little localization hack (Google is doing the same for android native pickers):
|
|
115
115
|
// For english localization it is convenient to include weekday into the date "Mon, Jun 1".
|
|
116
116
|
// For other locales using strings like "June 1", without weekday.
|
|
117
|
-
return /en/.test(
|
|
117
|
+
return /en/.test(adapter.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;
|
|
118
118
|
}
|
|
119
119
|
return formats.keyboardDate;
|
|
120
120
|
};
|
|
121
|
-
export const getWeekdays = (
|
|
122
|
-
const start =
|
|
123
|
-
return [0, 1, 2, 3, 4, 5, 6].map(diff =>
|
|
121
|
+
export const getWeekdays = (adapter, date) => {
|
|
122
|
+
const start = adapter.startOfWeek(date);
|
|
123
|
+
return [0, 1, 2, 3, 4, 5, 6].map(diff => adapter.addDays(start, diff));
|
|
124
124
|
};
|
|
@@ -18,13 +18,13 @@ export declare const SECTION_TYPE_GRANULARITY: {
|
|
|
18
18
|
export declare const getSectionTypeGranularity: (sections: FieldSection[]) => number;
|
|
19
19
|
export declare const getDefaultReferenceDate: ({
|
|
20
20
|
props,
|
|
21
|
-
|
|
21
|
+
adapter,
|
|
22
22
|
granularity,
|
|
23
23
|
timezone,
|
|
24
24
|
getTodayDate: inGetTodayDate
|
|
25
25
|
}: {
|
|
26
26
|
props: GetDefaultReferenceDateProps;
|
|
27
|
-
|
|
27
|
+
adapter: MuiPickersAdapter;
|
|
28
28
|
granularity: number;
|
|
29
29
|
timezone: PickersTimezone;
|
|
30
30
|
getTodayDate?: () => PickerValidDate;
|
|
@@ -10,50 +10,50 @@ export const SECTION_TYPE_GRANULARITY = {
|
|
|
10
10
|
milliseconds: 7
|
|
11
11
|
};
|
|
12
12
|
export const getSectionTypeGranularity = sections => Math.max(...sections.map(section => SECTION_TYPE_GRANULARITY[section.type] ?? 1));
|
|
13
|
-
const roundDate = (
|
|
13
|
+
const roundDate = (adapter, granularity, date) => {
|
|
14
14
|
if (granularity === SECTION_TYPE_GRANULARITY.year) {
|
|
15
|
-
return
|
|
15
|
+
return adapter.startOfYear(date);
|
|
16
16
|
}
|
|
17
17
|
if (granularity === SECTION_TYPE_GRANULARITY.month) {
|
|
18
|
-
return
|
|
18
|
+
return adapter.startOfMonth(date);
|
|
19
19
|
}
|
|
20
20
|
if (granularity === SECTION_TYPE_GRANULARITY.day) {
|
|
21
|
-
return
|
|
21
|
+
return adapter.startOfDay(date);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// We don't have startOfHour / startOfMinute / startOfSecond
|
|
25
25
|
let roundedDate = date;
|
|
26
26
|
if (granularity < SECTION_TYPE_GRANULARITY.minutes) {
|
|
27
|
-
roundedDate =
|
|
27
|
+
roundedDate = adapter.setMinutes(roundedDate, 0);
|
|
28
28
|
}
|
|
29
29
|
if (granularity < SECTION_TYPE_GRANULARITY.seconds) {
|
|
30
|
-
roundedDate =
|
|
30
|
+
roundedDate = adapter.setSeconds(roundedDate, 0);
|
|
31
31
|
}
|
|
32
32
|
if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {
|
|
33
|
-
roundedDate =
|
|
33
|
+
roundedDate = adapter.setMilliseconds(roundedDate, 0);
|
|
34
34
|
}
|
|
35
35
|
return roundedDate;
|
|
36
36
|
};
|
|
37
37
|
export const getDefaultReferenceDate = ({
|
|
38
38
|
props,
|
|
39
|
-
|
|
39
|
+
adapter,
|
|
40
40
|
granularity,
|
|
41
41
|
timezone,
|
|
42
42
|
getTodayDate: inGetTodayDate
|
|
43
43
|
}) => {
|
|
44
|
-
let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(
|
|
45
|
-
if (props.minDate != null &&
|
|
46
|
-
referenceDate = roundDate(
|
|
44
|
+
let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(adapter, granularity, getTodayDate(adapter, timezone));
|
|
45
|
+
if (props.minDate != null && adapter.isAfterDay(props.minDate, referenceDate)) {
|
|
46
|
+
referenceDate = roundDate(adapter, granularity, props.minDate);
|
|
47
47
|
}
|
|
48
|
-
if (props.maxDate != null &&
|
|
49
|
-
referenceDate = roundDate(
|
|
48
|
+
if (props.maxDate != null && adapter.isBeforeDay(props.maxDate, referenceDate)) {
|
|
49
|
+
referenceDate = roundDate(adapter, granularity, props.maxDate);
|
|
50
50
|
}
|
|
51
|
-
const isAfter = createIsAfterIgnoreDatePart(props.disableIgnoringDatePartForTimeValidation ?? false,
|
|
51
|
+
const isAfter = createIsAfterIgnoreDatePart(props.disableIgnoringDatePartForTimeValidation ?? false, adapter);
|
|
52
52
|
if (props.minTime != null && isAfter(props.minTime, referenceDate)) {
|
|
53
|
-
referenceDate = roundDate(
|
|
53
|
+
referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(adapter, referenceDate, props.minTime));
|
|
54
54
|
}
|
|
55
55
|
if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {
|
|
56
|
-
referenceDate = roundDate(
|
|
56
|
+
referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(adapter, referenceDate, props.maxTime));
|
|
57
57
|
}
|
|
58
58
|
return referenceDate;
|
|
59
59
|
};
|
|
@@ -5,12 +5,12 @@ export declare const TIME_VIEWS: readonly ["hours", "minutes", "seconds", "merid
|
|
|
5
5
|
export declare const isTimeView: (view: DateOrTimeViewWithMeridiem) => boolean;
|
|
6
6
|
export declare const isInternalTimeView: (view: DateOrTimeViewWithMeridiem) => view is TimeViewWithMeridiem;
|
|
7
7
|
export type Meridiem = 'am' | 'pm';
|
|
8
|
-
export declare const getMeridiem: (date: PickerValidDate | null,
|
|
8
|
+
export declare const getMeridiem: (date: PickerValidDate | null, adapter: MuiPickersAdapter) => Meridiem | null;
|
|
9
9
|
export declare const convertValueToMeridiem: (value: number, meridiem: Meridiem | null, ampm: boolean) => number;
|
|
10
|
-
export declare const convertToMeridiem: (time: PickerValidDate, meridiem: Meridiem, ampm: boolean,
|
|
11
|
-
export declare const getSecondsInDay: (date: PickerValidDate,
|
|
12
|
-
export declare const createIsAfterIgnoreDatePart: (disableIgnoringDatePartForTimeValidation: boolean,
|
|
13
|
-
export declare const resolveTimeFormat: (
|
|
10
|
+
export declare const convertToMeridiem: (time: PickerValidDate, meridiem: Meridiem, ampm: boolean, adapter: MuiPickersAdapter) => PickerValidDate;
|
|
11
|
+
export declare const getSecondsInDay: (date: PickerValidDate, adapter: MuiPickersAdapter) => number;
|
|
12
|
+
export declare const createIsAfterIgnoreDatePart: (disableIgnoringDatePartForTimeValidation: boolean, adapter: MuiPickersAdapter) => (dateLeft: PickerValidDate, dateRight: PickerValidDate) => boolean;
|
|
13
|
+
export declare const resolveTimeFormat: (adapter: MuiPickersAdapter, {
|
|
14
14
|
format,
|
|
15
15
|
views,
|
|
16
16
|
ampm
|
|
@@ -3,11 +3,11 @@ export const EXPORTED_TIME_VIEWS = ['hours', 'minutes', 'seconds'];
|
|
|
3
3
|
export const TIME_VIEWS = ['hours', 'minutes', 'seconds', 'meridiem'];
|
|
4
4
|
export const isTimeView = view => EXPORTED_TIME_VIEWS.includes(view);
|
|
5
5
|
export const isInternalTimeView = view => TIME_VIEWS.includes(view);
|
|
6
|
-
export const getMeridiem = (date,
|
|
6
|
+
export const getMeridiem = (date, adapter) => {
|
|
7
7
|
if (!date) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
10
|
-
return
|
|
10
|
+
return adapter.getHours(date) >= 12 ? 'pm' : 'am';
|
|
11
11
|
};
|
|
12
12
|
export const convertValueToMeridiem = (value, meridiem, ampm) => {
|
|
13
13
|
if (ampm) {
|
|
@@ -18,20 +18,20 @@ export const convertValueToMeridiem = (value, meridiem, ampm) => {
|
|
|
18
18
|
}
|
|
19
19
|
return value;
|
|
20
20
|
};
|
|
21
|
-
export const convertToMeridiem = (time, meridiem, ampm,
|
|
22
|
-
const newHoursAmount = convertValueToMeridiem(
|
|
23
|
-
return
|
|
21
|
+
export const convertToMeridiem = (time, meridiem, ampm, adapter) => {
|
|
22
|
+
const newHoursAmount = convertValueToMeridiem(adapter.getHours(time), meridiem, ampm);
|
|
23
|
+
return adapter.setHours(time, newHoursAmount);
|
|
24
24
|
};
|
|
25
|
-
export const getSecondsInDay = (date,
|
|
26
|
-
return
|
|
25
|
+
export const getSecondsInDay = (date, adapter) => {
|
|
26
|
+
return adapter.getHours(date) * 3600 + adapter.getMinutes(date) * 60 + adapter.getSeconds(date);
|
|
27
27
|
};
|
|
28
|
-
export const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation,
|
|
28
|
+
export const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, adapter) => (dateLeft, dateRight) => {
|
|
29
29
|
if (disableIgnoringDatePartForTimeValidation) {
|
|
30
|
-
return
|
|
30
|
+
return adapter.isAfter(dateLeft, dateRight);
|
|
31
31
|
}
|
|
32
|
-
return getSecondsInDay(dateLeft,
|
|
32
|
+
return getSecondsInDay(dateLeft, adapter) > getSecondsInDay(dateRight, adapter);
|
|
33
33
|
};
|
|
34
|
-
export const resolveTimeFormat = (
|
|
34
|
+
export const resolveTimeFormat = (adapter, {
|
|
35
35
|
format,
|
|
36
36
|
views,
|
|
37
37
|
ampm
|
|
@@ -39,7 +39,7 @@ export const resolveTimeFormat = (utils, {
|
|
|
39
39
|
if (format != null) {
|
|
40
40
|
return format;
|
|
41
41
|
}
|
|
42
|
-
const formats =
|
|
42
|
+
const formats = adapter.formats;
|
|
43
43
|
if (areViewsEqual(views, ['hours'])) {
|
|
44
44
|
return ampm ? `${formats.hours12h} ${formats.meridiem}` : formats.hours24h;
|
|
45
45
|
}
|
|
@@ -13,7 +13,7 @@ export const singleItemValueManager = {
|
|
|
13
13
|
referenceDate
|
|
14
14
|
} = _ref,
|
|
15
15
|
params = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
16
|
-
if (params.
|
|
16
|
+
if (params.adapter.isValid(value)) {
|
|
17
17
|
return value;
|
|
18
18
|
}
|
|
19
19
|
if (referenceDate != null) {
|
|
@@ -26,11 +26,11 @@ export const singleItemValueManager = {
|
|
|
26
26
|
isSameError: (a, b) => a === b,
|
|
27
27
|
hasError: error => error != null,
|
|
28
28
|
defaultErrorState: null,
|
|
29
|
-
getTimezone: (
|
|
30
|
-
setTimezone: (
|
|
29
|
+
getTimezone: (adapter, value) => adapter.isValid(value) ? adapter.getTimezone(value) : null,
|
|
30
|
+
setTimezone: (adapter, timezone, value) => value == null ? null : adapter.setTimezone(value, timezone)
|
|
31
31
|
};
|
|
32
32
|
export const singleItemFieldValueManager = {
|
|
33
|
-
updateReferenceValue: (
|
|
33
|
+
updateReferenceValue: (adapter, value, prevReferenceValue) => adapter.isValid(value) ? value : prevReferenceValue,
|
|
34
34
|
getSectionsFromValue: (date, getSectionsFromDate) => getSectionsFromDate(date),
|
|
35
35
|
getV7HiddenInputValueFromSections: createDateStrForV7HiddenInputFromSections,
|
|
36
36
|
getV6InputValueFromSections: createDateStrForV6InputFromSections,
|
|
@@ -5,8 +5,8 @@ import * as React from 'react';
|
|
|
5
5
|
import { applyDefaultDate } from "../internals/utils/date-utils.js";
|
|
6
6
|
import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
7
7
|
import { validateDate } from "../validation/index.js";
|
|
8
|
-
import { useDefaultDates
|
|
9
|
-
import { usePickerTranslations } from "../hooks/
|
|
8
|
+
import { useDefaultDates } from "../internals/hooks/useUtils.js";
|
|
9
|
+
import { usePickerAdapter, usePickerTranslations } from "../hooks/index.js";
|
|
10
10
|
export function useDateManager(parameters = {}) {
|
|
11
11
|
const {
|
|
12
12
|
enableAccessibleFieldDOMStructure = true
|
|
@@ -22,27 +22,27 @@ export function useDateManager(parameters = {}) {
|
|
|
22
22
|
}), [enableAccessibleFieldDOMStructure]);
|
|
23
23
|
}
|
|
24
24
|
function useOpenPickerButtonAriaLabel(value) {
|
|
25
|
-
const
|
|
25
|
+
const adapter = usePickerAdapter();
|
|
26
26
|
const translations = usePickerTranslations();
|
|
27
27
|
return React.useMemo(() => {
|
|
28
|
-
const formattedValue =
|
|
28
|
+
const formattedValue = adapter.isValid(value) ? adapter.format(value, 'fullDate') : null;
|
|
29
29
|
return translations.openDatePickerDialogue(formattedValue);
|
|
30
|
-
}, [value, translations,
|
|
30
|
+
}, [value, translations, adapter]);
|
|
31
31
|
}
|
|
32
32
|
function useApplyDefaultValuesToDateFieldInternalProps(internalProps) {
|
|
33
|
-
const
|
|
33
|
+
const adapter = usePickerAdapter();
|
|
34
34
|
const validationProps = useApplyDefaultValuesToDateValidationProps(internalProps);
|
|
35
35
|
return React.useMemo(() => _extends({}, internalProps, validationProps, {
|
|
36
|
-
format: internalProps.format ??
|
|
37
|
-
}), [internalProps, validationProps,
|
|
36
|
+
format: internalProps.format ?? adapter.formats.keyboardDate
|
|
37
|
+
}), [internalProps, validationProps, adapter]);
|
|
38
38
|
}
|
|
39
39
|
export function useApplyDefaultValuesToDateValidationProps(props) {
|
|
40
|
-
const
|
|
40
|
+
const adapter = usePickerAdapter();
|
|
41
41
|
const defaultDates = useDefaultDates();
|
|
42
42
|
return React.useMemo(() => ({
|
|
43
43
|
disablePast: props.disablePast ?? false,
|
|
44
44
|
disableFuture: props.disableFuture ?? false,
|
|
45
|
-
minDate: applyDefaultDate(
|
|
46
|
-
maxDate: applyDefaultDate(
|
|
47
|
-
}), [props.minDate, props.maxDate, props.disableFuture, props.disablePast,
|
|
45
|
+
minDate: applyDefaultDate(adapter, props.minDate, defaultDates.minDate),
|
|
46
|
+
maxDate: applyDefaultDate(adapter, props.maxDate, defaultDates.maxDate)
|
|
47
|
+
}), [props.minDate, props.maxDate, props.disableFuture, props.disablePast, adapter, defaultDates]);
|
|
48
48
|
}
|
|
@@ -5,8 +5,8 @@ import * as React from 'react';
|
|
|
5
5
|
import { applyDefaultDate } from "../internals/utils/date-utils.js";
|
|
6
6
|
import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
7
7
|
import { validateDateTime } from "../validation/index.js";
|
|
8
|
-
import { useDefaultDates
|
|
9
|
-
import { usePickerTranslations } from "../hooks/
|
|
8
|
+
import { useDefaultDates } from "../internals/hooks/useUtils.js";
|
|
9
|
+
import { usePickerAdapter, usePickerTranslations } from "../hooks/index.js";
|
|
10
10
|
export function useDateTimeManager(parameters = {}) {
|
|
11
11
|
const {
|
|
12
12
|
enableAccessibleFieldDOMStructure = true
|
|
@@ -22,32 +22,32 @@ export function useDateTimeManager(parameters = {}) {
|
|
|
22
22
|
}), [enableAccessibleFieldDOMStructure]);
|
|
23
23
|
}
|
|
24
24
|
function useOpenPickerButtonAriaLabel(value) {
|
|
25
|
-
const
|
|
25
|
+
const adapter = usePickerAdapter();
|
|
26
26
|
const translations = usePickerTranslations();
|
|
27
27
|
return React.useMemo(() => {
|
|
28
|
-
const formattedValue =
|
|
28
|
+
const formattedValue = adapter.isValid(value) ? adapter.format(value, 'fullDate') : null;
|
|
29
29
|
return translations.openDatePickerDialogue(formattedValue);
|
|
30
|
-
}, [value, translations,
|
|
30
|
+
}, [value, translations, adapter]);
|
|
31
31
|
}
|
|
32
32
|
function useApplyDefaultValuesToDateTimeFieldInternalProps(internalProps) {
|
|
33
|
-
const
|
|
33
|
+
const adapter = usePickerAdapter();
|
|
34
34
|
const validationProps = useApplyDefaultValuesToDateTimeValidationProps(internalProps);
|
|
35
|
-
const ampm = React.useMemo(() => internalProps.ampm ??
|
|
35
|
+
const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);
|
|
36
36
|
return React.useMemo(() => _extends({}, internalProps, validationProps, {
|
|
37
|
-
format: internalProps.format ?? (ampm ?
|
|
38
|
-
}), [internalProps, validationProps, ampm,
|
|
37
|
+
format: internalProps.format ?? (ampm ? adapter.formats.keyboardDateTime12h : adapter.formats.keyboardDateTime24h)
|
|
38
|
+
}), [internalProps, validationProps, ampm, adapter]);
|
|
39
39
|
}
|
|
40
40
|
export function useApplyDefaultValuesToDateTimeValidationProps(props) {
|
|
41
|
-
const
|
|
41
|
+
const adapter = usePickerAdapter();
|
|
42
42
|
const defaultDates = useDefaultDates();
|
|
43
43
|
return React.useMemo(() => ({
|
|
44
44
|
disablePast: props.disablePast ?? false,
|
|
45
45
|
disableFuture: props.disableFuture ?? false,
|
|
46
46
|
// TODO: Explore if we can remove it from the public API
|
|
47
47
|
disableIgnoringDatePartForTimeValidation: !!props.minDateTime || !!props.maxDateTime || !!props.disableFuture || !!props.disablePast,
|
|
48
|
-
minDate: applyDefaultDate(
|
|
49
|
-
maxDate: applyDefaultDate(
|
|
48
|
+
minDate: applyDefaultDate(adapter, props.minDateTime ?? props.minDate, defaultDates.minDate),
|
|
49
|
+
maxDate: applyDefaultDate(adapter, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),
|
|
50
50
|
minTime: props.minDateTime ?? props.minTime,
|
|
51
51
|
maxTime: props.maxDateTime ?? props.maxTime
|
|
52
|
-
}), [props.minDateTime, props.maxDateTime, props.minTime, props.maxTime, props.minDate, props.maxDate, props.disableFuture, props.disablePast,
|
|
52
|
+
}), [props.minDateTime, props.maxDateTime, props.minTime, props.maxTime, props.minDate, props.maxDate, props.disableFuture, props.disablePast, adapter, defaultDates]);
|
|
53
53
|
}
|
|
@@ -4,8 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
6
6
|
import { validateTime } from "../validation/index.js";
|
|
7
|
-
import {
|
|
8
|
-
import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
|
|
7
|
+
import { usePickerAdapter, usePickerTranslations } from "../hooks/index.js";
|
|
9
8
|
export function useTimeManager(parameters = {}) {
|
|
10
9
|
const {
|
|
11
10
|
enableAccessibleFieldDOMStructure = true,
|
|
@@ -23,22 +22,22 @@ export function useTimeManager(parameters = {}) {
|
|
|
23
22
|
}
|
|
24
23
|
function createUseOpenPickerButtonAriaLabel(ampm) {
|
|
25
24
|
return function useOpenPickerButtonAriaLabel(value) {
|
|
26
|
-
const
|
|
25
|
+
const adapter = usePickerAdapter();
|
|
27
26
|
const translations = usePickerTranslations();
|
|
28
27
|
return React.useMemo(() => {
|
|
29
|
-
const formatKey = ampm ??
|
|
30
|
-
const formattedValue =
|
|
28
|
+
const formatKey = ampm ?? adapter.is12HourCycleInCurrentLocale() ? 'fullTime12h' : 'fullTime24h';
|
|
29
|
+
const formattedValue = adapter.isValid(value) ? adapter.format(value, formatKey) : null;
|
|
31
30
|
return translations.openTimePickerDialogue(formattedValue);
|
|
32
|
-
}, [value, translations,
|
|
31
|
+
}, [value, translations, adapter]);
|
|
33
32
|
};
|
|
34
33
|
}
|
|
35
34
|
function useApplyDefaultValuesToTimeFieldInternalProps(internalProps) {
|
|
36
|
-
const
|
|
35
|
+
const adapter = usePickerAdapter();
|
|
37
36
|
const validationProps = useApplyDefaultValuesToTimeValidationProps(internalProps);
|
|
38
|
-
const ampm = React.useMemo(() => internalProps.ampm ??
|
|
37
|
+
const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);
|
|
39
38
|
return React.useMemo(() => _extends({}, internalProps, validationProps, {
|
|
40
|
-
format: internalProps.format ?? (ampm ?
|
|
41
|
-
}), [internalProps, validationProps, ampm,
|
|
39
|
+
format: internalProps.format ?? (ampm ? adapter.formats.fullTime12h : adapter.formats.fullTime24h)
|
|
40
|
+
}), [internalProps, validationProps, ampm, adapter]);
|
|
42
41
|
}
|
|
43
42
|
export function useApplyDefaultValuesToTimeValidationProps(props) {
|
|
44
43
|
return React.useMemo(() => ({
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { OnErrorProps, PickersTimezone } from "../models/index.js";
|
|
1
|
+
import { MuiPickersAdapter, OnErrorProps, PickersTimezone } from "../models/index.js";
|
|
3
2
|
import type { PickerValueManager } from "../internals/models/index.js";
|
|
4
3
|
import { PickerValidValue } from "../internals/models/index.js";
|
|
5
4
|
export type Validator<TValue extends PickerValidValue, TError, TValidationProps> = {
|
|
6
5
|
(params: {
|
|
7
|
-
adapter:
|
|
6
|
+
adapter: MuiPickersAdapter;
|
|
8
7
|
value: TValue;
|
|
9
8
|
timezone: PickersTimezone;
|
|
10
9
|
props: TValidationProps;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
|
-
import {
|
|
5
|
+
import { usePickerAdapter } from "../hooks/index.js";
|
|
6
6
|
/**
|
|
7
7
|
* Utility hook to check if a given value is valid based on the provided validation props.
|
|
8
8
|
* @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
|
|
@@ -22,7 +22,7 @@ export function useValidation(options) {
|
|
|
22
22
|
timezone,
|
|
23
23
|
onError
|
|
24
24
|
} = options;
|
|
25
|
-
const adapter =
|
|
25
|
+
const adapter = usePickerAdapter();
|
|
26
26
|
const previousValidationErrorRef = React.useRef(validator.valueManager.defaultErrorState);
|
|
27
27
|
const validationError = validator({
|
|
28
28
|
adapter,
|
|
@@ -30,9 +30,9 @@ export const validateDate = ({
|
|
|
30
30
|
minDate,
|
|
31
31
|
maxDate
|
|
32
32
|
} = props;
|
|
33
|
-
const now = adapter.
|
|
33
|
+
const now = adapter.date(undefined, timezone);
|
|
34
34
|
switch (true) {
|
|
35
|
-
case !adapter.
|
|
35
|
+
case !adapter.isValid(value):
|
|
36
36
|
return 'invalidDate';
|
|
37
37
|
case Boolean(shouldDisableDate && shouldDisableDate(value)):
|
|
38
38
|
return 'shouldDisableDate';
|
|
@@ -40,13 +40,13 @@ export const validateDate = ({
|
|
|
40
40
|
return 'shouldDisableMonth';
|
|
41
41
|
case Boolean(shouldDisableYear && shouldDisableYear(value)):
|
|
42
42
|
return 'shouldDisableYear';
|
|
43
|
-
case Boolean(disableFuture && adapter.
|
|
43
|
+
case Boolean(disableFuture && adapter.isAfterDay(value, now)):
|
|
44
44
|
return 'disableFuture';
|
|
45
|
-
case Boolean(disablePast && adapter.
|
|
45
|
+
case Boolean(disablePast && adapter.isBeforeDay(value, now)):
|
|
46
46
|
return 'disablePast';
|
|
47
|
-
case Boolean(minDate && adapter.
|
|
47
|
+
case Boolean(minDate && adapter.isBeforeDay(value, minDate)):
|
|
48
48
|
return 'minDate';
|
|
49
|
-
case Boolean(maxDate && adapter.
|
|
49
|
+
case Boolean(maxDate && adapter.isAfterDay(value, maxDate)):
|
|
50
50
|
return 'maxDate';
|
|
51
51
|
default:
|
|
52
52
|
return null;
|
|
@@ -31,18 +31,18 @@ export const validateTime = ({
|
|
|
31
31
|
disablePast,
|
|
32
32
|
disableFuture
|
|
33
33
|
} = props;
|
|
34
|
-
const now = adapter.
|
|
35
|
-
const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter
|
|
34
|
+
const now = adapter.date(undefined, timezone);
|
|
35
|
+
const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);
|
|
36
36
|
switch (true) {
|
|
37
|
-
case !adapter.
|
|
37
|
+
case !adapter.isValid(value):
|
|
38
38
|
return 'invalidDate';
|
|
39
39
|
case Boolean(minTime && isAfter(minTime, value)):
|
|
40
40
|
return 'minTime';
|
|
41
41
|
case Boolean(maxTime && isAfter(value, maxTime)):
|
|
42
42
|
return 'maxTime';
|
|
43
|
-
case Boolean(disableFuture && adapter.
|
|
43
|
+
case Boolean(disableFuture && adapter.isAfter(value, now)):
|
|
44
44
|
return 'disableFuture';
|
|
45
|
-
case Boolean(disablePast && adapter.
|
|
45
|
+
case Boolean(disablePast && adapter.isBefore(value, now)):
|
|
46
46
|
return 'disablePast';
|
|
47
47
|
case Boolean(shouldDisableTime && shouldDisableTime(value, 'hours')):
|
|
48
48
|
return 'shouldDisableTime-hours';
|
|
@@ -50,7 +50,7 @@ export const validateTime = ({
|
|
|
50
50
|
return 'shouldDisableTime-minutes';
|
|
51
51
|
case Boolean(shouldDisableTime && shouldDisableTime(value, 'seconds')):
|
|
52
52
|
return 'shouldDisableTime-seconds';
|
|
53
|
-
case Boolean(minutesStep && adapter.
|
|
53
|
+
case Boolean(minutesStep && adapter.getMinutes(value) % minutesStep !== 0):
|
|
54
54
|
return 'minutesStep';
|
|
55
55
|
default:
|
|
56
56
|
return null;
|
package/hooks/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export { useSplitFieldProps } from "./useSplitFieldProps.js";
|
|
|
3
3
|
export { useParsedFormat } from "./useParsedFormat.js";
|
|
4
4
|
export { usePickerContext } from "./usePickerContext.js";
|
|
5
5
|
export { usePickerActionsContext } from "./usePickerActionsContext.js";
|
|
6
|
-
export { useIsValidValue } from "./useIsValidValue.js";
|
|
6
|
+
export { useIsValidValue } from "./useIsValidValue.js";
|
|
7
|
+
export { usePickerAdapter } from "./usePickerAdapter.js";
|
package/hooks/index.js
CHANGED
|
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "usePickerActionsContext", {
|
|
|
21
21
|
return _usePickerActionsContext.usePickerActionsContext;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "usePickerAdapter", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _usePickerAdapter.usePickerAdapter;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "usePickerContext", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function () {
|
|
@@ -44,4 +50,5 @@ var _useSplitFieldProps = require("./useSplitFieldProps");
|
|
|
44
50
|
var _useParsedFormat = require("./useParsedFormat");
|
|
45
51
|
var _usePickerContext = require("./usePickerContext");
|
|
46
52
|
var _usePickerActionsContext = require("./usePickerActionsContext");
|
|
47
|
-
var _useIsValidValue = require("./useIsValidValue");
|
|
53
|
+
var _useIsValidValue = require("./useIsValidValue");
|
|
54
|
+
var _usePickerAdapter = require("./usePickerAdapter");
|
package/hooks/useParsedFormat.js
CHANGED
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.useParsedFormat = void 0;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
11
|
-
var
|
|
11
|
+
var _usePickerAdapter = require("./usePickerAdapter");
|
|
12
12
|
var _buildSectionsFromFormat = require("../internals/hooks/useField/buildSectionsFromFormat");
|
|
13
13
|
var _useField = require("../internals/hooks/useField/useField.utils");
|
|
14
14
|
var _usePickerTranslations = require("./usePickerTranslations");
|
|
@@ -22,16 +22,16 @@ var _useNullablePickerContext = require("../internals/hooks/useNullablePickerCon
|
|
|
22
22
|
*/
|
|
23
23
|
const useParsedFormat = (parameters = {}) => {
|
|
24
24
|
const pickerContext = (0, _useNullablePickerContext.useNullablePickerContext)();
|
|
25
|
-
const
|
|
25
|
+
const adapter = (0, _usePickerAdapter.usePickerAdapter)();
|
|
26
26
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
27
27
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
28
|
-
const localizedDigits = React.useMemo(() => (0, _useField.getLocalizedDigits)(
|
|
28
|
+
const localizedDigits = React.useMemo(() => (0, _useField.getLocalizedDigits)(adapter), [adapter]);
|
|
29
29
|
const {
|
|
30
|
-
format = pickerContext?.fieldFormat ??
|
|
30
|
+
format = pickerContext?.fieldFormat ?? adapter.formats.fullDate
|
|
31
31
|
} = parameters;
|
|
32
32
|
return React.useMemo(() => {
|
|
33
33
|
const sections = (0, _buildSectionsFromFormat.buildSectionsFromFormat)({
|
|
34
|
-
|
|
34
|
+
adapter,
|
|
35
35
|
format,
|
|
36
36
|
formatDensity: 'dense',
|
|
37
37
|
isRtl,
|
|
@@ -43,6 +43,6 @@ const useParsedFormat = (parameters = {}) => {
|
|
|
43
43
|
enableAccessibleFieldDOMStructure: false
|
|
44
44
|
});
|
|
45
45
|
return sections.map(section => `${section.startSeparator}${section.placeholder}${section.endSeparator}`).join('');
|
|
46
|
-
}, [
|
|
46
|
+
}, [adapter, isRtl, translations, localizedDigits, format]);
|
|
47
47
|
};
|
|
48
48
|
exports.useParsedFormat = useParsedFormat;
|