@mui/x-date-pickers 8.0.0-alpha.4 → 8.0.0-alpha.5

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 (106) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/MonthCalendar/MonthCalendar.d.ts +1 -1
  3. package/MonthCalendar/MonthCalendar.js +31 -11
  4. package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
  5. package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
  6. package/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  7. package/MonthCalendar/index.d.ts +0 -3
  8. package/MonthCalendar/index.js +1 -2
  9. package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
  10. package/MonthCalendar/monthCalendarClasses.js +1 -1
  11. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  12. package/PickersSectionList/PickersSectionList.js +21 -16
  13. package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
  14. package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
  15. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  16. package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
  17. package/PickersTextField/PickersInput/PickersInput.js +20 -14
  18. package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
  19. package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  20. package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
  21. package/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  22. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
  23. package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
  24. package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  25. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  26. package/PickersTextField/PickersTextField.js +75 -62
  27. package/PickersTextField/PickersTextField.types.d.ts +43 -4
  28. package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
  29. package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  30. package/TimeClock/Clock.d.ts +4 -0
  31. package/TimeClock/Clock.js +9 -6
  32. package/TimeClock/TimeClock.js +21 -4
  33. package/YearCalendar/YearCalendar.js +46 -13
  34. package/YearCalendar/YearCalendar.types.d.ts +2 -2
  35. package/YearCalendar/YearCalendarButton.d.ts +23 -0
  36. package/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  37. package/YearCalendar/index.d.ts +0 -3
  38. package/YearCalendar/index.js +1 -2
  39. package/YearCalendar/yearCalendarClasses.d.ts +7 -1
  40. package/YearCalendar/yearCalendarClasses.js +1 -1
  41. package/index.js +1 -1
  42. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  43. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
  44. package/internals/hooks/useFieldOwnerState.d.ts +1 -0
  45. package/internals/hooks/useFieldOwnerState.js +6 -2
  46. package/models/fields.d.ts +11 -1
  47. package/modern/MonthCalendar/MonthCalendar.js +31 -11
  48. package/modern/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  49. package/modern/MonthCalendar/index.js +1 -2
  50. package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
  51. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  52. package/modern/PickersSectionList/PickersSectionList.js +21 -16
  53. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  54. package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
  55. package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  56. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  57. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  58. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  59. package/modern/PickersTextField/PickersTextField.js +75 -62
  60. package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
  61. package/modern/TimeClock/Clock.js +9 -6
  62. package/modern/TimeClock/TimeClock.js +21 -4
  63. package/modern/YearCalendar/YearCalendar.js +46 -13
  64. package/modern/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  65. package/modern/YearCalendar/index.js +1 -2
  66. package/modern/YearCalendar/yearCalendarClasses.js +1 -1
  67. package/modern/index.js +1 -1
  68. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  69. package/modern/internals/hooks/useFieldOwnerState.js +6 -2
  70. package/node/MonthCalendar/MonthCalendar.js +31 -11
  71. package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
  72. package/node/MonthCalendar/index.js +1 -8
  73. package/node/MonthCalendar/monthCalendarClasses.js +1 -1
  74. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
  75. package/node/PickersSectionList/PickersSectionList.js +21 -16
  76. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
  77. package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
  78. package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
  79. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
  80. package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
  81. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
  82. package/node/PickersTextField/PickersTextField.js +75 -62
  83. package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
  84. package/node/TimeClock/Clock.js +9 -6
  85. package/node/TimeClock/TimeClock.js +21 -4
  86. package/node/YearCalendar/YearCalendar.js +45 -12
  87. package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
  88. package/node/YearCalendar/index.js +1 -8
  89. package/node/YearCalendar/yearCalendarClasses.js +1 -1
  90. package/node/index.js +1 -1
  91. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  92. package/node/internals/hooks/useFieldOwnerState.js +6 -2
  93. package/package.json +3 -3
  94. package/themeAugmentation/components.d.ts +0 -8
  95. package/themeAugmentation/overrides.d.ts +2 -4
  96. package/themeAugmentation/props.d.ts +2 -4
  97. package/MonthCalendar/PickersMonth.d.ts +0 -28
  98. package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
  99. package/MonthCalendar/pickersMonthClasses.js +0 -5
  100. package/YearCalendar/PickersYear.d.ts +0 -27
  101. package/YearCalendar/pickersYearClasses.d.ts +0 -13
  102. package/YearCalendar/pickersYearClasses.js +0 -5
  103. package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
  104. package/modern/YearCalendar/pickersYearClasses.js +0 -5
  105. package/node/MonthCalendar/pickersMonthClasses.js +0 -12
  106. package/node/YearCalendar/pickersYearClasses.js +0 -12
package/CHANGELOG.md CHANGED
@@ -5,6 +5,108 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.0.0-alpha.5
9
+
10
+ _Dec 19, 2024_
11
+
12
+ We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🌍 Improve Korean (ko-KR) locale on the Data Grid
15
+ - 🐞 Bugfixes
16
+
17
+ Special thanks go out to the community contributors who have helped make this release possible:
18
+ @good-jinu, @k-rajat19.
19
+ Following are all team members who have contributed to this release:
20
+ @alexfauquette, @cherniavskii, @flaviendelangle, @KenanYusuf, @LukasTy, @MBilalShafi, @romgrk.
21
+
22
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
23
+
24
+ ### Data Grid
25
+
26
+ #### Breaking changes
27
+
28
+ - Passing additional props (like `data-*`, `aria-*`) directly on the Data Grid component is no longer supported. To pass the props, use `slotProps`.
29
+
30
+ - For `.root` element, use `slotProps.root`.
31
+ - For `.main` element (the one with `role="grid"`), use `slotProps.main`.
32
+
33
+ - `detailPanelExpandedRowIds` and `onDetailPanelExpandedRowIdsChange` props use a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array:
34
+
35
+ ```diff
36
+ -detailPanelExpandedRowIds?: GridRowId[];
37
+ +detailPanelExpandedRowIds?: Set<GridRowId>;
38
+
39
+ -onDetailPanelExpandedRowIdsChange?: (ids: GridRowId[], details: GridCallbackDetails) => void;
40
+ +onDetailPanelExpandedRowIdsChange?: (ids: Set<GridRowId>, details: GridCallbackDetails) => void;
41
+ ```
42
+
43
+ - `apiRef.current.getExpandedDetailPanels` and `apiRef.current.setExpandedDetailPanels` methods receive and return a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array.
44
+ - `gridDetailPanelExpandedRowIdsSelector` returns a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array.
45
+ - `gridDetailPanelExpandedRowsHeightCacheSelector` was removed.
46
+
47
+ #### `@mui/x-data-grid@8.0.0-alpha.5`
48
+
49
+ - [DataGrid] Consider `columnGroupHeaderHeight` prop in `getTotalHeaderHeight` method (#15915) @k-rajat19
50
+ - [DataGrid] Fix autosizing with virtualized columns (#15116) @k-rajat19
51
+ - [DataGrid] Move `<Badge />` to leaf import (#15879) @romgrk
52
+ - [DataGrid] Move `<ListItemText />` and `<ListItemIcon />` to leaf import (#15869) @romgrk
53
+ - [DataGrid] Remove the Joy UI demo (#15913) @romgrk
54
+ - [DataGrid] Update quick filter input variant (#15909) @KenanYusuf
55
+ - [DataGrid] Use `slotProps` to forward props to `.main` and `.root` elements (#15870) @MBilalShafi
56
+ - [l10n] Improve Korean(ko-KR) locale (#15878) @good-jinu
57
+
58
+ #### `@mui/x-data-grid-pro@8.0.0-alpha.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
59
+
60
+ Same changes as in `@mui/x-data-grid@8.0.0-alpha.5`, plus:
61
+
62
+ - [DataGridPro] Use `Set` for `detailPanelExpandedRowIds` (#15835) @cherniavskii
63
+
64
+ #### `@mui/x-data-grid-premium@8.0.0-alpha.5` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
65
+
66
+ Same changes as in `@mui/x-data-grid-pro@8.0.0-alpha.5`.
67
+
68
+ ### Date and Time Pickers
69
+
70
+ #### Breaking changes
71
+
72
+ - The `<PickersMonth />` component has been moved inside the Month Calendar component — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#month-calendar).
73
+
74
+ - The `<PickersYear />` component has been moved inside the Year Calendar component — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#year-calendar).
75
+
76
+ #### `@mui/x-date-pickers@8.0.0-alpha.5`
77
+
78
+ - [pickers] Add verification to disable skipped hours in spring forward DST (#15849) @flaviendelangle
79
+ - [pickers] Remove `PickersMonth` and `PickersYear` from the theme and remove the `div` wrapping each button (#15806) @flaviendelangle
80
+ - [pickers] Use the new `ownerState` object on the `<PickersTextField />` component (#15863) @flaviendelangle
81
+
82
+ #### `@mui/x-date-pickers-pro@8.0.0-alpha.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
83
+
84
+ Same changes as in `@mui/x-date-pickers@8.0.0-alpha.5`.
85
+
86
+ ### Charts
87
+
88
+ #### `@mui/x-charts@8.0.0-alpha.5`
89
+
90
+ - [charts] Fix `<ScatterChart />` value type if `null` (#15917) @alexfauquette
91
+
92
+ #### `@mui/x-charts-pro@8.0.0-alpha.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
93
+
94
+ Same changes as in `@mui/x-charts@8.0.0-alpha.5`.
95
+
96
+ ### Tree View
97
+
98
+ #### `@mui/x-tree-view@8.0.0-alpha.5`
99
+
100
+ No changes since `@mui/x-tree-view-pro@v8.0.0-alpha.4`.
101
+
102
+ #### `@mui/x-tree-view-pro@8.0.0-alpha.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
103
+
104
+ Same changes as in `@mui/x-tree-view@8.0.0-alpha.5`.
105
+
106
+ ### Core
107
+
108
+ - [code-infra] Remove `@mui/material-nextjs` dependency (#15925) @LukasTy
109
+
8
110
  ## 8.0.0-alpha.4
9
111
 
10
112
  _Dec 13, 2024_
@@ -39,6 +141,7 @@ Following are all team members who have contributed to this release:
39
141
  -const output = useGridSelector(apiRef, selector, equals)
40
142
  +const output = useGridSelector(apiRef, selector, arguments, equals)
41
143
  ```
144
+
42
145
  - The default variant for text fields and selects in the filter panel has been changed to `outlined`.
43
146
  - The "row spanning" feature is now stable.
44
147
  ```diff
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultizedProps } from '@mui/x-internals/types';
3
3
  import { MonthCalendarProps } from './MonthCalendar.types';
4
- export declare function useMonthCalendarDefaultizedProps(props: MonthCalendarProps, name: string): DefaultizedProps<MonthCalendarProps, 'minDate' | 'maxDate' | 'disableFuture' | 'disablePast'>;
4
+ export declare function useMonthCalendarDefaultizedProps(props: MonthCalendarProps, name: string): DefaultizedProps<MonthCalendarProps, 'minDate' | 'maxDate' | 'disableFuture' | 'disablePast' | 'monthsPerRow'>;
5
5
  type MonthCalendarComponent = ((props: MonthCalendarProps & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
6
6
  propTypes?: any;
7
7
  };
@@ -2,14 +2,15 @@
2
2
 
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
- const _excluded = ["className", "classes", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "autoFocus", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
5
+ const _excluded = ["autoFocus", "className", "classes", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
9
9
  import { useRtl } from '@mui/system/RtlProvider';
10
+ import { shouldForwardProp } from '@mui/system/createStyled';
10
11
  import { styled, useThemeProps } from '@mui/material/styles';
11
12
  import { unstable_useControlled as useControlled, unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
12
- import { PickersMonth } from "./PickersMonth.js";
13
+ import { MonthCalendarButton } from "./MonthCalendarButton.js";
13
14
  import { useUtils, useNow, useDefaultDates } from "../internals/hooks/useUtils.js";
14
15
  import { getMonthCalendarUtilityClass } from "./monthCalendarClasses.js";
15
16
  import { applyDefaultDate, getMonthsInYear } from "../internals/utils/date-utils.js";
@@ -36,6 +37,7 @@ export function useMonthCalendarDefaultizedProps(props, name) {
36
37
  disableFuture: false,
37
38
  disablePast: false
38
39
  }, themeProps, {
40
+ monthsPerRow: themeProps.monthsPerRow ?? 3,
39
41
  minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
40
42
  maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)
41
43
  });
@@ -43,15 +45,32 @@ export function useMonthCalendarDefaultizedProps(props, name) {
43
45
  const MonthCalendarRoot = styled('div', {
44
46
  name: 'MuiMonthCalendar',
45
47
  slot: 'Root',
46
- overridesResolver: (props, styles) => styles.root
48
+ overridesResolver: (props, styles) => styles.root,
49
+ shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'monthsPerRow'
47
50
  })({
48
51
  display: 'flex',
49
52
  flexWrap: 'wrap',
50
- alignContent: 'stretch',
51
- padding: '0 4px',
53
+ justifyContent: 'space-evenly',
54
+ rowGap: 16,
55
+ padding: '8px 0',
52
56
  width: DIALOG_WIDTH,
53
57
  // avoid padding increasing width over defined
54
- boxSizing: 'border-box'
58
+ boxSizing: 'border-box',
59
+ variants: [{
60
+ props: {
61
+ monthsPerRow: 3
62
+ },
63
+ style: {
64
+ columnGap: 24
65
+ }
66
+ }, {
67
+ props: {
68
+ monthsPerRow: 4
69
+ },
70
+ style: {
71
+ columnGap: 0
72
+ }
73
+ }]
55
74
  });
56
75
  /**
57
76
  * Demos:
@@ -65,6 +84,7 @@ const MonthCalendarRoot = styled('div', {
65
84
  export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inProps, ref) {
66
85
  const props = useMonthCalendarDefaultizedProps(inProps, 'MuiMonthCalendar');
67
86
  const {
87
+ autoFocus,
68
88
  className,
69
89
  classes: classesProp,
70
90
  value: valueProp,
@@ -78,11 +98,10 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
78
98
  onChange,
79
99
  shouldDisableMonth,
80
100
  readOnly,
81
- autoFocus = false,
82
101
  onMonthFocus,
83
102
  hasFocus,
84
103
  onFocusedViewChange,
85
- monthsPerRow = 3,
104
+ monthsPerRow,
86
105
  timezone: timezoneProp,
87
106
  gridLabelId,
88
107
  slots,
@@ -209,7 +228,8 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
209
228
  className: clsx(classes.root, className),
210
229
  ownerState: ownerState,
211
230
  role: "radiogroup",
212
- "aria-labelledby": gridLabelId
231
+ "aria-labelledby": gridLabelId,
232
+ monthsPerRow: monthsPerRow
213
233
  }, other, {
214
234
  children: getMonthsInYear(utils, value ?? referenceDate).map(month => {
215
235
  const monthNumber = utils.getMonth(month);
@@ -217,7 +237,7 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
217
237
  const monthLabel = utils.format(month, 'month');
218
238
  const isSelected = monthNumber === selectedMonth;
219
239
  const isDisabled = disabled || isMonthDisabled(month);
220
- return /*#__PURE__*/_jsx(PickersMonth, {
240
+ return /*#__PURE__*/_jsx(MonthCalendarButton, {
221
241
  selected: isSelected,
222
242
  value: monthNumber,
223
243
  onClick: handleMonthSelection,
@@ -229,9 +249,9 @@ export const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalenda
229
249
  onBlur: handleMonthBlur,
230
250
  "aria-current": todayMonth === monthNumber ? 'date' : undefined,
231
251
  "aria-label": monthLabel,
232
- monthsPerRow: monthsPerRow,
233
252
  slots: slots,
234
253
  slotProps: slotProps,
254
+ classes: classesProp,
235
255
  children: monthText
236
256
  }, monthText);
237
257
  })
@@ -6,7 +6,7 @@ import { MonthCalendarClasses } from './monthCalendarClasses';
6
6
  import { BaseDateValidationProps, MonthValidationProps } from '../internals/models/validation';
7
7
  import { PickerOwnerState, PickerValidDate, TimezoneProps } from '../models';
8
8
  import { FormProps } from '../internals/models/formProps';
9
- export interface PickerMonthOwnerState extends PickerOwnerState {
9
+ export interface MonthButtonOwnerState extends PickerOwnerState {
10
10
  isMonthSelected: boolean;
11
11
  isMonthDisabled: boolean;
12
12
  }
@@ -20,7 +20,7 @@ export interface MonthCalendarSlots {
20
20
  export interface MonthCalendarSlotProps {
21
21
  monthButton?: SlotComponentPropsFromProps<React.HTMLAttributes<HTMLButtonElement> & {
22
22
  sx: SxProps;
23
- }, {}, PickerMonthOwnerState>;
23
+ }, {}, MonthButtonOwnerState>;
24
24
  }
25
25
  export interface ExportedMonthCalendarProps {
26
26
  /**
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { MonthCalendarSlotProps, MonthCalendarSlots } from './MonthCalendar.types';
3
+ import { MonthCalendarClasses } from './monthCalendarClasses';
4
+ export interface MonthCalendarButtonProps {
5
+ value: number;
6
+ tabIndex: number;
7
+ selected: boolean;
8
+ disabled: boolean;
9
+ autoFocus: boolean;
10
+ classes: Partial<MonthCalendarClasses> | undefined;
11
+ slots: MonthCalendarSlots | undefined;
12
+ slotProps: MonthCalendarSlotProps | undefined;
13
+ 'aria-current': React.AriaAttributes['aria-current'];
14
+ 'aria-label': React.AriaAttributes['aria-label'];
15
+ children: React.ReactNode;
16
+ onClick: (event: React.MouseEvent, month: number) => void;
17
+ onKeyDown: (event: React.KeyboardEvent, month: number) => void;
18
+ onFocus: (event: React.FocusEvent, month: number) => void;
19
+ onBlur: (event: React.FocusEvent, month: number) => void;
20
+ }
21
+ /**
22
+ * @ignore - do not document.
23
+ */
24
+ export declare const MonthCalendarButton: React.NamedExoticComponent<MonthCalendarButtonProps>;
@@ -1,47 +1,27 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["autoFocus", "className", "classes", "children", "disabled", "selected", "value", "tabIndex", "onClick", "onKeyDown", "onFocus", "onBlur", "aria-current", "aria-label", "monthsPerRow", "slots", "slotProps"];
3
+ const _excluded = ["autoFocus", "classes", "disabled", "selected", "value", "onClick", "onKeyDown", "onFocus", "onBlur", "slots", "slotProps"];
4
4
  import * as React from 'react';
5
- import clsx from 'clsx';
6
- import { styled, alpha, useThemeProps } from '@mui/material/styles';
5
+ import { styled, alpha } from '@mui/material/styles';
7
6
  import useSlotProps from '@mui/utils/useSlotProps';
8
7
  import composeClasses from '@mui/utils/composeClasses';
9
8
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
10
- import { getPickersMonthUtilityClass, pickersMonthClasses } from "./pickersMonthClasses.js";
11
9
  import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
10
+ import { getMonthCalendarUtilityClass, monthCalendarClasses } from "./monthCalendarClasses.js";
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  const useUtilityClasses = (classes, ownerState) => {
14
13
  const slots = {
15
- root: ['root'],
16
- monthButton: ['monthButton', ownerState.isMonthDisabled && 'disabled', ownerState.isMonthSelected && 'selected']
14
+ button: ['button', ownerState.isMonthDisabled && 'disabled', ownerState.isMonthSelected && 'selected']
17
15
  };
18
- return composeClasses(slots, getPickersMonthUtilityClass, classes);
16
+ return composeClasses(slots, getMonthCalendarUtilityClass, classes);
19
17
  };
20
- const PickersMonthRoot = styled('div', {
21
- name: 'MuiPickersMonth',
22
- slot: 'Root',
23
- overridesResolver: (_, styles) => [styles.root]
24
- })({
25
- display: 'flex',
26
- alignItems: 'center',
27
- justifyContent: 'center',
28
- flexBasis: '33.3%',
29
- variants: [{
30
- props: {
31
- monthsPerRow: 4
32
- },
33
- style: {
34
- flexBasis: '25%'
35
- }
36
- }]
37
- });
38
- const MonthCalendarButton = styled('button', {
39
- name: 'MuiPickersMonth',
40
- slot: 'MonthButton',
41
- overridesResolver: (_, styles) => [styles.monthButton, {
42
- [`&.${pickersMonthClasses.disabled}`]: styles.disabled
18
+ const DefaultMonthButton = styled('button', {
19
+ name: 'MuiMonthCalendar',
20
+ slot: 'Button',
21
+ overridesResolver: (_, styles) => [styles.button, {
22
+ [`&.${monthCalendarClasses.disabled}`]: styles.disabled
43
23
  }, {
44
- [`&.${pickersMonthClasses.selected}`]: styles.selected
24
+ [`&.${monthCalendarClasses.selected}`]: styles.selected
45
25
  }]
46
26
  })(({
47
27
  theme
@@ -51,7 +31,6 @@ const MonthCalendarButton = styled('button', {
51
31
  border: 0,
52
32
  outline: 0
53
33
  }, theme.typography.subtitle1, {
54
- margin: '8px 0',
55
34
  height: 36,
56
35
  width: 72,
57
36
  borderRadius: 18,
@@ -66,10 +45,10 @@ const MonthCalendarButton = styled('button', {
66
45
  cursor: 'auto',
67
46
  pointerEvents: 'none'
68
47
  },
69
- [`&.${pickersMonthClasses.disabled}`]: {
48
+ [`&.${monthCalendarClasses.disabled}`]: {
70
49
  color: (theme.vars || theme).palette.text.secondary
71
50
  },
72
- [`&.${pickersMonthClasses.selected}`]: {
51
+ [`&.${monthCalendarClasses.selected}`]: {
73
52
  color: (theme.vars || theme).palette.primary.contrastText,
74
53
  backgroundColor: (theme.vars || theme).palette.primary.main,
75
54
  '&:focus, &:hover': {
@@ -81,29 +60,17 @@ const MonthCalendarButton = styled('button', {
81
60
  /**
82
61
  * @ignore - do not document.
83
62
  */
84
- export const PickersMonth = /*#__PURE__*/React.memo(function PickersMonth(inProps) {
85
- const props = useThemeProps({
86
- props: inProps,
87
- name: 'MuiPickersMonth'
88
- });
63
+ export const MonthCalendarButton = /*#__PURE__*/React.memo(function MonthCalendarButton(props) {
89
64
  const {
90
65
  autoFocus,
91
- className,
92
66
  classes: classesProp,
93
- children,
94
- disabled = false,
95
- selected = false,
67
+ disabled,
68
+ selected,
96
69
  value,
97
- tabIndex,
98
70
  onClick,
99
71
  onKeyDown,
100
72
  onFocus,
101
73
  onBlur,
102
- 'aria-current': ariaCurrent,
103
- 'aria-label': ariaLabel
104
- // We don't want to forward this prop to the root element
105
- ,
106
-
107
74
  slots,
108
75
  slotProps
109
76
  } = props,
@@ -125,32 +92,24 @@ export const PickersMonth = /*#__PURE__*/React.memo(function PickersMonth(inProp
125
92
  ref.current?.focus();
126
93
  }
127
94
  }, [autoFocus]);
128
- const MonthButton = slots?.monthButton ?? MonthCalendarButton;
95
+ const MonthButton = slots?.monthButton ?? DefaultMonthButton;
129
96
  const monthButtonProps = useSlotProps({
130
97
  elementType: MonthButton,
131
98
  externalSlotProps: slotProps?.monthButton,
99
+ externalForwardedProps: other,
132
100
  additionalProps: {
133
- children,
134
101
  disabled,
135
- tabIndex,
136
102
  ref,
137
103
  type: 'button',
138
104
  role: 'radio',
139
- 'aria-current': ariaCurrent,
140
105
  'aria-checked': selected,
141
- 'aria-label': ariaLabel,
142
106
  onClick: event => onClick(event, value),
143
107
  onKeyDown: event => onKeyDown(event, value),
144
108
  onFocus: event => onFocus(event, value),
145
109
  onBlur: event => onBlur(event, value)
146
110
  },
147
111
  ownerState,
148
- className: classes.monthButton
112
+ className: classes.button
149
113
  });
150
- return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({
151
- className: clsx(classes.root, className),
152
- ownerState: ownerState
153
- }, other, {
154
- children: /*#__PURE__*/_jsx(MonthButton, _extends({}, monthButtonProps))
155
- }));
114
+ return /*#__PURE__*/_jsx(MonthButton, _extends({}, monthButtonProps));
156
115
  });
@@ -2,6 +2,3 @@ export { MonthCalendar } from './MonthCalendar';
2
2
  export type { MonthCalendarProps, MonthCalendarSlots, MonthCalendarSlotProps, } from './MonthCalendar.types';
3
3
  export { monthCalendarClasses, getMonthCalendarUtilityClass } from './monthCalendarClasses';
4
4
  export type { MonthCalendarClasses, MonthCalendarClassKey } from './monthCalendarClasses';
5
- export { pickersMonthClasses } from './pickersMonthClasses';
6
- export type { PickersMonthClassKey, PickersMonthClasses } from './pickersMonthClasses';
7
- export type { ExportedPickersMonthProps } from './PickersMonth';
@@ -1,3 +1,2 @@
1
1
  export { MonthCalendar } from "./MonthCalendar.js";
2
- export { monthCalendarClasses, getMonthCalendarUtilityClass } from "./monthCalendarClasses.js";
3
- export { pickersMonthClasses } from "./pickersMonthClasses.js";
2
+ export { monthCalendarClasses, getMonthCalendarUtilityClass } from "./monthCalendarClasses.js";
@@ -2,6 +2,12 @@ export declare function getMonthCalendarUtilityClass(slot: string): string;
2
2
  export interface MonthCalendarClasses {
3
3
  /** Styles applied to the root element. */
4
4
  root: string;
5
+ /** Styles applied to the button element that represents a single month */
6
+ button: string;
7
+ /** Styles applied to a disabled button element. */
8
+ disabled: string;
9
+ /** Styles applied to a selected button element. */
10
+ selected: string;
5
11
  }
6
12
  export type MonthCalendarClassKey = keyof MonthCalendarClasses;
7
- export declare const monthCalendarClasses: Record<"root", string>;
13
+ export declare const monthCalendarClasses: Record<keyof MonthCalendarClasses, string>;
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generat
2
2
  export function getMonthCalendarUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiMonthCalendar', slot);
4
4
  }
5
- export const monthCalendarClasses = generateUtilityClasses('MuiMonthCalendar', ['root']);
5
+ export const monthCalendarClasses = generateUtilityClasses('MuiMonthCalendar', ['root', 'button', 'disabled', 'selected']);
@@ -189,6 +189,9 @@ export const MultiSectionDigitalClock = /*#__PURE__*/React.forwardRef(function M
189
189
  {
190
190
  const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);
191
191
  const dateWithNewHours = utils.setHours(valueOrReferenceDate, valueWithMeridiem);
192
+ if (utils.getHours(dateWithNewHours) !== valueWithMeridiem) {
193
+ return true;
194
+ }
192
195
  const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);
193
196
  const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);
194
197
  return !containsValidTime({
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
- const _excluded = ["slots", "slotProps", "elements", "sectionListRef"];
5
+ const _excluded = ["slots", "slotProps", "elements", "sectionListRef", "classes"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import useSlotProps from '@mui/utils/useSlotProps';
@@ -10,6 +10,7 @@ import composeClasses from '@mui/utils/composeClasses';
10
10
  import useForkRef from '@mui/utils/useForkRef';
11
11
  import { styled, useThemeProps } from '@mui/material/styles';
12
12
  import { getPickersSectionListUtilityClass, pickersSectionListClasses } from "./pickersSectionListClasses.js";
13
+ import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  export const PickersSectionListRoot = styled('div', {
15
16
  name: 'MuiPickersSectionList',
@@ -38,10 +39,7 @@ export const PickersSectionListSectionContent = styled('span', {
38
39
  })({
39
40
  outline: 'none'
40
41
  });
41
- const useUtilityClasses = ownerState => {
42
- const {
43
- classes
44
- } = ownerState;
42
+ const useUtilityClasses = classes => {
45
43
  const slots = {
46
44
  root: ['root'],
47
45
  section: ['section'],
@@ -56,13 +54,16 @@ function PickersSection(props) {
56
54
  element,
57
55
  classes
58
56
  } = props;
57
+ const {
58
+ ownerState
59
+ } = usePickerPrivateContext();
59
60
  const Section = slots?.section ?? PickersSectionListSection;
60
61
  const sectionProps = useSlotProps({
61
62
  elementType: Section,
62
63
  externalSlotProps: slotProps?.section,
63
64
  externalForwardedProps: element.container,
64
65
  className: classes.section,
65
- ownerState: {}
66
+ ownerState
66
67
  });
67
68
  const SectionContent = slots?.sectionContent ?? PickersSectionListSectionContent;
68
69
  const sectionContentProps = useSlotProps({
@@ -73,24 +74,24 @@ function PickersSection(props) {
73
74
  suppressContentEditableWarning: true
74
75
  },
75
76
  className: classes.sectionContent,
76
- ownerState: {}
77
+ ownerState
77
78
  });
78
79
  const SectionSeparator = slots?.sectionSeparator ?? PickersSectionListSectionSeparator;
79
80
  const sectionSeparatorBeforeProps = useSlotProps({
80
81
  elementType: SectionSeparator,
81
82
  externalSlotProps: slotProps?.sectionSeparator,
82
83
  externalForwardedProps: element.before,
83
- ownerState: {
84
- position: 'before'
85
- }
84
+ ownerState: _extends({}, ownerState, {
85
+ separatorPosition: 'before'
86
+ })
86
87
  });
87
88
  const sectionSeparatorAfterProps = useSlotProps({
88
89
  elementType: SectionSeparator,
89
90
  externalSlotProps: slotProps?.sectionSeparator,
90
91
  externalForwardedProps: element.after,
91
- ownerState: {
92
- position: 'after'
93
- }
92
+ ownerState: _extends({}, ownerState, {
93
+ separatorPosition: 'after'
94
+ })
94
95
  });
95
96
  return /*#__PURE__*/_jsxs(Section, _extends({}, sectionProps, {
96
97
  children: [/*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorBeforeProps)), /*#__PURE__*/_jsx(SectionContent, _extends({}, sectionContentProps)), /*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorAfterProps))]
@@ -135,10 +136,14 @@ const PickersSectionList = /*#__PURE__*/React.forwardRef(function PickersSection
135
136
  slots,
136
137
  slotProps,
137
138
  elements,
138
- sectionListRef
139
+ sectionListRef,
140
+ classes: classesProp
139
141
  } = props,
140
142
  other = _objectWithoutPropertiesLoose(props, _excluded);
141
- const classes = useUtilityClasses(props);
143
+ const classes = useUtilityClasses(classesProp);
144
+ const {
145
+ ownerState
146
+ } = usePickerPrivateContext();
142
147
  const rootRef = React.useRef(null);
143
148
  const handleRootRef = useForkRef(ref, rootRef);
144
149
  const getRoot = methodName => {
@@ -186,7 +191,7 @@ const PickersSectionList = /*#__PURE__*/React.forwardRef(function PickersSection
186
191
  suppressContentEditableWarning: true
187
192
  },
188
193
  className: classes.root,
189
- ownerState: {}
194
+ ownerState
190
195
  });
191
196
  return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {
192
197
  children: rootProps.contentEditable ? elements.map(({
@@ -1,19 +1,26 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/utils';
3
3
  import { PickersSectionListClasses } from './pickersSectionListClasses';
4
+ import { PickerOwnerState } from '../models';
4
5
  export interface PickersSectionListSlots {
5
6
  root: React.ElementType;
6
7
  section: React.ElementType;
7
8
  sectionSeparator: React.ElementType;
8
9
  sectionContent: React.ElementType;
9
10
  }
11
+ export interface PickerSectionSeparatorOwnerState extends PickerOwnerState {
12
+ /**
13
+ * The position of the separator.
14
+ * `before` if the separator is rendered before the section content.
15
+ * `after` if the separator is rendered after the section content.
16
+ */
17
+ separatorPosition: 'before' | 'after';
18
+ }
10
19
  export interface PickersSectionListSlotProps {
11
- root?: SlotComponentProps<'div', {}, {}>;
12
- section?: SlotComponentProps<'span', {}, {}>;
13
- sectionSeparator?: SlotComponentProps<'span', {}, {
14
- position: 'before' | 'after';
15
- }>;
16
- sectionContent?: SlotComponentProps<'span', {}, {}>;
20
+ root?: SlotComponentProps<'div', {}, PickerOwnerState>;
21
+ section?: SlotComponentProps<'span', {}, PickerOwnerState>;
22
+ sectionSeparator?: SlotComponentProps<'span', {}, PickerSectionSeparatorOwnerState>;
23
+ sectionContent?: SlotComponentProps<'span', {}, PickerOwnerState>;
17
24
  }
18
25
  export interface PickersSectionElement {
19
26
  container: React.HTMLAttributes<HTMLSpanElement>;
@@ -1,9 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { PickersInputBaseProps } from '../PickersInputBase';
3
+ import { PickerTextFieldOwnerState } from '../PickersTextField.types';
3
4
  export interface PickersFilledInputProps extends PickersInputBaseProps {
4
5
  disableUnderline?: boolean;
5
6
  hiddenLabel?: boolean;
6
7
  }
8
+ export interface PickerFilledInputOwnerState extends PickerTextFieldOwnerState {
9
+ /**
10
+ * `true` if the input has an underline, `false` otherwise.
11
+ */
12
+ inputHasUnderline: boolean;
13
+ }
7
14
  /**
8
15
  * @ignore - internal component.
9
16
  */