@mui/x-date-pickers 7.10.0 → 7.11.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 (72) hide show
  1. package/AdapterDayjs/AdapterDayjs.js +4 -3
  2. package/CHANGELOG.md +169 -0
  3. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +4 -4
  4. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +2 -3
  5. package/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  6. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +1 -1
  7. package/PickersLayout/PickersLayout.d.ts +4 -4
  8. package/PickersLayout/PickersLayout.js +2 -4
  9. package/PickersLayout/PickersLayout.types.d.ts +0 -4
  10. package/PickersTextField/PickersInput/pickersInputClasses.d.ts +1 -1
  11. package/TimeClock/Clock.js +21 -32
  12. package/TimeClock/clockClasses.d.ts +2 -0
  13. package/TimeClock/clockClasses.js +1 -1
  14. package/index.js +1 -1
  15. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -5
  16. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +2 -2
  17. package/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.d.ts +9 -1
  18. package/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +1 -1
  19. package/internals/hooks/useField/useField.js +3 -1
  20. package/internals/hooks/useField/useFieldV6TextField.js +3 -2
  21. package/internals/hooks/useField/useFieldV7TextField.js +1 -1
  22. package/internals/hooks/usePicker/usePicker.js +2 -3
  23. package/internals/index.d.ts +1 -1
  24. package/internals/index.js +1 -1
  25. package/internals/utils/warning.d.ts +2 -4
  26. package/internals/utils/warning.js +17 -24
  27. package/locales/index.d.ts +1 -0
  28. package/locales/index.js +1 -0
  29. package/locales/koKR.js +14 -16
  30. package/locales/nnNO.d.ts +80 -0
  31. package/locales/nnNO.js +73 -0
  32. package/locales/ruRU.js +15 -18
  33. package/models/pickers.d.ts +1 -1
  34. package/modern/AdapterDayjs/AdapterDayjs.js +4 -3
  35. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +2 -3
  36. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  37. package/modern/PickersLayout/PickersLayout.js +2 -4
  38. package/modern/TimeClock/Clock.js +21 -32
  39. package/modern/TimeClock/clockClasses.js +1 -1
  40. package/modern/index.js +1 -1
  41. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -5
  42. package/modern/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +1 -1
  43. package/modern/internals/hooks/useField/useField.js +3 -1
  44. package/modern/internals/hooks/useField/useFieldV6TextField.js +3 -2
  45. package/modern/internals/hooks/useField/useFieldV7TextField.js +1 -1
  46. package/modern/internals/hooks/usePicker/usePicker.js +2 -3
  47. package/modern/internals/index.js +1 -1
  48. package/modern/internals/utils/warning.js +17 -24
  49. package/modern/locales/index.js +1 -0
  50. package/modern/locales/koKR.js +14 -16
  51. package/modern/locales/nnNO.js +73 -0
  52. package/modern/locales/ruRU.js +15 -18
  53. package/node/AdapterDayjs/AdapterDayjs.js +3 -2
  54. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +3 -4
  55. package/node/PickersCalendarHeader/PickersCalendarHeader.js +1 -1
  56. package/node/PickersLayout/PickersLayout.js +2 -4
  57. package/node/TimeClock/Clock.js +21 -32
  58. package/node/TimeClock/clockClasses.js +1 -1
  59. package/node/index.js +1 -1
  60. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -5
  61. package/node/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +1 -1
  62. package/node/internals/hooks/useField/useField.js +3 -1
  63. package/node/internals/hooks/useField/useFieldV6TextField.js +3 -2
  64. package/node/internals/hooks/useField/useFieldV7TextField.js +1 -1
  65. package/node/internals/hooks/usePicker/usePicker.js +1 -2
  66. package/node/internals/index.js +6 -12
  67. package/node/internals/utils/warning.js +19 -27
  68. package/node/locales/index.js +11 -0
  69. package/node/locales/koKR.js +14 -16
  70. package/node/locales/nnNO.js +79 -0
  71. package/node/locales/ruRU.js +15 -18
  72. package/package.json +4 -4
@@ -1,28 +1,21 @@
1
- export const buildDeprecatedPropsWarning = message => {
2
- let alreadyWarned = false;
1
+ const warnedOnceCache = new Set();
2
+
3
+ // TODO move to @mui/x-internals
4
+ // TODO eventually move to @base_ui/internals. Base UI, etc. too need this helper.
5
+ export function warnOnce(message, gravity = 'warning') {
3
6
  if (process.env.NODE_ENV === 'production') {
4
- return () => {};
7
+ return;
5
8
  }
6
9
  const cleanMessage = Array.isArray(message) ? message.join('\n') : message;
7
- return deprecatedProps => {
8
- const deprecatedKeys = Object.entries(deprecatedProps).filter(([, value]) => value !== undefined).map(([key]) => `- ${key}`);
9
- if (!alreadyWarned && deprecatedKeys.length > 0) {
10
- alreadyWarned = true;
11
- console.warn([cleanMessage, 'deprecated props observed:', ...deprecatedKeys].join('\n'));
10
+ if (!warnedOnceCache.has(cleanMessage)) {
11
+ warnedOnceCache.add(cleanMessage);
12
+ if (gravity === 'error') {
13
+ console.error(cleanMessage);
14
+ } else {
15
+ console.warn(cleanMessage);
12
16
  }
13
- };
14
- };
15
- export const buildWarning = (message, gravity = 'warning') => {
16
- let alreadyWarned = false;
17
- const cleanMessage = Array.isArray(message) ? message.join('\n') : message;
18
- return () => {
19
- if (!alreadyWarned) {
20
- alreadyWarned = true;
21
- if (gravity === 'error') {
22
- console.error(cleanMessage);
23
- } else {
24
- console.warn(cleanMessage);
25
- }
26
- }
27
- };
28
- };
17
+ }
18
+ }
19
+ export function clearWarningsCache() {
20
+ warnedOnceCache.clear();
21
+ }
@@ -20,6 +20,7 @@ export * from './kzKZ';
20
20
  export * from './mk';
21
21
  export * from './nbNO';
22
22
  export * from './nlNL';
23
+ export * from './nnNO';
23
24
  export * from './plPL';
24
25
  export * from './ptBR';
25
26
  export * from './roRO';
package/locales/index.js CHANGED
@@ -20,6 +20,7 @@ export * from './kzKZ';
20
20
  export * from './mk';
21
21
  export * from './nbNO';
22
22
  export * from './nlNL';
23
+ export * from './nnNO';
23
24
  export * from './plPL';
24
25
  export * from './ptBR';
25
26
  export * from './roRO';
package/locales/koKR.js CHANGED
@@ -16,11 +16,10 @@ const koKRPickers = {
16
16
  // DateRange labels
17
17
  start: '시작',
18
18
  end: '종료',
19
- // startDate: 'Start date',
20
- // startTime: 'Start time',
21
- // endDate: 'End date',
22
- // endTime: 'End time',
23
-
19
+ startDate: '시작 날짜',
20
+ startTime: '시작 시간',
21
+ endDate: '종료 날짜',
22
+ endTime: '종료 시간',
24
23
  // Action bar
25
24
  cancelButtonLabel: '취소',
26
25
  clearButtonLabel: '초기화',
@@ -54,23 +53,22 @@ const koKRPickers = {
54
53
  fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
55
54
  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
56
55
  fieldDayPlaceholder: () => 'DD',
57
- // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
56
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
58
57
  fieldHoursPlaceholder: () => 'hh',
59
58
  fieldMinutesPlaceholder: () => 'mm',
60
59
  fieldSecondsPlaceholder: () => 'ss',
61
- fieldMeridiemPlaceholder: () => 'aa'
62
-
60
+ fieldMeridiemPlaceholder: () => 'aa',
63
61
  // View names
64
- // year: 'Year',
65
- // month: 'Month',
66
- // day: 'Day',
67
- // weekDay: 'Week day',
68
- // hours: 'Hours',
69
- // minutes: 'Minutes',
70
- // seconds: 'Seconds',
62
+ year: '',
63
+ month: '',
64
+ day: '',
65
+ weekDay: '평일',
66
+ hours: '시간',
67
+ minutes: '',
68
+ seconds: '',
71
69
  // meridiem: 'Meridiem',
72
70
 
73
71
  // Common
74
- // empty: 'Empty',
72
+ empty: '공란'
75
73
  };
76
74
  export const koKR = getPickersLocalization(koKRPickers);
@@ -0,0 +1,80 @@
1
+ import { TimeViewWithMeridiem } from '../internals/models';
2
+ export declare const nnNO: {
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("@mui/x-date-pickers/models").DateView) => string) | undefined;
16
+ start?: string | undefined;
17
+ end?: string | undefined;
18
+ startDate?: string | undefined;
19
+ startTime?: string | undefined;
20
+ endDate?: string | undefined;
21
+ endTime?: string | undefined;
22
+ cancelButtonLabel?: string | undefined;
23
+ clearButtonLabel?: string | undefined;
24
+ okButtonLabel?: string | undefined;
25
+ todayButtonLabel?: string | undefined;
26
+ clockLabelText?: ((view: import("@mui/x-date-pickers/models").TimeView, time: any, adapter: import("@mui/x-date-pickers/models").MuiPickersAdapter<any, any>) => string) | undefined;
27
+ hoursClockNumberText?: ((hours: string) => string) | undefined;
28
+ minutesClockNumberText?: ((minutes: string) => string) | undefined;
29
+ secondsClockNumberText?: ((seconds: string) => string) | undefined;
30
+ selectViewText?: ((view: TimeViewWithMeridiem) => string) | undefined;
31
+ openDatePickerDialogue?: ((date: any, utils: import("@mui/x-date-pickers/models").MuiPickersAdapter<any, any>) => string) | undefined;
32
+ openTimePickerDialogue?: ((date: any, utils: import("@mui/x-date-pickers/models").MuiPickersAdapter<any, any>) => string) | undefined;
33
+ fieldClearLabel?: string | undefined;
34
+ timeTableLabel?: string | undefined;
35
+ dateTableLabel?: string | undefined;
36
+ fieldYearPlaceholder?: ((params: {
37
+ digitAmount: number;
38
+ format: string;
39
+ }) => string) | undefined;
40
+ fieldMonthPlaceholder?: ((params: {
41
+ contentType: import("@mui/x-date-pickers/models").FieldSectionContentType;
42
+ format: string;
43
+ }) => string) | undefined;
44
+ fieldDayPlaceholder?: ((params: {
45
+ format: string;
46
+ }) => string) | undefined;
47
+ fieldWeekDayPlaceholder?: ((params: {
48
+ contentType: import("@mui/x-date-pickers/models").FieldSectionContentType;
49
+ format: string;
50
+ }) => string) | undefined;
51
+ fieldHoursPlaceholder?: ((params: {
52
+ format: string;
53
+ }) => string) | undefined;
54
+ fieldMinutesPlaceholder?: ((params: {
55
+ format: string;
56
+ }) => string) | undefined;
57
+ fieldSecondsPlaceholder?: ((params: {
58
+ format: string;
59
+ }) => string) | undefined;
60
+ fieldMeridiemPlaceholder?: ((params: {
61
+ format: string;
62
+ }) => string) | undefined;
63
+ year?: string | undefined;
64
+ month?: string | undefined;
65
+ day?: string | undefined;
66
+ weekDay?: string | undefined;
67
+ hours?: string | undefined;
68
+ minutes?: string | undefined;
69
+ seconds?: string | undefined;
70
+ meridiem?: string | undefined;
71
+ empty?: string | undefined;
72
+ datePickerToolbarTitle?: string | undefined;
73
+ timePickerToolbarTitle?: string | undefined;
74
+ dateTimePickerToolbarTitle?: string | undefined;
75
+ dateRangePickerToolbarTitle?: string | undefined;
76
+ };
77
+ };
78
+ };
79
+ };
80
+ };
@@ -0,0 +1,73 @@
1
+ import { getPickersLocalization } from './utils/getPickersLocalization';
2
+ const timeViews = {
3
+ hours: 'timar',
4
+ minutes: 'minuttar',
5
+ seconds: 'sekundar',
6
+ meridiem: 'meridiem'
7
+ };
8
+ const nnNOPickers = {
9
+ // Calendar navigation
10
+ previousMonth: 'Forrige månad',
11
+ nextMonth: 'Neste månad',
12
+ // View navigation
13
+ openPreviousView: 'Opne forrige visning',
14
+ openNextView: 'Opne neste visning',
15
+ calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'årsvisning er open, byt til kalendervisning' : 'kalendervisning er open, byt til årsvisning',
16
+ // DateRange labels
17
+ start: 'Start',
18
+ end: 'Slutt',
19
+ startDate: 'Startdato',
20
+ startTime: 'Starttid',
21
+ endDate: 'Sluttdato',
22
+ endTime: 'Slutttid',
23
+ // Action bar
24
+ cancelButtonLabel: 'Avbryt',
25
+ clearButtonLabel: 'Fjern',
26
+ okButtonLabel: 'OK',
27
+ todayButtonLabel: 'I dag',
28
+ // Toolbar titles
29
+ datePickerToolbarTitle: 'Vel dato',
30
+ dateTimePickerToolbarTitle: 'Vel dato & klokkeslett',
31
+ timePickerToolbarTitle: 'Vel klokkeslett',
32
+ dateRangePickerToolbarTitle: 'Vel datoperiode',
33
+ // Clock labels
34
+ clockLabelText: (view, time, adapter) => `Vel ${timeViews[view]}. ${time === null ? 'Ingen tid vald' : `Vald tid er ${adapter.format(time, 'fullTime')}`}`,
35
+ hoursClockNumberText: hours => `${hours} timar`,
36
+ minutesClockNumberText: minutes => `${minutes} minuttar`,
37
+ secondsClockNumberText: seconds => `${seconds} sekundar`,
38
+ // Digital clock labels
39
+ selectViewText: view => `Vel ${timeViews[view]}`,
40
+ // Calendar labels
41
+ calendarWeekNumberHeaderLabel: 'Vekenummer',
42
+ calendarWeekNumberHeaderText: '#',
43
+ calendarWeekNumberAriaLabelText: weekNumber => `Veke ${weekNumber}`,
44
+ calendarWeekNumberText: weekNumber => `${weekNumber}`,
45
+ // Open picker labels
46
+ openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vel dato, vald dato er ${utils.format(value, 'fullDate')}` : 'Vel dato',
47
+ openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Vel tid, vald tid er ${utils.format(value, 'fullTime')}` : 'Vel tid',
48
+ fieldClearLabel: 'Fjern verdi',
49
+ // Table labels
50
+ timeTableLabel: 'vel tid',
51
+ dateTableLabel: 'vel dato',
52
+ // Field section placeholders
53
+ fieldYearPlaceholder: params => 'Å'.repeat(params.digitAmount),
54
+ fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
55
+ fieldDayPlaceholder: () => 'DD',
56
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
57
+ fieldHoursPlaceholder: () => 'tt',
58
+ fieldMinutesPlaceholder: () => 'mm',
59
+ fieldSecondsPlaceholder: () => 'ss',
60
+ fieldMeridiemPlaceholder: () => 'aa',
61
+ // View names
62
+ year: 'År',
63
+ month: 'Månad',
64
+ day: 'Dag',
65
+ weekDay: 'Vekedag',
66
+ hours: 'Timar',
67
+ minutes: 'Minuttar',
68
+ seconds: 'Sekundar',
69
+ meridiem: 'Meridiem',
70
+ // Common
71
+ empty: 'Tom'
72
+ };
73
+ export const nnNO = getPickersLocalization(nnNOPickers);
package/locales/ruRU.js CHANGED
@@ -17,11 +17,10 @@ const ruRUPickers = {
17
17
  // DateRange labels
18
18
  start: 'Начало',
19
19
  end: 'Конец',
20
- // startDate: 'Start date',
21
- // startTime: 'Start time',
22
- // endDate: 'End date',
23
- // endTime: 'End time',
24
-
20
+ startDate: 'Начальная дата',
21
+ startTime: 'Начальное время',
22
+ endDate: 'Конечная дата',
23
+ endTime: 'Конечное время',
25
24
  // Action bar
26
25
  cancelButtonLabel: 'Отмена',
27
26
  clearButtonLabel: 'Очистить',
@@ -55,23 +54,21 @@ const ruRUPickers = {
55
54
  fieldYearPlaceholder: params => 'Г'.repeat(params.digitAmount),
56
55
  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'ММММ' : 'ММ',
57
56
  fieldDayPlaceholder: () => 'ДД',
58
- // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
57
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'ДДДД' : 'ДД',
59
58
  fieldHoursPlaceholder: () => 'чч',
60
59
  fieldMinutesPlaceholder: () => 'мм',
61
60
  fieldSecondsPlaceholder: () => 'сс',
62
- fieldMeridiemPlaceholder: () => '(д|п)п'
63
-
61
+ fieldMeridiemPlaceholder: () => '(д|п)п',
64
62
  // View names
65
- // year: 'Year',
66
- // month: 'Month',
67
- // day: 'Day',
68
- // weekDay: 'Week day',
69
- // hours: 'Hours',
70
- // minutes: 'Minutes',
71
- // seconds: 'Seconds',
72
- // meridiem: 'Meridiem',
73
-
63
+ year: 'Год',
64
+ month: 'Месяц',
65
+ day: 'День',
66
+ weekDay: 'День недели',
67
+ hours: 'Часы',
68
+ minutes: 'Минуты',
69
+ seconds: 'Секунды',
70
+ meridiem: 'Меридием',
74
71
  // Common
75
- // empty: 'Empty',
72
+ empty: 'Пустой'
76
73
  };
77
74
  export const ruRU = getPickersLocalization(ruRUPickers);
@@ -2,7 +2,7 @@ import type { PickersShortcutsItemContext } from '../PickersShortcuts';
2
2
  export interface PickerChangeHandlerContext<TError> {
3
3
  validationError: TError;
4
4
  /**
5
- * Shortcut causing this `onChange` call.
5
+ * Shortcut causing this `onChange` or `onAccept` call.
6
6
  * If the call has not been caused by a shortcut selection, this property will be `undefined`.
7
7
  */
8
8
  shortcut?: PickersShortcutsItemContext;
@@ -6,12 +6,11 @@ import customParseFormatPlugin from 'dayjs/plugin/customParseFormat';
6
6
  import localizedFormatPlugin from 'dayjs/plugin/localizedFormat';
7
7
  import isBetweenPlugin from 'dayjs/plugin/isBetween';
8
8
  import advancedFormatPlugin from 'dayjs/plugin/advancedFormat';
9
- import { buildWarning } from '../internals/utils/warning';
9
+ import { warnOnce } from '../internals/utils/warning';
10
10
  defaultDayjs.extend(localizedFormatPlugin);
11
11
  defaultDayjs.extend(weekOfYearPlugin);
12
12
  defaultDayjs.extend(isBetweenPlugin);
13
13
  defaultDayjs.extend(advancedFormatPlugin);
14
- const localeNotFoundWarning = buildWarning(['Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale', "Or you forget to import the locale from 'dayjs/locale/{localeUsed}'", 'fallback on English locale']);
15
14
  const formatTokenMap = {
16
15
  // Year
17
16
  YY: 'year',
@@ -234,7 +233,9 @@ export class AdapterDayjs {
234
233
  const locale = this.locale || 'en';
235
234
  let localeObject = locales[locale];
236
235
  if (localeObject === undefined) {
237
- localeNotFoundWarning();
236
+ if (process.env.NODE_ENV !== 'production') {
237
+ warnOnce(['MUI X: Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale.', "Or you forget to import the locale from 'dayjs/locale/{localeUsed}'", 'fallback on English locale.']);
238
+ }
238
239
  localeObject = locales.en;
239
240
  }
240
241
  return localeObject.formats;
@@ -9,7 +9,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
9
  /**
10
10
  * @ignore - internal component.
11
11
  */
12
- function DesktopDateTimePickerLayout(props) {
12
+ const DesktopDateTimePickerLayout = /*#__PURE__*/React.forwardRef(function DesktopDateTimePickerLayout(props, ref) {
13
13
  const isRtl = useRtl();
14
14
  const {
15
15
  toolbar,
@@ -22,7 +22,6 @@ function DesktopDateTimePickerLayout(props) {
22
22
  sx,
23
23
  className,
24
24
  isLandscape,
25
- ref,
26
25
  classes
27
26
  } = props;
28
27
  const isActionBarVisible = actionBar && (actionBar.props.actions?.length ?? 0) > 0;
@@ -55,7 +54,7 @@ function DesktopDateTimePickerLayout(props) {
55
54
  })]
56
55
  }), actionBar]
57
56
  });
58
- }
57
+ });
59
58
  process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes = {
60
59
  // ----------------------------- Warning --------------------------------
61
60
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -152,7 +152,7 @@ const PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCale
152
152
  const _useSlotProps = useSlotProps({
153
153
  elementType: SwitchViewIcon,
154
154
  externalSlotProps: slotProps?.switchViewIcon,
155
- ownerState: undefined,
155
+ ownerState,
156
156
  className: classes.switchViewIcon
157
157
  }),
158
158
  switchViewIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
@@ -89,7 +89,6 @@ export const PickersLayoutContentWrapper = styled('div', {
89
89
  display: 'flex',
90
90
  flexDirection: 'column'
91
91
  });
92
-
93
92
  /**
94
93
  * Demos:
95
94
  *
@@ -99,7 +98,7 @@ export const PickersLayoutContentWrapper = styled('div', {
99
98
  *
100
99
  * - [PickersLayout API](https://mui.com/x/api/date-pickers/pickers-layout/)
101
100
  */
102
- const PickersLayout = function PickersLayout(inProps) {
101
+ const PickersLayout = /*#__PURE__*/React.forwardRef(function PickersLayout(inProps, ref) {
103
102
  const props = useThemeProps({
104
103
  props: inProps,
105
104
  name: 'MuiPickersLayout'
@@ -115,7 +114,6 @@ const PickersLayout = function PickersLayout(inProps) {
115
114
  sx,
116
115
  className,
117
116
  isLandscape,
118
- ref,
119
117
  wrapperVariant
120
118
  } = props;
121
119
  const classes = useUtilityClasses(props);
@@ -133,7 +131,7 @@ const PickersLayout = function PickersLayout(inProps) {
133
131
  })
134
132
  }), actionBar]
135
133
  });
136
- };
134
+ });
137
135
  process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
138
136
  // ----------------------------- Warning --------------------------------
139
137
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import clsx from 'clsx';
3
4
  import IconButton from '@mui/material/IconButton';
@@ -13,7 +14,8 @@ import { formatMeridiem } from '../internals/utils/date-utils';
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const useUtilityClasses = ownerState => {
15
16
  const {
16
- classes
17
+ classes,
18
+ meridiemMode
17
19
  } = ownerState;
18
20
  const slots = {
19
21
  root: ['root'],
@@ -21,8 +23,8 @@ const useUtilityClasses = ownerState => {
21
23
  wrapper: ['wrapper'],
22
24
  squareMask: ['squareMask'],
23
25
  pin: ['pin'],
24
- amButton: ['amButton'],
25
- pmButton: ['pmButton'],
26
+ amButton: ['amButton', meridiemMode === 'am' && 'selected'],
27
+ pmButton: ['pmButton', meridiemMode === 'pm' && 'selected'],
26
28
  meridiemText: ['meridiemText']
27
29
  };
28
30
  return composeClasses(slots, getClockUtilityClass, classes);
@@ -105,23 +107,15 @@ const ClockPin = styled('div', {
105
107
  left: '50%',
106
108
  transform: 'translate(-50%, -50%)'
107
109
  }));
108
- const ClockAmButton = styled(IconButton, {
109
- name: 'MuiClock',
110
- slot: 'AmButton',
111
- overridesResolver: (_, styles) => styles.amButton
112
- })(({
113
- theme
114
- }) => ({
110
+ const meridiemButtonCommonStyles = (theme, meridiemMode) => ({
115
111
  zIndex: 1,
116
- position: 'absolute',
117
112
  bottom: 8,
118
- left: 8,
119
113
  paddingLeft: 4,
120
114
  paddingRight: 4,
121
115
  width: CLOCK_HOUR_WIDTH,
122
116
  variants: [{
123
117
  props: {
124
- meridiemMode: 'am'
118
+ meridiemMode
125
119
  },
126
120
  style: {
127
121
  backgroundColor: (theme.vars || theme).palette.primary.main,
@@ -131,6 +125,17 @@ const ClockAmButton = styled(IconButton, {
131
125
  }
132
126
  }
133
127
  }]
128
+ });
129
+ const ClockAmButton = styled(IconButton, {
130
+ name: 'MuiClock',
131
+ slot: 'AmButton',
132
+ overridesResolver: (_, styles) => styles.amButton
133
+ })(({
134
+ theme
135
+ }) => _extends({}, meridiemButtonCommonStyles(theme, 'am'), {
136
+ // keeping it here to make TS happy
137
+ position: 'absolute',
138
+ left: 8
134
139
  }));
135
140
  const ClockPmButton = styled(IconButton, {
136
141
  name: 'MuiClock',
@@ -138,26 +143,10 @@ const ClockPmButton = styled(IconButton, {
138
143
  overridesResolver: (_, styles) => styles.pmButton
139
144
  })(({
140
145
  theme
141
- }) => ({
142
- zIndex: 1,
146
+ }) => _extends({}, meridiemButtonCommonStyles(theme, 'pm'), {
147
+ // keeping it here to make TS happy
143
148
  position: 'absolute',
144
- bottom: 8,
145
- right: 8,
146
- paddingLeft: 4,
147
- paddingRight: 4,
148
- width: CLOCK_HOUR_WIDTH,
149
- variants: [{
150
- props: {
151
- meridiemMode: 'pm'
152
- },
153
- style: {
154
- backgroundColor: (theme.vars || theme).palette.primary.main,
155
- color: (theme.vars || theme).palette.primary.contrastText,
156
- '&:hover': {
157
- backgroundColor: (theme.vars || theme).palette.primary.light
158
- }
159
- }
160
- }]
149
+ right: 8
161
150
  }));
162
151
  const ClockMeridiemText = styled(Typography, {
163
152
  name: 'MuiClock',
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generat
2
2
  export function getClockUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiClock', slot);
4
4
  }
5
- export const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton', 'meridiemText']);
5
+ export const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton', 'meridiemText', 'selected']);
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v7.10.0
2
+ * @mui/x-date-pickers v7.11.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -51,7 +51,11 @@ const useUtilityClasses = ownerState => {
51
51
  const slots = {
52
52
  root: ['root'],
53
53
  spacer: ['spacer'],
54
- button: ['button']
54
+ button: ['button'],
55
+ previousIconButton: ['previousIconButton'],
56
+ nextIconButton: ['nextIconButton'],
57
+ leftArrowIcon: ['leftArrowIcon'],
58
+ rightArrowIcon: ['rightArrowIcon']
55
59
  };
56
60
  return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);
57
61
  };
@@ -106,7 +110,7 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
106
110
  ownerState: _extends({}, ownerState, {
107
111
  hidden: previousProps.isHidden
108
112
  }),
109
- className: classes.button
113
+ className: clsx(classes.button, classes.previousIconButton)
110
114
  });
111
115
  const NextIconButton = slots?.nextIconButton ?? PickersArrowSwitcherButton;
112
116
  const nextIconButtonProps = useSlotProps({
@@ -123,7 +127,7 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
123
127
  ownerState: _extends({}, ownerState, {
124
128
  hidden: nextProps.isHidden
125
129
  }),
126
- className: classes.button
130
+ className: clsx(classes.button, classes.nextIconButton)
127
131
  });
128
132
  const LeftArrowIcon = slots?.leftArrowIcon ?? ArrowLeftIcon;
129
133
  // The spread is here to avoid this bug mui/material-ui#34056
@@ -133,7 +137,8 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
133
137
  additionalProps: {
134
138
  fontSize: 'inherit'
135
139
  },
136
- ownerState: undefined
140
+ ownerState,
141
+ className: classes.leftArrowIcon
137
142
  }),
138
143
  leftArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
139
144
  const RightArrowIcon = slots?.rightArrowIcon ?? ArrowRightIcon;
@@ -144,7 +149,8 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
144
149
  additionalProps: {
145
150
  fontSize: 'inherit'
146
151
  },
147
- ownerState: undefined
152
+ ownerState,
153
+ className: classes.rightArrowIcon
148
154
  }),
149
155
  rightArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
150
156
  return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generat
2
2
  export function getPickersArrowSwitcherUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiPickersArrowSwitcher', slot);
4
4
  }
5
- export const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button']);
5
+ export const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button', 'previousIconButton', 'nextIconButton', 'leftArrowIcon', 'rightArrowIcon']);
@@ -69,7 +69,9 @@ export const useField = params => {
69
69
  }));
70
70
  const handleContainerKeyDown = useEventCallback(event => {
71
71
  onKeyDown?.(event);
72
-
72
+ if (disabled) {
73
+ return;
74
+ }
73
75
  // eslint-disable-next-line default-case
74
76
  switch (true) {
75
77
  // Select all
@@ -47,7 +47,8 @@ export const useFieldV6TextField = params => {
47
47
  placeholder: inPlaceholder
48
48
  },
49
49
  internalProps: {
50
- readOnly = false
50
+ readOnly = false,
51
+ disabled = false
51
52
  },
52
53
  parsedSelectedSections,
53
54
  activeSectionIndex,
@@ -188,7 +189,7 @@ export const useFieldV6TextField = params => {
188
189
 
189
190
  // prevent default to avoid the input `onChange` handler being called
190
191
  event.preventDefault();
191
- if (readOnly) {
192
+ if (readOnly || disabled) {
192
193
  return;
193
194
  }
194
195
  const pastedValue = event.clipboardData.getData('text');
@@ -236,7 +236,7 @@ export const useFieldV7TextField = params => {
236
236
  const handleInputContentPaste = useEventCallback(event => {
237
237
  // prevent default to avoid the input `onInput` handler being called
238
238
  event.preventDefault();
239
- if (readOnly || typeof parsedSelectedSections !== 'number') {
239
+ if (readOnly || disabled || typeof parsedSelectedSections !== 'number') {
240
240
  return;
241
241
  }
242
242
  const activeSection = state.sections[parsedSelectedSections];