@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
|
@@ -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 var testCalculations = function testCalculations(_ref) {
|
|
4
5
|
var adapter = _ref.adapter,
|
|
5
6
|
adapterTZ = _ref.adapterTZ,
|
|
6
7
|
adapterFr = _ref.adapterFr,
|
|
7
|
-
setDefaultTimezone = _ref.setDefaultTimezone
|
|
8
|
+
setDefaultTimezone = _ref.setDefaultTimezone,
|
|
9
|
+
getLocaleFromDate = _ref.getLocaleFromDate;
|
|
8
10
|
var testDateIso = adapter.date(TEST_DATE_ISO_STRING);
|
|
9
11
|
var testDateLocale = adapter.date(TEST_DATE_LOCALE_STRING);
|
|
10
12
|
describe('Method: date', function () {
|
|
@@ -114,25 +116,27 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
114
116
|
testTimezone('default', 'America/Chicago');
|
|
115
117
|
setDefaultTimezone(undefined);
|
|
116
118
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
test('Europe/Paris');
|
|
119
|
+
it('Method: setTimezone', function () {
|
|
120
|
+
if (adapter.isTimezoneCompatible) {
|
|
121
|
+
var test = function test(timezone) {
|
|
122
|
+
setDefaultTimezone(timezone);
|
|
123
|
+
var dateWithLocaleTimezone = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'system');
|
|
124
|
+
var dateWithDefaultTimezone = adapter.setTimezone(dateWithLocaleTimezone, 'default');
|
|
125
|
+
expect(adapter.getTimezone(dateWithDefaultTimezone)).to.equal(timezone);
|
|
126
|
+
};
|
|
127
|
+
test('America/New_York');
|
|
128
|
+
test('Europe/Paris');
|
|
128
129
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
// Reset to the default timezone
|
|
131
|
+
setDefaultTimezone(undefined);
|
|
132
|
+
} else {
|
|
133
|
+
var systemDate = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'system');
|
|
134
|
+
expect(adapter.setTimezone(systemDate, 'default')).toEqualDateTime(systemDate);
|
|
135
|
+
expect(adapter.setTimezone(systemDate, 'system')).toEqualDateTime(systemDate);
|
|
136
|
+
var defaultDate = adapter.dateWithTimezone(TEST_DATE_ISO_STRING, 'default');
|
|
137
|
+
expect(adapter.setTimezone(systemDate, 'default')).toEqualDateTime(defaultDate);
|
|
138
|
+
expect(adapter.setTimezone(systemDate, 'system')).toEqualDateTime(defaultDate);
|
|
139
|
+
}
|
|
136
140
|
});
|
|
137
141
|
it('Method: toJsDate', function () {
|
|
138
142
|
expect(adapter.toJsDate(testDateIso)).to.be.instanceOf(Date);
|
|
@@ -146,9 +150,6 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
146
150
|
if (adapter.lib === 'date-fns') {
|
|
147
151
|
// date-fns never suppress useless milliseconds in the end
|
|
148
152
|
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING.replace('.000Z', 'Z'));
|
|
149
|
-
} else if (adapter.lib === 'luxon') {
|
|
150
|
-
// luxon does not shorthand +00:00 to Z, which is also valid ISO string
|
|
151
|
-
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING.replace('Z', '+00:00'));
|
|
152
153
|
} else {
|
|
153
154
|
expect(outputtedISO).to.equal(TEST_DATE_ISO_STRING);
|
|
154
155
|
}
|
|
@@ -549,6 +550,9 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
549
550
|
it('Method: getSeconds', function () {
|
|
550
551
|
expect(adapter.getSeconds(testDateIso)).to.equal(0);
|
|
551
552
|
});
|
|
553
|
+
it('Method: getMilliseconds', function () {
|
|
554
|
+
expect(adapter.getMilliseconds(testDateIso)).to.equal(0);
|
|
555
|
+
});
|
|
552
556
|
it('Method: setYear', function () {
|
|
553
557
|
expect(adapter.setYear(testDateIso, 2011)).toEqualDateTime('2011-10-30T11:44:00.000Z');
|
|
554
558
|
});
|
|
@@ -567,6 +571,9 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
567
571
|
it('Method: setSeconds', function () {
|
|
568
572
|
expect(adapter.setSeconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:11.000Z');
|
|
569
573
|
});
|
|
574
|
+
it('Method: setMilliseconds', function () {
|
|
575
|
+
expect(adapter.setMilliseconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:00.011Z');
|
|
576
|
+
});
|
|
570
577
|
it('Method: getDaysInMonth', function () {
|
|
571
578
|
expect(adapter.getDaysInMonth(testDateIso)).to.equal(31);
|
|
572
579
|
expect(adapter.getDaysInMonth(testDateLocale)).to.equal(31);
|
|
@@ -598,11 +605,46 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
598
605
|
date = adapter.addDays(date, 1);
|
|
599
606
|
});
|
|
600
607
|
});
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
expect(
|
|
608
|
+
describe('Method: getWeekArray', function () {
|
|
609
|
+
it('should work without timezones', function () {
|
|
610
|
+
var weekArray = adapter.getWeekArray(testDateIso);
|
|
611
|
+
var expectedDate = adapter.startOfWeek(adapter.startOfMonth(testDateIso));
|
|
612
|
+
expect(weekArray).to.have.length(5);
|
|
613
|
+
weekArray.forEach(function (week) {
|
|
614
|
+
expect(week).to.have.length(7);
|
|
615
|
+
week.forEach(function (day) {
|
|
616
|
+
expect(day).toEqualDateTime(expectedDate);
|
|
617
|
+
expectedDate = adapter.addDays(expectedDate, 1);
|
|
618
|
+
});
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
it('should respect the DST', function test() {
|
|
622
|
+
if (!adapterTZ.isTimezoneCompatible) {
|
|
623
|
+
this.skip();
|
|
624
|
+
}
|
|
625
|
+
var referenceDate = adapterTZ.dateWithTimezone('2022-03-17', 'Europe/Paris');
|
|
626
|
+
var weekArray = adapterTZ.getWeekArray(referenceDate);
|
|
627
|
+
var expectedDate = adapter.startOfWeek(adapter.startOfMonth(referenceDate));
|
|
628
|
+
var lastNonDSTDay = adapterTZ.dateWithTimezone('2022-03-27', 'Europe/Paris');
|
|
629
|
+
expect(weekArray).to.have.length(5);
|
|
630
|
+
weekArray.forEach(function (week) {
|
|
631
|
+
expect(week).to.have.length(7);
|
|
632
|
+
week.forEach(function (day) {
|
|
633
|
+
expect(adapterTZ.startOfDay(day)).toEqualDateTime(adapterTZ.startOfDay(expectedDate));
|
|
634
|
+
expectedDate = adapterTZ.addDays(expectedDate, 1);
|
|
635
|
+
expect(getDateOffset(adapterTZ, day)).to.equal(adapterTZ.isAfter(day, lastNonDSTDay) ? 120 : 60);
|
|
636
|
+
});
|
|
637
|
+
});
|
|
638
|
+
});
|
|
639
|
+
it('should respect the locale of the adapter, not the locale of the date', function test() {
|
|
640
|
+
var dateFr = adapterFr.dateWithTimezone('2022-03-17', 'default');
|
|
641
|
+
var weekArray = adapter.getWeekArray(dateFr);
|
|
642
|
+
if (getLocaleFromDate) {
|
|
643
|
+
expect(getLocaleFromDate(weekArray[0][0])).to.match(/en/);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
// Week should start on Monday (28th of March) for adapters supporting locale-based week start.
|
|
647
|
+
expect(adapter.getDate(weekArray[0][0])).to.equal(adapter.lib === 'luxon' ? 28 : 27);
|
|
606
648
|
});
|
|
607
649
|
});
|
|
608
650
|
it('Method: getWeekNumber', function () {
|
|
@@ -162,6 +162,15 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
162
162
|
it('Method: getDate', function () {
|
|
163
163
|
expect(adapter.getDate(testDateIso)).to.equal(8);
|
|
164
164
|
});
|
|
165
|
+
it('Method: getMinutes', function () {
|
|
166
|
+
expect(adapter.getMinutes(testDateIso)).to.equal(44);
|
|
167
|
+
});
|
|
168
|
+
it('Method: getSeconds', function () {
|
|
169
|
+
expect(adapter.getSeconds(testDateIso)).to.equal(0);
|
|
170
|
+
});
|
|
171
|
+
it('Method: getMilliseconds', function () {
|
|
172
|
+
expect(adapter.getMilliseconds(testDateIso)).to.equal(0);
|
|
173
|
+
});
|
|
165
174
|
it('Method: setYear', function () {
|
|
166
175
|
expect(adapter.setYear(testDateIso, 1398)).toEqualDateTime('2019-10-30T11:44:00.000Z');
|
|
167
176
|
});
|
|
@@ -171,6 +180,18 @@ export var testCalculations = function testCalculations(_ref) {
|
|
|
171
180
|
it('Method: setDate', function () {
|
|
172
181
|
expect(adapter.setDate(testDateIso, 9)).toEqualDateTime('2018-10-31T11:44:00.000Z');
|
|
173
182
|
});
|
|
183
|
+
it('Method: setHours', function () {
|
|
184
|
+
expect(adapter.setHours(testDateIso, 0)).toEqualDateTime('2018-10-30T00:44:00.000Z');
|
|
185
|
+
});
|
|
186
|
+
it('Method: setMinutes', function () {
|
|
187
|
+
expect(adapter.setMinutes(testDateIso, 12)).toEqualDateTime('2018-10-30T11:12:00.000Z');
|
|
188
|
+
});
|
|
189
|
+
it('Method: setSeconds', function () {
|
|
190
|
+
expect(adapter.setSeconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:11.000Z');
|
|
191
|
+
});
|
|
192
|
+
it('Method: setMilliseconds', function () {
|
|
193
|
+
expect(adapter.setMilliseconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:00.011Z');
|
|
194
|
+
});
|
|
174
195
|
it('Method: getNextMonth', function () {
|
|
175
196
|
expect(adapter.getNextMonth(testDateIso)).toEqualDateTime('2018-11-29T11:44:00.000Z');
|
|
176
197
|
});
|
|
@@ -33,7 +33,8 @@ export var renderTimeViewClock = function renderTimeViewClock(_ref) {
|
|
|
33
33
|
sx = _ref.sx,
|
|
34
34
|
autoFocus = _ref.autoFocus,
|
|
35
35
|
showViewSwitcher = _ref.showViewSwitcher,
|
|
36
|
-
disableIgnoringDatePartForTimeValidation = _ref.disableIgnoringDatePartForTimeValidation
|
|
36
|
+
disableIgnoringDatePartForTimeValidation = _ref.disableIgnoringDatePartForTimeValidation,
|
|
37
|
+
timezone = _ref.timezone;
|
|
37
38
|
return /*#__PURE__*/_jsx(TimeClock, {
|
|
38
39
|
view: view,
|
|
39
40
|
onViewChange: onViewChange,
|
|
@@ -63,7 +64,8 @@ export var renderTimeViewClock = function renderTimeViewClock(_ref) {
|
|
|
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
|
};
|
|
69
71
|
export var renderDigitalClockTimeView = function renderDigitalClockTimeView(_ref2) {
|
|
@@ -95,7 +97,8 @@ export var renderDigitalClockTimeView = function renderDigitalClockTimeView(_ref
|
|
|
95
97
|
autoFocus = _ref2.autoFocus,
|
|
96
98
|
disableIgnoringDatePartForTimeValidation = _ref2.disableIgnoringDatePartForTimeValidation,
|
|
97
99
|
timeSteps = _ref2.timeSteps,
|
|
98
|
-
skipDisabled = _ref2.skipDisabled
|
|
100
|
+
skipDisabled = _ref2.skipDisabled,
|
|
101
|
+
timezone = _ref2.timezone;
|
|
99
102
|
return /*#__PURE__*/_jsx(DigitalClock, {
|
|
100
103
|
view: view,
|
|
101
104
|
onViewChange: onViewChange,
|
|
@@ -125,7 +128,8 @@ export var renderDigitalClockTimeView = function renderDigitalClockTimeView(_ref
|
|
|
125
128
|
autoFocus: autoFocus,
|
|
126
129
|
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
|
|
127
130
|
timeStep: timeSteps == null ? void 0 : timeSteps.minutes,
|
|
128
|
-
skipDisabled: skipDisabled
|
|
131
|
+
skipDisabled: skipDisabled,
|
|
132
|
+
timezone: timezone
|
|
129
133
|
});
|
|
130
134
|
};
|
|
131
135
|
export var renderMultiSectionDigitalClockTimeView = function renderMultiSectionDigitalClockTimeView(_ref3) {
|
|
@@ -157,7 +161,8 @@ export var renderMultiSectionDigitalClockTimeView = function renderMultiSectionD
|
|
|
157
161
|
autoFocus = _ref3.autoFocus,
|
|
158
162
|
disableIgnoringDatePartForTimeValidation = _ref3.disableIgnoringDatePartForTimeValidation,
|
|
159
163
|
timeSteps = _ref3.timeSteps,
|
|
160
|
-
skipDisabled = _ref3.skipDisabled
|
|
164
|
+
skipDisabled = _ref3.skipDisabled,
|
|
165
|
+
timezone = _ref3.timezone;
|
|
161
166
|
return /*#__PURE__*/_jsx(MultiSectionDigitalClock, {
|
|
162
167
|
view: view,
|
|
163
168
|
onViewChange: onViewChange,
|
|
@@ -187,6 +192,7 @@ export var renderMultiSectionDigitalClockTimeView = function renderMultiSectionD
|
|
|
187
192
|
autoFocus: autoFocus,
|
|
188
193
|
disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
|
|
189
194
|
timeSteps: timeSteps,
|
|
190
|
-
skipDisabled: skipDisabled
|
|
195
|
+
skipDisabled: skipDisabled,
|
|
196
|
+
timezone: timezone
|
|
191
197
|
});
|
|
192
198
|
};
|
package/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,53 @@
|
|
|
1
|
+
import { TimeViewWithMeridiem } from '../internals/models';
|
|
2
|
+
export declare const elGR: {
|
|
3
|
+
components: {
|
|
4
|
+
MuiLocalizationProvider: {
|
|
5
|
+
defaultProps: {
|
|
6
|
+
localeText: {
|
|
7
|
+
previousMonth?: string | undefined;
|
|
8
|
+
nextMonth?: string | undefined;
|
|
9
|
+
calendarWeekNumberHeaderLabel?: string | undefined;
|
|
10
|
+
calendarWeekNumberHeaderText?: string | undefined;
|
|
11
|
+
calendarWeekNumberAriaLabelText?: ((weekNumber: number) => string) | undefined;
|
|
12
|
+
calendarWeekNumberText?: ((weekNumber: number) => string) | undefined;
|
|
13
|
+
openPreviousView?: string | undefined;
|
|
14
|
+
openNextView?: string | undefined;
|
|
15
|
+
calendarViewSwitchingButtonAriaLabel?: ((currentView: import("..").DateView) => string) | undefined;
|
|
16
|
+
start?: string | undefined;
|
|
17
|
+
end?: string | undefined;
|
|
18
|
+
cancelButtonLabel?: string | undefined;
|
|
19
|
+
clearButtonLabel?: string | undefined;
|
|
20
|
+
okButtonLabel?: string | undefined;
|
|
21
|
+
todayButtonLabel?: string | undefined;
|
|
22
|
+
clockLabelText?: ((view: import("..").TimeView, time: any, adapter: import("..").MuiPickersAdapter<any, any>) => string) | undefined;
|
|
23
|
+
hoursClockNumberText?: ((hours: string) => string) | undefined;
|
|
24
|
+
minutesClockNumberText?: ((minutes: string) => string) | undefined;
|
|
25
|
+
secondsClockNumberText?: ((seconds: string) => string) | undefined;
|
|
26
|
+
selectViewText?: ((view: TimeViewWithMeridiem) => string) | undefined;
|
|
27
|
+
openDatePickerDialogue?: ((date: any, utils: import("..").MuiPickersAdapter<any, any>) => string) | undefined;
|
|
28
|
+
openTimePickerDialogue?: ((date: any, utils: import("..").MuiPickersAdapter<any, any>) => string) | undefined;
|
|
29
|
+
timeTableLabel?: string | undefined;
|
|
30
|
+
dateTableLabel?: string | undefined;
|
|
31
|
+
fieldYearPlaceholder?: ((params: {
|
|
32
|
+
digitAmount: number;
|
|
33
|
+
}) => string) | undefined;
|
|
34
|
+
fieldMonthPlaceholder?: ((params: {
|
|
35
|
+
contentType: import("..").FieldSectionContentType;
|
|
36
|
+
}) => string) | undefined;
|
|
37
|
+
fieldDayPlaceholder?: (() => string) | undefined;
|
|
38
|
+
fieldWeekDayPlaceholder?: ((params: {
|
|
39
|
+
contentType: import("..").FieldSectionContentType;
|
|
40
|
+
}) => string) | undefined;
|
|
41
|
+
fieldHoursPlaceholder?: (() => string) | undefined;
|
|
42
|
+
fieldMinutesPlaceholder?: (() => string) | undefined;
|
|
43
|
+
fieldSecondsPlaceholder?: (() => string) | undefined;
|
|
44
|
+
fieldMeridiemPlaceholder?: (() => string) | undefined;
|
|
45
|
+
datePickerToolbarTitle?: string | undefined;
|
|
46
|
+
timePickerToolbarTitle?: string | undefined;
|
|
47
|
+
dateTimePickerToolbarTitle?: string | undefined;
|
|
48
|
+
dateRangePickerToolbarTitle?: string | undefined;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
package/locales/elGR.js
ADDED
|
@@ -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/locales/index.d.ts
CHANGED
package/locales/index.js
CHANGED
package/models/adapters.d.ts
CHANGED
|
@@ -209,7 +209,7 @@ export interface MuiPickersAdapter<TDate, TLocale = any> {
|
|
|
209
209
|
* If a `value` parameter is provided, pass it to the date library to try to parse it.
|
|
210
210
|
* @template TDate
|
|
211
211
|
* @param {string | null | undefined} value The optional value to parse.
|
|
212
|
-
* @param {
|
|
212
|
+
* @param {PickersTimezone} timezone The timezone of the date.
|
|
213
213
|
* @returns {TDate | null} The parsed date.
|
|
214
214
|
*/
|
|
215
215
|
dateWithTimezone(value: string | null | undefined, timezone: PickersTimezone): TDate | null;
|
|
@@ -223,7 +223,7 @@ export interface MuiPickersAdapter<TDate, TLocale = any> {
|
|
|
223
223
|
* Convert a date to another timezone.
|
|
224
224
|
* @template TDate
|
|
225
225
|
* @param {TDate} value The date to convert.
|
|
226
|
-
* @param {
|
|
226
|
+
* @param {PickersTimezone} timezone The timezone to convert the date to.
|
|
227
227
|
* @returns {TDate} The converted date.
|
|
228
228
|
*/
|
|
229
229
|
setTimezone(value: TDate, timezone: PickersTimezone): TDate;
|
package/models/timezone.d.ts
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
1
|
export type PickersTimezone = 'default' | 'system' | 'UTC' | string;
|
|
2
|
+
export interface TimezoneProps {
|
|
3
|
+
/**
|
|
4
|
+
* Choose which timezone to use for the value.
|
|
5
|
+
* Example: "default", "system", "UTC", "America/New_York".
|
|
6
|
+
* If you pass values from other timezones to some props, they will be converted to this timezone before being used.
|
|
7
|
+
* @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
|
|
8
|
+
* @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
|
|
9
|
+
*/
|
|
10
|
+
timezone?: PickersTimezone;
|
|
11
|
+
}
|
|
@@ -183,9 +183,27 @@ export class AdapterDayjs {
|
|
|
183
183
|
const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
|
|
184
184
|
return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);
|
|
185
185
|
};
|
|
186
|
+
/**
|
|
187
|
+
* Replace "default" by undefined before passing it to `dayjs
|
|
188
|
+
*/
|
|
189
|
+
this.cleanTimezone = timezone => timezone === 'default' ? undefined : timezone;
|
|
186
190
|
this.createSystemDate = value => {
|
|
187
191
|
// TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)
|
|
188
|
-
|
|
192
|
+
/* istanbul ignore next */
|
|
193
|
+
if (this.rawDayJsInstance) {
|
|
194
|
+
return this.rawDayJsInstance(value);
|
|
195
|
+
}
|
|
196
|
+
if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {
|
|
197
|
+
const timezone = defaultDayjs.tz.guess();
|
|
198
|
+
|
|
199
|
+
// We can't change the system timezone in the tests
|
|
200
|
+
/* istanbul ignore next */
|
|
201
|
+
if (timezone !== 'UTC') {
|
|
202
|
+
return defaultDayjs.tz(value, timezone);
|
|
203
|
+
}
|
|
204
|
+
return defaultDayjs(value);
|
|
205
|
+
}
|
|
206
|
+
return defaultDayjs(value);
|
|
189
207
|
};
|
|
190
208
|
this.createUTCDate = value => {
|
|
191
209
|
/* istanbul ignore next */
|
|
@@ -204,9 +222,8 @@ export class AdapterDayjs {
|
|
|
204
222
|
if (!this.hasTimezonePlugin()) {
|
|
205
223
|
throw new Error(MISSING_TIMEZONE_PLUGIN);
|
|
206
224
|
}
|
|
207
|
-
const cleanTimezone = timezone === 'default' ? undefined : timezone;
|
|
208
225
|
const keepLocalTime = value !== undefined && !value.endsWith('Z');
|
|
209
|
-
return defaultDayjs(value).tz(cleanTimezone, keepLocalTime);
|
|
226
|
+
return defaultDayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime);
|
|
210
227
|
};
|
|
211
228
|
this.getLocaleFormats = () => {
|
|
212
229
|
const locales = defaultDayjs.Ls;
|
|
@@ -263,11 +280,12 @@ export class AdapterDayjs {
|
|
|
263
280
|
}
|
|
264
281
|
return value.utc();
|
|
265
282
|
}
|
|
283
|
+
|
|
284
|
+
// We know that we have the UTC plugin.
|
|
285
|
+
// Otherwise, the value timezone would always equal "system".
|
|
286
|
+
// And it would be caught by the first "if" of this method.
|
|
266
287
|
if (timezone === 'system') {
|
|
267
|
-
|
|
268
|
-
return value.local();
|
|
269
|
-
}
|
|
270
|
-
return value;
|
|
288
|
+
return value.local();
|
|
271
289
|
}
|
|
272
290
|
if (!this.hasTimezonePlugin()) {
|
|
273
291
|
if (timezone === 'default') {
|
|
@@ -277,8 +295,7 @@ export class AdapterDayjs {
|
|
|
277
295
|
/* istanbul ignore next */
|
|
278
296
|
throw new Error(MISSING_TIMEZONE_PLUGIN);
|
|
279
297
|
}
|
|
280
|
-
|
|
281
|
-
return defaultDayjs.tz(value, cleanZone);
|
|
298
|
+
return defaultDayjs.tz(value, this.cleanTimezone(timezone));
|
|
282
299
|
};
|
|
283
300
|
this.toJsDate = value => {
|
|
284
301
|
return value.toDate();
|
|
@@ -337,7 +354,7 @@ export class AdapterDayjs {
|
|
|
337
354
|
if (value === null && comparing === null) {
|
|
338
355
|
return true;
|
|
339
356
|
}
|
|
340
|
-
return this.dayjs(value).
|
|
357
|
+
return this.dayjs(value).toDate().getTime() === this.dayjs(comparing).toDate().getTime();
|
|
341
358
|
};
|
|
342
359
|
this.isSameYear = (value, comparing) => {
|
|
343
360
|
return this.isSame(value, comparing, 'YYYY');
|
|
@@ -497,9 +514,10 @@ export class AdapterDayjs {
|
|
|
497
514
|
return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(start.add(diff, 'day'), 'dd'));
|
|
498
515
|
};
|
|
499
516
|
this.getWeekArray = value => {
|
|
500
|
-
const
|
|
501
|
-
const
|
|
502
|
-
const
|
|
517
|
+
const timezone = this.getTimezone(value);
|
|
518
|
+
const cleanValue = this.setLocaleToValue(value);
|
|
519
|
+
const start = cleanValue.startOf('month').startOf('week');
|
|
520
|
+
const end = cleanValue.endOf('month').endOf('week');
|
|
503
521
|
let count = 0;
|
|
504
522
|
let current = start;
|
|
505
523
|
const nestedWeeks = [];
|
|
@@ -508,6 +526,14 @@ export class AdapterDayjs {
|
|
|
508
526
|
nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
|
|
509
527
|
nestedWeeks[weekNumber].push(current);
|
|
510
528
|
current = current.add(1, 'day');
|
|
529
|
+
|
|
530
|
+
// If the new day does not have the same offset as the old one (when switching to summer day time for example),
|
|
531
|
+
// Then dayjs will not automatically adjust the offset (moment does)
|
|
532
|
+
// We have to parse again the value to make sure the `fixOffset` method is applied
|
|
533
|
+
// See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
|
|
534
|
+
if (this.hasTimezonePlugin() && timezone !== 'UTC' && timezone !== 'system') {
|
|
535
|
+
current = current.tz(this.cleanTimezone(timezone), true);
|
|
536
|
+
}
|
|
511
537
|
count += 1;
|
|
512
538
|
}
|
|
513
539
|
return nestedWeeks;
|
|
@@ -529,8 +555,8 @@ export class AdapterDayjs {
|
|
|
529
555
|
this.getMeridiemText = ampm => {
|
|
530
556
|
return ampm === 'am' ? 'AM' : 'PM';
|
|
531
557
|
};
|
|
532
|
-
this.rawDayJsInstance = instance
|
|
533
|
-
this.dayjs = withLocale(this.rawDayJsInstance, _locale);
|
|
558
|
+
this.rawDayJsInstance = instance;
|
|
559
|
+
this.dayjs = withLocale(this.rawDayJsInstance ?? defaultDayjs, _locale);
|
|
534
560
|
this.locale = _locale;
|
|
535
561
|
this.formats = _extends({}, defaultFormats, formats);
|
|
536
562
|
defaultDayjs.extend(weekOfYear);
|
|
@@ -178,6 +178,13 @@ export class AdapterLuxon {
|
|
|
178
178
|
end: "'"
|
|
179
179
|
};
|
|
180
180
|
this.formatTokenMap = formatTokenMap;
|
|
181
|
+
this.setLocaleToValue = value => {
|
|
182
|
+
const expectedLocale = this.getCurrentLocaleCode();
|
|
183
|
+
if (expectedLocale === value.locale) {
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
return value.setLocale(expectedLocale);
|
|
187
|
+
};
|
|
181
188
|
this.date = value => {
|
|
182
189
|
if (typeof value === 'undefined') {
|
|
183
190
|
return DateTime.local();
|
|
@@ -223,7 +230,7 @@ export class AdapterLuxon {
|
|
|
223
230
|
if (value.zone.type === 'system') {
|
|
224
231
|
return 'system';
|
|
225
232
|
}
|
|
226
|
-
return value.zoneName
|
|
233
|
+
return value.zoneName;
|
|
227
234
|
};
|
|
228
235
|
this.setTimezone = (value, timezone) => {
|
|
229
236
|
if (!value.zone.equals(Info.normalizeZone(timezone))) {
|
|
@@ -238,7 +245,7 @@ export class AdapterLuxon {
|
|
|
238
245
|
return DateTime.fromISO(isoString);
|
|
239
246
|
};
|
|
240
247
|
this.toISO = value => {
|
|
241
|
-
return value.toISO({
|
|
248
|
+
return value.toUTC().toISO({
|
|
242
249
|
format: 'extended'
|
|
243
250
|
});
|
|
244
251
|
};
|
|
@@ -520,11 +527,12 @@ export class AdapterLuxon {
|
|
|
520
527
|
});
|
|
521
528
|
};
|
|
522
529
|
this.getWeekArray = value => {
|
|
530
|
+
const cleanValue = this.setLocaleToValue(value);
|
|
523
531
|
const {
|
|
524
532
|
days
|
|
525
|
-
} =
|
|
533
|
+
} = cleanValue.endOf('month').endOf('week').diff(cleanValue.startOf('month').startOf('week'), 'days').toObject();
|
|
526
534
|
const weeks = [];
|
|
527
|
-
new Array(Math.round(days)).fill(0).map((_, i) => i).map(day =>
|
|
535
|
+
new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => cleanValue.startOf('month').startOf('week').plus({
|
|
528
536
|
days: day
|
|
529
537
|
})).forEach((v, i) => {
|
|
530
538
|
if (i === 0 || i % 7 === 0 && i > 6) {
|
|
@@ -6,7 +6,11 @@ const formatTokenMap = {
|
|
|
6
6
|
// Year
|
|
7
7
|
Y: 'year',
|
|
8
8
|
YY: 'year',
|
|
9
|
-
YYYY:
|
|
9
|
+
YYYY: {
|
|
10
|
+
sectionType: 'year',
|
|
11
|
+
contentType: 'digit',
|
|
12
|
+
maxLength: 4
|
|
13
|
+
},
|
|
10
14
|
// Month
|
|
11
15
|
M: {
|
|
12
16
|
sectionType: 'month',
|
|
@@ -232,6 +236,9 @@ export class AdapterMoment {
|
|
|
232
236
|
return zone ?? this.moment.defaultZone?.name ?? 'system';
|
|
233
237
|
};
|
|
234
238
|
this.setTimezone = (value, timezone) => {
|
|
239
|
+
if (this.getTimezone(value) === timezone) {
|
|
240
|
+
return value;
|
|
241
|
+
}
|
|
235
242
|
if (timezone === 'UTC') {
|
|
236
243
|
return value.clone().utc();
|
|
237
244
|
}
|
|
@@ -239,16 +246,18 @@ export class AdapterMoment {
|
|
|
239
246
|
return value.clone().local();
|
|
240
247
|
}
|
|
241
248
|
if (!this.hasTimezonePlugin()) {
|
|
242
|
-
if (timezone === 'default') {
|
|
243
|
-
return value;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
249
|
/* istanbul ignore next */
|
|
247
|
-
|
|
250
|
+
if (timezone !== 'default') {
|
|
251
|
+
throw new Error(MISSING_TIMEZONE_PLUGIN);
|
|
252
|
+
}
|
|
253
|
+
return value;
|
|
248
254
|
}
|
|
249
255
|
const cleanZone = timezone === 'default' ?
|
|
250
256
|
// @ts-ignore
|
|
251
257
|
this.moment.defaultZone?.name ?? 'system' : timezone;
|
|
258
|
+
if (cleanZone === 'system') {
|
|
259
|
+
return value.clone().local();
|
|
260
|
+
}
|
|
252
261
|
const newValue = value.clone();
|
|
253
262
|
newValue.tz(cleanZone);
|
|
254
263
|
return newValue;
|
|
@@ -462,9 +471,9 @@ export class AdapterMoment {
|
|
|
462
471
|
return defaultMoment.weekdaysShort(true);
|
|
463
472
|
};
|
|
464
473
|
this.getWeekArray = value => {
|
|
465
|
-
const
|
|
466
|
-
const start =
|
|
467
|
-
const end =
|
|
474
|
+
const cleanValue = this.setLocaleToValue(value);
|
|
475
|
+
const start = cleanValue.clone().startOf('month').startOf('week');
|
|
476
|
+
const end = cleanValue.clone().endOf('month').endOf('week');
|
|
468
477
|
let count = 0;
|
|
469
478
|
let current = start;
|
|
470
479
|
const nestedWeeks = [];
|