@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
|
@@ -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
|
});
|
package/YearCalendar/index.d.ts
CHANGED
|
@@ -2,6 +2,3 @@ export { YearCalendar } from './YearCalendar';
|
|
|
2
2
|
export type { YearCalendarProps, YearCalendarSlots, YearCalendarSlotProps, } from './YearCalendar.types';
|
|
3
3
|
export { yearCalendarClasses, getYearCalendarUtilityClass } from './yearCalendarClasses';
|
|
4
4
|
export type { YearCalendarClasses, YearCalendarClassKey } from './yearCalendarClasses';
|
|
5
|
-
export { pickersYearClasses } from './pickersYearClasses';
|
|
6
|
-
export type { PickersYearClasses, PickersYearClassKey } from './pickersYearClasses';
|
|
7
|
-
export type { ExportedPickersYearProps } from './PickersYear';
|
package/YearCalendar/index.js
CHANGED
|
@@ -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";
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
export interface YearCalendarClasses {
|
|
2
2
|
/** Styles applied to the root element. */
|
|
3
3
|
root: string;
|
|
4
|
+
/** Styles applied to the button element that represents a single year */
|
|
5
|
+
button: string;
|
|
6
|
+
/** Styles applied to a disabled button element. */
|
|
7
|
+
disabled: string;
|
|
8
|
+
/** Styles applied to a selected button element. */
|
|
9
|
+
selected: string;
|
|
4
10
|
}
|
|
5
11
|
export type YearCalendarClassKey = keyof YearCalendarClasses;
|
|
6
12
|
export declare function getYearCalendarUtilityClass(slot: string): string;
|
|
7
|
-
export declare const yearCalendarClasses: Record<"root", string>;
|
|
13
|
+
export declare const yearCalendarClasses: Record<"button" | "disabled" | "selected" | "root", string>;
|
|
@@ -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/index.js
CHANGED
|
@@ -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
|
});
|
|
@@ -2,5 +2,6 @@ import { FieldOwnerState } from '../../models';
|
|
|
2
2
|
import { FormProps } from '../models';
|
|
3
3
|
export declare function useFieldOwnerState(parameters: UseFieldOwnerStateParameters): FieldOwnerState;
|
|
4
4
|
interface UseFieldOwnerStateParameters extends FormProps {
|
|
5
|
+
required?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export {};
|
|
@@ -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
|
}
|
package/models/fields.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TextFieldProps } from '@mui/material/TextField';
|
|
3
3
|
import type { ExportedUseClearableFieldProps, UseClearableFieldResponse } from '../hooks/useClearableField';
|
|
4
|
-
import { ExportedPickersSectionListProps } from '../PickersSectionList';
|
|
4
|
+
import type { ExportedPickersSectionListProps } from '../PickersSectionList';
|
|
5
5
|
import type { UseFieldInternalProps, UseFieldResponse } from '../internals/hooks/useField';
|
|
6
6
|
import type { PickersTextFieldProps } from '../PickersTextField';
|
|
7
7
|
import { BaseForwardedSingleInputFieldProps, FieldRangeSection, PickerRangeValue, PickerValidValue } from '../internals/models';
|
|
@@ -110,6 +110,16 @@ export interface FieldOwnerState extends PickerOwnerState {
|
|
|
110
110
|
* `true` if the field is read-only, `false` otherwise.
|
|
111
111
|
*/
|
|
112
112
|
isFieldReadOnly: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* `true` if the field is required, `false` otherwise.
|
|
115
|
+
*/
|
|
116
|
+
isFieldRequired: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* The direction of the field.
|
|
119
|
+
* Is equal to "ltr" when the field is in left-to-right direction.
|
|
120
|
+
* Is equal to "rtl" when the field is in right-to-left direction.
|
|
121
|
+
*/
|
|
122
|
+
fieldDirection: 'ltr' | 'rtl';
|
|
113
123
|
}
|
|
114
124
|
/**
|
|
115
125
|
* Props the prop `slotProps.field` of a picker can receive.
|
|
@@ -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
|
})
|
|
@@ -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
|
});
|
|
@@ -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,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({
|