@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.
- package/CHANGELOG.md +103 -0
- package/MonthCalendar/MonthCalendar.d.ts +1 -1
- package/MonthCalendar/MonthCalendar.js +31 -11
- package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
- package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
- package/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
- package/MonthCalendar/index.d.ts +0 -3
- package/MonthCalendar/index.js +1 -2
- package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
- package/MonthCalendar/monthCalendarClasses.js +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/PickersSectionList/PickersSectionList.js +21 -16
- package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
- package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
- package/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
- package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
- package/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
- package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
- package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/PickersTextField/PickersTextField.js +75 -62
- package/PickersTextField/PickersTextField.types.d.ts +43 -4
- package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
- package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
- package/TimeClock/Clock.d.ts +4 -0
- package/TimeClock/Clock.js +9 -6
- package/TimeClock/TimeClock.js +21 -4
- package/YearCalendar/YearCalendar.js +46 -13
- package/YearCalendar/YearCalendar.types.d.ts +2 -2
- package/YearCalendar/YearCalendarButton.d.ts +23 -0
- package/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
- package/YearCalendar/index.d.ts +0 -3
- package/YearCalendar/index.js +1 -2
- package/YearCalendar/yearCalendarClasses.d.ts +7 -1
- package/YearCalendar/yearCalendarClasses.js +1 -1
- package/index.js +1 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
- package/internals/hooks/useFieldOwnerState.d.ts +1 -0
- package/internals/hooks/useFieldOwnerState.js +6 -2
- package/models/fields.d.ts +11 -1
- package/modern/MonthCalendar/MonthCalendar.js +31 -11
- package/modern/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
- package/modern/MonthCalendar/index.js +1 -2
- package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/modern/PickersSectionList/PickersSectionList.js +21 -16
- package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
- package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/modern/PickersTextField/PickersTextField.js +75 -62
- package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
- package/modern/TimeClock/Clock.js +9 -6
- package/modern/TimeClock/TimeClock.js +21 -4
- package/modern/YearCalendar/YearCalendar.js +46 -13
- package/modern/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
- package/modern/YearCalendar/index.js +1 -2
- package/modern/YearCalendar/yearCalendarClasses.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/modern/internals/hooks/useFieldOwnerState.js +6 -2
- package/node/MonthCalendar/MonthCalendar.js +31 -11
- package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
- package/node/MonthCalendar/index.js +1 -8
- package/node/MonthCalendar/monthCalendarClasses.js +1 -1
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +3 -0
- package/node/PickersSectionList/PickersSectionList.js +21 -16
- package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +36 -37
- package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/node/PickersTextField/PickersTextField.js +75 -62
- package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
- package/node/TimeClock/Clock.js +9 -6
- package/node/TimeClock/TimeClock.js +21 -4
- package/node/YearCalendar/YearCalendar.js +45 -12
- package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
- package/node/YearCalendar/index.js +1 -8
- package/node/YearCalendar/yearCalendarClasses.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/node/internals/hooks/useFieldOwnerState.js +6 -2
- package/package.json +3 -3
- package/themeAugmentation/components.d.ts +0 -8
- package/themeAugmentation/overrides.d.ts +2 -4
- package/themeAugmentation/props.d.ts +2 -4
- package/MonthCalendar/PickersMonth.d.ts +0 -28
- package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
- package/MonthCalendar/pickersMonthClasses.js +0 -5
- package/YearCalendar/PickersYear.d.ts +0 -27
- package/YearCalendar/pickersYearClasses.d.ts +0 -13
- package/YearCalendar/pickersYearClasses.js +0 -5
- package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
- package/modern/YearCalendar/pickersYearClasses.js +0 -5
- package/node/MonthCalendar/pickersMonthClasses.js +0 -12
- 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` [](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` [](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` [](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` [](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` [](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", "
|
|
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 {
|
|
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
|
-
|
|
51
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
-
}, {},
|
|
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", "
|
|
3
|
+
const _excluded = ["autoFocus", "classes", "disabled", "selected", "value", "onClick", "onKeyDown", "onFocus", "onBlur", "slots", "slotProps"];
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import
|
|
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
|
-
|
|
16
|
-
monthButton: ['monthButton', ownerState.isMonthDisabled && 'disabled', ownerState.isMonthSelected && 'selected']
|
|
14
|
+
button: ['button', ownerState.isMonthDisabled && 'disabled', ownerState.isMonthSelected && 'selected']
|
|
17
15
|
};
|
|
18
|
-
return composeClasses(slots,
|
|
16
|
+
return composeClasses(slots, getMonthCalendarUtilityClass, classes);
|
|
19
17
|
};
|
|
20
|
-
const
|
|
21
|
-
name: '
|
|
22
|
-
slot: '
|
|
23
|
-
overridesResolver: (_, styles) => [styles.
|
|
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
|
-
[`&.${
|
|
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
|
-
[`&.${
|
|
48
|
+
[`&.${monthCalendarClasses.disabled}`]: {
|
|
70
49
|
color: (theme.vars || theme).palette.text.secondary
|
|
71
50
|
},
|
|
72
|
-
[`&.${
|
|
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
|
|
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
|
-
|
|
94
|
-
|
|
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 ??
|
|
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.
|
|
112
|
+
className: classes.button
|
|
149
113
|
});
|
|
150
|
-
return /*#__PURE__*/_jsx(
|
|
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
|
});
|
package/MonthCalendar/index.d.ts
CHANGED
|
@@ -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';
|
package/MonthCalendar/index.js
CHANGED
|
@@ -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<
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
*/
|