@mui/x-date-pickers 7.6.2 → 7.7.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.
Files changed (105) hide show
  1. package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts +48 -48
  2. package/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +1 -0
  3. package/AdapterDateFnsV3/AdapterDateFnsV3.d.ts +47 -47
  4. package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -0
  5. package/CHANGELOG.md +163 -0
  6. package/DateCalendar/DateCalendar.js +3 -3
  7. package/DateCalendar/DateCalendar.types.d.ts +4 -4
  8. package/DateCalendar/DayCalendar.d.ts +3 -4
  9. package/DatePicker/DatePicker.js +2 -0
  10. package/DateTimePicker/DateTimePicker.js +2 -0
  11. package/DesktopDatePicker/DesktopDatePicker.js +2 -0
  12. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -0
  13. package/DesktopTimePicker/DesktopTimePicker.js +2 -0
  14. package/MobileDatePicker/MobileDatePicker.js +2 -0
  15. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  16. package/MobileTimePicker/MobileTimePicker.js +2 -0
  17. package/MonthCalendar/MonthCalendar.js +17 -3
  18. package/MonthCalendar/MonthCalendar.types.d.ts +25 -0
  19. package/MonthCalendar/PickersMonth.d.ts +4 -0
  20. package/MonthCalendar/PickersMonth.js +38 -21
  21. package/MonthCalendar/index.d.ts +1 -1
  22. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +16 -3
  23. package/PickersCalendarHeader/PickersCalendarHeader.js +4 -0
  24. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +5 -1
  25. package/PickersLayout/usePickerLayout.js +0 -5
  26. package/StaticDatePicker/StaticDatePicker.js +2 -0
  27. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  28. package/StaticTimePicker/StaticTimePicker.js +2 -0
  29. package/TimePicker/TimePicker.js +2 -0
  30. package/YearCalendar/PickersYear.d.ts +3 -0
  31. package/YearCalendar/PickersYear.js +34 -22
  32. package/YearCalendar/YearCalendar.js +17 -3
  33. package/YearCalendar/YearCalendar.types.d.ts +25 -0
  34. package/YearCalendar/index.d.ts +1 -1
  35. package/index.js +1 -1
  36. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +4 -2
  37. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -0
  38. package/internals/hooks/useField/useField.utils.js +2 -1
  39. package/internals/hooks/usePicker/usePickerValue.js +45 -38
  40. package/internals/hooks/usePicker/usePickerValue.types.d.ts +3 -1
  41. package/internals/hooks/usePicker/usePickerViews.js +2 -1
  42. package/locales/daDK.js +15 -19
  43. package/locales/faIR.js +19 -22
  44. package/locales/koKR.js +2 -2
  45. package/modern/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +1 -0
  46. package/modern/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -0
  47. package/modern/DateCalendar/DateCalendar.js +3 -3
  48. package/modern/DatePicker/DatePicker.js +2 -0
  49. package/modern/DateTimePicker/DateTimePicker.js +2 -0
  50. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -0
  51. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -0
  52. package/modern/DesktopTimePicker/DesktopTimePicker.js +2 -0
  53. package/modern/MobileDatePicker/MobileDatePicker.js +2 -0
  54. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  55. package/modern/MobileTimePicker/MobileTimePicker.js +2 -0
  56. package/modern/MonthCalendar/MonthCalendar.js +17 -3
  57. package/modern/MonthCalendar/PickersMonth.js +38 -21
  58. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +16 -3
  59. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +4 -0
  60. package/modern/PickersLayout/usePickerLayout.js +0 -5
  61. package/modern/StaticDatePicker/StaticDatePicker.js +2 -0
  62. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  63. package/modern/StaticTimePicker/StaticTimePicker.js +2 -0
  64. package/modern/TimePicker/TimePicker.js +2 -0
  65. package/modern/YearCalendar/PickersYear.js +34 -22
  66. package/modern/YearCalendar/YearCalendar.js +17 -3
  67. package/modern/index.js +1 -1
  68. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +4 -2
  69. package/modern/internals/hooks/useField/useField.utils.js +2 -1
  70. package/modern/internals/hooks/usePicker/usePickerValue.js +45 -38
  71. package/modern/internals/hooks/usePicker/usePickerViews.js +2 -1
  72. package/modern/locales/daDK.js +15 -19
  73. package/modern/locales/faIR.js +19 -22
  74. package/modern/locales/koKR.js +2 -2
  75. package/node/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js +1 -0
  76. package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -0
  77. package/node/DateCalendar/DateCalendar.js +3 -3
  78. package/node/DatePicker/DatePicker.js +2 -0
  79. package/node/DateTimePicker/DateTimePicker.js +2 -0
  80. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -0
  81. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -0
  82. package/node/DesktopTimePicker/DesktopTimePicker.js +2 -0
  83. package/node/MobileDatePicker/MobileDatePicker.js +2 -0
  84. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -0
  85. package/node/MobileTimePicker/MobileTimePicker.js +2 -0
  86. package/node/MonthCalendar/MonthCalendar.js +17 -3
  87. package/node/MonthCalendar/PickersMonth.js +40 -23
  88. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +16 -3
  89. package/node/PickersCalendarHeader/PickersCalendarHeader.js +4 -0
  90. package/node/PickersLayout/usePickerLayout.js +0 -5
  91. package/node/StaticDatePicker/StaticDatePicker.js +2 -0
  92. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -0
  93. package/node/StaticTimePicker/StaticTimePicker.js +2 -0
  94. package/node/TimePicker/TimePicker.js +2 -0
  95. package/node/YearCalendar/PickersYear.js +34 -22
  96. package/node/YearCalendar/YearCalendar.js +17 -3
  97. package/node/index.js +1 -1
  98. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +4 -2
  99. package/node/internals/hooks/useField/useField.utils.js +2 -1
  100. package/node/internals/hooks/usePicker/usePickerValue.js +45 -38
  101. package/node/internals/hooks/usePicker/usePickerViews.js +2 -1
  102. package/node/locales/daDK.js +15 -19
  103. package/node/locales/faIR.js +19 -22
  104. package/node/locales/koKR.js +2 -2
  105. package/package.json +4 -4
@@ -127,7 +127,7 @@ const usePickerValue = ({
127
127
  const {
128
128
  onAccept,
129
129
  onChange,
130
- value: inValue,
130
+ value: inValueWithoutRenderTimezone,
131
131
  defaultValue: inDefaultValue,
132
132
  closeOnSelect = wrapperVariant === 'desktop',
133
133
  timezone: timezoneProp
@@ -137,15 +137,15 @@ const usePickerValue = ({
137
137
  } = React.useRef(inDefaultValue);
138
138
  const {
139
139
  current: isControlled
140
- } = React.useRef(inValue !== undefined);
140
+ } = React.useRef(inValueWithoutRenderTimezone !== undefined);
141
141
 
142
142
  /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */
143
143
  if (process.env.NODE_ENV !== 'production') {
144
144
  React.useEffect(() => {
145
- if (isControlled !== (inValue !== undefined)) {
145
+ if (isControlled !== (inValueWithoutRenderTimezone !== undefined)) {
146
146
  console.error([`MUI X: A component is changing the ${isControlled ? '' : 'un'}controlled value of a picker to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled value` + 'for the lifetime of the component.', "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", 'More info: https://fb.me/react-controlled-components'].join('\n'));
147
147
  }
148
- }, [inValue]);
148
+ }, [inValueWithoutRenderTimezone]);
149
149
  React.useEffect(() => {
150
150
  if (!isControlled && defaultValue !== inDefaultValue) {
151
151
  console.error([`MUI X: A component is changing the defaultValue of an uncontrolled picker after being initialized. ` + `To suppress this warning opt to use a controlled value.`].join('\n'));
@@ -160,10 +160,21 @@ const usePickerValue = ({
160
160
  isOpen,
161
161
  setIsOpen
162
162
  } = (0, _useOpenState.useOpenState)(props);
163
+ const {
164
+ timezone,
165
+ value: inValueWithTimezoneToRender,
166
+ handleValueChange
167
+ } = (0, _useValueWithTimezone.useValueWithTimezone)({
168
+ timezone: timezoneProp,
169
+ value: inValueWithoutRenderTimezone,
170
+ defaultValue,
171
+ onChange,
172
+ valueManager
173
+ });
163
174
  const [dateState, setDateState] = React.useState(() => {
164
175
  let initialValue;
165
- if (inValue !== undefined) {
166
- initialValue = inValue;
176
+ if (inValueWithTimezoneToRender !== undefined) {
177
+ initialValue = inValueWithTimezoneToRender;
167
178
  } else if (defaultValue !== undefined) {
168
179
  initialValue = defaultValue;
169
180
  } else {
@@ -173,20 +184,10 @@ const usePickerValue = ({
173
184
  draft: initialValue,
174
185
  lastPublishedValue: initialValue,
175
186
  lastCommittedValue: initialValue,
176
- lastControlledValue: inValue,
187
+ lastControlledValue: inValueWithTimezoneToRender,
177
188
  hasBeenModifiedSinceMount: false
178
189
  };
179
190
  });
180
- const {
181
- timezone,
182
- handleValueChange
183
- } = (0, _useValueWithTimezone.useValueWithTimezone)({
184
- timezone: timezoneProp,
185
- value: inValue,
186
- defaultValue,
187
- onChange,
188
- valueManager
189
- });
190
191
  (0, _useValidation.useValidation)((0, _extends2.default)({}, props, {
191
192
  value: dateState.draft,
192
193
  timezone
@@ -208,38 +209,44 @@ const usePickerValue = ({
208
209
  lastCommittedValue: shouldCommit ? action.value : prev.lastCommittedValue,
209
210
  hasBeenModifiedSinceMount: true
210
211
  }));
211
- if (shouldPublish) {
212
- const validationError = action.name === 'setValueFromField' ? action.context.validationError : validator({
213
- adapter,
214
- value: action.value,
215
- props: (0, _extends2.default)({}, props, {
212
+ let cachedContext = null;
213
+ const getContext = () => {
214
+ if (!cachedContext) {
215
+ const validationError = action.name === 'setValueFromField' ? action.context.validationError : validator({
216
+ adapter,
216
217
  value: action.value,
217
- timezone
218
- })
219
- });
220
- const context = {
221
- validationError
222
- };
223
- if (action.name === 'setValueFromShortcut') {
224
- context.shortcut = action.shortcut;
218
+ props: (0, _extends2.default)({}, props, {
219
+ value: action.value,
220
+ timezone
221
+ })
222
+ });
223
+ cachedContext = {
224
+ validationError
225
+ };
226
+ if (action.name === 'setValueFromShortcut') {
227
+ cachedContext.shortcut = action.shortcut;
228
+ }
225
229
  }
226
- handleValueChange(action.value, context);
230
+ return cachedContext;
231
+ };
232
+ if (shouldPublish) {
233
+ handleValueChange(action.value, getContext());
227
234
  }
228
235
  if (shouldCommit && onAccept) {
229
- onAccept(action.value);
236
+ onAccept(action.value, getContext());
230
237
  }
231
238
  if (shouldClose) {
232
239
  setIsOpen(false);
233
240
  }
234
241
  });
235
- if (inValue !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValue))) {
236
- const isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValue);
242
+ if (inValueWithTimezoneToRender !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValueWithTimezoneToRender))) {
243
+ const isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValueWithTimezoneToRender);
237
244
  setDateState(prev => (0, _extends2.default)({}, prev, {
238
- lastControlledValue: inValue
245
+ lastControlledValue: inValueWithTimezoneToRender
239
246
  }, isUpdateComingFromPicker ? {} : {
240
- lastCommittedValue: inValue,
241
- lastPublishedValue: inValue,
242
- draft: inValue,
247
+ lastCommittedValue: inValueWithTimezoneToRender,
248
+ lastPublishedValue: inValueWithTimezoneToRender,
249
+ draft: inValueWithTimezoneToRender,
243
250
  hasBeenModifiedSinceMount: true
244
251
  }));
245
252
  }
@@ -47,6 +47,7 @@ const usePickerViews = ({
47
47
  onClose
48
48
  } = propsFromPickerValue;
49
49
  const {
50
+ view: inView,
50
51
  views,
51
52
  openTo,
52
53
  onViewChange,
@@ -62,7 +63,7 @@ const usePickerViews = ({
62
63
  setFocusedView,
63
64
  setValueAndGoToNextView
64
65
  } = (0, _useViews.useViews)({
65
- view: undefined,
66
+ view: inView,
66
67
  views,
67
68
  openTo,
68
69
  onChange,
@@ -23,11 +23,10 @@ const daDKPickers = {
23
23
  // DateRange labels
24
24
  start: 'Start',
25
25
  end: 'Slut',
26
- // startDate: 'Start date',
27
- // startTime: 'Start time',
28
- // endDate: 'End date',
29
- // endTime: 'End time',
30
-
26
+ startDate: 'Start dato',
27
+ startTime: 'Start tid',
28
+ endDate: 'Slut date',
29
+ endTime: 'Slut tid',
31
30
  // Action bar
32
31
  cancelButtonLabel: 'Annuller',
33
32
  clearButtonLabel: 'Ryd',
@@ -53,8 +52,7 @@ const daDKPickers = {
53
52
  // Open picker labels
54
53
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vælg dato, valgte dato er ${utils.format(value, 'fullDate')}` : 'Vælg dato',
55
54
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vælg tidspunkt, valgte tidspunkt er ${utils.format(value, 'fullTime')}` : 'Vælg tidspunkt',
56
- // fieldClearLabel: 'Clear value',
57
-
55
+ fieldClearLabel: 'ryd felt',
58
56
  // Table labels
59
57
  timeTableLabel: 'vælg tidspunkt',
60
58
  dateTableLabel: 'vælg dato',
@@ -66,19 +64,17 @@ const daDKPickers = {
66
64
  fieldHoursPlaceholder: () => 'hh',
67
65
  fieldMinutesPlaceholder: () => 'mm',
68
66
  fieldSecondsPlaceholder: () => 'ss',
69
- fieldMeridiemPlaceholder: () => 'aa'
70
-
67
+ fieldMeridiemPlaceholder: () => 'aa',
71
68
  // View names
72
- // year: 'Year',
73
- // month: 'Month',
74
- // day: 'Day',
75
- // weekDay: 'Week day',
76
- // hours: 'Hours',
77
- // minutes: 'Minutes',
78
- // seconds: 'Seconds',
79
- // meridiem: 'Meridiem',
80
-
69
+ year: 'år',
70
+ month: 'måned',
71
+ day: 'dag',
72
+ weekDay: 'ugedag',
73
+ hours: 'timer',
74
+ minutes: 'minutter',
75
+ seconds: 'sekunder',
76
+ meridiem: 'middag',
81
77
  // Common
82
- // empty: 'Empty',
78
+ empty: 'tom'
83
79
  };
84
80
  const daDK = exports.daDK = (0, _getPickersLocalization.getPickersLocalization)(daDKPickers);
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.faIR = void 0;
7
7
  var _getPickersLocalization = require("./utils/getPickersLocalization");
8
8
  const timeViews = {
9
- hours: 'ساعت ها',
10
- minutes: 'دقیقه ها',
11
- seconds: 'ثانیه ها',
9
+ hours: 'ساعت‌ها',
10
+ minutes: 'دقیقه‌ها',
11
+ seconds: 'ثانیه‌ها',
12
12
  meridiem: 'بعد از ظهر'
13
13
  };
14
14
  const faIRPickers = {
@@ -22,11 +22,10 @@ const faIRPickers = {
22
22
  // DateRange labels
23
23
  start: 'شروع',
24
24
  end: 'پایان',
25
- // startDate: 'Start date',
26
- // startTime: 'Start time',
27
- // endDate: 'End date',
28
- // endTime: 'End time',
29
-
25
+ startDate: 'تاریخ شروع',
26
+ startTime: 'ساعت شروع',
27
+ endDate: 'تاریخ پایان',
28
+ endTime: 'ساعت پایان',
30
29
  // Action bar
31
30
  cancelButtonLabel: 'لغو',
32
31
  clearButtonLabel: 'پاک کردن',
@@ -39,9 +38,9 @@ const faIRPickers = {
39
38
  dateRangePickerToolbarTitle: 'محدوده تاریخ را انتخاب کنید',
40
39
  // Clock labels
41
40
  clockLabelText: (view, time, adapter) => ` را انتخاب کنید ${timeViews[view]}. ${time === null ? 'هیچ ساعتی انتخاب نشده است' : `ساعت انتخاب ${adapter.format(time, 'fullTime')} می باشد`}`,
42
- hoursClockNumberText: hours => `${hours} ساعت ها`,
43
- minutesClockNumberText: minutes => `${minutes} دقیقه ها`,
44
- secondsClockNumberText: seconds => `${seconds} ثانیه ها`,
41
+ hoursClockNumberText: hours => `${hours} ساعت‌ها`,
42
+ minutesClockNumberText: minutes => `${minutes} دقیقه‌ها`,
43
+ secondsClockNumberText: seconds => `${seconds} ثانیه‌ها`,
45
44
  // Digital clock labels
46
45
  selectViewText: view => ` را انتخاب کنید ${timeViews[view]}`,
47
46
  // Calendar labels
@@ -50,10 +49,9 @@ const faIRPickers = {
50
49
  calendarWeekNumberAriaLabelText: weekNumber => `هفته ${weekNumber}`,
51
50
  calendarWeekNumberText: weekNumber => `${weekNumber}`,
52
51
  // Open picker labels
53
- openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `تاریخ را انتخاب کنید، تاریخ انتخاب شده ${utils.format(value, 'fullDate')} می باشد` : 'تاریخ را انتخاب کنید',
54
- openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `ساعت را انتخاب کنید، ساعت انتخاب شده ${utils.format(value, 'fullTime')} می باشد` : 'ساعت را انتخاب کنید',
55
- // fieldClearLabel: 'Clear value',
56
-
52
+ openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `تاریخ را انتخاب کنید، تاریخ انتخاب شده ${utils.format(value, 'fullDate')} می‌باشد` : 'تاریخ را انتخاب کنید',
53
+ openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `ساعت را انتخاب کنید، ساعت انتخاب شده ${utils.format(value, 'fullTime')} می‌باشد` : 'ساعت را انتخاب کنید',
54
+ fieldClearLabel: 'پاک کردن مقدار',
57
55
  // Table labels
58
56
  timeTableLabel: 'انتخاب تاریخ',
59
57
  dateTableLabel: 'انتخاب ساعت',
@@ -70,13 +68,12 @@ const faIRPickers = {
70
68
  year: 'سال',
71
69
  month: 'ماه',
72
70
  day: 'روز',
73
- // weekDay: 'Week day',
74
- hours: 'ساعت ها',
75
- minutes: 'دقیقه ها',
76
- seconds: 'ثانیه ها'
77
- // meridiem: 'Meridiem',
78
-
71
+ weekDay: 'روز هفته',
72
+ hours: 'ساعت‌ها',
73
+ minutes: 'دقیقه‌ها',
74
+ seconds: 'ثانیه‌ها',
75
+ meridiem: 'نیم‌روز',
79
76
  // Common
80
- // empty: 'Empty',
77
+ empty: 'خالی'
81
78
  };
82
79
  const faIR = exports.faIR = (0, _getPickersLocalization.getPickersLocalization)(faIRPickers);
@@ -9,7 +9,7 @@ const views = {
9
9
  hours: '시간을',
10
10
  minutes: '분을',
11
11
  seconds: '초를',
12
- meridiem: '메리디엠'
12
+ meridiem: '오전/오후를'
13
13
  };
14
14
  const koKRPickers = {
15
15
  // Calendar navigation
@@ -39,7 +39,7 @@ const koKRPickers = {
39
39
  dateRangePickerToolbarTitle: '날짜 범위 선택하기',
40
40
  // Clock labels
41
41
  clockLabelText: (view, time, adapter) => `${views[view]} 선택하세요. ${time === null ? '시간을 선택하지 않았습니다.' : `현재 선택된 시간은 ${adapter.format(time, 'fullTime')}입니다.`}`,
42
- hoursClockNumberText: hours => `${hours}시간`,
42
+ hoursClockNumberText: hours => `${hours}시`,
43
43
  minutesClockNumberText: minutes => `${minutes}분`,
44
44
  secondsClockNumberText: seconds => `${seconds}초`,
45
45
  // Digital clock labels
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "7.6.2",
3
+ "version": "7.7.1",
4
4
  "description": "The community edition of the Date and Time Picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -35,10 +35,10 @@
35
35
  "directory": "packages/x-date-pickers"
36
36
  },
37
37
  "dependencies": {
38
- "@babel/runtime": "^7.24.6",
38
+ "@babel/runtime": "^7.24.7",
39
39
  "@mui/base": "^5.0.0-beta.40",
40
- "@mui/system": "^5.15.15",
41
- "@mui/utils": "^5.15.14",
40
+ "@mui/system": "^5.15.20",
41
+ "@mui/utils": "^5.15.20",
42
42
  "@types/react-transition-group": "^4.4.10",
43
43
  "clsx": "^2.1.1",
44
44
  "prop-types": "^15.8.1",