@mui/x-date-pickers 7.0.0 → 7.1.0
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 +71 -0
- package/DatePicker/DatePickerToolbar.js +11 -6
- package/DateTimePicker/DateTimePickerToolbar.js +97 -45
- package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
- package/DigitalClock/DigitalClock.js +14 -6
- package/MonthCalendar/PickersMonth.js +12 -6
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
- package/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
- package/PickersDay/PickersDay.js +30 -15
- package/PickersLayout/PickersLayout.js +31 -17
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
- package/PickersTextField/PickersInput/PickersInput.js +76 -54
- package/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
- package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
- package/TimeClock/Clock.js +48 -35
- package/TimeClock/ClockNumber.js +12 -7
- package/TimeClock/ClockPointer.js +23 -13
- package/TimePicker/TimePickerToolbar.js +25 -16
- package/YearCalendar/PickersYear.js +12 -6
- package/index.js +1 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
- package/internals/components/PickersPopper.js +12 -8
- package/internals/components/PickersToolbar.js +39 -18
- package/internals/hooks/useField/useField.js +4 -2
- package/internals/hooks/useField/useField.types.d.ts +1 -0
- package/internals/hooks/useField/useFieldV6TextField.js +8 -3
- package/locales/itIT.js +16 -20
- package/locales/zhHK.js +14 -17
- package/modern/DatePicker/DatePickerToolbar.js +11 -6
- package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
- package/modern/DigitalClock/DigitalClock.js +14 -6
- package/modern/MonthCalendar/PickersMonth.js +12 -6
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
- package/modern/PickersDay/PickersDay.js +30 -15
- package/modern/PickersLayout/PickersLayout.js +31 -17
- package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
- package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
- package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
- package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
- package/modern/TimeClock/Clock.js +48 -35
- package/modern/TimeClock/ClockNumber.js +12 -7
- package/modern/TimeClock/ClockPointer.js +23 -13
- package/modern/TimePicker/TimePickerToolbar.js +25 -16
- package/modern/YearCalendar/PickersYear.js +12 -6
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
- package/modern/internals/components/PickersPopper.js +12 -8
- package/modern/internals/components/PickersToolbar.js +39 -18
- package/modern/internals/hooks/useField/useField.js +4 -2
- package/modern/internals/hooks/useField/useFieldV6TextField.js +8 -3
- package/modern/locales/itIT.js +16 -20
- package/modern/locales/zhHK.js +14 -17
- package/node/DatePicker/DatePickerToolbar.js +11 -6
- package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
- package/node/DigitalClock/DigitalClock.js +14 -6
- package/node/MonthCalendar/PickersMonth.js +12 -6
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
- package/node/PickersDay/PickersDay.js +30 -15
- package/node/PickersLayout/PickersLayout.js +31 -17
- package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
- package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
- package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
- package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
- package/node/TimeClock/Clock.js +48 -35
- package/node/TimeClock/ClockNumber.js +12 -7
- package/node/TimeClock/ClockPointer.js +23 -13
- package/node/TimePicker/TimePickerToolbar.js +25 -16
- package/node/YearCalendar/PickersYear.js +12 -6
- package/node/index.js +1 -1
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
- package/node/internals/components/PickersPopper.js +12 -8
- package/node/internals/components/PickersToolbar.js +39 -18
- package/node/internals/hooks/useField/useField.js +4 -2
- package/node/internals/hooks/useField/useFieldV6TextField.js +8 -3
- package/node/locales/itIT.js +16 -20
- package/node/locales/zhHK.js +14 -17
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["label", "autoFocus", "ownerState"];
|
|
3
|
+
const _excluded = ["label", "autoFocus", "disableUnderline", "ownerState"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { useFormControl } from '@mui/material/FormControl';
|
|
7
7
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
8
|
+
import { shouldForwardProp } from '@mui/system';
|
|
8
9
|
import { refType } from '@mui/utils';
|
|
9
10
|
import composeClasses from '@mui/utils/composeClasses';
|
|
10
11
|
import { pickersFilledInputClasses, getPickersFilledInputUtilityClass } from './pickersFilledInputClasses';
|
|
@@ -14,17 +15,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
14
15
|
const PickersFilledInputRoot = styled(PickersInputBaseRoot, {
|
|
15
16
|
name: 'MuiPickersFilledInput',
|
|
16
17
|
slot: 'Root',
|
|
17
|
-
overridesResolver: (props, styles) => styles.root
|
|
18
|
+
overridesResolver: (props, styles) => styles.root,
|
|
19
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'disableUnderline'
|
|
18
20
|
})(({
|
|
19
|
-
theme
|
|
20
|
-
ownerState
|
|
21
|
+
theme
|
|
21
22
|
}) => {
|
|
22
23
|
const light = theme.palette.mode === 'light';
|
|
23
24
|
const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';
|
|
24
25
|
const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';
|
|
25
26
|
const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';
|
|
26
27
|
const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';
|
|
27
|
-
return
|
|
28
|
+
return {
|
|
28
29
|
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,
|
|
29
30
|
borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
|
|
30
31
|
borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
|
|
@@ -44,83 +45,136 @@ const PickersFilledInputRoot = styled(PickersInputBaseRoot, {
|
|
|
44
45
|
},
|
|
45
46
|
[`&.${pickersFilledInputClasses.disabled}`]: {
|
|
46
47
|
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground
|
|
47
|
-
}
|
|
48
|
-
}, !ownerState.disableUnderline && {
|
|
49
|
-
'&::after': {
|
|
50
|
-
borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color || 'primary']?.main}`,
|
|
51
|
-
left: 0,
|
|
52
|
-
bottom: 0,
|
|
53
|
-
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
54
|
-
content: '""',
|
|
55
|
-
position: 'absolute',
|
|
56
|
-
right: 0,
|
|
57
|
-
transform: 'scaleX(0)',
|
|
58
|
-
transition: theme.transitions.create('transform', {
|
|
59
|
-
duration: theme.transitions.duration.shorter,
|
|
60
|
-
easing: theme.transitions.easing.easeOut
|
|
61
|
-
}),
|
|
62
|
-
pointerEvents: 'none' // Transparent to the hover style.
|
|
63
|
-
},
|
|
64
|
-
[`&.${pickersFilledInputClasses.focused}:after`]: {
|
|
65
|
-
// translateX(0) is a workaround for Safari transform scale bug
|
|
66
|
-
// See https://github.com/mui/material-ui/issues/31766
|
|
67
|
-
transform: 'scaleX(1) translateX(0)'
|
|
68
48
|
},
|
|
69
|
-
[
|
|
70
|
-
|
|
71
|
-
|
|
49
|
+
variants: [...Object.keys((theme.vars ?? theme).palette)
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
.filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
|
|
52
|
+
props: {
|
|
53
|
+
color,
|
|
54
|
+
disableUnderline: false
|
|
55
|
+
},
|
|
56
|
+
style: {
|
|
57
|
+
'&::after': {
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
borderBottom: `2px solid ${(theme.vars || theme).palette[color]?.main}`
|
|
60
|
+
}
|
|
72
61
|
}
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
62
|
+
})), {
|
|
63
|
+
props: {
|
|
64
|
+
disableUnderline: false
|
|
65
|
+
},
|
|
66
|
+
style: {
|
|
67
|
+
'&::after': {
|
|
68
|
+
left: 0,
|
|
69
|
+
bottom: 0,
|
|
70
|
+
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
71
|
+
content: '""',
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
right: 0,
|
|
74
|
+
transform: 'scaleX(0)',
|
|
75
|
+
transition: theme.transitions.create('transform', {
|
|
76
|
+
duration: theme.transitions.duration.shorter,
|
|
77
|
+
easing: theme.transitions.easing.easeOut
|
|
78
|
+
}),
|
|
79
|
+
pointerEvents: 'none' // Transparent to the hover style.
|
|
80
|
+
},
|
|
81
|
+
[`&.${pickersFilledInputClasses.focused}:after`]: {
|
|
82
|
+
// translateX(0) is a workaround for Safari transform scale bug
|
|
83
|
+
// See https://github.com/mui/material-ui/issues/31766
|
|
84
|
+
transform: 'scaleX(1) translateX(0)'
|
|
85
|
+
},
|
|
86
|
+
[`&.${pickersFilledInputClasses.error}`]: {
|
|
87
|
+
'&:before, &:after': {
|
|
88
|
+
borderBottomColor: (theme.vars || theme).palette.error.main
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
'&::before': {
|
|
92
|
+
borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
|
|
93
|
+
left: 0,
|
|
94
|
+
bottom: 0,
|
|
95
|
+
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
96
|
+
content: '"\\00a0"',
|
|
97
|
+
position: 'absolute',
|
|
98
|
+
right: 0,
|
|
99
|
+
transition: theme.transitions.create('border-bottom-color', {
|
|
100
|
+
duration: theme.transitions.duration.shorter
|
|
101
|
+
}),
|
|
102
|
+
pointerEvents: 'none' // Transparent to the hover style.
|
|
103
|
+
},
|
|
104
|
+
[`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: {
|
|
105
|
+
borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
|
|
106
|
+
},
|
|
107
|
+
[`&.${pickersFilledInputClasses.disabled}:before`]: {
|
|
108
|
+
borderBottomStyle: 'dotted'
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
props: ({
|
|
113
|
+
startAdornment
|
|
114
|
+
}) => !!startAdornment,
|
|
115
|
+
style: {
|
|
116
|
+
paddingLeft: 12
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
props: ({
|
|
120
|
+
endAdornment
|
|
121
|
+
}) => !!endAdornment,
|
|
122
|
+
style: {
|
|
123
|
+
paddingRight: 12
|
|
124
|
+
}
|
|
125
|
+
}]
|
|
126
|
+
};
|
|
98
127
|
});
|
|
99
128
|
const PickersFilledSectionsContainer = styled(PickersInputBaseSectionsContainer, {
|
|
100
129
|
name: 'MuiPickersFilledInput',
|
|
101
130
|
slot: 'sectionsContainer',
|
|
102
131
|
overridesResolver: (props, styles) => styles.sectionsContainer
|
|
103
|
-
})(
|
|
104
|
-
ownerState
|
|
105
|
-
}) => _extends({
|
|
132
|
+
})({
|
|
106
133
|
paddingTop: 25,
|
|
107
134
|
paddingRight: 12,
|
|
108
135
|
paddingBottom: 8,
|
|
109
|
-
paddingLeft: 12
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
136
|
+
paddingLeft: 12,
|
|
137
|
+
variants: [{
|
|
138
|
+
props: {
|
|
139
|
+
size: 'small'
|
|
140
|
+
},
|
|
141
|
+
style: {
|
|
142
|
+
paddingTop: 21,
|
|
143
|
+
paddingBottom: 4
|
|
144
|
+
}
|
|
145
|
+
}, {
|
|
146
|
+
props: ({
|
|
147
|
+
startAdornment
|
|
148
|
+
}) => !!startAdornment,
|
|
149
|
+
style: {
|
|
150
|
+
paddingLeft: 0
|
|
151
|
+
}
|
|
152
|
+
}, {
|
|
153
|
+
props: ({
|
|
154
|
+
endAdornment
|
|
155
|
+
}) => !!endAdornment,
|
|
156
|
+
style: {
|
|
157
|
+
paddingRight: 0
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
props: {
|
|
161
|
+
hiddenLabel: true
|
|
162
|
+
},
|
|
163
|
+
style: {
|
|
164
|
+
paddingTop: 16,
|
|
165
|
+
paddingBottom: 17
|
|
166
|
+
}
|
|
167
|
+
}, {
|
|
168
|
+
props: {
|
|
169
|
+
hiddenLabel: true,
|
|
170
|
+
size: 'small'
|
|
171
|
+
},
|
|
172
|
+
style: {
|
|
173
|
+
paddingTop: 8,
|
|
174
|
+
paddingBottom: 9
|
|
175
|
+
}
|
|
176
|
+
}]
|
|
177
|
+
});
|
|
124
178
|
const useUtilityClasses = ownerState => {
|
|
125
179
|
const {
|
|
126
180
|
classes,
|
|
@@ -143,6 +197,7 @@ const PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledI
|
|
|
143
197
|
});
|
|
144
198
|
const {
|
|
145
199
|
label,
|
|
200
|
+
disableUnderline = false,
|
|
146
201
|
ownerState: ownerStateProp
|
|
147
202
|
} = props,
|
|
148
203
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
@@ -155,6 +210,11 @@ const PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledI
|
|
|
155
210
|
slots: {
|
|
156
211
|
root: PickersFilledInputRoot,
|
|
157
212
|
input: PickersFilledSectionsContainer
|
|
213
|
+
},
|
|
214
|
+
slotProps: {
|
|
215
|
+
root: {
|
|
216
|
+
disableUnderline
|
|
217
|
+
}
|
|
158
218
|
}
|
|
159
219
|
}, other, {
|
|
160
220
|
label: label,
|
|
@@ -220,6 +280,11 @@ process.env.NODE_ENV !== "production" ? PickersFilledInput.propTypes = {
|
|
|
220
280
|
getSectionIndexFromDOMElement: PropTypes.func.isRequired
|
|
221
281
|
})
|
|
222
282
|
})]),
|
|
283
|
+
/**
|
|
284
|
+
* The props used for each component slot.
|
|
285
|
+
* @default {}
|
|
286
|
+
*/
|
|
287
|
+
slotProps: PropTypes.object,
|
|
223
288
|
/**
|
|
224
289
|
* The components used for each slot inside.
|
|
225
290
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["label", "autoFocus", "ownerState"];
|
|
3
|
+
const _excluded = ["label", "autoFocus", "disableUnderline", "ownerState"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { useFormControl } from '@mui/material/FormControl';
|
|
@@ -16,70 +16,85 @@ const PickersInputRoot = styled(PickersInputBaseRoot, {
|
|
|
16
16
|
slot: 'Root',
|
|
17
17
|
overridesResolver: (props, styles) => styles.root
|
|
18
18
|
})(({
|
|
19
|
-
theme
|
|
20
|
-
ownerState
|
|
19
|
+
theme
|
|
21
20
|
}) => {
|
|
22
21
|
const light = theme.palette.mode === 'light';
|
|
23
22
|
let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';
|
|
24
23
|
if (theme.vars) {
|
|
25
24
|
bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;
|
|
26
25
|
}
|
|
27
|
-
return
|
|
26
|
+
return {
|
|
28
27
|
'label + &': {
|
|
29
28
|
marginTop: 16
|
|
30
|
-
}
|
|
31
|
-
}, !ownerState.disableUnderline && {
|
|
32
|
-
'&::after': {
|
|
33
|
-
background: 'red',
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,
|
|
36
|
-
left: 0,
|
|
37
|
-
bottom: 0,
|
|
38
|
-
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
39
|
-
content: '""',
|
|
40
|
-
position: 'absolute',
|
|
41
|
-
right: 0,
|
|
42
|
-
transform: 'scaleX(0)',
|
|
43
|
-
transition: theme.transitions.create('transform', {
|
|
44
|
-
duration: theme.transitions.duration.shorter,
|
|
45
|
-
easing: theme.transitions.easing.easeOut
|
|
46
|
-
}),
|
|
47
|
-
pointerEvents: 'none' // Transparent to the hover style.
|
|
48
|
-
},
|
|
49
|
-
[`&.${pickersInputClasses.focused}:after`]: {
|
|
50
|
-
// translateX(0) is a workaround for Safari transform scale bug
|
|
51
|
-
// See https://github.com/mui/material-ui/issues/31766
|
|
52
|
-
transform: 'scaleX(1) translateX(0)'
|
|
53
29
|
},
|
|
54
|
-
[
|
|
55
|
-
|
|
56
|
-
|
|
30
|
+
variants: [...Object.keys((theme.vars ?? theme).palette)
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
.filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({
|
|
33
|
+
props: {
|
|
34
|
+
color
|
|
35
|
+
},
|
|
36
|
+
style: {
|
|
37
|
+
'&::after': {
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
borderBottom: `2px solid ${(theme.vars || theme).palette[color].main}`
|
|
40
|
+
}
|
|
57
41
|
}
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
42
|
+
})), {
|
|
43
|
+
props: {
|
|
44
|
+
disableUnderline: false
|
|
45
|
+
},
|
|
46
|
+
style: {
|
|
47
|
+
'&::after': {
|
|
48
|
+
background: 'red',
|
|
49
|
+
left: 0,
|
|
50
|
+
bottom: 0,
|
|
51
|
+
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
52
|
+
content: '""',
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
right: 0,
|
|
55
|
+
transform: 'scaleX(0)',
|
|
56
|
+
transition: theme.transitions.create('transform', {
|
|
57
|
+
duration: theme.transitions.duration.shorter,
|
|
58
|
+
easing: theme.transitions.easing.easeOut
|
|
59
|
+
}),
|
|
60
|
+
pointerEvents: 'none' // Transparent to the hover style.
|
|
61
|
+
},
|
|
62
|
+
[`&.${pickersInputClasses.focused}:after`]: {
|
|
63
|
+
// translateX(0) is a workaround for Safari transform scale bug
|
|
64
|
+
// See https://github.com/mui/material-ui/issues/31766
|
|
65
|
+
transform: 'scaleX(1) translateX(0)'
|
|
66
|
+
},
|
|
67
|
+
[`&.${pickersInputClasses.error}`]: {
|
|
68
|
+
'&:before, &:after': {
|
|
69
|
+
borderBottomColor: (theme.vars || theme).palette.error.main
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
'&::before': {
|
|
73
|
+
borderBottom: `1px solid ${bottomLineColor}`,
|
|
74
|
+
left: 0,
|
|
75
|
+
bottom: 0,
|
|
76
|
+
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
|
|
77
|
+
content: '"\\00a0"',
|
|
78
|
+
position: 'absolute',
|
|
79
|
+
right: 0,
|
|
80
|
+
transition: theme.transitions.create('border-bottom-color', {
|
|
81
|
+
duration: theme.transitions.duration.shorter
|
|
82
|
+
}),
|
|
83
|
+
pointerEvents: 'none' // Transparent to the hover style.
|
|
84
|
+
},
|
|
85
|
+
[`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: {
|
|
86
|
+
borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,
|
|
87
|
+
// Reset on touch devices, it doesn't add specificity
|
|
88
|
+
'@media (hover: none)': {
|
|
89
|
+
borderBottom: `1px solid ${bottomLineColor}`
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
[`&.${pickersInputClasses.disabled}:before`]: {
|
|
93
|
+
borderBottomStyle: 'dotted'
|
|
94
|
+
}
|
|
77
95
|
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
borderBottomStyle: 'dotted'
|
|
81
|
-
}
|
|
82
|
-
});
|
|
96
|
+
}]
|
|
97
|
+
};
|
|
83
98
|
});
|
|
84
99
|
const useUtilityClasses = ownerState => {
|
|
85
100
|
const {
|
|
@@ -103,11 +118,13 @@ const PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(inProps
|
|
|
103
118
|
});
|
|
104
119
|
const {
|
|
105
120
|
label,
|
|
121
|
+
disableUnderline = false,
|
|
106
122
|
ownerState: ownerStateProp
|
|
107
123
|
} = props,
|
|
108
124
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
109
125
|
const muiFormControl = useFormControl();
|
|
110
126
|
const ownerState = _extends({}, props, ownerStateProp, muiFormControl, {
|
|
127
|
+
disableUnderline,
|
|
111
128
|
color: muiFormControl?.color || 'primary'
|
|
112
129
|
});
|
|
113
130
|
const classes = useUtilityClasses(ownerState);
|
|
@@ -178,6 +195,11 @@ process.env.NODE_ENV !== "production" ? PickersInput.propTypes = {
|
|
|
178
195
|
getSectionIndexFromDOMElement: PropTypes.func.isRequired
|
|
179
196
|
})
|
|
180
197
|
})]),
|
|
198
|
+
/**
|
|
199
|
+
* The props used for each component slot.
|
|
200
|
+
* @default {}
|
|
201
|
+
*/
|
|
202
|
+
slotProps: PropTypes.object,
|
|
181
203
|
/**
|
|
182
204
|
* The components used for each slot inside.
|
|
183
205
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "renderSuffix", "slots", "contentEditable", "tabIndex", "onInput", "onPaste", "onKeyDown", "fullWidth", "name", "readOnly", "inputProps", "inputRef", "sectionListRef"];
|
|
3
|
+
const _excluded = ["elements", "areAllSectionsEmpty", "defaultValue", "label", "value", "onChange", "id", "autoFocus", "endAdornment", "startAdornment", "renderSuffix", "slots", "slotProps", "contentEditable", "tabIndex", "onInput", "onPaste", "onKeyDown", "fullWidth", "name", "readOnly", "inputProps", "inputRef", "sectionListRef"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { useFormControl } from '@mui/material/FormControl';
|
|
@@ -9,6 +9,7 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
9
9
|
import { refType } from '@mui/utils';
|
|
10
10
|
import composeClasses from '@mui/utils/composeClasses';
|
|
11
11
|
import capitalize from '@mui/utils/capitalize';
|
|
12
|
+
import { useSlotProps } from '@mui/base/utils';
|
|
12
13
|
import visuallyHidden from '@mui/utils/visuallyHidden';
|
|
13
14
|
import { pickersInputBaseClasses, getPickersInputBaseUtilityClass } from './pickersInputBaseClasses';
|
|
14
15
|
import { Unstable_PickersSectionList as PickersSectionList, Unstable_PickersSectionListRoot as PickersSectionListRoot, Unstable_PickersSectionListSection as PickersSectionListSection, Unstable_PickersSectionListSectionSeparator as PickersSectionListSectionSeparator, Unstable_PickersSectionListSectionContent as PickersSectionListSectionContent } from '../../PickersSectionList';
|
|
@@ -20,8 +21,7 @@ export const PickersInputBaseRoot = styled('div', {
|
|
|
20
21
|
slot: 'Root',
|
|
21
22
|
overridesResolver: (props, styles) => styles.root
|
|
22
23
|
})(({
|
|
23
|
-
theme
|
|
24
|
-
ownerState
|
|
24
|
+
theme
|
|
25
25
|
}) => _extends({}, theme.typography.body1, {
|
|
26
26
|
color: (theme.vars || theme).palette.text.primary,
|
|
27
27
|
cursor: 'text',
|
|
@@ -32,17 +32,22 @@ export const PickersInputBaseRoot = styled('div', {
|
|
|
32
32
|
position: 'relative',
|
|
33
33
|
boxSizing: 'border-box',
|
|
34
34
|
// Prevent padding issue with fullWidth.
|
|
35
|
-
letterSpacing: `${round(0.15 / 16)}em
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
letterSpacing: `${round(0.15 / 16)}em`,
|
|
36
|
+
variants: [{
|
|
37
|
+
props: {
|
|
38
|
+
fullWidth: true
|
|
39
|
+
},
|
|
40
|
+
style: {
|
|
41
|
+
width: '100%'
|
|
42
|
+
}
|
|
43
|
+
}]
|
|
38
44
|
}));
|
|
39
45
|
export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot, {
|
|
40
46
|
name: 'MuiPickersInputBase',
|
|
41
47
|
slot: 'SectionsContainer',
|
|
42
48
|
overridesResolver: (props, styles) => styles.sectionsContainer
|
|
43
49
|
})(({
|
|
44
|
-
theme
|
|
45
|
-
ownerState
|
|
50
|
+
theme
|
|
46
51
|
}) => _extends({
|
|
47
52
|
padding: '4px 0 5px',
|
|
48
53
|
fontFamily: theme.typography.fontFamily,
|
|
@@ -57,19 +62,41 @@ export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot,
|
|
|
57
62
|
letterSpacing: 'inherit',
|
|
58
63
|
// Baseline behavior
|
|
59
64
|
width: '182px'
|
|
60
|
-
}, ownerState.size === 'small' && {
|
|
61
|
-
paddingTop: 1
|
|
62
65
|
}, theme.direction === 'rtl' && {
|
|
63
66
|
textAlign: 'right /*! @noflip */'
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
67
|
+
}, {
|
|
68
|
+
variants: [{
|
|
69
|
+
props: {
|
|
70
|
+
size: 'small'
|
|
71
|
+
},
|
|
72
|
+
style: {
|
|
73
|
+
paddingTop: 1
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
props: {
|
|
77
|
+
adornedStart: false,
|
|
78
|
+
focused: false,
|
|
79
|
+
filled: false
|
|
80
|
+
},
|
|
81
|
+
style: {
|
|
82
|
+
color: 'currentColor',
|
|
83
|
+
opacity: 0
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
// Can't use the object notation because label can be null or undefined
|
|
87
|
+
props: ({
|
|
88
|
+
adornedStart,
|
|
89
|
+
focused,
|
|
90
|
+
filled,
|
|
91
|
+
label
|
|
92
|
+
}) => !adornedStart && !focused && !filled && label == null,
|
|
93
|
+
style: theme.vars ? {
|
|
94
|
+
opacity: theme.vars.opacity.inputPlaceholder
|
|
95
|
+
} : {
|
|
96
|
+
opacity: theme.palette.mode === 'light' ? 0.42 : 0.5
|
|
97
|
+
}
|
|
98
|
+
}]
|
|
99
|
+
}));
|
|
73
100
|
const PickersInputBaseSection = styled(PickersSectionListSection, {
|
|
74
101
|
name: 'MuiPickersInputBase',
|
|
75
102
|
slot: 'Section',
|
|
@@ -153,6 +180,7 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
|
|
|
153
180
|
startAdornment,
|
|
154
181
|
renderSuffix,
|
|
155
182
|
slots,
|
|
183
|
+
slotProps,
|
|
156
184
|
contentEditable,
|
|
157
185
|
tabIndex,
|
|
158
186
|
onInput,
|
|
@@ -199,12 +227,19 @@ const PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase
|
|
|
199
227
|
const ownerState = _extends({}, props, muiFormControl);
|
|
200
228
|
const classes = useUtilityClasses(ownerState);
|
|
201
229
|
const InputRoot = slots?.root || PickersInputBaseRoot;
|
|
202
|
-
const
|
|
203
|
-
|
|
230
|
+
const inputRootProps = useSlotProps({
|
|
231
|
+
elementType: InputRoot,
|
|
232
|
+
externalSlotProps: slotProps?.root,
|
|
233
|
+
externalForwardedProps: other,
|
|
234
|
+
additionalProps: {
|
|
235
|
+
'aria-invalid': muiFormControl.error,
|
|
236
|
+
ref: handleRootRef
|
|
237
|
+
},
|
|
204
238
|
className: classes.root,
|
|
205
|
-
ownerState
|
|
206
|
-
|
|
207
|
-
|
|
239
|
+
ownerState
|
|
240
|
+
});
|
|
241
|
+
const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer;
|
|
242
|
+
return /*#__PURE__*/_jsxs(InputRoot, _extends({}, inputRootProps, {
|
|
208
243
|
children: [startAdornment, /*#__PURE__*/_jsx(PickersSectionList, {
|
|
209
244
|
sectionListRef: sectionListRef,
|
|
210
245
|
elements: elements,
|
|
@@ -307,6 +342,11 @@ process.env.NODE_ENV !== "production" ? PickersInputBase.propTypes = {
|
|
|
307
342
|
getSectionIndexFromDOMElement: PropTypes.func.isRequired
|
|
308
343
|
})
|
|
309
344
|
})]),
|
|
345
|
+
/**
|
|
346
|
+
* The props used for each component slot.
|
|
347
|
+
* @default {}
|
|
348
|
+
*/
|
|
349
|
+
slotProps: PropTypes.object,
|
|
310
350
|
/**
|
|
311
351
|
* The components used for each slot inside.
|
|
312
352
|
*
|