@mui/material 9.0.0 → 9.0.1
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/Autocomplete/Autocomplete.js +65 -11
- package/Autocomplete/Autocomplete.mjs +65 -11
- package/Avatar/Avatar.js +4 -0
- package/Avatar/Avatar.mjs +4 -0
- package/Badge/Badge.js +3 -0
- package/Badge/Badge.mjs +3 -0
- package/Button/Button.js +19 -2
- package/Button/Button.mjs +19 -2
- package/ButtonBase/ButtonBase.d.mts +7 -0
- package/ButtonBase/ButtonBase.d.ts +7 -0
- package/ButtonBase/ButtonBase.js +5 -2
- package/ButtonBase/ButtonBase.mjs +5 -2
- package/CHANGELOG.md +132 -1245
- package/Checkbox/Checkbox.js +2 -1
- package/Checkbox/Checkbox.mjs +2 -1
- package/CircularProgress/CircularProgress.d.mts +12 -2
- package/CircularProgress/CircularProgress.d.ts +12 -2
- package/CircularProgress/CircularProgress.js +33 -6
- package/CircularProgress/CircularProgress.mjs +33 -6
- package/ClickAwayListener/ClickAwayListener.js +3 -6
- package/ClickAwayListener/ClickAwayListener.mjs +3 -6
- package/Dialog/Dialog.js +11 -6
- package/Dialog/Dialog.mjs +11 -6
- package/Drawer/Drawer.js +18 -4
- package/Drawer/Drawer.mjs +18 -4
- package/Fab/Fab.js +7 -1
- package/Fab/Fab.mjs +7 -1
- package/FilledInput/FilledInput.d.mts +4 -0
- package/FilledInput/FilledInput.d.ts +4 -0
- package/FilledInput/FilledInput.js +18 -20
- package/FilledInput/FilledInput.mjs +18 -20
- package/FormControl/useFormControl.d.mts +12 -2
- package/FormControl/useFormControl.d.ts +12 -2
- package/FormControl/useFormControl.js +13 -0
- package/FormControl/useFormControl.mjs +12 -0
- package/FormControlLabel/FormControlLabel.js +5 -8
- package/FormControlLabel/FormControlLabel.mjs +5 -8
- package/FormGroup/FormGroup.js +2 -5
- package/FormGroup/FormGroup.mjs +2 -5
- package/FormHelperText/FormHelperText.js +2 -5
- package/FormHelperText/FormHelperText.mjs +2 -5
- package/FormLabel/FormLabel.js +2 -5
- package/FormLabel/FormLabel.mjs +2 -5
- package/IconButton/IconButton.js +1 -8
- package/IconButton/IconButton.mjs +1 -8
- package/Input/Input.d.mts +4 -0
- package/Input/Input.d.ts +4 -0
- package/Input/Input.js +6 -0
- package/Input/Input.mjs +6 -0
- package/InputBase/InputBase.d.mts +2 -1
- package/InputBase/InputBase.d.ts +2 -1
- package/InputBase/InputBase.js +50 -15
- package/InputBase/InputBase.mjs +50 -15
- package/InputLabel/InputLabel.js +5 -8
- package/InputLabel/InputLabel.mjs +5 -8
- package/LinearProgress/LinearProgress.d.mts +12 -2
- package/LinearProgress/LinearProgress.d.ts +12 -2
- package/LinearProgress/LinearProgress.js +42 -10
- package/LinearProgress/LinearProgress.mjs +42 -10
- package/List/List.js +2 -1
- package/List/List.mjs +2 -1
- package/ListItemButton/ListItemButton.js +7 -1
- package/ListItemButton/ListItemButton.mjs +7 -1
- package/MenuItem/MenuItem.js +7 -1
- package/MenuItem/MenuItem.mjs +7 -1
- package/MenuList/MenuList.js +2 -1
- package/MenuList/MenuList.mjs +2 -1
- package/NativeSelect/NativeSelect.js +2 -5
- package/NativeSelect/NativeSelect.mjs +2 -5
- package/OutlinedInput/OutlinedInput.js +13 -23
- package/OutlinedInput/OutlinedInput.mjs +13 -23
- package/PigmentContainer/PigmentContainer.js +0 -1
- package/PigmentContainer/PigmentContainer.mjs +0 -1
- package/Popper/BasePopper.js +23 -1
- package/Popper/BasePopper.mjs +23 -1
- package/Select/Select.js +2 -5
- package/Select/Select.mjs +2 -5
- package/Select/SelectInput.js +164 -2
- package/Select/SelectInput.mjs +164 -2
- package/Slide/Slide.js +48 -26
- package/Slide/Slide.mjs +49 -27
- package/Slider/Slider.js +10 -1
- package/Slider/Slider.mjs +10 -1
- package/Slider/useSlider.js +3 -2
- package/Slider/useSlider.mjs +3 -2
- package/SwipeableDrawer/SwipeableDrawer.js +7 -3
- package/SwipeableDrawer/SwipeableDrawer.mjs +7 -3
- package/Switch/Switch.js +7 -6
- package/Switch/Switch.mjs +7 -6
- package/Tabs/ScrollbarSize.js +2 -1
- package/Tabs/ScrollbarSize.mjs +2 -1
- package/Tabs/Tabs.js +2 -1
- package/Tabs/Tabs.mjs +2 -1
- package/Tooltip/Tooltip.js +26 -108
- package/Tooltip/Tooltip.mjs +26 -108
- package/Unstable_TrapFocus/FocusTrap.js +18 -14
- package/Unstable_TrapFocus/FocusTrap.mjs +18 -14
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +49 -49
- package/styles/responsiveFontSizes.js +19 -8
- package/styles/responsiveFontSizes.mjs +19 -8
- package/styles/useThemeProps.d.mts +3 -3
- package/styles/useThemeProps.d.ts +3 -3
- package/transitions/utils.d.mts +17 -0
- package/transitions/utils.d.ts +17 -0
- package/transitions/utils.js +64 -0
- package/transitions/utils.mjs +63 -0
- package/useAutocomplete/useAutocomplete.d.mts +4 -5
- package/useAutocomplete/useAutocomplete.d.ts +4 -5
- package/useAutocomplete/useAutocomplete.js +166 -53
- package/useAutocomplete/useAutocomplete.mjs +166 -53
- package/utils/contains.d.mts +2 -0
- package/utils/contains.d.ts +2 -0
- package/utils/contains.js +9 -0
- package/utils/contains.mjs +2 -0
- package/utils/focusable.d.mts +7 -0
- package/utils/focusable.d.ts +7 -0
- package/utils/focusable.js +20 -0
- package/utils/focusable.mjs +13 -0
- package/utils/getEventTarget.d.mts +2 -0
- package/utils/getEventTarget.d.ts +2 -0
- package/utils/getEventTarget.js +9 -0
- package/utils/getEventTarget.mjs +2 -0
- package/utils/mergeSlotProps.js +2 -8
- package/utils/mergeSlotProps.mjs +1 -8
- package/version/index.js +2 -2
- package/version/index.mjs +2 -2
- package/FormControl/formControlState.js +0 -21
- package/FormControl/formControlState.mjs +0 -15
package/Checkbox/Checkbox.js
CHANGED
|
@@ -158,7 +158,8 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {
|
|
|
158
158
|
slots,
|
|
159
159
|
slotProps: {
|
|
160
160
|
input: (0, _utils.mergeSlotProps)(typeof externalInputProps === 'function' ? externalInputProps(ownerState) : externalInputProps, {
|
|
161
|
-
'data-indeterminate': indeterminate
|
|
161
|
+
'data-indeterminate': indeterminate,
|
|
162
|
+
'aria-checked': indeterminate ? 'mixed' : undefined
|
|
162
163
|
})
|
|
163
164
|
}
|
|
164
165
|
}
|
package/Checkbox/Checkbox.mjs
CHANGED
|
@@ -151,7 +151,8 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {
|
|
|
151
151
|
slots,
|
|
152
152
|
slotProps: {
|
|
153
153
|
input: mergeSlotProps(typeof externalInputProps === 'function' ? externalInputProps(ownerState) : externalInputProps, {
|
|
154
|
-
'data-indeterminate': indeterminate
|
|
154
|
+
'data-indeterminate': indeterminate,
|
|
155
|
+
'aria-checked': indeterminate ? 'mixed' : undefined
|
|
155
156
|
})
|
|
156
157
|
}
|
|
157
158
|
}
|
|
@@ -30,6 +30,16 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
|
|
|
30
30
|
* @default false
|
|
31
31
|
*/
|
|
32
32
|
enableTrackSlot?: boolean | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* The maximum value for the progress indicator for the determinate variant.
|
|
35
|
+
* @default 100
|
|
36
|
+
*/
|
|
37
|
+
max?: number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The minimum value for the progress indicator for the determinate variant.
|
|
40
|
+
* @default 0
|
|
41
|
+
*/
|
|
42
|
+
min?: number | undefined;
|
|
33
43
|
/**
|
|
34
44
|
* The size of the component.
|
|
35
45
|
* If using a number, the pixel unit is assumed.
|
|
@@ -48,8 +58,8 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
|
|
|
48
58
|
thickness?: number | undefined;
|
|
49
59
|
/**
|
|
50
60
|
* The value of the progress indicator for the determinate variant.
|
|
51
|
-
* Value between
|
|
52
|
-
* @default 0
|
|
61
|
+
* Value between `min` and `max`.
|
|
62
|
+
* @default props.min ?? 0
|
|
53
63
|
*/
|
|
54
64
|
value?: number | undefined;
|
|
55
65
|
/**
|
|
@@ -30,6 +30,16 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
|
|
|
30
30
|
* @default false
|
|
31
31
|
*/
|
|
32
32
|
enableTrackSlot?: boolean | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* The maximum value for the progress indicator for the determinate variant.
|
|
35
|
+
* @default 100
|
|
36
|
+
*/
|
|
37
|
+
max?: number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The minimum value for the progress indicator for the determinate variant.
|
|
40
|
+
* @default 0
|
|
41
|
+
*/
|
|
42
|
+
min?: number | undefined;
|
|
33
43
|
/**
|
|
34
44
|
* The size of the component.
|
|
35
45
|
* If using a number, the pixel unit is assumed.
|
|
@@ -48,8 +58,8 @@ export interface CircularProgressProps extends StandardProps<React.HTMLAttribute
|
|
|
48
58
|
thickness?: number | undefined;
|
|
49
59
|
/**
|
|
50
60
|
* The value of the progress indicator for the determinate variant.
|
|
51
|
-
* Value between
|
|
52
|
-
* @default 0
|
|
61
|
+
* Value between `min` and `max`.
|
|
62
|
+
* @default props.min ?? 0
|
|
53
63
|
*/
|
|
54
64
|
value?: number | undefined;
|
|
55
65
|
/**
|
|
@@ -146,7 +146,7 @@ const CircularProgressCircle = (0, _zeroStyled.styled)('circle', {
|
|
|
146
146
|
ownerState
|
|
147
147
|
}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
|
|
148
148
|
style: dashAnimation || {
|
|
149
|
-
// At runtime for Pigment CSS, `
|
|
149
|
+
// At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
|
|
150
150
|
animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
|
|
151
151
|
}
|
|
152
152
|
}]
|
|
@@ -178,13 +178,22 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
|
|
|
178
178
|
color = 'primary',
|
|
179
179
|
disableShrink = false,
|
|
180
180
|
enableTrackSlot = false,
|
|
181
|
+
min: minProp,
|
|
182
|
+
max: maxProp,
|
|
181
183
|
size = 40,
|
|
182
184
|
style,
|
|
183
185
|
thickness = 3.6,
|
|
184
|
-
value = 0,
|
|
186
|
+
value = props.min ?? 0,
|
|
185
187
|
variant = 'indeterminate',
|
|
186
188
|
...other
|
|
187
189
|
} = props;
|
|
190
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
191
|
+
if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
|
|
192
|
+
console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const min = minProp ?? 0;
|
|
196
|
+
const max = maxProp ?? 100;
|
|
188
197
|
const ownerState = {
|
|
189
198
|
...props,
|
|
190
199
|
color,
|
|
@@ -201,10 +210,18 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
|
|
|
201
210
|
const rootProps = {};
|
|
202
211
|
if (variant === 'determinate') {
|
|
203
212
|
const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
|
|
213
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
214
|
+
if (value < min || value > max || min >= max) {
|
|
215
|
+
console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const range = max - min;
|
|
204
219
|
circleStyle.strokeDasharray = circumference.toFixed(3);
|
|
205
|
-
|
|
206
|
-
circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
|
|
220
|
+
circleStyle.strokeDashoffset = range > 0 ? `${((max - value) / range * circumference).toFixed(3)}px` : `${circumference.toFixed(3)}px`; // empty-state fallback when range is invalid
|
|
207
221
|
rootStyle.transform = 'rotate(-90deg)';
|
|
222
|
+
rootProps['aria-valuenow'] = value;
|
|
223
|
+
rootProps['aria-valuemin'] = min;
|
|
224
|
+
rootProps['aria-valuemax'] = max;
|
|
208
225
|
}
|
|
209
226
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CircularProgressRoot, {
|
|
210
227
|
className: (0, _clsx.default)(classes.root, className),
|
|
@@ -282,6 +299,16 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
|
|
|
282
299
|
* @default false
|
|
283
300
|
*/
|
|
284
301
|
enableTrackSlot: _propTypes.default.bool,
|
|
302
|
+
/**
|
|
303
|
+
* The maximum value for the progress indicator for the determinate variant.
|
|
304
|
+
* @default 100
|
|
305
|
+
*/
|
|
306
|
+
max: _propTypes.default.number,
|
|
307
|
+
/**
|
|
308
|
+
* The minimum value for the progress indicator for the determinate variant.
|
|
309
|
+
* @default 0
|
|
310
|
+
*/
|
|
311
|
+
min: _propTypes.default.number,
|
|
285
312
|
/**
|
|
286
313
|
* The size of the component.
|
|
287
314
|
* If using a number, the pixel unit is assumed.
|
|
@@ -304,8 +331,8 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
|
|
|
304
331
|
thickness: _propTypes.default.number,
|
|
305
332
|
/**
|
|
306
333
|
* The value of the progress indicator for the determinate variant.
|
|
307
|
-
* Value between
|
|
308
|
-
* @default 0
|
|
334
|
+
* Value between `min` and `max`.
|
|
335
|
+
* @default props.min ?? 0
|
|
309
336
|
*/
|
|
310
337
|
value: _propTypes.default.number,
|
|
311
338
|
/**
|
|
@@ -139,7 +139,7 @@ const CircularProgressCircle = styled('circle', {
|
|
|
139
139
|
ownerState
|
|
140
140
|
}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,
|
|
141
141
|
style: dashAnimation || {
|
|
142
|
-
// At runtime for Pigment CSS, `
|
|
142
|
+
// At runtime for Pigment CSS, `dashAnimation` will be null and the generated keyframe will be used.
|
|
143
143
|
animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`
|
|
144
144
|
}
|
|
145
145
|
}]
|
|
@@ -171,13 +171,22 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
|
|
|
171
171
|
color = 'primary',
|
|
172
172
|
disableShrink = false,
|
|
173
173
|
enableTrackSlot = false,
|
|
174
|
+
min: minProp,
|
|
175
|
+
max: maxProp,
|
|
174
176
|
size = 40,
|
|
175
177
|
style,
|
|
176
178
|
thickness = 3.6,
|
|
177
|
-
value = 0,
|
|
179
|
+
value = props.min ?? 0,
|
|
178
180
|
variant = 'indeterminate',
|
|
179
181
|
...other
|
|
180
182
|
} = props;
|
|
183
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
184
|
+
if (variant === 'indeterminate' && (minProp !== undefined || maxProp !== undefined)) {
|
|
185
|
+
console.warn(`MUI: You have provided the \`min\` or \`max\` props with an 'indeterminate' variant. These props will have no effect.`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const min = minProp ?? 0;
|
|
189
|
+
const max = maxProp ?? 100;
|
|
181
190
|
const ownerState = {
|
|
182
191
|
...props,
|
|
183
192
|
color,
|
|
@@ -194,10 +203,18 @@ const CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress
|
|
|
194
203
|
const rootProps = {};
|
|
195
204
|
if (variant === 'determinate') {
|
|
196
205
|
const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
|
|
206
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
207
|
+
if (value < min || value > max || min >= max) {
|
|
208
|
+
console.error(`MUI: The min, max, and value props in CircularProgress should be numbers where min < max and min <= value <= max. Received min=${min}, max=${max}, value=${value}.`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const range = max - min;
|
|
197
212
|
circleStyle.strokeDasharray = circumference.toFixed(3);
|
|
198
|
-
|
|
199
|
-
circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
|
|
213
|
+
circleStyle.strokeDashoffset = range > 0 ? `${((max - value) / range * circumference).toFixed(3)}px` : `${circumference.toFixed(3)}px`; // empty-state fallback when range is invalid
|
|
200
214
|
rootStyle.transform = 'rotate(-90deg)';
|
|
215
|
+
rootProps['aria-valuenow'] = value;
|
|
216
|
+
rootProps['aria-valuemin'] = min;
|
|
217
|
+
rootProps['aria-valuemax'] = max;
|
|
201
218
|
}
|
|
202
219
|
return /*#__PURE__*/_jsx(CircularProgressRoot, {
|
|
203
220
|
className: clsx(classes.root, className),
|
|
@@ -275,6 +292,16 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
|
|
|
275
292
|
* @default false
|
|
276
293
|
*/
|
|
277
294
|
enableTrackSlot: PropTypes.bool,
|
|
295
|
+
/**
|
|
296
|
+
* The maximum value for the progress indicator for the determinate variant.
|
|
297
|
+
* @default 100
|
|
298
|
+
*/
|
|
299
|
+
max: PropTypes.number,
|
|
300
|
+
/**
|
|
301
|
+
* The minimum value for the progress indicator for the determinate variant.
|
|
302
|
+
* @default 0
|
|
303
|
+
*/
|
|
304
|
+
min: PropTypes.number,
|
|
278
305
|
/**
|
|
279
306
|
* The size of the component.
|
|
280
307
|
* If using a number, the pixel unit is assumed.
|
|
@@ -297,8 +324,8 @@ process.env.NODE_ENV !== "production" ? CircularProgress.propTypes /* remove-pro
|
|
|
297
324
|
thickness: PropTypes.number,
|
|
298
325
|
/**
|
|
299
326
|
* The value of the progress indicator for the determinate variant.
|
|
300
|
-
* Value between
|
|
301
|
-
* @default 0
|
|
327
|
+
* Value between `min` and `max`.
|
|
328
|
+
* @default props.min ?? 0
|
|
302
329
|
*/
|
|
303
330
|
value: PropTypes.number,
|
|
304
331
|
/**
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.ClickAwayListener = ClickAwayListener;
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _contains = _interopRequireDefault(require("@mui/utils/contains"));
|
|
12
13
|
var _ownerDocument = _interopRequireDefault(require("@mui/utils/ownerDocument"));
|
|
13
14
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
14
15
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
@@ -72,7 +73,7 @@ function ClickAwayListener(props) {
|
|
|
72
73
|
syntheticEventRef.current = false;
|
|
73
74
|
const doc = (0, _ownerDocument.default)(nodeRef.current);
|
|
74
75
|
|
|
75
|
-
// 1.
|
|
76
|
+
// 1. IE 11 support, which trigger the handleClickAway even after the unbind
|
|
76
77
|
// 2. The child might render null.
|
|
77
78
|
// 3. Behave like a blur listener.
|
|
78
79
|
if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {
|
|
@@ -90,11 +91,7 @@ function ClickAwayListener(props) {
|
|
|
90
91
|
if (event.composedPath) {
|
|
91
92
|
insideDOM = event.composedPath().includes(nodeRef.current);
|
|
92
93
|
} else {
|
|
93
|
-
insideDOM = !doc.documentElement.
|
|
94
|
-
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
95
|
-
event.target) || nodeRef.current.contains(
|
|
96
|
-
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
97
|
-
event.target);
|
|
94
|
+
insideDOM = !(0, _contains.default)(doc.documentElement, event.target) || (0, _contains.default)(nodeRef.current, event.target);
|
|
98
95
|
}
|
|
99
96
|
if (!insideDOM && (disableReactTree || !insideReactTree)) {
|
|
100
97
|
onClickAway(event);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
+
import contains from '@mui/utils/contains';
|
|
5
6
|
import ownerDocument from '@mui/utils/ownerDocument';
|
|
6
7
|
import useForkRef from '@mui/utils/useForkRef';
|
|
7
8
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
@@ -66,7 +67,7 @@ function ClickAwayListener(props) {
|
|
|
66
67
|
syntheticEventRef.current = false;
|
|
67
68
|
const doc = ownerDocument(nodeRef.current);
|
|
68
69
|
|
|
69
|
-
// 1.
|
|
70
|
+
// 1. IE 11 support, which trigger the handleClickAway even after the unbind
|
|
70
71
|
// 2. The child might render null.
|
|
71
72
|
// 3. Behave like a blur listener.
|
|
72
73
|
if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {
|
|
@@ -84,11 +85,7 @@ function ClickAwayListener(props) {
|
|
|
84
85
|
if (event.composedPath) {
|
|
85
86
|
insideDOM = event.composedPath().includes(nodeRef.current);
|
|
86
87
|
} else {
|
|
87
|
-
insideDOM = !doc.documentElement.contains(
|
|
88
|
-
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
89
|
-
event.target) || nodeRef.current.contains(
|
|
90
|
-
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
91
|
-
event.target);
|
|
88
|
+
insideDOM = !contains(doc.documentElement, event.target) || contains(nodeRef.current, event.target);
|
|
92
89
|
}
|
|
93
90
|
if (!insideDOM && (disableReactTree || !insideReactTree)) {
|
|
94
91
|
onClickAway(event);
|
package/Dialog/Dialog.js
CHANGED
|
@@ -23,6 +23,7 @@ var _zeroStyled = require("../zero-styled");
|
|
|
23
23
|
var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
|
|
24
24
|
var _DefaultPropsProvider = require("../DefaultPropsProvider");
|
|
25
25
|
var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
|
|
26
|
+
var _focusable = require("../utils/focusable");
|
|
26
27
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
28
|
const DialogBackdrop = (0, _zeroStyled.styled)(_Backdrop.default, {
|
|
28
29
|
name: 'MuiDialog',
|
|
@@ -298,7 +299,16 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
298
299
|
shouldForwardComponentProp: true,
|
|
299
300
|
externalForwardedProps,
|
|
300
301
|
ownerState,
|
|
301
|
-
className: classes.paper
|
|
302
|
+
className: classes.paper,
|
|
303
|
+
additionalProps: {
|
|
304
|
+
elevation: 24,
|
|
305
|
+
role,
|
|
306
|
+
'aria-describedby': ariaDescribedby,
|
|
307
|
+
'aria-labelledby': ariaLabelledby,
|
|
308
|
+
'aria-modal': ariaModal,
|
|
309
|
+
tabIndex: -1,
|
|
310
|
+
[_focusable.FOCUSABLE_ATTRIBUTE]: ''
|
|
311
|
+
}
|
|
302
312
|
});
|
|
303
313
|
const [ContainerSlot, containerSlotProps] = (0, _useSlot.default)('container', {
|
|
304
314
|
elementType: DialogContainer,
|
|
@@ -340,11 +350,6 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
340
350
|
...containerSlotProps,
|
|
341
351
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PaperSlot, {
|
|
342
352
|
as: PaperComponent,
|
|
343
|
-
elevation: 24,
|
|
344
|
-
role: role,
|
|
345
|
-
"aria-describedby": ariaDescribedby,
|
|
346
|
-
"aria-labelledby": ariaLabelledby,
|
|
347
|
-
"aria-modal": ariaModal,
|
|
348
353
|
...paperSlotProps,
|
|
349
354
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContext.default.Provider, {
|
|
350
355
|
value: dialogContextValue,
|
package/Dialog/Dialog.mjs
CHANGED
|
@@ -16,6 +16,7 @@ import { styled, useTheme } from "../zero-styled/index.mjs";
|
|
|
16
16
|
import memoTheme from "../utils/memoTheme.mjs";
|
|
17
17
|
import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
|
|
18
18
|
import useSlot from "../utils/useSlot.mjs";
|
|
19
|
+
import { FOCUSABLE_ATTRIBUTE } from "../utils/focusable.mjs";
|
|
19
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
21
|
const DialogBackdrop = styled(Backdrop, {
|
|
21
22
|
name: 'MuiDialog',
|
|
@@ -291,7 +292,16 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
291
292
|
shouldForwardComponentProp: true,
|
|
292
293
|
externalForwardedProps,
|
|
293
294
|
ownerState,
|
|
294
|
-
className: classes.paper
|
|
295
|
+
className: classes.paper,
|
|
296
|
+
additionalProps: {
|
|
297
|
+
elevation: 24,
|
|
298
|
+
role,
|
|
299
|
+
'aria-describedby': ariaDescribedby,
|
|
300
|
+
'aria-labelledby': ariaLabelledby,
|
|
301
|
+
'aria-modal': ariaModal,
|
|
302
|
+
tabIndex: -1,
|
|
303
|
+
[FOCUSABLE_ATTRIBUTE]: ''
|
|
304
|
+
}
|
|
295
305
|
});
|
|
296
306
|
const [ContainerSlot, containerSlotProps] = useSlot('container', {
|
|
297
307
|
elementType: DialogContainer,
|
|
@@ -333,11 +343,6 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
333
343
|
...containerSlotProps,
|
|
334
344
|
children: /*#__PURE__*/_jsx(PaperSlot, {
|
|
335
345
|
as: PaperComponent,
|
|
336
|
-
elevation: 24,
|
|
337
|
-
role: role,
|
|
338
|
-
"aria-describedby": ariaDescribedby,
|
|
339
|
-
"aria-labelledby": ariaLabelledby,
|
|
340
|
-
"aria-modal": ariaModal,
|
|
341
346
|
...paperSlotProps,
|
|
342
347
|
children: /*#__PURE__*/_jsx(DialogContext.Provider, {
|
|
343
348
|
value: dialogContextValue,
|
package/Drawer/Drawer.js
CHANGED
|
@@ -23,8 +23,10 @@ var _rootShouldForwardProp = _interopRequireDefault(require("../styles/rootShoul
|
|
|
23
23
|
var _zeroStyled = require("../zero-styled");
|
|
24
24
|
var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
|
|
25
25
|
var _DefaultPropsProvider = require("../DefaultPropsProvider");
|
|
26
|
+
var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
|
|
26
27
|
var _drawerClasses = require("./drawerClasses");
|
|
27
28
|
var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
|
|
29
|
+
var _focusable = require("../utils/focusable");
|
|
28
30
|
var _utils = require("../utils");
|
|
29
31
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
30
32
|
const overridesResolver = (props, styles) => {
|
|
@@ -203,9 +205,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
203
205
|
// We use this state is order to skip the appear transition during the
|
|
204
206
|
// initial mount of the component.
|
|
205
207
|
const mounted = React.useRef(false);
|
|
208
|
+
const rootRef = React.useRef(null);
|
|
209
|
+
const handleRef = (0, _useForkRef.default)(ref, rootRef);
|
|
206
210
|
React.useEffect(() => {
|
|
207
211
|
mounted.current = true;
|
|
208
212
|
}, []);
|
|
213
|
+
|
|
214
|
+
// Resolve the container lazily so Slide reads the mounted modal root
|
|
215
|
+
// after refs are assigned, rather than the initial null ref during render.
|
|
216
|
+
const resolveSlideContainer = React.useCallback(() => rootRef.current, []);
|
|
209
217
|
const anchorInvariant = getAnchor({
|
|
210
218
|
direction: isRtl ? 'rtl' : 'ltr'
|
|
211
219
|
}, anchorProp);
|
|
@@ -229,7 +237,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
229
237
|
}
|
|
230
238
|
};
|
|
231
239
|
const [RootSlot, rootSlotProps] = (0, _useSlot.default)('root', {
|
|
232
|
-
ref,
|
|
240
|
+
ref: handleRef,
|
|
233
241
|
elementType: DrawerRoot,
|
|
234
242
|
className: (0, _clsx.default)(classes.root, classes.modal, className),
|
|
235
243
|
shouldForwardComponentProp: true,
|
|
@@ -240,6 +248,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
240
248
|
...ModalProps
|
|
241
249
|
},
|
|
242
250
|
additionalProps: {
|
|
251
|
+
closeAfterTransition: true,
|
|
243
252
|
open,
|
|
244
253
|
onClose,
|
|
245
254
|
hideBackdrop,
|
|
@@ -262,13 +271,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
262
271
|
square: true,
|
|
263
272
|
...(variant === 'temporary' && {
|
|
264
273
|
role: 'dialog',
|
|
265
|
-
'aria-modal': 'true'
|
|
274
|
+
'aria-modal': 'true',
|
|
275
|
+
[_focusable.FOCUSABLE_ATTRIBUTE]: '',
|
|
276
|
+
tabIndex: -1
|
|
266
277
|
})
|
|
267
278
|
}
|
|
268
279
|
});
|
|
269
280
|
const [DockedSlot, dockedSlotProps] = (0, _useSlot.default)('docked', {
|
|
270
281
|
elementType: DrawerDockedRoot,
|
|
271
|
-
ref,
|
|
282
|
+
ref: handleRef,
|
|
272
283
|
className: (0, _clsx.default)(classes.root, classes.docked, className),
|
|
273
284
|
ownerState,
|
|
274
285
|
externalForwardedProps,
|
|
@@ -282,7 +293,10 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
282
293
|
in: open,
|
|
283
294
|
direction: oppositeDirection[anchorInvariant],
|
|
284
295
|
timeout: transitionDuration,
|
|
285
|
-
appear: mounted.current
|
|
296
|
+
appear: mounted.current,
|
|
297
|
+
...(variant === 'temporary' && (slots.transition == null || slots.transition === _Slide.default) && {
|
|
298
|
+
container: resolveSlideContainer
|
|
299
|
+
})
|
|
286
300
|
}
|
|
287
301
|
});
|
|
288
302
|
const drawer = /*#__PURE__*/(0, _jsxRuntime.jsx)(PaperSlot, {
|
package/Drawer/Drawer.mjs
CHANGED
|
@@ -14,8 +14,10 @@ import rootShouldForwardProp from "../styles/rootShouldForwardProp.mjs";
|
|
|
14
14
|
import { styled, useTheme } from "../zero-styled/index.mjs";
|
|
15
15
|
import memoTheme from "../utils/memoTheme.mjs";
|
|
16
16
|
import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
|
|
17
|
+
import useForkRef from "../utils/useForkRef.mjs";
|
|
17
18
|
import { getDrawerUtilityClass } from "./drawerClasses.mjs";
|
|
18
19
|
import useSlot from "../utils/useSlot.mjs";
|
|
20
|
+
import { FOCUSABLE_ATTRIBUTE } from "../utils/focusable.mjs";
|
|
19
21
|
import { mergeSlotProps } from "../utils/index.mjs";
|
|
20
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
23
|
const overridesResolver = (props, styles) => {
|
|
@@ -194,9 +196,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
194
196
|
// We use this state is order to skip the appear transition during the
|
|
195
197
|
// initial mount of the component.
|
|
196
198
|
const mounted = React.useRef(false);
|
|
199
|
+
const rootRef = React.useRef(null);
|
|
200
|
+
const handleRef = useForkRef(ref, rootRef);
|
|
197
201
|
React.useEffect(() => {
|
|
198
202
|
mounted.current = true;
|
|
199
203
|
}, []);
|
|
204
|
+
|
|
205
|
+
// Resolve the container lazily so Slide reads the mounted modal root
|
|
206
|
+
// after refs are assigned, rather than the initial null ref during render.
|
|
207
|
+
const resolveSlideContainer = React.useCallback(() => rootRef.current, []);
|
|
200
208
|
const anchorInvariant = getAnchor({
|
|
201
209
|
direction: isRtl ? 'rtl' : 'ltr'
|
|
202
210
|
}, anchorProp);
|
|
@@ -220,7 +228,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
220
228
|
}
|
|
221
229
|
};
|
|
222
230
|
const [RootSlot, rootSlotProps] = useSlot('root', {
|
|
223
|
-
ref,
|
|
231
|
+
ref: handleRef,
|
|
224
232
|
elementType: DrawerRoot,
|
|
225
233
|
className: clsx(classes.root, classes.modal, className),
|
|
226
234
|
shouldForwardComponentProp: true,
|
|
@@ -231,6 +239,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
231
239
|
...ModalProps
|
|
232
240
|
},
|
|
233
241
|
additionalProps: {
|
|
242
|
+
closeAfterTransition: true,
|
|
234
243
|
open,
|
|
235
244
|
onClose,
|
|
236
245
|
hideBackdrop,
|
|
@@ -253,13 +262,15 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
253
262
|
square: true,
|
|
254
263
|
...(variant === 'temporary' && {
|
|
255
264
|
role: 'dialog',
|
|
256
|
-
'aria-modal': 'true'
|
|
265
|
+
'aria-modal': 'true',
|
|
266
|
+
[FOCUSABLE_ATTRIBUTE]: '',
|
|
267
|
+
tabIndex: -1
|
|
257
268
|
})
|
|
258
269
|
}
|
|
259
270
|
});
|
|
260
271
|
const [DockedSlot, dockedSlotProps] = useSlot('docked', {
|
|
261
272
|
elementType: DrawerDockedRoot,
|
|
262
|
-
ref,
|
|
273
|
+
ref: handleRef,
|
|
263
274
|
className: clsx(classes.root, classes.docked, className),
|
|
264
275
|
ownerState,
|
|
265
276
|
externalForwardedProps,
|
|
@@ -273,7 +284,10 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {
|
|
|
273
284
|
in: open,
|
|
274
285
|
direction: oppositeDirection[anchorInvariant],
|
|
275
286
|
timeout: transitionDuration,
|
|
276
|
-
appear: mounted.current
|
|
287
|
+
appear: mounted.current,
|
|
288
|
+
...(variant === 'temporary' && (slots.transition == null || slots.transition === Slide) && {
|
|
289
|
+
container: resolveSlideContainer
|
|
290
|
+
})
|
|
277
291
|
}
|
|
278
292
|
});
|
|
279
293
|
const drawer = /*#__PURE__*/_jsx(PaperSlot, {
|
package/Fab/Fab.js
CHANGED
|
@@ -194,6 +194,12 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
|
|
|
194
194
|
variant
|
|
195
195
|
};
|
|
196
196
|
const classes = useUtilityClasses(ownerState);
|
|
197
|
+
|
|
198
|
+
// Don't forward the 'root' class to the ButtonBase, as it will get duplicated with the one passed to the className prop.
|
|
199
|
+
const {
|
|
200
|
+
root,
|
|
201
|
+
...forwardedClasses
|
|
202
|
+
} = classes;
|
|
197
203
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(FabRoot, {
|
|
198
204
|
className: (0, _clsx.default)(classes.root, className),
|
|
199
205
|
component: component,
|
|
@@ -204,7 +210,7 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
|
|
|
204
210
|
ownerState: ownerState,
|
|
205
211
|
ref: ref,
|
|
206
212
|
...other,
|
|
207
|
-
classes:
|
|
213
|
+
classes: forwardedClasses,
|
|
208
214
|
children: children
|
|
209
215
|
});
|
|
210
216
|
});
|
package/Fab/Fab.mjs
CHANGED
|
@@ -187,6 +187,12 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
|
|
|
187
187
|
variant
|
|
188
188
|
};
|
|
189
189
|
const classes = useUtilityClasses(ownerState);
|
|
190
|
+
|
|
191
|
+
// Don't forward the 'root' class to the ButtonBase, as it will get duplicated with the one passed to the className prop.
|
|
192
|
+
const {
|
|
193
|
+
root,
|
|
194
|
+
...forwardedClasses
|
|
195
|
+
} = classes;
|
|
190
196
|
return /*#__PURE__*/_jsx(FabRoot, {
|
|
191
197
|
className: clsx(classes.root, className),
|
|
192
198
|
component: component,
|
|
@@ -197,7 +203,7 @@ const Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {
|
|
|
197
203
|
ownerState: ownerState,
|
|
198
204
|
ref: ref,
|
|
199
205
|
...other,
|
|
200
|
-
classes:
|
|
206
|
+
classes: forwardedClasses,
|
|
201
207
|
children: children
|
|
202
208
|
});
|
|
203
209
|
});
|
|
@@ -20,6 +20,10 @@ export interface FilledInputProps extends StandardProps<InputBaseProps> {
|
|
|
20
20
|
* @default false
|
|
21
21
|
*/
|
|
22
22
|
disableUnderline?: boolean | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
notched?: boolean | undefined;
|
|
23
27
|
/**
|
|
24
28
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
25
29
|
*/
|
|
@@ -20,6 +20,10 @@ export interface FilledInputProps extends StandardProps<InputBaseProps> {
|
|
|
20
20
|
* @default false
|
|
21
21
|
*/
|
|
22
22
|
disableUnderline?: boolean | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
notched?: boolean | undefined;
|
|
23
27
|
/**
|
|
24
28
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
25
29
|
*/
|
|
@@ -201,28 +201,20 @@ const FilledInputInput = (0, _zeroStyled.styled)(_InputBase2.InputBaseInput, {
|
|
|
201
201
|
paddingRight: 12,
|
|
202
202
|
paddingBottom: 8,
|
|
203
203
|
paddingLeft: 12,
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
'&:-webkit-autofill': {
|
|
205
|
+
...(!theme.vars && {
|
|
206
206
|
WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',
|
|
207
207
|
WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',
|
|
208
|
-
caretColor: theme.palette.mode === 'light' ? null : '#fff'
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
[theme.getColorSchemeSelector('dark')]: {
|
|
219
|
-
'&:-webkit-autofill': {
|
|
220
|
-
WebkitBoxShadow: '0 0 0 100px #266798 inset',
|
|
221
|
-
WebkitTextFillColor: '#fff',
|
|
222
|
-
caretColor: '#fff'
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}),
|
|
208
|
+
caretColor: theme.palette.mode === 'light' ? null : '#fff'
|
|
209
|
+
}),
|
|
210
|
+
borderTopLeftRadius: 'inherit',
|
|
211
|
+
borderTopRightRadius: 'inherit',
|
|
212
|
+
...(theme.vars && theme.applyStyles('dark', {
|
|
213
|
+
WebkitBoxShadow: '0 0 0 100px #266798 inset',
|
|
214
|
+
WebkitTextFillColor: '#fff',
|
|
215
|
+
caretColor: '#fff'
|
|
216
|
+
}))
|
|
217
|
+
},
|
|
226
218
|
variants: [{
|
|
227
219
|
props: {
|
|
228
220
|
size: 'small'
|
|
@@ -285,6 +277,8 @@ const FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps,
|
|
|
285
277
|
// declare here to prevent spreading to DOM
|
|
286
278
|
inputComponent = 'input',
|
|
287
279
|
multiline = false,
|
|
280
|
+
notched,
|
|
281
|
+
// declare here to prevent spreading to DOM
|
|
288
282
|
slotProps,
|
|
289
283
|
slots = {},
|
|
290
284
|
type = 'text',
|
|
@@ -428,6 +422,10 @@ process.env.NODE_ENV !== "production" ? FilledInput.propTypes /* remove-proptype
|
|
|
428
422
|
* Name attribute of the `input` element.
|
|
429
423
|
*/
|
|
430
424
|
name: _propTypes.default.string,
|
|
425
|
+
/**
|
|
426
|
+
* @internal
|
|
427
|
+
*/
|
|
428
|
+
notched: _propTypes.default.bool,
|
|
431
429
|
/**
|
|
432
430
|
* Callback fired when the value is changed.
|
|
433
431
|
*
|