@mui/x-date-pickers 8.0.0-alpha.4 → 8.0.0-alpha.6
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 +182 -0
- package/DatePicker/DatePickerToolbar.d.ts +1 -2
- package/DatePicker/DatePickerToolbar.js +6 -17
- package/DateTimePicker/DateTimePicker.types.d.ts +2 -2
- package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
- package/DateTimePicker/DateTimePickerTabs.js +6 -13
- package/DateTimePicker/DateTimePickerToolbar.d.ts +8 -4
- package/DateTimePicker/DateTimePickerToolbar.js +13 -24
- package/DateTimePicker/shared.d.ts +2 -2
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +2 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +1 -2
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
- package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
- package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
- package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
- package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
- 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/PickersActionBar/PickersActionBar.d.ts +0 -4
- package/PickersActionBar/PickersActionBar.js +12 -13
- package/PickersLayout/PickersLayout.d.ts +2 -2
- package/PickersLayout/PickersLayout.js +1 -11
- package/PickersLayout/PickersLayout.types.d.ts +12 -14
- package/PickersLayout/usePickerLayout.d.ts +2 -2
- package/PickersLayout/usePickerLayout.js +3 -18
- 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/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
- package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
- package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
- package/TimeClock/Clock.d.ts +4 -0
- package/TimeClock/Clock.js +9 -6
- package/TimeClock/TimeClock.js +21 -4
- package/TimePicker/TimePicker.types.d.ts +2 -2
- package/TimePicker/TimePickerToolbar.d.ts +2 -2
- package/TimePicker/TimePickerToolbar.js +6 -20
- 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/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/usePickerActionsContext.d.ts +5 -0
- package/hooks/usePickerActionsContext.js +16 -0
- package/hooks/usePickerContext.d.ts +3 -1
- package/hooks/usePickerContext.js +0 -1
- package/index.js +1 -1
- package/internals/components/PickerProvider.d.ts +11 -6
- package/internals/components/PickerProvider.js +12 -6
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
- package/internals/components/PickersModalDialog.d.ts +1 -3
- package/internals/components/PickersModalDialog.js +9 -3
- package/internals/components/PickersPopper.d.ts +1 -3
- package/internals/components/PickersPopper.js +11 -6
- package/internals/components/PickersToolbar.d.ts +3 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +5 -5
- package/internals/hooks/useFieldOwnerState.d.ts +1 -0
- package/internals/hooks/useFieldOwnerState.js +6 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +5 -5
- package/internals/hooks/usePicker/usePicker.js +1 -3
- package/internals/hooks/usePicker/usePicker.types.d.ts +2 -2
- package/internals/hooks/usePicker/usePickerProvider.js +5 -4
- package/internals/hooks/usePicker/usePickerValue.js +46 -64
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +38 -17
- package/internals/hooks/usePicker/usePickerViews.d.ts +15 -4
- package/internals/hooks/usePicker/usePickerViews.js +9 -7
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +4 -4
- package/internals/index.d.ts +4 -4
- package/internals/index.js +1 -1
- package/internals/models/props/tabs.d.ts +0 -13
- package/internals/models/props/toolbar.d.ts +1 -16
- package/models/fields.d.ts +11 -1
- package/modern/DatePicker/DatePickerToolbar.js +6 -17
- package/modern/DateTimePicker/DateTimePickerTabs.js +6 -13
- package/modern/DateTimePicker/DateTimePickerToolbar.js +13 -24
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
- 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/PickersActionBar/PickersActionBar.js +12 -13
- package/modern/PickersLayout/PickersLayout.js +1 -11
- package/modern/PickersLayout/usePickerLayout.js +3 -18
- 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/TimePicker/TimePickerToolbar.js +6 -20
- 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/hooks/index.js +2 -1
- package/modern/hooks/usePickerActionsContext.js +16 -0
- package/modern/hooks/usePickerContext.js +0 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerProvider.js +12 -6
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/modern/internals/components/PickersModalDialog.js +9 -3
- package/modern/internals/components/PickersPopper.js +11 -6
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
- package/modern/internals/hooks/useFieldOwnerState.js +6 -2
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
- package/modern/internals/hooks/usePicker/usePicker.js +1 -3
- package/modern/internals/hooks/usePicker/usePickerProvider.js +5 -4
- package/modern/internals/hooks/usePicker/usePickerValue.js +46 -64
- package/modern/internals/hooks/usePicker/usePickerViews.js +9 -7
- package/modern/internals/index.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +6 -17
- package/node/DateTimePicker/DateTimePickerTabs.js +6 -13
- package/node/DateTimePicker/DateTimePickerToolbar.js +14 -25
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -11
- 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/PickersActionBar/PickersActionBar.js +12 -13
- package/node/PickersLayout/PickersLayout.js +1 -11
- package/node/PickersLayout/usePickerLayout.js +3 -18
- 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/TimePicker/TimePickerToolbar.js +6 -20
- 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/hooks/index.js +8 -1
- package/node/hooks/usePickerActionsContext.js +22 -0
- package/node/index.js +1 -1
- package/node/internals/components/PickerProvider.js +13 -7
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
- package/node/internals/components/PickersModalDialog.js +9 -3
- package/node/internals/components/PickersPopper.js +11 -6
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -9
- package/node/internals/hooks/useFieldOwnerState.js +6 -2
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +8 -7
- package/node/internals/hooks/usePicker/usePicker.js +1 -3
- package/node/internals/hooks/usePicker/usePickerProvider.js +5 -4
- package/node/internals/hooks/usePicker/usePickerValue.js +46 -64
- package/node/internals/hooks/usePicker/usePickerViews.js +9 -7
- package/node/internals/index.js +2 -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 +4 -7
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "
|
|
5
|
+
const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -125,9 +125,6 @@ function TimePickerToolbar(inProps) {
|
|
|
125
125
|
value,
|
|
126
126
|
isLandscape,
|
|
127
127
|
onChange,
|
|
128
|
-
view,
|
|
129
|
-
onViewChange,
|
|
130
|
-
views,
|
|
131
128
|
className,
|
|
132
129
|
classes: classesProp
|
|
133
130
|
} = props,
|
|
@@ -138,7 +135,10 @@ function TimePickerToolbar(inProps) {
|
|
|
138
135
|
const classes = useUtilityClasses(classesProp, ownerState);
|
|
139
136
|
const {
|
|
140
137
|
disabled,
|
|
141
|
-
readOnly
|
|
138
|
+
readOnly,
|
|
139
|
+
view,
|
|
140
|
+
onViewChange,
|
|
141
|
+
views
|
|
142
142
|
} = usePickerContext();
|
|
143
143
|
const showAmPmControl = Boolean(ampm && !ampmInClock && views.includes('hours'));
|
|
144
144
|
const {
|
|
@@ -223,12 +223,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
|
|
|
223
223
|
hidden: PropTypes.bool,
|
|
224
224
|
isLandscape: PropTypes.bool.isRequired,
|
|
225
225
|
onChange: PropTypes.func.isRequired,
|
|
226
|
-
/**
|
|
227
|
-
* Callback called when a toolbar is clicked
|
|
228
|
-
* @template TView
|
|
229
|
-
* @param {TView} view The view to open
|
|
230
|
-
*/
|
|
231
|
-
onViewChange: PropTypes.func.isRequired,
|
|
232
226
|
/**
|
|
233
227
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
234
228
|
*/
|
|
@@ -243,14 +237,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
|
|
|
243
237
|
* @default "––"
|
|
244
238
|
*/
|
|
245
239
|
toolbarPlaceholder: PropTypes.node,
|
|
246
|
-
value: PropTypes.object
|
|
247
|
-
/**
|
|
248
|
-
* Currently visible picker view.
|
|
249
|
-
*/
|
|
250
|
-
view: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']).isRequired,
|
|
251
|
-
/**
|
|
252
|
-
* Available views.
|
|
253
|
-
*/
|
|
254
|
-
views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']).isRequired).isRequired
|
|
240
|
+
value: PropTypes.object
|
|
255
241
|
} : void 0;
|
|
256
242
|
export { TimePickerToolbar };
|
|
@@ -7,9 +7,10 @@ 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_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_useControlled as useControlled, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
12
|
-
import {
|
|
13
|
+
import { YearCalendarButton } from "./YearCalendarButton.js";
|
|
13
14
|
import { useUtils, useNow, useDefaultDates } from "../internals/hooks/useUtils.js";
|
|
14
15
|
import { getYearCalendarUtilityClass } from "./yearCalendarClasses.js";
|
|
15
16
|
import { applyDefaultDate } from "../internals/utils/date-utils.js";
|
|
@@ -18,7 +19,7 @@ import { SECTION_TYPE_GRANULARITY } from "../internals/utils/getDefaultReference
|
|
|
18
19
|
import { useControlledValueWithTimezone } from "../internals/hooks/useValueWithTimezone.js";
|
|
19
20
|
import { DIALOG_WIDTH, MAX_CALENDAR_HEIGHT } from "../internals/constants/dimensions.js";
|
|
20
21
|
import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
|
|
21
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
23
|
const useUtilityClasses = classes => {
|
|
23
24
|
const slots = {
|
|
24
25
|
root: ['root']
|
|
@@ -37,6 +38,7 @@ function useYearCalendarDefaultizedProps(props, name) {
|
|
|
37
38
|
disableFuture: false
|
|
38
39
|
}, themeProps, {
|
|
39
40
|
yearsPerRow: themeProps.yearsPerRow ?? 3,
|
|
41
|
+
yearsOrder: themeProps.yearsOrder ?? 'asc',
|
|
40
42
|
minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
|
|
41
43
|
maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)
|
|
42
44
|
});
|
|
@@ -44,19 +46,43 @@ function useYearCalendarDefaultizedProps(props, name) {
|
|
|
44
46
|
const YearCalendarRoot = styled('div', {
|
|
45
47
|
name: 'MuiYearCalendar',
|
|
46
48
|
slot: 'Root',
|
|
47
|
-
|
|
49
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'yearsPerRow'
|
|
48
50
|
})({
|
|
49
51
|
display: 'flex',
|
|
50
|
-
flexDirection: 'row',
|
|
51
52
|
flexWrap: 'wrap',
|
|
53
|
+
justifyContent: 'space-evenly',
|
|
54
|
+
rowGap: 12,
|
|
55
|
+
padding: '6px 0',
|
|
52
56
|
overflowY: 'auto',
|
|
53
57
|
height: '100%',
|
|
54
|
-
padding: '0 4px',
|
|
55
58
|
width: DIALOG_WIDTH,
|
|
56
59
|
maxHeight: MAX_CALENDAR_HEIGHT,
|
|
57
60
|
// avoid padding increasing width over defined
|
|
58
61
|
boxSizing: 'border-box',
|
|
59
|
-
position: 'relative'
|
|
62
|
+
position: 'relative',
|
|
63
|
+
variants: [{
|
|
64
|
+
props: {
|
|
65
|
+
yearsPerRow: 3
|
|
66
|
+
},
|
|
67
|
+
style: {
|
|
68
|
+
columnGap: 24
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
props: {
|
|
72
|
+
yearsPerRow: 4
|
|
73
|
+
},
|
|
74
|
+
style: {
|
|
75
|
+
columnGap: 0,
|
|
76
|
+
padding: '0 2px'
|
|
77
|
+
}
|
|
78
|
+
}]
|
|
79
|
+
});
|
|
80
|
+
const YearCalendarButtonFiller = styled('div', {
|
|
81
|
+
name: 'MuiYearCalendar',
|
|
82
|
+
slot: 'ButtonFiller'
|
|
83
|
+
})({
|
|
84
|
+
height: 36,
|
|
85
|
+
width: 72
|
|
60
86
|
});
|
|
61
87
|
/**
|
|
62
88
|
* Demos:
|
|
@@ -87,7 +113,7 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
87
113
|
onYearFocus,
|
|
88
114
|
hasFocus,
|
|
89
115
|
onFocusedViewChange,
|
|
90
|
-
yearsOrder
|
|
116
|
+
yearsOrder,
|
|
91
117
|
yearsPerRow,
|
|
92
118
|
timezone: timezoneProp,
|
|
93
119
|
gridLabelId,
|
|
@@ -239,18 +265,23 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
239
265
|
if (yearsOrder === 'desc') {
|
|
240
266
|
yearRange.reverse();
|
|
241
267
|
}
|
|
242
|
-
|
|
268
|
+
let fillerAmount = yearsPerRow - yearRange.length % yearsPerRow;
|
|
269
|
+
if (fillerAmount === yearsPerRow) {
|
|
270
|
+
fillerAmount = 0;
|
|
271
|
+
}
|
|
272
|
+
return /*#__PURE__*/_jsxs(YearCalendarRoot, _extends({
|
|
243
273
|
ref: handleRef,
|
|
244
274
|
className: clsx(classes.root, className),
|
|
245
275
|
ownerState: ownerState,
|
|
246
276
|
role: "radiogroup",
|
|
247
|
-
"aria-labelledby": gridLabelId
|
|
277
|
+
"aria-labelledby": gridLabelId,
|
|
278
|
+
yearsPerRow: yearsPerRow
|
|
248
279
|
}, other, {
|
|
249
|
-
children: yearRange.map(year => {
|
|
280
|
+
children: [yearRange.map(year => {
|
|
250
281
|
const yearNumber = utils.getYear(year);
|
|
251
282
|
const isSelected = yearNumber === selectedYear;
|
|
252
283
|
const isDisabled = disabled || isYearDisabled(year);
|
|
253
|
-
return /*#__PURE__*/_jsx(
|
|
284
|
+
return /*#__PURE__*/_jsx(YearCalendarButton, {
|
|
254
285
|
selected: isSelected,
|
|
255
286
|
value: yearNumber,
|
|
256
287
|
onClick: handleYearSelection,
|
|
@@ -261,12 +292,14 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
261
292
|
onFocus: handleYearFocus,
|
|
262
293
|
onBlur: handleYearBlur,
|
|
263
294
|
"aria-current": todayYear === yearNumber ? 'date' : undefined,
|
|
264
|
-
yearsPerRow: yearsPerRow,
|
|
265
295
|
slots: slots,
|
|
266
296
|
slotProps: slotProps,
|
|
297
|
+
classes: classesProp,
|
|
267
298
|
children: utils.format(year, 'year')
|
|
268
299
|
}, utils.format(year, 'year'));
|
|
269
|
-
})
|
|
300
|
+
}), Array.from({
|
|
301
|
+
length: fillerAmount
|
|
302
|
+
}, (_, index) => /*#__PURE__*/_jsx(YearCalendarButtonFiller, {}, index))]
|
|
270
303
|
}));
|
|
271
304
|
});
|
|
272
305
|
process.env.NODE_ENV !== "production" ? YearCalendar.propTypes = {
|
|
@@ -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 { getPickersYearUtilityClass, pickersYearClasses } from "./pickersYearClasses.js";
|
|
11
9
|
import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
|
|
10
|
+
import { getYearCalendarUtilityClass, yearCalendarClasses } from "./yearCalendarClasses.js";
|
|
12
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
12
|
const useUtilityClasses = (classes, ownerState) => {
|
|
14
13
|
const slots = {
|
|
15
|
-
|
|
16
|
-
yearButton: ['yearButton', ownerState.isYearDisabled && 'disabled', ownerState.isYearSelected && 'selected']
|
|
14
|
+
button: ['button', ownerState.isYearDisabled && 'disabled', ownerState.isYearSelected && 'selected']
|
|
17
15
|
};
|
|
18
|
-
return composeClasses(slots,
|
|
16
|
+
return composeClasses(slots, getYearCalendarUtilityClass, 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
|
-
yearsPerRow: 4
|
|
32
|
-
},
|
|
33
|
-
style: {
|
|
34
|
-
flexBasis: '25%'
|
|
35
|
-
}
|
|
36
|
-
}]
|
|
37
|
-
});
|
|
38
|
-
const YearCalendarButton = styled('button', {
|
|
39
|
-
name: 'MuiPickersYear',
|
|
40
|
-
slot: 'YearButton',
|
|
41
|
-
overridesResolver: (_, styles) => [styles.yearButton, {
|
|
42
|
-
[`&.${pickersYearClasses.disabled}`]: styles.disabled
|
|
18
|
+
const DefaultYearButton = styled('button', {
|
|
19
|
+
name: 'MuiYearCalendar',
|
|
20
|
+
slot: 'Button',
|
|
21
|
+
overridesResolver: (_, styles) => [styles.button, {
|
|
22
|
+
[`&.${yearCalendarClasses.disabled}`]: styles.disabled
|
|
43
23
|
}, {
|
|
44
|
-
[`&.${
|
|
24
|
+
[`&.${yearCalendarClasses.selected}`]: styles.selected
|
|
45
25
|
}]
|
|
46
26
|
})(({
|
|
47
27
|
theme
|
|
@@ -51,7 +31,6 @@ const YearCalendarButton = styled('button', {
|
|
|
51
31
|
border: 0,
|
|
52
32
|
outline: 0
|
|
53
33
|
}, theme.typography.subtitle1, {
|
|
54
|
-
margin: '6px 0',
|
|
55
34
|
height: 36,
|
|
56
35
|
width: 72,
|
|
57
36
|
borderRadius: 18,
|
|
@@ -66,10 +45,10 @@ const YearCalendarButton = styled('button', {
|
|
|
66
45
|
cursor: 'auto',
|
|
67
46
|
pointerEvents: 'none'
|
|
68
47
|
},
|
|
69
|
-
[`&.${
|
|
48
|
+
[`&.${yearCalendarClasses.disabled}`]: {
|
|
70
49
|
color: (theme.vars || theme).palette.text.secondary
|
|
71
50
|
},
|
|
72
|
-
[`&.${
|
|
51
|
+
[`&.${yearCalendarClasses.selected}`]: {
|
|
73
52
|
color: (theme.vars || theme).palette.primary.contrastText,
|
|
74
53
|
backgroundColor: (theme.vars || theme).palette.primary.main,
|
|
75
54
|
'&:focus, &:hover': {
|
|
@@ -81,28 +60,17 @@ const YearCalendarButton = styled('button', {
|
|
|
81
60
|
/**
|
|
82
61
|
* @ignore - internal component.
|
|
83
62
|
*/
|
|
84
|
-
export const
|
|
85
|
-
const props = useThemeProps({
|
|
86
|
-
props: inProps,
|
|
87
|
-
name: 'MuiPickersYear'
|
|
88
|
-
});
|
|
63
|
+
export const YearCalendarButton = /*#__PURE__*/React.memo(function YearCalendarButton(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
|
-
// We don't want to forward this prop to the root element
|
|
104
|
-
,
|
|
105
|
-
|
|
106
74
|
slots,
|
|
107
75
|
slotProps
|
|
108
76
|
} = props,
|
|
@@ -124,18 +92,16 @@ export const PickersYear = /*#__PURE__*/React.memo(function PickersYear(inProps)
|
|
|
124
92
|
ref.current?.focus();
|
|
125
93
|
}
|
|
126
94
|
}, [autoFocus]);
|
|
127
|
-
const YearButton = slots?.yearButton ??
|
|
95
|
+
const YearButton = slots?.yearButton ?? DefaultYearButton;
|
|
128
96
|
const yearButtonProps = useSlotProps({
|
|
129
97
|
elementType: YearButton,
|
|
130
98
|
externalSlotProps: slotProps?.yearButton,
|
|
99
|
+
externalForwardedProps: other,
|
|
131
100
|
additionalProps: {
|
|
132
|
-
children,
|
|
133
101
|
disabled,
|
|
134
|
-
tabIndex,
|
|
135
102
|
ref,
|
|
136
103
|
type: 'button',
|
|
137
104
|
role: 'radio',
|
|
138
|
-
'aria-current': ariaCurrent,
|
|
139
105
|
'aria-checked': selected,
|
|
140
106
|
onClick: event => onClick(event, value),
|
|
141
107
|
onKeyDown: event => onKeyDown(event, value),
|
|
@@ -143,12 +109,7 @@ export const PickersYear = /*#__PURE__*/React.memo(function PickersYear(inProps)
|
|
|
143
109
|
onBlur: event => onBlur(event, value)
|
|
144
110
|
},
|
|
145
111
|
ownerState,
|
|
146
|
-
className: classes.
|
|
112
|
+
className: classes.button
|
|
147
113
|
});
|
|
148
|
-
return /*#__PURE__*/_jsx(
|
|
149
|
-
className: clsx(classes.root, className),
|
|
150
|
-
ownerState: ownerState
|
|
151
|
-
}, other, {
|
|
152
|
-
children: /*#__PURE__*/_jsx(YearButton, _extends({}, yearButtonProps))
|
|
153
|
-
}));
|
|
114
|
+
return /*#__PURE__*/_jsx(YearButton, _extends({}, yearButtonProps));
|
|
154
115
|
});
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export { YearCalendar } from "./YearCalendar.js";
|
|
2
|
-
export { yearCalendarClasses, getYearCalendarUtilityClass } from "./yearCalendarClasses.js";
|
|
3
|
-
export { pickersYearClasses } from "./pickersYearClasses.js";
|
|
2
|
+
export { yearCalendarClasses, getYearCalendarUtilityClass } from "./yearCalendarClasses.js";
|
|
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generat
|
|
|
2
2
|
export function getYearCalendarUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiYearCalendar', slot);
|
|
4
4
|
}
|
|
5
|
-
export const yearCalendarClasses = generateUtilityClasses('MuiYearCalendar', ['root']);
|
|
5
|
+
export const yearCalendarClasses = generateUtilityClasses('MuiYearCalendar', ['root', 'button', 'disabled', 'selected']);
|
package/modern/hooks/index.js
CHANGED
|
@@ -2,4 +2,5 @@ export { useClearableField } from "./useClearableField.js";
|
|
|
2
2
|
export { usePickerTranslations } from "./usePickerTranslations.js";
|
|
3
3
|
export { useSplitFieldProps } from "./useSplitFieldProps.js";
|
|
4
4
|
export { useParsedFormat } from "./useParsedFormat.js";
|
|
5
|
-
export { usePickerContext } from "./usePickerContext.js";
|
|
5
|
+
export { usePickerContext } from "./usePickerContext.js";
|
|
6
|
+
export { usePickerActionsContext } from "./usePickerActionsContext.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { PickerActionsContext } from "../internals/components/PickerProvider.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns a subset of the context passed by the picker wrapping the current component.
|
|
8
|
+
* It only contains the actions and never causes a re-render of the component using it.
|
|
9
|
+
*/
|
|
10
|
+
export const usePickerActionsContext = () => {
|
|
11
|
+
const value = React.useContext(PickerActionsContext);
|
|
12
|
+
if (value == null) {
|
|
13
|
+
throw new Error(['MUI X: The `usePickerActionsContext` can only be called in fields that are used as a slot of a picker component'].join('\n'));
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
};
|
package/modern/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { LocalizationProvider } from "../../LocalizationProvider/index.js";
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
export const PickerContext = /*#__PURE__*/React.createContext(null);
|
|
5
|
+
export const PickerActionsContext = /*#__PURE__*/React.createContext(null);
|
|
5
6
|
export const PickerPrivateContext = /*#__PURE__*/React.createContext({
|
|
6
7
|
ownerState: {
|
|
7
8
|
isPickerDisabled: false,
|
|
@@ -10,7 +11,8 @@ export const PickerPrivateContext = /*#__PURE__*/React.createContext({
|
|
|
10
11
|
isPickerOpen: false,
|
|
11
12
|
pickerVariant: 'desktop',
|
|
12
13
|
pickerOrientation: 'portrait'
|
|
13
|
-
}
|
|
14
|
+
},
|
|
15
|
+
dismissViews: () => {}
|
|
14
16
|
});
|
|
15
17
|
|
|
16
18
|
/**
|
|
@@ -23,17 +25,21 @@ export const PickerPrivateContext = /*#__PURE__*/React.createContext({
|
|
|
23
25
|
export function PickerProvider(props) {
|
|
24
26
|
const {
|
|
25
27
|
contextValue,
|
|
28
|
+
actionsContextValue,
|
|
26
29
|
privateContextValue,
|
|
27
30
|
localeText,
|
|
28
31
|
children
|
|
29
32
|
} = props;
|
|
30
33
|
return /*#__PURE__*/_jsx(PickerContext.Provider, {
|
|
31
34
|
value: contextValue,
|
|
32
|
-
children: /*#__PURE__*/_jsx(
|
|
33
|
-
value:
|
|
34
|
-
children: /*#__PURE__*/_jsx(
|
|
35
|
-
|
|
36
|
-
children:
|
|
35
|
+
children: /*#__PURE__*/_jsx(PickerActionsContext.Provider, {
|
|
36
|
+
value: actionsContextValue,
|
|
37
|
+
children: /*#__PURE__*/_jsx(PickerPrivateContext.Provider, {
|
|
38
|
+
value: privateContextValue,
|
|
39
|
+
children: /*#__PURE__*/_jsx(LocalizationProvider, {
|
|
40
|
+
localeText: localeText,
|
|
41
|
+
children: children
|
|
42
|
+
})
|
|
37
43
|
})
|
|
38
44
|
})
|
|
39
45
|
});
|
|
@@ -38,7 +38,7 @@ const PickersArrowSwitcherButton = styled(IconButton, {
|
|
|
38
38
|
})({
|
|
39
39
|
variants: [{
|
|
40
40
|
props: {
|
|
41
|
-
|
|
41
|
+
isButtonHidden: true
|
|
42
42
|
},
|
|
43
43
|
style: {
|
|
44
44
|
visibility: 'hidden'
|
|
@@ -109,7 +109,7 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
|
|
|
109
109
|
onClick: previousProps.goTo
|
|
110
110
|
},
|
|
111
111
|
ownerState: _extends({}, ownerState, {
|
|
112
|
-
|
|
112
|
+
isButtonHidden: previousProps.isHidden ?? false
|
|
113
113
|
}),
|
|
114
114
|
className: clsx(classes.button, classes.previousIconButton)
|
|
115
115
|
});
|
|
@@ -126,7 +126,7 @@ export const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function Picke
|
|
|
126
126
|
onClick: nextProps.goTo
|
|
127
127
|
},
|
|
128
128
|
ownerState: _extends({}, ownerState, {
|
|
129
|
-
|
|
129
|
+
isButtonHidden: nextProps.isHidden ?? false
|
|
130
130
|
}),
|
|
131
131
|
className: clsx(classes.button, classes.nextIconButton)
|
|
132
132
|
});
|
|
@@ -5,6 +5,8 @@ import Fade from '@mui/material/Fade';
|
|
|
5
5
|
import MuiDialog, { dialogClasses } from '@mui/material/Dialog';
|
|
6
6
|
import { styled } from '@mui/material/styles';
|
|
7
7
|
import { DIALOG_WIDTH } from "../constants/dimensions.js";
|
|
8
|
+
import { usePickerContext } from "../../hooks/index.js";
|
|
9
|
+
import { usePickerPrivateContext } from "../hooks/usePickerPrivateContext.js";
|
|
8
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
11
|
const PickersModalDialogRoot = styled(MuiDialog)({
|
|
10
12
|
[`& .${dialogClasses.container}`]: {
|
|
@@ -23,16 +25,20 @@ const PickersModalDialogContent = styled(DialogContent)({
|
|
|
23
25
|
export function PickersModalDialog(props) {
|
|
24
26
|
const {
|
|
25
27
|
children,
|
|
26
|
-
onDismiss,
|
|
27
|
-
open,
|
|
28
28
|
slots,
|
|
29
29
|
slotProps
|
|
30
30
|
} = props;
|
|
31
|
+
const {
|
|
32
|
+
open
|
|
33
|
+
} = usePickerContext();
|
|
34
|
+
const {
|
|
35
|
+
dismissViews
|
|
36
|
+
} = usePickerPrivateContext();
|
|
31
37
|
const Dialog = slots?.dialog ?? PickersModalDialogRoot;
|
|
32
38
|
const Transition = slots?.mobileTransition ?? Fade;
|
|
33
39
|
return /*#__PURE__*/_jsx(Dialog, _extends({
|
|
34
40
|
open: open,
|
|
35
|
-
onClose:
|
|
41
|
+
onClose: dismissViews
|
|
36
42
|
}, slotProps?.dialog, {
|
|
37
43
|
TransitionComponent: Transition,
|
|
38
44
|
TransitionProps: slotProps?.mobileTransition,
|
|
@@ -14,6 +14,7 @@ import { getPickersPopperUtilityClass } from "./pickersPopperClasses.js";
|
|
|
14
14
|
import { getActiveElement } from "../utils/utils.js";
|
|
15
15
|
import { useDefaultReduceAnimations } from "../hooks/useDefaultReduceAnimations.js";
|
|
16
16
|
import { usePickerPrivateContext } from "../hooks/usePickerPrivateContext.js";
|
|
17
|
+
import { usePickerContext } from "../../hooks/index.js";
|
|
17
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
19
|
const useUtilityClasses = classes => {
|
|
19
20
|
const slots = {
|
|
@@ -210,8 +211,6 @@ export function PickersPopper(inProps) {
|
|
|
210
211
|
containerRef = null,
|
|
211
212
|
shouldRestoreFocus,
|
|
212
213
|
onBlur,
|
|
213
|
-
onDismiss,
|
|
214
|
-
open,
|
|
215
214
|
role,
|
|
216
215
|
placement = 'bottom',
|
|
217
216
|
slots,
|
|
@@ -219,17 +218,23 @@ export function PickersPopper(inProps) {
|
|
|
219
218
|
reduceAnimations: inReduceAnimations,
|
|
220
219
|
classes: classesProp
|
|
221
220
|
} = props;
|
|
221
|
+
const {
|
|
222
|
+
open
|
|
223
|
+
} = usePickerContext();
|
|
224
|
+
const {
|
|
225
|
+
dismissViews
|
|
226
|
+
} = usePickerPrivateContext();
|
|
222
227
|
React.useEffect(() => {
|
|
223
228
|
function handleKeyDown(nativeEvent) {
|
|
224
229
|
if (open && nativeEvent.key === 'Escape') {
|
|
225
|
-
|
|
230
|
+
dismissViews();
|
|
226
231
|
}
|
|
227
232
|
}
|
|
228
233
|
document.addEventListener('keydown', handleKeyDown);
|
|
229
234
|
return () => {
|
|
230
235
|
document.removeEventListener('keydown', handleKeyDown);
|
|
231
236
|
};
|
|
232
|
-
}, [
|
|
237
|
+
}, [dismissViews, open]);
|
|
233
238
|
const lastFocusedElementRef = React.useRef(null);
|
|
234
239
|
React.useEffect(() => {
|
|
235
240
|
if (role === 'tooltip' || shouldRestoreFocus && !shouldRestoreFocus()) {
|
|
@@ -247,7 +252,7 @@ export function PickersPopper(inProps) {
|
|
|
247
252
|
});
|
|
248
253
|
}
|
|
249
254
|
}, [open, role, shouldRestoreFocus]);
|
|
250
|
-
const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur ??
|
|
255
|
+
const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur ?? dismissViews);
|
|
251
256
|
const paperRef = React.useRef(null);
|
|
252
257
|
const handleRef = useForkRef(paperRef, containerRef);
|
|
253
258
|
const handlePaperRef = useForkRef(handleRef, clickAwayRef);
|
|
@@ -264,7 +269,7 @@ export function PickersPopper(inProps) {
|
|
|
264
269
|
if (event.key === 'Escape') {
|
|
265
270
|
// stop the propagation to avoid closing parent modal
|
|
266
271
|
event.stopPropagation();
|
|
267
|
-
|
|
272
|
+
dismissViews();
|
|
268
273
|
}
|
|
269
274
|
};
|
|
270
275
|
const Transition = slots?.desktopTransition ?? reduceAnimations ? Fade : Grow;
|
|
@@ -52,8 +52,6 @@ export const useDesktopPicker = _ref => {
|
|
|
52
52
|
const labelId = useId();
|
|
53
53
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
54
54
|
const {
|
|
55
|
-
open,
|
|
56
|
-
actions,
|
|
57
55
|
hasUIView,
|
|
58
56
|
layoutProps,
|
|
59
57
|
providerProps,
|
|
@@ -85,7 +83,11 @@ export const useDesktopPicker = _ref => {
|
|
|
85
83
|
externalSlotProps: innerSlotProps?.openPickerButton,
|
|
86
84
|
additionalProps: {
|
|
87
85
|
disabled: disabled || readOnly,
|
|
88
|
-
|
|
86
|
+
// This direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
|
|
87
|
+
onClick: event => {
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
providerProps.contextValue.setOpen(prevOpen => !prevOpen);
|
|
90
|
+
},
|
|
89
91
|
'aria-label': getOpenDialogAriaText(pickerFieldProps.value),
|
|
90
92
|
edge: inputAdornmentProps.position
|
|
91
93
|
},
|
|
@@ -121,7 +123,7 @@ export const useDesktopPicker = _ref => {
|
|
|
121
123
|
sx,
|
|
122
124
|
label,
|
|
123
125
|
name,
|
|
124
|
-
focused: open ? true : undefined
|
|
126
|
+
focused: providerProps.contextValue.open ? true : undefined
|
|
125
127
|
}, isToolbarHidden && {
|
|
126
128
|
id: labelId
|
|
127
129
|
}, !!inputRef && {
|
|
@@ -170,12 +172,10 @@ export const useDesktopPicker = _ref => {
|
|
|
170
172
|
slots: slotsForField,
|
|
171
173
|
slotProps: slotProps,
|
|
172
174
|
unstableFieldRef: handleFieldRef
|
|
173
|
-
})), /*#__PURE__*/_jsx(PickersPopper,
|
|
175
|
+
})), /*#__PURE__*/_jsx(PickersPopper, {
|
|
174
176
|
role: "dialog",
|
|
175
177
|
placement: "bottom-start",
|
|
176
|
-
anchorEl: containerRef.current
|
|
177
|
-
}, actions, {
|
|
178
|
-
open: open,
|
|
178
|
+
anchorEl: containerRef.current,
|
|
179
179
|
slots: slots,
|
|
180
180
|
slotProps: slotProps,
|
|
181
181
|
shouldRestoreFocus: shouldRestoreFocus,
|
|
@@ -185,7 +185,7 @@ export const useDesktopPicker = _ref => {
|
|
|
185
185
|
slotProps: slotProps,
|
|
186
186
|
children: renderCurrentView()
|
|
187
187
|
}))
|
|
188
|
-
})
|
|
188
|
+
})]
|
|
189
189
|
}));
|
|
190
190
|
return {
|
|
191
191
|
renderPicker
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { useRtl } from '@mui/system/RtlProvider';
|
|
3
4
|
import { usePickerPrivateContext } from "./usePickerPrivateContext.js";
|
|
4
5
|
export function useFieldOwnerState(parameters) {
|
|
5
6
|
const {
|
|
6
7
|
ownerState: pickerOwnerState
|
|
7
8
|
} = usePickerPrivateContext();
|
|
9
|
+
const isRtl = useRtl();
|
|
8
10
|
return React.useMemo(() => _extends({}, pickerOwnerState, {
|
|
9
11
|
isFieldDisabled: parameters.disabled ?? false,
|
|
10
|
-
isFieldReadOnly: parameters.readOnly ?? false
|
|
11
|
-
|
|
12
|
+
isFieldReadOnly: parameters.readOnly ?? false,
|
|
13
|
+
isFieldRequired: parameters.required ?? false,
|
|
14
|
+
fieldDirection: isRtl ? 'rtl' : 'ltr'
|
|
15
|
+
}), [pickerOwnerState, parameters.disabled, parameters.readOnly, parameters.required, isRtl]);
|
|
12
16
|
}
|
|
@@ -46,8 +46,6 @@ export const useMobilePicker = _ref => {
|
|
|
46
46
|
const labelId = useId();
|
|
47
47
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
48
48
|
const {
|
|
49
|
-
open,
|
|
50
|
-
actions,
|
|
51
49
|
layoutProps,
|
|
52
50
|
providerProps,
|
|
53
51
|
renderCurrentView,
|
|
@@ -86,8 +84,12 @@ export const useMobilePicker = _ref => {
|
|
|
86
84
|
}, isToolbarHidden && {
|
|
87
85
|
id: labelId
|
|
88
86
|
}, !(disabled || readOnly) && {
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
// These direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
|
|
88
|
+
onClick: event => {
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
providerProps.contextValue.setOpen(true);
|
|
91
|
+
},
|
|
92
|
+
onKeyDown: onSpaceOrEnter(() => providerProps.contextValue.setOpen(true))
|
|
91
93
|
}, !!inputRef && {
|
|
92
94
|
inputRef
|
|
93
95
|
}),
|
|
@@ -124,8 +126,7 @@ export const useMobilePicker = _ref => {
|
|
|
124
126
|
slots: slotsForField,
|
|
125
127
|
slotProps: slotProps,
|
|
126
128
|
unstableFieldRef: handleFieldRef
|
|
127
|
-
})), /*#__PURE__*/_jsx(PickersModalDialog,
|
|
128
|
-
open: open,
|
|
129
|
+
})), /*#__PURE__*/_jsx(PickersModalDialog, {
|
|
129
130
|
slots: slots,
|
|
130
131
|
slotProps: slotProps,
|
|
131
132
|
children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
|
|
@@ -133,7 +134,7 @@ export const useMobilePicker = _ref => {
|
|
|
133
134
|
slotProps: slotProps,
|
|
134
135
|
children: renderCurrentView()
|
|
135
136
|
}))
|
|
136
|
-
})
|
|
137
|
+
})]
|
|
137
138
|
}));
|
|
138
139
|
return {
|
|
139
140
|
renderPicker
|