@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/Accordion/Accordion.d.ts
CHANGED
|
@@ -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;
|
package/Accordion/Accordion.js
CHANGED
|
@@ -149,7 +149,6 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
149
149
|
disableGutters = false,
|
|
150
150
|
expanded: expandedProp,
|
|
151
151
|
onChange,
|
|
152
|
-
square = false,
|
|
153
152
|
slots = {},
|
|
154
153
|
slotProps = {},
|
|
155
154
|
TransitionComponent: TransitionComponentProp,
|
|
@@ -177,7 +176,6 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
177
176
|
}), [expanded, disabled, disableGutters, handleChange]);
|
|
178
177
|
const ownerState = {
|
|
179
178
|
...props,
|
|
180
|
-
square,
|
|
181
179
|
disabled,
|
|
182
180
|
disableGutters,
|
|
183
181
|
expanded
|
|
@@ -204,10 +202,7 @@ const Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref)
|
|
|
204
202
|
className: (0, _clsx.default)(classes.root, className),
|
|
205
203
|
shouldForwardComponentProp: true,
|
|
206
204
|
ownerState,
|
|
207
|
-
ref
|
|
208
|
-
additionalProps: {
|
|
209
|
-
square
|
|
210
|
-
}
|
|
205
|
+
ref
|
|
211
206
|
});
|
|
212
207
|
const [AccordionHeadingSlot, accordionProps] = (0, _useSlot.default)('heading', {
|
|
213
208
|
elementType: AccordionHeading,
|
|
@@ -287,12 +282,12 @@ process.env.NODE_ENV !== "production" ? Accordion.propTypes /* remove-proptypes
|
|
|
287
282
|
*/
|
|
288
283
|
disabled: _propTypes.default.bool,
|
|
289
284
|
/**
|
|
290
|
-
* If `true`, it removes the margin between two expanded accordion items and the
|
|
285
|
+
* If `true`, it removes the margin between two expanded accordion items and prevents the increased height when expanded.
|
|
291
286
|
* @default false
|
|
292
287
|
*/
|
|
293
288
|
disableGutters: _propTypes.default.bool,
|
|
294
289
|
/**
|
|
295
|
-
* If `true`, expands the accordion, otherwise
|
|
290
|
+
* If `true`, expands the accordion, otherwise collapses it.
|
|
296
291
|
* Setting this prop enables control over the accordion.
|
|
297
292
|
*/
|
|
298
293
|
expanded: _propTypes.default.bool,
|
|
@@ -323,11 +318,6 @@ process.env.NODE_ENV !== "production" ? Accordion.propTypes /* remove-proptypes
|
|
|
323
318
|
root: _propTypes.default.elementType,
|
|
324
319
|
transition: _propTypes.default.elementType
|
|
325
320
|
}),
|
|
326
|
-
/**
|
|
327
|
-
* If `true`, rounded corners are disabled.
|
|
328
|
-
* @default false
|
|
329
|
-
*/
|
|
330
|
-
square: _propTypes.default.bool,
|
|
331
321
|
/**
|
|
332
322
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
333
323
|
*/
|
package/AppBar/AppBar.js
CHANGED
|
@@ -33,7 +33,7 @@ const useUtilityClasses = ownerState => {
|
|
|
33
33
|
|
|
34
34
|
// var2 is the fallback.
|
|
35
35
|
// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'
|
|
36
|
-
const joinVars = (var1, var2) => var1 ? `${var1
|
|
36
|
+
const joinVars = (var1, var2) => var1 ? `${var1.replace(')', '')}, ${var2})` : var2;
|
|
37
37
|
const AppBarRoot = (0, _zeroStyled.styled)(_Paper.default, {
|
|
38
38
|
name: 'MuiAppBar',
|
|
39
39
|
slot: 'Root',
|
|
@@ -108,7 +108,8 @@ const AppBarRoot = (0, _zeroStyled.styled)(_Paper.default, {
|
|
|
108
108
|
color: 'inherit'
|
|
109
109
|
},
|
|
110
110
|
style: {
|
|
111
|
-
'--AppBar-color': 'inherit'
|
|
111
|
+
'--AppBar-color': 'inherit',
|
|
112
|
+
color: 'var(--AppBar-color)'
|
|
112
113
|
}
|
|
113
114
|
}, {
|
|
114
115
|
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.
|
|
@@ -669,7 +669,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
669
669
|
children: renderInput({
|
|
670
670
|
id,
|
|
671
671
|
disabled,
|
|
672
|
-
fullWidth: true,
|
|
672
|
+
fullWidth: props.fullWidth ?? true,
|
|
673
673
|
size: size === 'small' ? 'small' : undefined,
|
|
674
674
|
InputLabelProps: getInputLabelProps(),
|
|
675
675
|
InputProps: {
|
package/Backdrop/Backdrop.js
CHANGED
package/Badge/Badge.js
CHANGED
|
@@ -100,110 +100,6 @@ const BadgeBadge = (0, _zeroStyled.styled)('span', {
|
|
|
100
100
|
minWidth: RADIUS_DOT * 2,
|
|
101
101
|
padding: 0
|
|
102
102
|
}
|
|
103
|
-
}, {
|
|
104
|
-
props: ({
|
|
105
|
-
ownerState
|
|
106
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',
|
|
107
|
-
style: {
|
|
108
|
-
top: 0,
|
|
109
|
-
right: 0,
|
|
110
|
-
transform: 'scale(1) translate(50%, -50%)',
|
|
111
|
-
transformOrigin: '100% 0%',
|
|
112
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
113
|
-
transform: 'scale(0) translate(50%, -50%)'
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}, {
|
|
117
|
-
props: ({
|
|
118
|
-
ownerState
|
|
119
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular',
|
|
120
|
-
style: {
|
|
121
|
-
bottom: 0,
|
|
122
|
-
right: 0,
|
|
123
|
-
transform: 'scale(1) translate(50%, 50%)',
|
|
124
|
-
transformOrigin: '100% 100%',
|
|
125
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
126
|
-
transform: 'scale(0) translate(50%, 50%)'
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}, {
|
|
130
|
-
props: ({
|
|
131
|
-
ownerState
|
|
132
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',
|
|
133
|
-
style: {
|
|
134
|
-
top: 0,
|
|
135
|
-
left: 0,
|
|
136
|
-
transform: 'scale(1) translate(-50%, -50%)',
|
|
137
|
-
transformOrigin: '0% 0%',
|
|
138
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
139
|
-
transform: 'scale(0) translate(-50%, -50%)'
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}, {
|
|
143
|
-
props: ({
|
|
144
|
-
ownerState
|
|
145
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular',
|
|
146
|
-
style: {
|
|
147
|
-
bottom: 0,
|
|
148
|
-
left: 0,
|
|
149
|
-
transform: 'scale(1) translate(-50%, 50%)',
|
|
150
|
-
transformOrigin: '0% 100%',
|
|
151
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
152
|
-
transform: 'scale(0) translate(-50%, 50%)'
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}, {
|
|
156
|
-
props: ({
|
|
157
|
-
ownerState
|
|
158
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',
|
|
159
|
-
style: {
|
|
160
|
-
top: '14%',
|
|
161
|
-
right: '14%',
|
|
162
|
-
transform: 'scale(1) translate(50%, -50%)',
|
|
163
|
-
transformOrigin: '100% 0%',
|
|
164
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
165
|
-
transform: 'scale(0) translate(50%, -50%)'
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}, {
|
|
169
|
-
props: ({
|
|
170
|
-
ownerState
|
|
171
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular',
|
|
172
|
-
style: {
|
|
173
|
-
bottom: '14%',
|
|
174
|
-
right: '14%',
|
|
175
|
-
transform: 'scale(1) translate(50%, 50%)',
|
|
176
|
-
transformOrigin: '100% 100%',
|
|
177
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
178
|
-
transform: 'scale(0) translate(50%, 50%)'
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}, {
|
|
182
|
-
props: ({
|
|
183
|
-
ownerState
|
|
184
|
-
}) => ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',
|
|
185
|
-
style: {
|
|
186
|
-
top: '14%',
|
|
187
|
-
left: '14%',
|
|
188
|
-
transform: 'scale(1) translate(-50%, -50%)',
|
|
189
|
-
transformOrigin: '0% 0%',
|
|
190
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
191
|
-
transform: 'scale(0) translate(-50%, -50%)'
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}, {
|
|
195
|
-
props: ({
|
|
196
|
-
ownerState
|
|
197
|
-
}) => ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular',
|
|
198
|
-
style: {
|
|
199
|
-
bottom: '14%',
|
|
200
|
-
left: '14%',
|
|
201
|
-
transform: 'scale(1) translate(-50%, 50%)',
|
|
202
|
-
transformOrigin: '0% 100%',
|
|
203
|
-
[`&.${_badgeClasses.default.invisible}`]: {
|
|
204
|
-
transform: 'scale(0) translate(-50%, 50%)'
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
103
|
}, {
|
|
208
104
|
props: {
|
|
209
105
|
invisible: true
|
|
@@ -214,6 +110,29 @@ const BadgeBadge = (0, _zeroStyled.styled)('span', {
|
|
|
214
110
|
duration: theme.transitions.duration.leavingScreen
|
|
215
111
|
})
|
|
216
112
|
}
|
|
113
|
+
}, {
|
|
114
|
+
style: ({
|
|
115
|
+
ownerState
|
|
116
|
+
}) => {
|
|
117
|
+
const {
|
|
118
|
+
vertical,
|
|
119
|
+
horizontal
|
|
120
|
+
} = ownerState.anchorOrigin;
|
|
121
|
+
const offset = ownerState.overlap === 'circular' ? '14%' : 0;
|
|
122
|
+
return {
|
|
123
|
+
'--Badge-translateX': horizontal === 'right' ? '50%' : '-50%',
|
|
124
|
+
'--Badge-translateY': vertical === 'top' ? '-50%' : '50%',
|
|
125
|
+
top: vertical === 'top' ? offset : 'initial',
|
|
126
|
+
bottom: vertical === 'bottom' ? offset : 'initial',
|
|
127
|
+
right: horizontal === 'right' ? offset : 'initial',
|
|
128
|
+
left: horizontal === 'left' ? offset : 'initial',
|
|
129
|
+
transform: 'scale(1) translate(var(--Badge-translateX), var(--Badge-translateY))',
|
|
130
|
+
transformOrigin: `${horizontal === 'right' ? '100%' : '0%'} ${vertical === 'top' ? '0%' : '100%'}`,
|
|
131
|
+
[`&.${_badgeClasses.default.invisible}`]: {
|
|
132
|
+
transform: 'scale(0) translate(var(--Badge-translateX), var(--Badge-translateY))'
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
217
136
|
}]
|
|
218
137
|
})));
|
|
219
138
|
function getAnchorOrigin(anchorOrigin) {
|
|
@@ -76,7 +76,13 @@ const ButtonGroupRoot = (0, _zeroStyled.styled)('div', {
|
|
|
76
76
|
variant: 'contained'
|
|
77
77
|
},
|
|
78
78
|
style: {
|
|
79
|
-
boxShadow: (theme.vars || theme).shadows[2]
|
|
79
|
+
boxShadow: (theme.vars || theme).shadows[2],
|
|
80
|
+
[`& .${_buttonGroupClasses.default.grouped}`]: {
|
|
81
|
+
boxShadow: 'none',
|
|
82
|
+
'&:hover': {
|
|
83
|
+
boxShadow: 'none'
|
|
84
|
+
}
|
|
85
|
+
}
|
|
80
86
|
}
|
|
81
87
|
}, {
|
|
82
88
|
props: {
|
|
@@ -227,16 +233,7 @@ const ButtonGroupRoot = (0, _zeroStyled.styled)('div', {
|
|
|
227
233
|
}
|
|
228
234
|
}))],
|
|
229
235
|
[`& .${_buttonGroupClasses.default.grouped}`]: {
|
|
230
|
-
minWidth: 40
|
|
231
|
-
boxShadow: 'none',
|
|
232
|
-
props: {
|
|
233
|
-
variant: 'contained'
|
|
234
|
-
},
|
|
235
|
-
style: {
|
|
236
|
-
'&:hover': {
|
|
237
|
-
boxShadow: 'none'
|
|
238
|
-
}
|
|
239
|
-
}
|
|
236
|
+
minWidth: 40
|
|
240
237
|
}
|
|
241
238
|
})));
|
|
242
239
|
const ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup(inProps, ref) {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
# [Versions](https://mui.com/versions/)
|
|
2
2
|
|
|
3
|
+
## 7.3.8
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v7.3.7..master -->
|
|
6
|
+
|
|
7
|
+
_Feb 12, 2026_
|
|
8
|
+
|
|
9
|
+
A big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
|
|
10
|
+
|
|
11
|
+
### `@mui/material@7.3.8`
|
|
12
|
+
|
|
13
|
+
- [alert] Revert removing default icon mapping fallback (#47629) @ZeeshanTamboli
|
|
14
|
+
- [app-bar] Fix optional chaining in joinVars function (#47739) @sai6855
|
|
15
|
+
- [autocomplete] Fix scroll position resetting on reopen with `disableCloseOnSelect` (#47248) @ZeeshanTamboli
|
|
16
|
+
- [autocomplete] Pass fullWidth prop to input, with default as true (#47663) @silviuaavram
|
|
17
|
+
- [badge] Refactor variant styles generation (#47742) @sai6855
|
|
18
|
+
- [chip] Remove unnecessary `onDelete` check (#47753) @ZeeshanTamboli
|
|
19
|
+
- [switch][checkbox][radio] Remove `aria-disabled` from root span (#46318) @KirankumarAmbati
|
|
20
|
+
- [collapse] Remove unnecessary string concatenation (#47745) @sai6855
|
|
21
|
+
- [drawer] `persistent` and `permanent` variant Drawers should not override the styles via theme using `modal` class (#47581) @ZeeshanTamboli
|
|
22
|
+
- [tabs] Add ability to extend Tabs variant (#47590) @aditya1906
|
|
23
|
+
- [useAutocomplete] Add aria-multiselectable to listbox props when multiple is true (#47632) @silviuaavram
|
|
24
|
+
- [useAutocomplete] Use `React.Key` instead of `any` for `key` prop (#47619) @sonixx02
|
|
25
|
+
|
|
26
|
+
#### Core
|
|
27
|
+
|
|
28
|
+
- Revert "[docs-infra] Add Cookie Banner and Analytics Provider (#47445)" (868d23e) @dav-is
|
|
29
|
+
- Revert "[docs-infra] Update Cookie Consent Dialog styling and content (#47718)" (ae29d03) @dav-is
|
|
30
|
+
- [api-docs-builder] Validate slots prop and Slots interface export consistency (#47623) @Janpot
|
|
31
|
+
- [code-infra] Remove `window.muiDocConfig` (#47737) @Janpot
|
|
32
|
+
- [code-infra] Fix flaky Select test on Webkit (#47728) @Janpot
|
|
33
|
+
- [code-infra] Remove usage of NODE_ENV=test (#47692) @Janpot
|
|
34
|
+
- [code-infra] Prepare eslint rule rename (#47702) @Janpot
|
|
35
|
+
- [code-infra] Next.js 15.5.11 (security update) (#47697) @Janpot
|
|
36
|
+
- [code-infra] Fix Tooltip tests flakyness (#47669) @Janpot
|
|
37
|
+
- [code-infra] Improve instructions for error messages (#47668) @Janpot
|
|
38
|
+
- [code-infra] Add initial agent instructions (#47655) @Janpot
|
|
39
|
+
- [code-infra] Update broken links checker (#47633) @Janpot
|
|
40
|
+
- [code-infra] Improve Tooltip leaveDelay test (#47624) @Janpot
|
|
41
|
+
- [code-infra] Fix internal broken links (#47607) @Janpot
|
|
42
|
+
- [docs-infra] Resolve a few 301s in our docs (#47746) @Janpot
|
|
43
|
+
- [docs-infra] Update Cookie Consent Dialog styling and content (#47718) @dav-is
|
|
44
|
+
- [docs-infra] Add Cookie Banner and Analytics Provider (#47445) @dav-is
|
|
45
|
+
- [docs-infra] Make sure /customers page has a h1 (#47615) @Janpot
|
|
46
|
+
- [docs-infra] Fix privacy link (#47614) @Janpot
|
|
47
|
+
- [docs-infra] Resolve a few 301s (#47579) @Janpot
|
|
48
|
+
- [internal] Remove unused sponsor files (#47741) @oliviertassinari
|
|
49
|
+
- [markdown] Fix some broken hash links (#47609) @Janpot
|
|
50
|
+
- [test] Cleanup Table tests TODOs (#47656) @Ocheretovich
|
|
51
|
+
|
|
52
|
+
### Docs
|
|
53
|
+
|
|
54
|
+
- [website] unclickable banner in the pricing page (#47634) @aemartos
|
|
55
|
+
- [blog] Company Update: What we've been working on (and why) (#47626) @alelthomas
|
|
56
|
+
- [docs] Remove outdated notifications (#47743) @bernardobelchior
|
|
57
|
+
- [docs] Make Demo component product-agnostic (#47635) @Janpot
|
|
58
|
+
- [docs] Copyedit the Number Field doc (#47469) @mapache-salvaje
|
|
59
|
+
- [docs] Fix Roboto font not loading in iframe demos (#47660) @Janpot
|
|
60
|
+
- [docs] Replace Checkbox with Icons in Combobox examples (#47654) @silviuaavram
|
|
61
|
+
- [docs] Fix punctuation in TypeScript guide description (#47617) @nodirbekprogrammer
|
|
62
|
+
|
|
63
|
+
All contributors of this release in alphabetical order: @aditya1906, @aemartos, @alelthomas, @bernardobelchior, @dav-is, @Janpot, @KirankumarAmbati, @mapache-salvaje, @nodirbekprogrammer, @Ocheretovich, @oliviertassinari, @sai6855, @silviuaavram, @sonixx02, @ZeeshanTamboli
|
|
64
|
+
|
|
65
|
+
## 7.3.7
|
|
66
|
+
|
|
67
|
+
<!-- generated comparing v7.3.6..master -->
|
|
68
|
+
|
|
69
|
+
_Jan 8, 2026_
|
|
70
|
+
|
|
71
|
+
A big thanks to the 16 contributors who made this release possible.
|
|
72
|
+
|
|
73
|
+
### `@mui/material@7.3.7`
|
|
74
|
+
|
|
75
|
+
- [accordion] Remove unnecessary handling of `square` prop on Accordion Root (#47457) @ZeeshanTamboli
|
|
76
|
+
- [alert] Remove unnecessary default icon mapping fallback (#47460) @ZeeshanTamboli
|
|
77
|
+
- [appbar] Fix inherit color CSS variable not getting applied (#47518) @ZeeshanTamboli
|
|
78
|
+
- [autocomplete] Fix `ArrowLeft`, `Backspace` & `Delete` behavior for multiple and single-value rendering with proper caret handling (#47411) @jnbain
|
|
79
|
+
- [backdrop] Remove unnecessary passing of `classes` from root slot (#47519) @ZeeshanTamboli
|
|
80
|
+
- [button-group] Fix styles when variant is `contained` (#47499) @ZeeshanTamboli
|
|
81
|
+
- [card-action-area] Remove incorrect root ref being forwarded to focus highlight component (#47523) @ZeeshanTamboli
|
|
82
|
+
- [checkbox] Fix readonly checkboxes (#47503) @mj12albert
|
|
83
|
+
- [click-away-listener] Tighten the parameter type of createHandleSynthetic method (#47525) @ZeeshanTamboli
|
|
84
|
+
- [dialog] Fix backdrop theme style overrides (#47544) @ZeeshanTamboli
|
|
85
|
+
- [focus-trap] Compute `activeElement` inside `loopFocus` on every keydown (#47566) @ZeeshanTamboli
|
|
86
|
+
- [modal] Take non-integer padding-right into consideration when scroll locking (#47420) @Zache
|
|
87
|
+
- [select] Fix dropdown width does not match trigger width on window resize (#47526) @AarishMansur
|
|
88
|
+
- [tabs] Fix passing incorrect slot name props (scrollButton → scrollButtons) (#47215) @rithik56
|
|
89
|
+
|
|
90
|
+
### Docs
|
|
91
|
+
|
|
92
|
+
- [card] Fix key warning (#47524) @ZeeshanTamboli
|
|
93
|
+
- [dialog] Replace TranstionProps with slotProps.transition (#47569) @sai6855
|
|
94
|
+
- [number-field] Use stable Base UI package (#47504) @siriwatknp
|
|
95
|
+
- [snackbar] Replace TransitionComponent with slots.transition (#47570) @sai6855
|
|
96
|
+
- Fix incorrect indentation in migration guide (#47571) @sai6855
|
|
97
|
+
- Enable MUI chat on Material UI demos (#46837) @siriwatknp
|
|
98
|
+
- Add docs and website banner for Dev survey'25 (#47521) @prakhargupta1
|
|
99
|
+
- Update Tailwind CSS v4 + Next.js Pages Router docs (#47546) @atharva3333
|
|
100
|
+
- Add warning callout to Sync plugin doc (#47511) @mapache-salvaje
|
|
101
|
+
- Update typo in TailwindCSS v4 integration with Next.js docs (#47512) @TimKraemer
|
|
102
|
+
- Fix link to contributing guide (#47473) @oliviertassinari
|
|
103
|
+
- Improve description of Accordion props (#47459) @ZeeshanTamboli
|
|
104
|
+
|
|
105
|
+
### Core
|
|
106
|
+
|
|
107
|
+
- [blog] Whats new since MUI X v8 [DX-51] (#47140) @joserodolfofreitas
|
|
108
|
+
- [code-infra] Fix React@next CI job (#47493) @Janpot
|
|
109
|
+
- [code-infra] Move font loading to @mui/docs (#47385) @Janpot
|
|
110
|
+
- [code-infra] Fix CI for React 18 (#47560) @Janpot
|
|
111
|
+
- [code-infra] Prevent legacy browsers tests from updating (#47496) @Janpot
|
|
112
|
+
- [code-infra] Move `@mui/internal-test-utils` to code infra repo (#47422) @Janpot
|
|
113
|
+
- [code-infra] Fix React@next CI job (#47493) @Janpot
|
|
114
|
+
- [examples] Update Next.js versions to v16 in Next.js examples (DX-57) (#47453) @alelthomas
|
|
115
|
+
- [internal] Bump Next.js & React version to avoid security vulnerability (#47427) @oliviertassinari
|
|
116
|
+
- [test] Use plain playwright for e2e (#47410) @mj12albert
|
|
117
|
+
- [test] Fix react-18 tests (#47407) @Janpot
|
|
118
|
+
|
|
119
|
+
All contributors of this release in alphabetical order: @AarishMansur, @alelthomas, @atharva3333, @bricefrisco, @Janpot, @jnbain, @joserodolfofreitas, @mapache-salvaje, @mj12albert, @oliviertassinari, @prakhargupta1, @rithik56, @siriwatknp, @TimKraemer, @Zache, @ZeeshanTamboli
|
|
120
|
+
|
|
3
121
|
## 7.3.6
|
|
4
122
|
|
|
5
123
|
<!-- generated comparing v7.3.5..master -->
|
|
@@ -753,7 +871,7 @@ A big thanks to the 7 contributors who made this release possible.
|
|
|
753
871
|
- Fix `Grid`, `GridLegacy`, `Stack`, `Badge`, `Select`, `Autocomplete` demos CSS variables (#45693) @DiegoAndai
|
|
754
872
|
- Add "Material UI v7 is here" to the notifications (#45694) @DiegoAndai
|
|
755
873
|
- Fix `Breadcrumbs`, `List`, `Divider`, and `Typography` dark mode demos (#45692) @siriwatknp
|
|
756
|
-
- Fix Material
|
|
874
|
+
- Fix Material Icons page in dark mode (#45691) @mnajdova
|
|
757
875
|
|
|
758
876
|
All contributors of this release in alphabetical order: @aarongarciah, @DiegoAndai, @eduter, @Janpot, @micttyoid, @mnajdova, @siriwatknp
|
|
759
877
|
|
|
@@ -106,7 +106,6 @@ const CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(inP
|
|
|
106
106
|
elementType: CardActionAreaFocusHighlight,
|
|
107
107
|
externalForwardedProps,
|
|
108
108
|
ownerState,
|
|
109
|
-
ref,
|
|
110
109
|
className: classes.focusHighlight
|
|
111
110
|
});
|
|
112
111
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(RootSlot, {
|
package/Chip/Chip.js
CHANGED
|
@@ -388,9 +388,7 @@ const Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {
|
|
|
388
388
|
const handleDeleteIconClick = event => {
|
|
389
389
|
// Stop the event from bubbling up to the `Chip`
|
|
390
390
|
event.stopPropagation();
|
|
391
|
-
|
|
392
|
-
onDelete(event);
|
|
393
|
-
}
|
|
391
|
+
onDelete(event);
|
|
394
392
|
};
|
|
395
393
|
const handleKeyDown = event => {
|
|
396
394
|
// Ignore events from children of `Chip`.
|
package/Collapse/Collapse.js
CHANGED
|
@@ -29,11 +29,11 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
classes
|
|
30
30
|
} = ownerState;
|
|
31
31
|
const slots = {
|
|
32
|
-
root: ['root',
|
|
32
|
+
root: ['root', orientation],
|
|
33
33
|
entered: ['entered'],
|
|
34
34
|
hidden: ['hidden'],
|
|
35
|
-
wrapper: ['wrapper',
|
|
36
|
-
wrapperInner: ['wrapperInner',
|
|
35
|
+
wrapper: ['wrapper', orientation],
|
|
36
|
+
wrapperInner: ['wrapperInner', orientation]
|
|
37
37
|
};
|
|
38
38
|
return (0, _composeClasses.default)(slots, _collapseClasses.getCollapseUtilityClass, classes);
|
|
39
39
|
};
|
package/Dialog/Dialog.js
CHANGED
|
@@ -26,8 +26,7 @@ var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
|
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
27
|
const DialogBackdrop = (0, _zeroStyled.styled)(_Backdrop.default, {
|
|
28
28
|
name: 'MuiDialog',
|
|
29
|
-
slot: 'Backdrop'
|
|
30
|
-
overrides: (props, styles) => styles.backdrop
|
|
29
|
+
slot: 'Backdrop'
|
|
31
30
|
})({
|
|
32
31
|
// Improve scrollable dialog support.
|
|
33
32
|
zIndex: -1
|
|
@@ -42,6 +41,7 @@ const useUtilityClasses = ownerState => {
|
|
|
42
41
|
} = ownerState;
|
|
43
42
|
const slots = {
|
|
44
43
|
root: ['root'],
|
|
44
|
+
backdrop: ['backdrop'],
|
|
45
45
|
container: ['container', `scroll${(0, _capitalize.default)(scroll)}`],
|
|
46
46
|
paper: ['paper', `paperScroll${(0, _capitalize.default)(scroll)}`, `paperWidth${(0, _capitalize.default)(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']
|
|
47
47
|
};
|
|
@@ -292,7 +292,8 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {
|
|
|
292
292
|
elementType: DialogBackdrop,
|
|
293
293
|
shouldForwardComponentProp: true,
|
|
294
294
|
externalForwardedProps,
|
|
295
|
-
ownerState
|
|
295
|
+
ownerState,
|
|
296
|
+
className: classes.backdrop
|
|
296
297
|
});
|
|
297
298
|
const [PaperSlot, paperSlotProps] = (0, _useSlot.default)('paper', {
|
|
298
299
|
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"`. */
|
package/Dialog/dialogClasses.js
CHANGED
|
@@ -11,5 +11,5 @@ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateU
|
|
|
11
11
|
function getDialogUtilityClass(slot) {
|
|
12
12
|
return (0, _generateUtilityClass.default)('MuiDialog', slot);
|
|
13
13
|
}
|
|
14
|
-
const dialogClasses = (0, _generateUtilityClasses.default)('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);
|
|
14
|
+
const dialogClasses = (0, _generateUtilityClasses.default)('MuiDialog', ['root', 'backdrop', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);
|
|
15
15
|
var _default = exports.default = dialogClasses;
|
package/Drawer/Drawer.js
CHANGED
|
@@ -31,7 +31,7 @@ const overridesResolver = (props, styles) => {
|
|
|
31
31
|
const {
|
|
32
32
|
ownerState
|
|
33
33
|
} = props;
|
|
34
|
-
return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];
|
|
34
|
+
return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, ownerState.variant === 'temporary' && styles.modal];
|
|
35
35
|
};
|
|
36
36
|
const useUtilityClasses = ownerState => {
|
|
37
37
|
const {
|
package/GridLegacy/GridLegacy.js
CHANGED
|
@@ -38,7 +38,7 @@ var _gridLegacyClasses = _interopRequireWildcard(require("./gridLegacyClasses"))
|
|
|
38
38
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
39
39
|
let warnedOnce = false;
|
|
40
40
|
function warnAboutDeprecatedGridLegacy() {
|
|
41
|
-
if (!warnedOnce && process.env.NODE_ENV
|
|
41
|
+
if (!warnedOnce && process.env.NODE_ENV !== 'production') {
|
|
42
42
|
warnedOnce = true;
|
|
43
43
|
console.warn('MUI: The GridLegacy component is deprecated. See https://mui.com/material-ui/migration/upgrade-to-grid-v2/ for migration instructions.\n');
|
|
44
44
|
}
|
package/Modal/ModalManager.js
CHANGED
|
@@ -25,7 +25,7 @@ function ariaHidden(element, hide) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
function getPaddingRight(element) {
|
|
28
|
-
return
|
|
28
|
+
return parseFloat((0, _ownerWindow.default)(element).getComputedStyle(element).paddingRight) || 0;
|
|
29
29
|
}
|
|
30
30
|
function isAriaHiddenForbiddenOnElement(element) {
|
|
31
31
|
// The forbidden HTML tags are the ones from ARIA specification that
|
package/Popover/Popover.js
CHANGED
|
@@ -157,7 +157,7 @@ const Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {
|
|
|
157
157
|
const anchorRect = anchorElement.getBoundingClientRect();
|
|
158
158
|
if (process.env.NODE_ENV !== 'production') {
|
|
159
159
|
const box = anchorElement.getBoundingClientRect();
|
|
160
|
-
if (
|
|
160
|
+
if (!globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
161
161
|
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'));
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -408,7 +408,7 @@ process.env.NODE_ENV !== "production" ? Popover.propTypes /* remove-proptypes */
|
|
|
408
408
|
const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
|
|
409
409
|
if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {
|
|
410
410
|
const box = resolvedAnchorEl.getBoundingClientRect();
|
|
411
|
-
if (process.env.NODE_ENV !== '
|
|
411
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
412
412
|
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'));
|
|
413
413
|
}
|
|
414
414
|
} else {
|
package/Popper/BasePopper.js
CHANGED
|
@@ -112,7 +112,7 @@ const PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props
|
|
|
112
112
|
if (process.env.NODE_ENV !== 'production') {
|
|
113
113
|
if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {
|
|
114
114
|
const box = resolvedAnchorElement.getBoundingClientRect();
|
|
115
|
-
if (
|
|
115
|
+
if (!globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
116
116
|
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'));
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -274,7 +274,7 @@ process.env.NODE_ENV !== "production" ? Popper.propTypes /* remove-proptypes */
|
|
|
274
274
|
const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
|
|
275
275
|
if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {
|
|
276
276
|
const box = resolvedAnchorEl.getBoundingClientRect();
|
|
277
|
-
if (process.env.NODE_ENV !== '
|
|
277
|
+
if (process.env.NODE_ENV !== 'production' && !globalThis.MUI_TEST_ENV && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
|
|
278
278
|
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'));
|
|
279
279
|
}
|
|
280
280
|
} else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ Our documentation features [a collection of example projects using Material UI]
|
|
|
33
33
|
|
|
34
34
|
## Contributing
|
|
35
35
|
|
|
36
|
-
Read the [contributing guide](
|
|
36
|
+
Read the [contributing guide](../../CONTRIBUTING.md) to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.
|
|
37
37
|
|
|
38
38
|
Contributing to Material UI is about more than just issues and pull requests!
|
|
39
39
|
There are many other ways to [support Material UI](https://mui.com/material-ui/getting-started/faq/#mui-is-awesome-how-can-i-support-the-project) beyond contributing to the code base.
|
|
@@ -49,7 +49,7 @@ Future plans and high-priority features and enhancements can be found in the [ro
|
|
|
49
49
|
## License
|
|
50
50
|
|
|
51
51
|
This project is licensed under the terms of the
|
|
52
|
-
[MIT license](
|
|
52
|
+
[MIT license](../../LICENSE).
|
|
53
53
|
|
|
54
54
|
## Security
|
|
55
55
|
|
package/Select/SelectInput.js
CHANGED
|
@@ -184,6 +184,22 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
184
184
|
node: inputRef.current,
|
|
185
185
|
value
|
|
186
186
|
}), [value]);
|
|
187
|
+
const open = displayNode !== null && openState;
|
|
188
|
+
React.useEffect(() => {
|
|
189
|
+
if (!open || !anchorElement || autoWidth) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
const observer = new ResizeObserver(() => {
|
|
196
|
+
setMenuMinWidthState(anchorElement.clientWidth);
|
|
197
|
+
});
|
|
198
|
+
observer.observe(anchorElement);
|
|
199
|
+
return () => {
|
|
200
|
+
observer.disconnect();
|
|
201
|
+
};
|
|
202
|
+
}, [open, anchorElement, autoWidth]);
|
|
187
203
|
|
|
188
204
|
// Resize menu on `defaultOpen` automatic toggle.
|
|
189
205
|
React.useEffect(() => {
|
|
@@ -219,8 +235,8 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
219
235
|
}
|
|
220
236
|
return undefined;
|
|
221
237
|
}, [labelId]);
|
|
222
|
-
const update = (
|
|
223
|
-
if (
|
|
238
|
+
const update = (openParam, event) => {
|
|
239
|
+
if (openParam) {
|
|
224
240
|
if (onOpen) {
|
|
225
241
|
onOpen(event);
|
|
226
242
|
}
|
|
@@ -229,7 +245,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
229
245
|
}
|
|
230
246
|
if (!isOpenControlled) {
|
|
231
247
|
setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
|
|
232
|
-
setOpenState(
|
|
248
|
+
setOpenState(openParam);
|
|
233
249
|
}
|
|
234
250
|
};
|
|
235
251
|
const handleMouseDown = event => {
|
|
@@ -316,7 +332,6 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
|
|
|
316
332
|
onKeyDown?.(event);
|
|
317
333
|
}
|
|
318
334
|
};
|
|
319
|
-
const open = displayNode !== null && openState;
|
|
320
335
|
const handleBlur = event => {
|
|
321
336
|
// if open event.stopImmediatePropagation
|
|
322
337
|
if (!open && onBlur) {
|