@mui/material 7.3.6 → 7.3.8
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/Accordion/Accordion.d.ts +2 -2
- package/Accordion/Accordion.js +3 -13
- package/AppBar/AppBar.js +3 -2
- package/Autocomplete/Autocomplete.d.ts +1 -1
- package/Autocomplete/Autocomplete.js +1 -1
- package/Backdrop/Backdrop.js +0 -1
- package/Badge/Badge.js +23 -104
- package/ButtonGroup/ButtonGroup.js +8 -11
- package/CHANGELOG.md +119 -1
- package/CardActionArea/CardActionArea.js +0 -1
- package/Chip/Chip.js +1 -3
- package/Collapse/Collapse.js +3 -3
- package/Dialog/Dialog.js +4 -3
- package/Dialog/dialogClasses.d.ts +2 -0
- package/Dialog/dialogClasses.js +1 -1
- package/Drawer/Drawer.js +1 -1
- package/GridLegacy/GridLegacy.js +1 -1
- package/Modal/ModalManager.js +1 -1
- package/Popover/Popover.js +2 -2
- package/Popper/BasePopper.js +2 -2
- package/README.md +2 -2
- package/Select/SelectInput.js +19 -4
- package/Slide/Slide.js +1 -1
- package/Tabs/Tabs.d.ts +3 -2
- package/Tabs/Tabs.js +2 -2
- package/Unstable_TrapFocus/FocusTrap.js +1 -1
- package/esm/Accordion/Accordion.d.ts +2 -2
- package/esm/Accordion/Accordion.js +3 -13
- package/esm/AppBar/AppBar.js +3 -2
- package/esm/Autocomplete/Autocomplete.d.ts +1 -1
- package/esm/Autocomplete/Autocomplete.js +1 -1
- package/esm/Backdrop/Backdrop.js +0 -1
- package/esm/Badge/Badge.js +23 -104
- package/esm/ButtonGroup/ButtonGroup.js +8 -11
- package/esm/CardActionArea/CardActionArea.js +0 -1
- package/esm/Chip/Chip.js +1 -3
- package/esm/Collapse/Collapse.js +3 -3
- package/esm/Dialog/Dialog.js +4 -3
- package/esm/Dialog/dialogClasses.d.ts +2 -0
- package/esm/Dialog/dialogClasses.js +1 -1
- package/esm/Drawer/Drawer.js +1 -1
- package/esm/GridLegacy/GridLegacy.js +1 -1
- package/esm/Modal/ModalManager.js +1 -1
- package/esm/Popover/Popover.js +2 -2
- package/esm/Popper/BasePopper.js +2 -2
- package/esm/Select/SelectInput.js +19 -4
- package/esm/Slide/Slide.js +1 -1
- package/esm/Tabs/Tabs.d.ts +3 -2
- package/esm/Tabs/Tabs.js +2 -2
- package/esm/Unstable_TrapFocus/FocusTrap.js +1 -1
- package/esm/index.js +1 -1
- package/esm/internal/SwitchBase.js +1 -2
- package/esm/locale/arEG.js +1 -1
- package/esm/locale/arSA.js +1 -1
- package/esm/locale/arSD.js +1 -1
- package/esm/locale/kuCKB.js +1 -1
- package/esm/locale/neNP.js +1 -1
- package/esm/useAutocomplete/useAutocomplete.d.ts +1 -1
- package/esm/useAutocomplete/useAutocomplete.js +54 -20
- package/esm/version/index.js +2 -2
- package/index.js +1 -1
- package/internal/SwitchBase.js +1 -2
- package/locale/arEG.js +1 -1
- package/locale/arSA.js +1 -1
- package/locale/arSD.js +1 -1
- package/locale/kuCKB.js +1 -1
- package/locale/neNP.js +1 -1
- package/package.json +9 -9
- package/useAutocomplete/useAutocomplete.d.ts +1 -1
- package/useAutocomplete/useAutocomplete.js +54 -20
- package/version/index.js +2 -2
package/Slide/Slide.js
CHANGED
|
@@ -270,7 +270,7 @@ process.env.NODE_ENV !== "production" ? Slide.propTypes /* remove-proptypes */ =
|
|
|
270
270
|
const resolvedContainer = resolveContainer(props.container);
|
|
271
271
|
if (resolvedContainer && resolvedContainer.nodeType === 1) {
|
|
272
272
|
const box = resolvedContainer.getBoundingClientRect();
|
|
273
|
-
if (process.env.NODE_ENV !== '
|
|
273
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
274
274
|
return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
275
275
|
}
|
|
276
276
|
} else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {
|
package/Tabs/Tabs.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { OverridableComponent, OverrideProps } from "../OverridableComponent/ind
|
|
|
8
8
|
import { TabsClasses } from "./tabsClasses.js";
|
|
9
9
|
import SvgIcon from "../SvgIcon/index.js";
|
|
10
10
|
export interface TabsPropsIndicatorColorOverrides {}
|
|
11
|
+
export interface TabsPropsVariantOverrides {}
|
|
11
12
|
export interface TabsRootSlotPropsOverrides {}
|
|
12
13
|
export interface TabsScrollerSlotPropsOverrides {}
|
|
13
14
|
export interface TabsListSlotPropsOverrides {}
|
|
@@ -87,7 +88,7 @@ export type TabsSlotsAndSlotProps = CreateSlotsAndSlotProps<TabsSlots, {
|
|
|
87
88
|
*/
|
|
88
89
|
indicator: SlotProps<'span', TabsIndicatorSlotPropsOverrides, TabsOwnerState>;
|
|
89
90
|
/**
|
|
90
|
-
* Props forwarded to the
|
|
91
|
+
* Props forwarded to the scrollButtons slot.
|
|
91
92
|
* By default, the available props are based on the [TabScrollButton](https://mui.com/material-ui/api/tab-scroll-button/#props) component.
|
|
92
93
|
*/
|
|
93
94
|
scrollButtons: SlotProps<typeof TabScrollButton, TabsScrollButtonsSlotPropsOverrides, TabsOwnerState>;
|
|
@@ -234,7 +235,7 @@ export interface TabsOwnProps extends TabsSlotsAndSlotProps {
|
|
|
234
235
|
* - `standard` will render the default state.
|
|
235
236
|
* @default 'standard'
|
|
236
237
|
*/
|
|
237
|
-
variant?: 'standard' | 'scrollable' | 'fullWidth'
|
|
238
|
+
variant?: OverridableStringUnion<'standard' | 'scrollable' | 'fullWidth', TabsPropsVariantOverrides>;
|
|
238
239
|
/**
|
|
239
240
|
* If `true`, the scrollbar is visible. It can be useful when displaying
|
|
240
241
|
* a long vertical list of tabs.
|
package/Tabs/Tabs.js
CHANGED
|
@@ -352,7 +352,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
|
|
|
352
352
|
slots,
|
|
353
353
|
slotProps: {
|
|
354
354
|
indicator: TabIndicatorProps,
|
|
355
|
-
|
|
355
|
+
scrollButtons: TabScrollButtonProps,
|
|
356
356
|
...slotProps
|
|
357
357
|
}
|
|
358
358
|
};
|
|
@@ -385,7 +385,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
|
|
|
385
385
|
}
|
|
386
386
|
tabMeta = tab ? tab.getBoundingClientRect() : null;
|
|
387
387
|
if (process.env.NODE_ENV !== 'production') {
|
|
388
|
-
if (
|
|
388
|
+
if (!globalThis.MUI_TEST_ENV && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&
|
|
389
389
|
// if the whole Tabs component is hidden, don't warn
|
|
390
390
|
tabsMeta.clientWidth !== 0) {
|
|
391
391
|
tabsMeta = null;
|
|
@@ -155,12 +155,12 @@ function FocusTrap(props) {
|
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
const doc = (0, _ownerDocument.default)(rootRef.current);
|
|
158
|
-
const activeElement = (0, _getActiveElement.default)(doc);
|
|
159
158
|
const loopFocus = nativeEvent => {
|
|
160
159
|
lastKeydown.current = nativeEvent;
|
|
161
160
|
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
|
|
162
161
|
return;
|
|
163
162
|
}
|
|
163
|
+
const activeElement = (0, _getActiveElement.default)(doc);
|
|
164
164
|
|
|
165
165
|
// Make sure the next tab starts from the right place.
|
|
166
166
|
// activeElement refers to the origin.
|
|
@@ -75,12 +75,12 @@ export interface AccordionOwnProps {
|
|
|
75
75
|
*/
|
|
76
76
|
disabled?: boolean;
|
|
77
77
|
/**
|
|
78
|
-
* If `true`, it removes the margin between two expanded accordion items and the
|
|
78
|
+
* If `true`, it removes the margin between two expanded accordion items and prevents the increased height when expanded.
|
|
79
79
|
* @default false
|
|
80
80
|
*/
|
|
81
81
|
disableGutters?: boolean;
|
|
82
82
|
/**
|
|
83
|
-
* If `true`, expands the accordion, otherwise
|
|
83
|
+
* If `true`, expands the accordion, otherwise collapses it.
|
|
84
84
|
* Setting this prop enables control over the accordion.
|
|
85
85
|
*/
|
|
86
86
|
expanded?: boolean;
|
|
@@ -142,7 +142,6 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
142
142
|
disableGutters = false,
|
|
143
143
|
expanded: expandedProp,
|
|
144
144
|
onChange,
|
|
145
|
-
square = false,
|
|
146
145
|
slots = {},
|
|
147
146
|
slotProps = {},
|
|
148
147
|
TransitionComponent: TransitionComponentProp,
|
|
@@ -170,7 +169,6 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
170
169
|
}), [expanded, disabled, disableGutters, handleChange]);
|
|
171
170
|
const ownerState = {
|
|
172
171
|
...props,
|
|
173
|
-
square,
|
|
174
172
|
disabled,
|
|
175
173
|
disableGutters,
|
|
176
174
|
expanded
|
|
@@ -197,10 +195,7 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
197
195
|
className: clsx(classes.root, className),
|
|
198
196
|
shouldForwardComponentProp: true,
|
|
199
197
|
ownerState,
|
|
200
|
-
ref
|
|
201
|
-
additionalProps: {
|
|
202
|
-
square
|
|
203
|
-
}
|
|
198
|
+
ref
|
|
204
199
|
});
|
|
205
200
|
const [AccordionHeadingSlot, accordionProps] = useSlot('heading', {
|
|
206
201
|
elementType: AccordionHeading,
|
|
@@ -280,12 +275,12 @@ process.env.NODE_ENV !== "production" ? Accordion.propTypes /* remove-proptypes
|
|
|
280
275
|
*/
|
|
281
276
|
disabled: PropTypes.bool,
|
|
282
277
|
/**
|
|
283
|
-
* If `true`, it removes the margin between two expanded accordion items and the
|
|
278
|
+
* If `true`, it removes the margin between two expanded accordion items and prevents the increased height when expanded.
|
|
284
279
|
* @default false
|
|
285
280
|
*/
|
|
286
281
|
disableGutters: PropTypes.bool,
|
|
287
282
|
/**
|
|
288
|
-
* If `true`, expands the accordion, otherwise
|
|
283
|
+
* If `true`, expands the accordion, otherwise collapses it.
|
|
289
284
|
* Setting this prop enables control over the accordion.
|
|
290
285
|
*/
|
|
291
286
|
expanded: PropTypes.bool,
|
|
@@ -316,11 +311,6 @@ process.env.NODE_ENV !== "production" ? Accordion.propTypes /* remove-proptypes
|
|
|
316
311
|
root: PropTypes.elementType,
|
|
317
312
|
transition: PropTypes.elementType
|
|
318
313
|
}),
|
|
319
|
-
/**
|
|
320
|
-
* If `true`, rounded corners are disabled.
|
|
321
|
-
* @default false
|
|
322
|
-
*/
|
|
323
|
-
square: PropTypes.bool,
|
|
324
314
|
/**
|
|
325
315
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
326
316
|
*/
|
package/esm/AppBar/AppBar.js
CHANGED
|
@@ -26,7 +26,7 @@ const useUtilityClasses = ownerState => {
|
|
|
26
26
|
|
|
27
27
|
// var2 is the fallback.
|
|
28
28
|
// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'
|
|
29
|
-
const joinVars = (var1, var2) => var1 ? `${var1
|
|
29
|
+
const joinVars = (var1, var2) => var1 ? `${var1.replace(')', '')}, ${var2})` : var2;
|
|
30
30
|
const AppBarRoot = styled(Paper, {
|
|
31
31
|
name: 'MuiAppBar',
|
|
32
32
|
slot: 'Root',
|
|
@@ -101,7 +101,8 @@ const AppBarRoot = styled(Paper, {
|
|
|
101
101
|
color: 'inherit'
|
|
102
102
|
},
|
|
103
103
|
style: {
|
|
104
|
-
'--AppBar-color': 'inherit'
|
|
104
|
+
'--AppBar-color': 'inherit',
|
|
105
|
+
color: 'var(--AppBar-color)'
|
|
105
106
|
}
|
|
106
107
|
}, {
|
|
107
108
|
props: {
|
|
@@ -283,7 +283,7 @@ export interface AutocompleteProps<Value, Multiple extends boolean | undefined,
|
|
|
283
283
|
* @returns {ReactNode}
|
|
284
284
|
*/
|
|
285
285
|
renderOption?: (props: React.HTMLAttributes<HTMLLIElement> & {
|
|
286
|
-
key:
|
|
286
|
+
key: React.Key;
|
|
287
287
|
}, option: Value, state: AutocompleteRenderOptionState, ownerState: AutocompleteOwnerState<Value, Multiple, DisableClearable, FreeSolo, ChipComponent>) => React.ReactNode;
|
|
288
288
|
/**
|
|
289
289
|
* Render the selected value when doing multiple selections.
|
|
@@ -657,7 +657,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
657
657
|
children: renderInput({
|
|
658
658
|
id,
|
|
659
659
|
disabled,
|
|
660
|
-
fullWidth: true,
|
|
660
|
+
fullWidth: props.fullWidth ?? true,
|
|
661
661
|
size: size === 'small' ? 'small' : undefined,
|
|
662
662
|
InputLabelProps: getInputLabelProps(),
|
|
663
663
|
InputProps: {
|
package/esm/Backdrop/Backdrop.js
CHANGED
package/esm/Badge/Badge.js
CHANGED
|
@@ -93,110 +93,6 @@ const BadgeBadge = styled('span', {
|
|
|
93
93
|
minWidth: RADIUS_DOT * 2,
|
|
94
94
|
padding: 0
|
|
95
95
|
}
|
|
96
|
-
}, {
|
|
97
|
-
props: ({
|
|
98
|
-
ownerState
|
|
99
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',
|
|
100
|
-
style: {
|
|
101
|
-
top: 0,
|
|
102
|
-
right: 0,
|
|
103
|
-
transform: 'scale(1) translate(50%, -50%)',
|
|
104
|
-
transformOrigin: '100% 0%',
|
|
105
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
106
|
-
transform: 'scale(0) translate(50%, -50%)'
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}, {
|
|
110
|
-
props: ({
|
|
111
|
-
ownerState
|
|
112
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',
|
|
113
|
-
style: {
|
|
114
|
-
bottom: 0,
|
|
115
|
-
right: 0,
|
|
116
|
-
transform: 'scale(1) translate(50%, 50%)',
|
|
117
|
-
transformOrigin: '100% 100%',
|
|
118
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
119
|
-
transform: 'scale(0) translate(50%, 50%)'
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}, {
|
|
123
|
-
props: ({
|
|
124
|
-
ownerState
|
|
125
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',
|
|
126
|
-
style: {
|
|
127
|
-
top: 0,
|
|
128
|
-
left: 0,
|
|
129
|
-
transform: 'scale(1) translate(-50%, -50%)',
|
|
130
|
-
transformOrigin: '0% 0%',
|
|
131
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
132
|
-
transform: 'scale(0) translate(-50%, -50%)'
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}, {
|
|
136
|
-
props: ({
|
|
137
|
-
ownerState
|
|
138
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',
|
|
139
|
-
style: {
|
|
140
|
-
bottom: 0,
|
|
141
|
-
left: 0,
|
|
142
|
-
transform: 'scale(1) translate(-50%, 50%)',
|
|
143
|
-
transformOrigin: '0% 100%',
|
|
144
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
145
|
-
transform: 'scale(0) translate(-50%, 50%)'
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}, {
|
|
149
|
-
props: ({
|
|
150
|
-
ownerState
|
|
151
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',
|
|
152
|
-
style: {
|
|
153
|
-
top: '14%',
|
|
154
|
-
right: '14%',
|
|
155
|
-
transform: 'scale(1) translate(50%, -50%)',
|
|
156
|
-
transformOrigin: '100% 0%',
|
|
157
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
158
|
-
transform: 'scale(0) translate(50%, -50%)'
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}, {
|
|
162
|
-
props: ({
|
|
163
|
-
ownerState
|
|
164
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',
|
|
165
|
-
style: {
|
|
166
|
-
bottom: '14%',
|
|
167
|
-
right: '14%',
|
|
168
|
-
transform: 'scale(1) translate(50%, 50%)',
|
|
169
|
-
transformOrigin: '100% 100%',
|
|
170
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
171
|
-
transform: 'scale(0) translate(50%, 50%)'
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}, {
|
|
175
|
-
props: ({
|
|
176
|
-
ownerState
|
|
177
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',
|
|
178
|
-
style: {
|
|
179
|
-
top: '14%',
|
|
180
|
-
left: '14%',
|
|
181
|
-
transform: 'scale(1) translate(-50%, -50%)',
|
|
182
|
-
transformOrigin: '0% 0%',
|
|
183
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
184
|
-
transform: 'scale(0) translate(-50%, -50%)'
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}, {
|
|
188
|
-
props: ({
|
|
189
|
-
ownerState
|
|
190
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',
|
|
191
|
-
style: {
|
|
192
|
-
bottom: '14%',
|
|
193
|
-
left: '14%',
|
|
194
|
-
transform: 'scale(1) translate(-50%, 50%)',
|
|
195
|
-
transformOrigin: '0% 100%',
|
|
196
|
-
[`&.${badgeClasses.invisible}`]: {
|
|
197
|
-
transform: 'scale(0) translate(-50%, 50%)'
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
96
|
}, {
|
|
201
97
|
props: {
|
|
202
98
|
invisible: true
|
|
@@ -207,6 +103,29 @@ const BadgeBadge = styled('span', {
|
|
|
207
103
|
duration: theme.transitions.duration.leavingScreen
|
|
208
104
|
})
|
|
209
105
|
}
|
|
106
|
+
}, {
|
|
107
|
+
style: ({
|
|
108
|
+
ownerState
|
|
109
|
+
}) => {
|
|
110
|
+
const {
|
|
111
|
+
vertical,
|
|
112
|
+
horizontal
|
|
113
|
+
} = ownerState.anchorOrigin;
|
|
114
|
+
const offset = ownerState.overlap === 'circular' ? '14%' : 0;
|
|
115
|
+
return {
|
|
116
|
+
'--Badge-translateX': horizontal === 'right' ? '50%' : '-50%',
|
|
117
|
+
'--Badge-translateY': vertical === 'top' ? '-50%' : '50%',
|
|
118
|
+
top: vertical === 'top' ? offset : 'initial',
|
|
119
|
+
bottom: vertical === 'bottom' ? offset : 'initial',
|
|
120
|
+
right: horizontal === 'right' ? offset : 'initial',
|
|
121
|
+
left: horizontal === 'left' ? offset : 'initial',
|
|
122
|
+
transform: 'scale(1) translate(var(--Badge-translateX), var(--Badge-translateY))',
|
|
123
|
+
transformOrigin: `${horizontal === 'right' ? '100%' : '0%'} ${vertical === 'top' ? '0%' : '100%'}`,
|
|
124
|
+
[`&.${badgeClasses.invisible}`]: {
|
|
125
|
+
transform: 'scale(0) translate(var(--Badge-translateX), var(--Badge-translateY))'
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
210
129
|
}]
|
|
211
130
|
})));
|
|
212
131
|
function getAnchorOrigin(anchorOrigin) {
|
|
@@ -69,7 +69,13 @@ const ButtonGroupRoot = styled('div', {
|
|
|
69
69
|
variant: 'contained'
|
|
70
70
|
},
|
|
71
71
|
style: {
|
|
72
|
-
boxShadow: (theme.vars || theme).shadows[2]
|
|
72
|
+
boxShadow: (theme.vars || theme).shadows[2],
|
|
73
|
+
[`& .${buttonGroupClasses.grouped}`]: {
|
|
74
|
+
boxShadow: 'none',
|
|
75
|
+
'&:hover': {
|
|
76
|
+
boxShadow: 'none'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
73
79
|
}
|
|
74
80
|
}, {
|
|
75
81
|
props: {
|
|
@@ -220,16 +226,7 @@ const ButtonGroupRoot = styled('div', {
|
|
|
220
226
|
}
|
|
221
227
|
}))],
|
|
222
228
|
[`& .${buttonGroupClasses.grouped}`]: {
|
|
223
|
-
minWidth: 40
|
|
224
|
-
boxShadow: 'none',
|
|
225
|
-
props: {
|
|
226
|
-
variant: 'contained'
|
|
227
|
-
},
|
|
228
|
-
style: {
|
|
229
|
-
'&:hover': {
|
|
230
|
-
boxShadow: 'none'
|
|
231
|
-
}
|
|
232
|
-
}
|
|
229
|
+
minWidth: 40
|
|
233
230
|
}
|
|
234
231
|
})));
|
|
235
232
|
const ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(inProps, ref) {
|
|
@@ -99,7 +99,6 @@ const CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(inP
|
|
|
99
99
|
elementType: CardActionAreaFocusHighlight,
|
|
100
100
|
externalForwardedProps,
|
|
101
101
|
ownerState,
|
|
102
|
-
ref,
|
|
103
102
|
className: classes.focusHighlight
|
|
104
103
|
});
|
|
105
104
|
return /*#__PURE__*/_jsxs(RootSlot, {
|
package/esm/Chip/Chip.js
CHANGED
|
@@ -381,9 +381,7 @@ const Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {
|
|
|
381
381
|
const handleDeleteIconClick = event => {
|
|
382
382
|
// Stop the event from bubbling up to the `Chip`
|
|
383
383
|
event.stopPropagation();
|
|
384
|
-
|
|
385
|
-
onDelete(event);
|
|
386
|
-
}
|
|
384
|
+
onDelete(event);
|
|
387
385
|
};
|
|
388
386
|
const handleKeyDown = event => {
|
|
389
387
|
// Ignore events from children of `Chip`.
|
package/esm/Collapse/Collapse.js
CHANGED
|
@@ -22,11 +22,11 @@ const useUtilityClasses = ownerState => {
|
|
|
22
22
|
classes
|
|
23
23
|
} = ownerState;
|
|
24
24
|
const slots = {
|
|
25
|
-
root: ['root',
|
|
25
|
+
root: ['root', orientation],
|
|
26
26
|
entered: ['entered'],
|
|
27
27
|
hidden: ['hidden'],
|
|
28
|
-
wrapper: ['wrapper',
|
|
29
|
-
wrapperInner: ['wrapperInner',
|
|
28
|
+
wrapper: ['wrapper', orientation],
|
|
29
|
+
wrapperInner: ['wrapperInner', orientation]
|
|
30
30
|
};
|
|
31
31
|
return composeClasses(slots, getCollapseUtilityClass, classes);
|
|
32
32
|
};
|
package/esm/Dialog/Dialog.js
CHANGED
|
@@ -19,8 +19,7 @@ import useSlot from "../utils/useSlot.js";
|
|
|
19
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
20
|
const DialogBackdrop = styled(Backdrop, {
|
|
21
21
|
name: 'MuiDialog',
|
|
22
|
-
slot: 'Backdrop'
|
|
23
|
-
overrides: (props, styles) => styles.backdrop
|
|
22
|
+
slot: 'Backdrop'
|
|
24
23
|
})({
|
|
25
24
|
// Improve scrollable dialog support.
|
|
26
25
|
zIndex: -1
|
|
@@ -35,6 +34,7 @@ const useUtilityClasses = ownerState => {
|
|
|
35
34
|
} = ownerState;
|
|
36
35
|
const slots = {
|
|
37
36
|
root: ['root'],
|
|
37
|
+
backdrop: ['backdrop'],
|
|
38
38
|
container: ['container', `scroll${capitalize(scroll)}`],
|
|
39
39
|
paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']
|
|
40
40
|
};
|
|
@@ -285,7 +285,8 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
285
285
|
elementType: DialogBackdrop,
|
|
286
286
|
shouldForwardComponentProp: true,
|
|
287
287
|
externalForwardedProps,
|
|
288
|
-
ownerState
|
|
288
|
+
ownerState,
|
|
289
|
+
className: classes.backdrop
|
|
289
290
|
});
|
|
290
291
|
const [PaperSlot, paperSlotProps] = useSlot('paper', {
|
|
291
292
|
elementType: DialogPaper,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export interface DialogClasses {
|
|
2
2
|
/** Styles applied to the root element. */
|
|
3
3
|
root: string;
|
|
4
|
+
/** Styles applied to the backdrop element. */
|
|
5
|
+
backdrop: string;
|
|
4
6
|
/** Styles applied to the container element if `scroll="paper"`. */
|
|
5
7
|
scrollPaper: string;
|
|
6
8
|
/** Styles applied to the container element if `scroll="body"`. */
|
|
@@ -3,5 +3,5 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
|
3
3
|
export function getDialogUtilityClass(slot) {
|
|
4
4
|
return generateUtilityClass('MuiDialog', slot);
|
|
5
5
|
}
|
|
6
|
-
const dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);
|
|
6
|
+
const dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'backdrop', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);
|
|
7
7
|
export default dialogClasses;
|
package/esm/Drawer/Drawer.js
CHANGED
|
@@ -22,7 +22,7 @@ const overridesResolver = (props, styles) => {
|
|
|
22
22
|
const {
|
|
23
23
|
ownerState
|
|
24
24
|
} = props;
|
|
25
|
-
return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];
|
|
25
|
+
return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, ownerState.variant === 'temporary' && styles.modal];
|
|
26
26
|
};
|
|
27
27
|
const useUtilityClasses = ownerState => {
|
|
28
28
|
const {
|
|
@@ -25,7 +25,7 @@ import gridLegacyClasses, { getGridLegacyUtilityClass } from "./gridLegacyClasse
|
|
|
25
25
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
26
26
|
let warnedOnce = false;
|
|
27
27
|
function warnAboutDeprecatedGridLegacy() {
|
|
28
|
-
if (!warnedOnce && process.env.NODE_ENV
|
|
28
|
+
if (!warnedOnce && process.env.NODE_ENV !== 'production') {
|
|
29
29
|
warnedOnce = true;
|
|
30
30
|
console.warn('MUI: The GridLegacy component is deprecated. See https://mui.com/material-ui/migration/upgrade-to-grid-v2/ for migration instructions.\n');
|
|
31
31
|
}
|
|
@@ -17,7 +17,7 @@ export function ariaHidden(element, hide) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
function getPaddingRight(element) {
|
|
20
|
-
return
|
|
20
|
+
return parseFloat(ownerWindow(element).getComputedStyle(element).paddingRight) || 0;
|
|
21
21
|
}
|
|
22
22
|
function isAriaHiddenForbiddenOnElement(element) {
|
|
23
23
|
// The forbidden HTML tags are the ones from ARIA specification that
|
package/esm/Popover/Popover.js
CHANGED
|
@@ -148,7 +148,7 @@ const Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {
|
|
|
148
148
|
const anchorRect = anchorElement.getBoundingClientRect();
|
|
149
149
|
if (process.env.NODE_ENV !== 'production') {
|
|
150
150
|
const box = anchorElement.getBoundingClientRect();
|
|
151
|
-
if (
|
|
151
|
+
if (!globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
152
152
|
console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
153
153
|
}
|
|
154
154
|
}
|
|
@@ -399,7 +399,7 @@ process.env.NODE_ENV !== "production" ? Popover.propTypes /* remove-proptypes */
|
|
|
399
399
|
const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
|
|
400
400
|
if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {
|
|
401
401
|
const box = resolvedAnchorEl.getBoundingClientRect();
|
|
402
|
-
if (process.env.NODE_ENV !== '
|
|
402
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
403
403
|
return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
404
404
|
}
|
|
405
405
|
} else {
|
package/esm/Popper/BasePopper.js
CHANGED
|
@@ -105,7 +105,7 @@ const PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props
|
|
|
105
105
|
if (process.env.NODE_ENV !== 'production') {
|
|
106
106
|
if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {
|
|
107
107
|
const box = resolvedAnchorElement.getBoundingClientRect();
|
|
108
|
-
if (
|
|
108
|
+
if (!globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
109
109
|
console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
110
110
|
}
|
|
111
111
|
}
|
|
@@ -267,7 +267,7 @@ process.env.NODE_ENV !== "production" ? Popper.propTypes /* remove-proptypes */
|
|
|
267
267
|
const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
|
|
268
268
|
if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {
|
|
269
269
|
const box = resolvedAnchorEl.getBoundingClientRect();
|
|
270
|
-
if (process.env.NODE_ENV !== '
|
|
270
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
271
271
|
return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
272
272
|
}
|
|
273
273
|
} else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {
|
|
@@ -177,6 +177,22 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
177
177
|
node: inputRef.current,
|
|
178
178
|
value
|
|
179
179
|
}), [value]);
|
|
180
|
+
const open = displayNode !== null && openState;
|
|
181
|
+
React.useEffect(() => {
|
|
182
|
+
if (!open || !anchorElement || autoWidth) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
const observer = new ResizeObserver(() => {
|
|
189
|
+
setMenuMinWidthState(anchorElement.clientWidth);
|
|
190
|
+
});
|
|
191
|
+
observer.observe(anchorElement);
|
|
192
|
+
return () => {
|
|
193
|
+
observer.disconnect();
|
|
194
|
+
};
|
|
195
|
+
}, [open, anchorElement, autoWidth]);
|
|
180
196
|
|
|
181
197
|
// Resize menu on `defaultOpen` automatic toggle.
|
|
182
198
|
React.useEffect(() => {
|
|
@@ -212,8 +228,8 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
212
228
|
}
|
|
213
229
|
return undefined;
|
|
214
230
|
}, [labelId]);
|
|
215
|
-
const update = (
|
|
216
|
-
if (
|
|
231
|
+
const update = (openParam, event) => {
|
|
232
|
+
if (openParam) {
|
|
217
233
|
if (onOpen) {
|
|
218
234
|
onOpen(event);
|
|
219
235
|
}
|
|
@@ -222,7 +238,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
222
238
|
}
|
|
223
239
|
if (!isOpenControlled) {
|
|
224
240
|
setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
|
|
225
|
-
setOpenState(
|
|
241
|
+
setOpenState(openParam);
|
|
226
242
|
}
|
|
227
243
|
};
|
|
228
244
|
const handleMouseDown = event => {
|
|
@@ -309,7 +325,6 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
309
325
|
onKeyDown?.(event);
|
|
310
326
|
}
|
|
311
327
|
};
|
|
312
|
-
const open = displayNode !== null && openState;
|
|
313
328
|
const handleBlur = event => {
|
|
314
329
|
// if open event.stopImmediatePropagation
|
|
315
330
|
if (!open && onBlur) {
|
package/esm/Slide/Slide.js
CHANGED
|
@@ -263,7 +263,7 @@ process.env.NODE_ENV !== "production" ? Slide.propTypes /* remove-proptypes */ =
|
|
|
263
263
|
const resolvedContainer = resolveContainer(props.container);
|
|
264
264
|
if (resolvedContainer && resolvedContainer.nodeType === 1) {
|
|
265
265
|
const box = resolvedContainer.getBoundingClientRect();
|
|
266
|
-
if (process.env.NODE_ENV !== '
|
|
266
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
267
267
|
return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', "Make sure the element is present in the document or that it's not display none."].join('\n'));
|
|
268
268
|
}
|
|
269
269
|
} else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {
|
package/esm/Tabs/Tabs.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { OverridableComponent, OverrideProps } from "../OverridableComponent/ind
|
|
|
8
8
|
import { TabsClasses } from "./tabsClasses.js";
|
|
9
9
|
import SvgIcon from "../SvgIcon/index.js";
|
|
10
10
|
export interface TabsPropsIndicatorColorOverrides {}
|
|
11
|
+
export interface TabsPropsVariantOverrides {}
|
|
11
12
|
export interface TabsRootSlotPropsOverrides {}
|
|
12
13
|
export interface TabsScrollerSlotPropsOverrides {}
|
|
13
14
|
export interface TabsListSlotPropsOverrides {}
|
|
@@ -87,7 +88,7 @@ export type TabsSlotsAndSlotProps = CreateSlotsAndSlotProps<TabsSlots, {
|
|
|
87
88
|
*/
|
|
88
89
|
indicator: SlotProps<'span', TabsIndicatorSlotPropsOverrides, TabsOwnerState>;
|
|
89
90
|
/**
|
|
90
|
-
* Props forwarded to the
|
|
91
|
+
* Props forwarded to the scrollButtons slot.
|
|
91
92
|
* By default, the available props are based on the [TabScrollButton](https://mui.com/material-ui/api/tab-scroll-button/#props) component.
|
|
92
93
|
*/
|
|
93
94
|
scrollButtons: SlotProps<typeof TabScrollButton, TabsScrollButtonsSlotPropsOverrides, TabsOwnerState>;
|
|
@@ -234,7 +235,7 @@ export interface TabsOwnProps extends TabsSlotsAndSlotProps {
|
|
|
234
235
|
* - `standard` will render the default state.
|
|
235
236
|
* @default 'standard'
|
|
236
237
|
*/
|
|
237
|
-
variant?: 'standard' | 'scrollable' | 'fullWidth'
|
|
238
|
+
variant?: OverridableStringUnion<'standard' | 'scrollable' | 'fullWidth', TabsPropsVariantOverrides>;
|
|
238
239
|
/**
|
|
239
240
|
* If `true`, the scrollbar is visible. It can be useful when displaying
|
|
240
241
|
* a long vertical list of tabs.
|
package/esm/Tabs/Tabs.js
CHANGED
|
@@ -345,7 +345,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
|
|
|
345
345
|
slots,
|
|
346
346
|
slotProps: {
|
|
347
347
|
indicator: TabIndicatorProps,
|
|
348
|
-
|
|
348
|
+
scrollButtons: TabScrollButtonProps,
|
|
349
349
|
...slotProps
|
|
350
350
|
}
|
|
351
351
|
};
|
|
@@ -378,7 +378,7 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {
|
|
|
378
378
|
}
|
|
379
379
|
tabMeta = tab ? tab.getBoundingClientRect() : null;
|
|
380
380
|
if (process.env.NODE_ENV !== 'production') {
|
|
381
|
-
if (
|
|
381
|
+
if (!globalThis.MUI_TEST_ENV && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&
|
|
382
382
|
// if the whole Tabs component is hidden, don't warn
|
|
383
383
|
tabsMeta.clientWidth !== 0) {
|
|
384
384
|
tabsMeta = null;
|
|
@@ -148,12 +148,12 @@ function FocusTrap(props) {
|
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
150
|
const doc = ownerDocument(rootRef.current);
|
|
151
|
-
const activeElement = getActiveElement(doc);
|
|
152
151
|
const loopFocus = nativeEvent => {
|
|
153
152
|
lastKeydown.current = nativeEvent;
|
|
154
153
|
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
|
|
155
154
|
return;
|
|
156
155
|
}
|
|
156
|
+
const activeElement = getActiveElement(doc);
|
|
157
157
|
|
|
158
158
|
// Make sure the next tab starts from the right place.
|
|
159
159
|
// activeElement refers to the origin.
|
package/esm/index.js
CHANGED