@mui/x-date-pickers 7.4.0 → 7.5.1
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/AdapterDateFns/AdapterDateFns.d.ts +5 -0
- package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -5
- package/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +3 -20
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
- package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts +3 -20
- package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
- package/AdapterDateFnsV3/AdapterDateFnsV3.d.ts +5 -0
- package/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -1
- package/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
- package/CHANGELOG.md +132 -5395
- package/DateCalendar/DateCalendar.js +6 -5
- package/DateField/DateField.js +1 -1
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePickerToolbar.js +1 -1
- package/DateTimeField/DateTimeField.js +1 -1
- package/DateTimePicker/DateTimePicker.js +1 -1
- package/DateTimePicker/DateTimePickerTabs.js +1 -1
- package/DateTimePicker/DateTimePickerToolbar.js +1 -27
- package/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
- package/DesktopDatePicker/DesktopDatePicker.js +1 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
- package/DesktopTimePicker/DesktopTimePicker.js +1 -1
- package/DigitalClock/DigitalClock.js +1 -1
- package/LocalizationProvider/LocalizationProvider.js +1 -1
- package/MobileDatePicker/MobileDatePicker.js +1 -1
- package/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
- package/MobileTimePicker/MobileTimePicker.js +1 -1
- package/MonthCalendar/MonthCalendar.js +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
- package/PickersActionBar/PickersActionBar.js +1 -1
- package/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
- package/PickersDay/PickersDay.js +1 -1
- package/PickersLayout/PickersLayout.d.ts +1 -2
- package/PickersLayout/PickersLayout.js +2 -14
- package/PickersLayout/usePickerLayout.js +6 -7
- package/PickersSectionList/PickersSectionList.js +1 -1
- package/PickersShortcuts/PickersShortcuts.js +1 -1
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
- package/PickersTextField/PickersInput/PickersInput.js +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
- package/PickersTextField/PickersTextField.js +1 -1
- package/StaticDatePicker/StaticDatePicker.js +1 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/StaticTimePicker/StaticTimePicker.js +1 -1
- package/TimeClock/TimeClock.js +1 -1
- package/TimeField/TimeField.js +1 -1
- package/TimePicker/TimePicker.js +1 -1
- package/TimePicker/TimePickerToolbar.js +1 -19
- package/YearCalendar/YearCalendar.js +1 -1
- package/index.js +1 -1
- package/internals/components/PickersModalDialog.d.ts +2 -2
- package/internals/demo/DemoContainer.js +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
- package/internals/hooks/useField/useFieldV6TextField.js +1 -1
- package/internals/hooks/usePicker/usePickerViews.d.ts +2 -3
- package/internals/hooks/usePicker/usePickerViews.js +3 -5
- package/modern/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
- package/modern/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
- package/modern/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -1
- package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
- package/modern/DateCalendar/DateCalendar.js +6 -5
- package/modern/DateField/DateField.js +1 -1
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +1 -1
- package/modern/DateTimeField/DateTimeField.js +1 -1
- package/modern/DateTimePicker/DateTimePicker.js +1 -1
- package/modern/DateTimePicker/DateTimePickerTabs.js +1 -1
- package/modern/DateTimePicker/DateTimePickerToolbar.js +1 -27
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
- package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
- package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -1
- package/modern/DigitalClock/DigitalClock.js +1 -1
- package/modern/LocalizationProvider/LocalizationProvider.js +1 -1
- package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
- package/modern/MobileTimePicker/MobileTimePicker.js +1 -1
- package/modern/MonthCalendar/MonthCalendar.js +1 -1
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
- package/modern/PickersActionBar/PickersActionBar.js +1 -1
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
- package/modern/PickersDay/PickersDay.js +1 -1
- package/modern/PickersLayout/PickersLayout.js +2 -14
- package/modern/PickersLayout/usePickerLayout.js +6 -7
- package/modern/PickersSectionList/PickersSectionList.js +1 -1
- package/modern/PickersShortcuts/PickersShortcuts.js +1 -1
- package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
- package/modern/PickersTextField/PickersInput/PickersInput.js +1 -1
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
- package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
- package/modern/PickersTextField/PickersTextField.js +1 -1
- package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/modern/StaticTimePicker/StaticTimePicker.js +1 -1
- package/modern/TimeClock/TimeClock.js +1 -1
- package/modern/TimeField/TimeField.js +1 -1
- package/modern/TimePicker/TimePicker.js +1 -1
- package/modern/TimePicker/TimePickerToolbar.js +1 -19
- package/modern/YearCalendar/YearCalendar.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/demo/DemoContainer.js +1 -1
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
- package/modern/internals/hooks/useField/useFieldV6TextField.js +1 -1
- package/modern/internals/hooks/usePicker/usePickerViews.js +3 -5
- package/node/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -2
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +14 -227
- package/node/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +17 -230
- package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +2 -6
- package/node/DateCalendar/DateCalendar.js +6 -5
- package/node/DateField/DateField.js +1 -1
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +1 -1
- package/node/DateTimeField/DateTimeField.js +1 -1
- package/node/DateTimePicker/DateTimePicker.js +1 -1
- package/node/DateTimePicker/DateTimePickerTabs.js +1 -1
- package/node/DateTimePicker/DateTimePickerToolbar.js +1 -27
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -10
- package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +5 -4
- package/node/DesktopTimePicker/DesktopTimePicker.js +1 -1
- package/node/DigitalClock/DigitalClock.js +1 -1
- package/node/LocalizationProvider/LocalizationProvider.js +1 -1
- package/node/MobileDatePicker/MobileDatePicker.js +1 -1
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
- package/node/MobileTimePicker/MobileTimePicker.js +1 -1
- package/node/MonthCalendar/MonthCalendar.js +1 -1
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
- package/node/PickersActionBar/PickersActionBar.js +1 -1
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
- package/node/PickersDay/PickersDay.js +1 -1
- package/node/PickersLayout/PickersLayout.js +1 -12
- package/node/PickersLayout/usePickerLayout.js +6 -7
- package/node/PickersSectionList/PickersSectionList.js +1 -1
- package/node/PickersShortcuts/PickersShortcuts.js +1 -1
- package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +1 -1
- package/node/PickersTextField/PickersInput/PickersInput.js +1 -1
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +1 -1
- package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +1 -1
- package/node/PickersTextField/PickersTextField.js +1 -1
- package/node/StaticDatePicker/StaticDatePicker.js +1 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/node/StaticTimePicker/StaticTimePicker.js +1 -1
- package/node/TimeClock/TimeClock.js +1 -1
- package/node/TimeField/TimeField.js +1 -1
- package/node/TimePicker/TimePicker.js +1 -1
- package/node/TimePicker/TimePickerToolbar.js +1 -19
- package/node/YearCalendar/YearCalendar.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/demo/DemoContainer.js +1 -1
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -1
- package/node/internals/hooks/useField/useFieldV6TextField.js +1 -1
- package/node/internals/hooks/usePicker/usePickerViews.js +3 -5
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DialogProps as MuiDialogProps } from '@mui/material/Dialog';
|
|
3
|
-
import { PaperProps as MuiPaperProps } from '@mui/material/Paper
|
|
4
|
-
import { TransitionProps as MuiTransitionProps } from '@mui/material/transitions
|
|
3
|
+
import { PaperProps as MuiPaperProps } from '@mui/material/Paper';
|
|
4
|
+
import { TransitionProps as MuiTransitionProps } from '@mui/material/transitions';
|
|
5
5
|
import { UsePickerValueActions } from '../hooks/usePicker/usePickerValue.types';
|
|
6
6
|
export interface PickersModalDialogSlots {
|
|
7
7
|
/**
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import Stack, { stackClasses } from '@mui/material/Stack';
|
|
4
4
|
import Typography from '@mui/material/Typography';
|
|
5
5
|
import { textFieldClasses } from '@mui/material/TextField';
|
|
6
|
-
import { pickersTextFieldClasses } from '
|
|
6
|
+
import { pickersTextFieldClasses } from '../../PickersTextField';
|
|
7
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
8
|
const getChildTypeFromChildName = childName => {
|
|
9
9
|
if (childName.match(/^([A-Za-z]+)Range(Calendar|Clock)$/)) {
|
|
@@ -121,7 +121,8 @@ export const useDesktopPicker = _ref => {
|
|
|
121
121
|
// TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
|
|
122
122
|
if (hasUIView) {
|
|
123
123
|
fieldProps.InputProps = _extends({}, fieldProps.InputProps, {
|
|
124
|
-
ref: containerRef
|
|
124
|
+
ref: containerRef
|
|
125
|
+
}, !props.disableOpenPicker && {
|
|
125
126
|
[`${inputAdornmentProps.position}Adornment`]: /*#__PURE__*/_jsx(InputAdornment, _extends({}, inputAdornmentProps, {
|
|
126
127
|
children: /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {
|
|
127
128
|
children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, innerSlotProps?.openPickerIcon))
|
|
@@ -278,7 +278,7 @@ export const useFieldV6TextField = params => {
|
|
|
278
278
|
});
|
|
279
279
|
});
|
|
280
280
|
const placeholder = React.useMemo(() => {
|
|
281
|
-
if (inPlaceholder) {
|
|
281
|
+
if (inPlaceholder !== undefined) {
|
|
282
282
|
return inPlaceholder;
|
|
283
283
|
}
|
|
284
284
|
return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL);
|
|
@@ -57,7 +57,7 @@ export interface UsePickerViewsNonStaticProps {
|
|
|
57
57
|
/**
|
|
58
58
|
* Props used to handle the value of the pickers.
|
|
59
59
|
*/
|
|
60
|
-
export interface UsePickerViewsProps<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TDate, TView, any, any>, TAdditionalProps extends {}> extends UsePickerViewsBaseProps<TValue, TDate, TView, TExternalProps, TAdditionalProps
|
|
60
|
+
export interface UsePickerViewsProps<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerViewsProps<TValue, TDate, TView, any, any>, TAdditionalProps extends {}> extends UsePickerViewsBaseProps<TValue, TDate, TView, TExternalProps, TAdditionalProps> {
|
|
61
61
|
className?: string;
|
|
62
62
|
sx?: SxProps<Theme>;
|
|
63
63
|
}
|
|
@@ -79,8 +79,7 @@ export interface UsePickerViewParams<TValue, TDate extends PickerValidDate, TVie
|
|
|
79
79
|
}
|
|
80
80
|
export interface UsePickerViewsResponse<TView extends DateOrTimeViewWithMeridiem> {
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
83
|
-
* If not, we can hide the icon to open the picker.
|
|
82
|
+
* Indicates if the the picker has at least one view that should be rendered in UI.
|
|
84
83
|
*/
|
|
85
84
|
hasUIView: boolean;
|
|
86
85
|
renderCurrentView: () => React.ReactNode;
|
|
@@ -42,7 +42,6 @@ export const usePickerViews = ({
|
|
|
42
42
|
views,
|
|
43
43
|
openTo,
|
|
44
44
|
onViewChange,
|
|
45
|
-
disableOpenPicker,
|
|
46
45
|
viewRenderers,
|
|
47
46
|
timezone
|
|
48
47
|
} = props;
|
|
@@ -67,9 +66,7 @@ export const usePickerViews = ({
|
|
|
67
66
|
viewModeLookup
|
|
68
67
|
} = React.useMemo(() => views.reduce((acc, viewForReduce) => {
|
|
69
68
|
let viewMode;
|
|
70
|
-
if (
|
|
71
|
-
viewMode = 'field';
|
|
72
|
-
} else if (viewRenderers[viewForReduce] != null) {
|
|
69
|
+
if (viewRenderers[viewForReduce] != null) {
|
|
73
70
|
viewMode = 'UI';
|
|
74
71
|
} else {
|
|
75
72
|
viewMode = 'field';
|
|
@@ -82,7 +79,7 @@ export const usePickerViews = ({
|
|
|
82
79
|
}, {
|
|
83
80
|
hasUIView: false,
|
|
84
81
|
viewModeLookup: {}
|
|
85
|
-
}), [
|
|
82
|
+
}), [viewRenderers, views]);
|
|
86
83
|
const timeViewsCount = React.useMemo(() => views.reduce((acc, viewForReduce) => {
|
|
87
84
|
if (viewRenderers[viewForReduce] != null && isTimeView(viewForReduce)) {
|
|
88
85
|
return acc + 1;
|
|
@@ -100,6 +97,7 @@ export const usePickerViews = ({
|
|
|
100
97
|
if (currentViewMode === 'field' && open) {
|
|
101
98
|
onClose();
|
|
102
99
|
setTimeout(() => {
|
|
100
|
+
fieldRef?.current?.setSelectedSections(view);
|
|
103
101
|
// focusing the input before the range selection is done
|
|
104
102
|
// calling it outside of timeout results in an inconsistent behavior between Safari And Chrome
|
|
105
103
|
fieldRef?.current?.focusField(view);
|
|
@@ -220,7 +220,7 @@ export class AdapterDateFnsBase {
|
|
|
220
220
|
constructor(props) {
|
|
221
221
|
this.isMUIAdapter = true;
|
|
222
222
|
this.isTimezoneCompatible = false;
|
|
223
|
-
this.lib =
|
|
223
|
+
this.lib = void 0;
|
|
224
224
|
this.locale = void 0;
|
|
225
225
|
this.formats = void 0;
|
|
226
226
|
this.formatTokenMap = formatTokenMap;
|
|
@@ -285,10 +285,12 @@ export class AdapterDateFnsBase {
|
|
|
285
285
|
const {
|
|
286
286
|
locale,
|
|
287
287
|
formats,
|
|
288
|
-
longFormatters
|
|
288
|
+
longFormatters,
|
|
289
|
+
lib
|
|
289
290
|
} = props;
|
|
290
291
|
this.locale = locale;
|
|
291
292
|
this.formats = _extends({}, defaultFormats, formats);
|
|
292
293
|
this.longFormatters = longFormatters;
|
|
294
|
+
this.lib = lib || 'date-fns';
|
|
293
295
|
}
|
|
294
296
|
}
|
|
@@ -45,171 +45,7 @@ import isWithinInterval from 'date-fns-jalali/isWithinInterval';
|
|
|
45
45
|
import defaultLocale from 'date-fns-jalali/locale/fa-IR';
|
|
46
46
|
// @ts-ignore
|
|
47
47
|
import longFormatters from 'date-fns-jalali/_lib/format/longFormatters';
|
|
48
|
-
|
|
49
|
-
// Year
|
|
50
|
-
y: {
|
|
51
|
-
sectionType: 'year',
|
|
52
|
-
contentType: 'digit',
|
|
53
|
-
maxLength: 4
|
|
54
|
-
},
|
|
55
|
-
yy: 'year',
|
|
56
|
-
yyy: {
|
|
57
|
-
sectionType: 'year',
|
|
58
|
-
contentType: 'digit',
|
|
59
|
-
maxLength: 4
|
|
60
|
-
},
|
|
61
|
-
yyyy: 'year',
|
|
62
|
-
// Month
|
|
63
|
-
M: {
|
|
64
|
-
sectionType: 'month',
|
|
65
|
-
contentType: 'digit',
|
|
66
|
-
maxLength: 2
|
|
67
|
-
},
|
|
68
|
-
MM: 'month',
|
|
69
|
-
MMMM: {
|
|
70
|
-
sectionType: 'month',
|
|
71
|
-
contentType: 'letter'
|
|
72
|
-
},
|
|
73
|
-
MMM: {
|
|
74
|
-
sectionType: 'month',
|
|
75
|
-
contentType: 'letter'
|
|
76
|
-
},
|
|
77
|
-
L: {
|
|
78
|
-
sectionType: 'month',
|
|
79
|
-
contentType: 'digit',
|
|
80
|
-
maxLength: 2
|
|
81
|
-
},
|
|
82
|
-
LL: 'month',
|
|
83
|
-
LLL: {
|
|
84
|
-
sectionType: 'month',
|
|
85
|
-
contentType: 'letter'
|
|
86
|
-
},
|
|
87
|
-
LLLL: {
|
|
88
|
-
sectionType: 'month',
|
|
89
|
-
contentType: 'letter'
|
|
90
|
-
},
|
|
91
|
-
// Day of the month
|
|
92
|
-
d: {
|
|
93
|
-
sectionType: 'day',
|
|
94
|
-
contentType: 'digit',
|
|
95
|
-
maxLength: 2
|
|
96
|
-
},
|
|
97
|
-
dd: 'day',
|
|
98
|
-
do: {
|
|
99
|
-
sectionType: 'day',
|
|
100
|
-
contentType: 'digit-with-letter'
|
|
101
|
-
},
|
|
102
|
-
// Day of the week
|
|
103
|
-
E: {
|
|
104
|
-
sectionType: 'weekDay',
|
|
105
|
-
contentType: 'letter'
|
|
106
|
-
},
|
|
107
|
-
EE: {
|
|
108
|
-
sectionType: 'weekDay',
|
|
109
|
-
contentType: 'letter'
|
|
110
|
-
},
|
|
111
|
-
EEE: {
|
|
112
|
-
sectionType: 'weekDay',
|
|
113
|
-
contentType: 'letter'
|
|
114
|
-
},
|
|
115
|
-
EEEE: {
|
|
116
|
-
sectionType: 'weekDay',
|
|
117
|
-
contentType: 'letter'
|
|
118
|
-
},
|
|
119
|
-
EEEEE: {
|
|
120
|
-
sectionType: 'weekDay',
|
|
121
|
-
contentType: 'letter'
|
|
122
|
-
},
|
|
123
|
-
i: {
|
|
124
|
-
sectionType: 'weekDay',
|
|
125
|
-
contentType: 'digit',
|
|
126
|
-
maxLength: 1
|
|
127
|
-
},
|
|
128
|
-
ii: 'weekDay',
|
|
129
|
-
iii: {
|
|
130
|
-
sectionType: 'weekDay',
|
|
131
|
-
contentType: 'letter'
|
|
132
|
-
},
|
|
133
|
-
iiii: {
|
|
134
|
-
sectionType: 'weekDay',
|
|
135
|
-
contentType: 'letter'
|
|
136
|
-
},
|
|
137
|
-
e: {
|
|
138
|
-
sectionType: 'weekDay',
|
|
139
|
-
contentType: 'digit',
|
|
140
|
-
maxLength: 1
|
|
141
|
-
},
|
|
142
|
-
ee: 'weekDay',
|
|
143
|
-
eee: {
|
|
144
|
-
sectionType: 'weekDay',
|
|
145
|
-
contentType: 'letter'
|
|
146
|
-
},
|
|
147
|
-
eeee: {
|
|
148
|
-
sectionType: 'weekDay',
|
|
149
|
-
contentType: 'letter'
|
|
150
|
-
},
|
|
151
|
-
eeeee: {
|
|
152
|
-
sectionType: 'weekDay',
|
|
153
|
-
contentType: 'letter'
|
|
154
|
-
},
|
|
155
|
-
eeeeee: {
|
|
156
|
-
sectionType: 'weekDay',
|
|
157
|
-
contentType: 'letter'
|
|
158
|
-
},
|
|
159
|
-
c: {
|
|
160
|
-
sectionType: 'weekDay',
|
|
161
|
-
contentType: 'digit',
|
|
162
|
-
maxLength: 1
|
|
163
|
-
},
|
|
164
|
-
cc: 'weekDay',
|
|
165
|
-
ccc: {
|
|
166
|
-
sectionType: 'weekDay',
|
|
167
|
-
contentType: 'letter'
|
|
168
|
-
},
|
|
169
|
-
cccc: {
|
|
170
|
-
sectionType: 'weekDay',
|
|
171
|
-
contentType: 'letter'
|
|
172
|
-
},
|
|
173
|
-
ccccc: {
|
|
174
|
-
sectionType: 'weekDay',
|
|
175
|
-
contentType: 'letter'
|
|
176
|
-
},
|
|
177
|
-
cccccc: {
|
|
178
|
-
sectionType: 'weekDay',
|
|
179
|
-
contentType: 'letter'
|
|
180
|
-
},
|
|
181
|
-
// Meridiem
|
|
182
|
-
a: 'meridiem',
|
|
183
|
-
aa: 'meridiem',
|
|
184
|
-
aaa: 'meridiem',
|
|
185
|
-
// Hours
|
|
186
|
-
H: {
|
|
187
|
-
sectionType: 'hours',
|
|
188
|
-
contentType: 'digit',
|
|
189
|
-
maxLength: 2
|
|
190
|
-
},
|
|
191
|
-
HH: 'hours',
|
|
192
|
-
h: {
|
|
193
|
-
sectionType: 'hours',
|
|
194
|
-
contentType: 'digit',
|
|
195
|
-
maxLength: 2
|
|
196
|
-
},
|
|
197
|
-
hh: 'hours',
|
|
198
|
-
// Minutes
|
|
199
|
-
m: {
|
|
200
|
-
sectionType: 'minutes',
|
|
201
|
-
contentType: 'digit',
|
|
202
|
-
maxLength: 2
|
|
203
|
-
},
|
|
204
|
-
mm: 'minutes',
|
|
205
|
-
// Seconds
|
|
206
|
-
s: {
|
|
207
|
-
sectionType: 'seconds',
|
|
208
|
-
contentType: 'digit',
|
|
209
|
-
maxLength: 2
|
|
210
|
-
},
|
|
211
|
-
ss: 'seconds'
|
|
212
|
-
};
|
|
48
|
+
import { AdapterDateFnsBase } from '../AdapterDateFnsBase';
|
|
213
49
|
const defaultFormats = {
|
|
214
50
|
year: 'yyyy',
|
|
215
51
|
month: 'LLLL',
|
|
@@ -272,40 +108,22 @@ const NUMBER_SYMBOL_MAP = {
|
|
|
272
108
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
273
109
|
* SOFTWARE.
|
|
274
110
|
*/
|
|
275
|
-
export class AdapterDateFnsJalali {
|
|
111
|
+
export class AdapterDateFnsJalali extends AdapterDateFnsBase {
|
|
276
112
|
constructor({
|
|
277
|
-
locale
|
|
113
|
+
locale,
|
|
278
114
|
formats
|
|
279
115
|
} = {}) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
if (typeof value === 'undefined') {
|
|
292
|
-
return new Date();
|
|
293
|
-
}
|
|
294
|
-
if (value === null) {
|
|
295
|
-
return null;
|
|
296
|
-
}
|
|
297
|
-
return new Date(value);
|
|
298
|
-
};
|
|
299
|
-
this.getInvalidDate = () => new Date('Invalid Date');
|
|
300
|
-
this.getTimezone = () => {
|
|
301
|
-
return 'default';
|
|
302
|
-
};
|
|
303
|
-
this.setTimezone = value => {
|
|
304
|
-
return value;
|
|
305
|
-
};
|
|
306
|
-
this.toJsDate = value => {
|
|
307
|
-
return value;
|
|
308
|
-
};
|
|
116
|
+
if (typeof addDays !== 'function') {
|
|
117
|
+
throw new Error(['MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.'].join('\n'));
|
|
118
|
+
}
|
|
119
|
+
super({
|
|
120
|
+
locale: locale ?? defaultLocale,
|
|
121
|
+
// some formats are different in jalali adapter,
|
|
122
|
+
// this ensures that `AdapterDateFnsBase` formats are overridden
|
|
123
|
+
formats: _extends({}, defaultFormats, formats),
|
|
124
|
+
longFormatters,
|
|
125
|
+
lib: 'date-fns-jalali'
|
|
126
|
+
});
|
|
309
127
|
this.parse = (value, format) => {
|
|
310
128
|
if (value === '') {
|
|
311
129
|
return null;
|
|
@@ -317,29 +135,6 @@ export class AdapterDateFnsJalali {
|
|
|
317
135
|
this.getCurrentLocaleCode = () => {
|
|
318
136
|
return this.locale?.code || 'fa-IR';
|
|
319
137
|
};
|
|
320
|
-
// Note: date-fns input types are more lenient than this adapter, so we need to expose our more
|
|
321
|
-
// strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
|
|
322
|
-
this.is12HourCycleInCurrentLocale = () => {
|
|
323
|
-
if (this.locale) {
|
|
324
|
-
return /a/.test(this.locale.formatLong.time());
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// By default, date-fns-jalali is using fa-IR locale with am/pm enabled
|
|
328
|
-
return true;
|
|
329
|
-
};
|
|
330
|
-
this.expandFormat = format => {
|
|
331
|
-
// @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
|
|
332
|
-
const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
|
|
333
|
-
const locale = this.locale ?? defaultLocale;
|
|
334
|
-
return format.match(longFormatRegexp).map(token => {
|
|
335
|
-
const firstCharacter = token[0];
|
|
336
|
-
if (firstCharacter === 'p' || firstCharacter === 'P') {
|
|
337
|
-
const longFormatter = longFormatters[firstCharacter];
|
|
338
|
-
return longFormatter(token, locale.formatLong, {});
|
|
339
|
-
}
|
|
340
|
-
return token;
|
|
341
|
-
}).join('');
|
|
342
|
-
};
|
|
343
138
|
this.isValid = value => {
|
|
344
139
|
if (value == null) {
|
|
345
140
|
return false;
|
|
@@ -527,13 +322,5 @@ export class AdapterDateFnsJalali {
|
|
|
527
322
|
}
|
|
528
323
|
return years;
|
|
529
324
|
};
|
|
530
|
-
if (typeof addDays !== 'function') {
|
|
531
|
-
throw new Error(['MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.'].join('\n'));
|
|
532
|
-
}
|
|
533
|
-
this.locale = _locale;
|
|
534
|
-
this.formats = _extends({}, defaultFormats, formats);
|
|
535
|
-
}
|
|
536
|
-
getDayOfWeek(value) {
|
|
537
|
-
return value.getDay() + 1;
|
|
538
325
|
}
|
|
539
326
|
}
|
|
@@ -48,171 +48,7 @@ import { faIR as defaultLocale } from 'date-fns-jalali/locale/fa-IR';
|
|
|
48
48
|
// date-fns-jalali v2 does not export types
|
|
49
49
|
// @ts-ignore TODO remove when date-fns-jalali-v3 is the default
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
// Year
|
|
53
|
-
y: {
|
|
54
|
-
sectionType: 'year',
|
|
55
|
-
contentType: 'digit',
|
|
56
|
-
maxLength: 4
|
|
57
|
-
},
|
|
58
|
-
yy: 'year',
|
|
59
|
-
yyy: {
|
|
60
|
-
sectionType: 'year',
|
|
61
|
-
contentType: 'digit',
|
|
62
|
-
maxLength: 4
|
|
63
|
-
},
|
|
64
|
-
yyyy: 'year',
|
|
65
|
-
// Month
|
|
66
|
-
M: {
|
|
67
|
-
sectionType: 'month',
|
|
68
|
-
contentType: 'digit',
|
|
69
|
-
maxLength: 2
|
|
70
|
-
},
|
|
71
|
-
MM: 'month',
|
|
72
|
-
MMMM: {
|
|
73
|
-
sectionType: 'month',
|
|
74
|
-
contentType: 'letter'
|
|
75
|
-
},
|
|
76
|
-
MMM: {
|
|
77
|
-
sectionType: 'month',
|
|
78
|
-
contentType: 'letter'
|
|
79
|
-
},
|
|
80
|
-
L: {
|
|
81
|
-
sectionType: 'month',
|
|
82
|
-
contentType: 'digit',
|
|
83
|
-
maxLength: 2
|
|
84
|
-
},
|
|
85
|
-
LL: 'month',
|
|
86
|
-
LLL: {
|
|
87
|
-
sectionType: 'month',
|
|
88
|
-
contentType: 'letter'
|
|
89
|
-
},
|
|
90
|
-
LLLL: {
|
|
91
|
-
sectionType: 'month',
|
|
92
|
-
contentType: 'letter'
|
|
93
|
-
},
|
|
94
|
-
// Day of the month
|
|
95
|
-
d: {
|
|
96
|
-
sectionType: 'day',
|
|
97
|
-
contentType: 'digit',
|
|
98
|
-
maxLength: 2
|
|
99
|
-
},
|
|
100
|
-
dd: 'day',
|
|
101
|
-
do: {
|
|
102
|
-
sectionType: 'day',
|
|
103
|
-
contentType: 'digit-with-letter'
|
|
104
|
-
},
|
|
105
|
-
// Day of the week
|
|
106
|
-
E: {
|
|
107
|
-
sectionType: 'weekDay',
|
|
108
|
-
contentType: 'letter'
|
|
109
|
-
},
|
|
110
|
-
EE: {
|
|
111
|
-
sectionType: 'weekDay',
|
|
112
|
-
contentType: 'letter'
|
|
113
|
-
},
|
|
114
|
-
EEE: {
|
|
115
|
-
sectionType: 'weekDay',
|
|
116
|
-
contentType: 'letter'
|
|
117
|
-
},
|
|
118
|
-
EEEE: {
|
|
119
|
-
sectionType: 'weekDay',
|
|
120
|
-
contentType: 'letter'
|
|
121
|
-
},
|
|
122
|
-
EEEEE: {
|
|
123
|
-
sectionType: 'weekDay',
|
|
124
|
-
contentType: 'letter'
|
|
125
|
-
},
|
|
126
|
-
i: {
|
|
127
|
-
sectionType: 'weekDay',
|
|
128
|
-
contentType: 'digit',
|
|
129
|
-
maxLength: 1
|
|
130
|
-
},
|
|
131
|
-
ii: 'weekDay',
|
|
132
|
-
iii: {
|
|
133
|
-
sectionType: 'weekDay',
|
|
134
|
-
contentType: 'letter'
|
|
135
|
-
},
|
|
136
|
-
iiii: {
|
|
137
|
-
sectionType: 'weekDay',
|
|
138
|
-
contentType: 'letter'
|
|
139
|
-
},
|
|
140
|
-
e: {
|
|
141
|
-
sectionType: 'weekDay',
|
|
142
|
-
contentType: 'digit',
|
|
143
|
-
maxLength: 1
|
|
144
|
-
},
|
|
145
|
-
ee: 'weekDay',
|
|
146
|
-
eee: {
|
|
147
|
-
sectionType: 'weekDay',
|
|
148
|
-
contentType: 'letter'
|
|
149
|
-
},
|
|
150
|
-
eeee: {
|
|
151
|
-
sectionType: 'weekDay',
|
|
152
|
-
contentType: 'letter'
|
|
153
|
-
},
|
|
154
|
-
eeeee: {
|
|
155
|
-
sectionType: 'weekDay',
|
|
156
|
-
contentType: 'letter'
|
|
157
|
-
},
|
|
158
|
-
eeeeee: {
|
|
159
|
-
sectionType: 'weekDay',
|
|
160
|
-
contentType: 'letter'
|
|
161
|
-
},
|
|
162
|
-
c: {
|
|
163
|
-
sectionType: 'weekDay',
|
|
164
|
-
contentType: 'digit',
|
|
165
|
-
maxLength: 1
|
|
166
|
-
},
|
|
167
|
-
cc: 'weekDay',
|
|
168
|
-
ccc: {
|
|
169
|
-
sectionType: 'weekDay',
|
|
170
|
-
contentType: 'letter'
|
|
171
|
-
},
|
|
172
|
-
cccc: {
|
|
173
|
-
sectionType: 'weekDay',
|
|
174
|
-
contentType: 'letter'
|
|
175
|
-
},
|
|
176
|
-
ccccc: {
|
|
177
|
-
sectionType: 'weekDay',
|
|
178
|
-
contentType: 'letter'
|
|
179
|
-
},
|
|
180
|
-
cccccc: {
|
|
181
|
-
sectionType: 'weekDay',
|
|
182
|
-
contentType: 'letter'
|
|
183
|
-
},
|
|
184
|
-
// Meridiem
|
|
185
|
-
a: 'meridiem',
|
|
186
|
-
aa: 'meridiem',
|
|
187
|
-
aaa: 'meridiem',
|
|
188
|
-
// Hours
|
|
189
|
-
H: {
|
|
190
|
-
sectionType: 'hours',
|
|
191
|
-
contentType: 'digit',
|
|
192
|
-
maxLength: 2
|
|
193
|
-
},
|
|
194
|
-
HH: 'hours',
|
|
195
|
-
h: {
|
|
196
|
-
sectionType: 'hours',
|
|
197
|
-
contentType: 'digit',
|
|
198
|
-
maxLength: 2
|
|
199
|
-
},
|
|
200
|
-
hh: 'hours',
|
|
201
|
-
// Minutes
|
|
202
|
-
m: {
|
|
203
|
-
sectionType: 'minutes',
|
|
204
|
-
contentType: 'digit',
|
|
205
|
-
maxLength: 2
|
|
206
|
-
},
|
|
207
|
-
mm: 'minutes',
|
|
208
|
-
// Seconds
|
|
209
|
-
s: {
|
|
210
|
-
sectionType: 'seconds',
|
|
211
|
-
contentType: 'digit',
|
|
212
|
-
maxLength: 2
|
|
213
|
-
},
|
|
214
|
-
ss: 'seconds'
|
|
215
|
-
};
|
|
51
|
+
import { AdapterDateFnsBase } from '../AdapterDateFnsBase';
|
|
216
52
|
const defaultFormats = {
|
|
217
53
|
year: 'yyyy',
|
|
218
54
|
month: 'LLLL',
|
|
@@ -275,40 +111,25 @@ const NUMBER_SYMBOL_MAP = {
|
|
|
275
111
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
276
112
|
* SOFTWARE.
|
|
277
113
|
*/
|
|
278
|
-
export class AdapterDateFnsJalali {
|
|
114
|
+
export class AdapterDateFnsJalali extends AdapterDateFnsBase {
|
|
279
115
|
constructor({
|
|
280
|
-
locale
|
|
116
|
+
locale,
|
|
281
117
|
formats
|
|
282
118
|
} = {}) {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
if (value === null) {
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
return new Date(value);
|
|
301
|
-
};
|
|
302
|
-
this.getInvalidDate = () => new Date('Invalid Date');
|
|
303
|
-
this.getTimezone = () => {
|
|
304
|
-
return 'default';
|
|
305
|
-
};
|
|
306
|
-
this.setTimezone = value => {
|
|
307
|
-
return value;
|
|
308
|
-
};
|
|
309
|
-
this.toJsDate = value => {
|
|
310
|
-
return value;
|
|
311
|
-
};
|
|
119
|
+
if (typeof addDays !== 'function') {
|
|
120
|
+
throw new Error([`MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.'].join('\n'));
|
|
121
|
+
}
|
|
122
|
+
if (!longFormatters) {
|
|
123
|
+
throw new Error('MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.');
|
|
124
|
+
}
|
|
125
|
+
super({
|
|
126
|
+
locale: locale ?? defaultLocale,
|
|
127
|
+
// some formats are different in jalali adapter,
|
|
128
|
+
// this ensures that `AdapterDateFnsBase` formats are overridden
|
|
129
|
+
formats: _extends({}, defaultFormats, formats),
|
|
130
|
+
longFormatters,
|
|
131
|
+
lib: 'date-fns-jalali'
|
|
132
|
+
});
|
|
312
133
|
this.parse = (value, format) => {
|
|
313
134
|
if (value === '') {
|
|
314
135
|
return null;
|
|
@@ -320,29 +141,6 @@ export class AdapterDateFnsJalali {
|
|
|
320
141
|
this.getCurrentLocaleCode = () => {
|
|
321
142
|
return this.locale?.code || 'fa-IR';
|
|
322
143
|
};
|
|
323
|
-
// Note: date-fns input types are more lenient than this adapter, so we need to expose our more
|
|
324
|
-
// strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.
|
|
325
|
-
this.is12HourCycleInCurrentLocale = () => {
|
|
326
|
-
if (this.locale) {
|
|
327
|
-
return /a/.test(this.locale.formatLong.time());
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// By default, date-fns-jalali is using fa-IR locale with am/pm enabled
|
|
331
|
-
return true;
|
|
332
|
-
};
|
|
333
|
-
this.expandFormat = format => {
|
|
334
|
-
// @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31
|
|
335
|
-
const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
|
|
336
|
-
const locale = this.locale ?? defaultLocale;
|
|
337
|
-
return format.match(longFormatRegexp).map(token => {
|
|
338
|
-
const firstCharacter = token[0];
|
|
339
|
-
if (firstCharacter === 'p' || firstCharacter === 'P') {
|
|
340
|
-
const longFormatter = longFormatters[firstCharacter];
|
|
341
|
-
return longFormatter(token, locale.formatLong, {});
|
|
342
|
-
}
|
|
343
|
-
return token;
|
|
344
|
-
}).join('');
|
|
345
|
-
};
|
|
346
144
|
this.isValid = value => {
|
|
347
145
|
if (value == null) {
|
|
348
146
|
return false;
|
|
@@ -530,16 +328,5 @@ export class AdapterDateFnsJalali {
|
|
|
530
328
|
}
|
|
531
329
|
return years;
|
|
532
330
|
};
|
|
533
|
-
if (typeof addDays !== 'function') {
|
|
534
|
-
throw new Error([`MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.'].join('\n'));
|
|
535
|
-
}
|
|
536
|
-
if (!longFormatters) {
|
|
537
|
-
throw new Error('MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.');
|
|
538
|
-
}
|
|
539
|
-
this.locale = _locale;
|
|
540
|
-
this.formats = _extends({}, defaultFormats, formats);
|
|
541
|
-
}
|
|
542
|
-
getDayOfWeek(value) {
|
|
543
|
-
return value.getDay() + 1;
|
|
544
331
|
}
|
|
545
332
|
}
|