@mui/material 6.1.1 → 6.1.2
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 +1 -5
- package/Button/Button.js +3 -4
- package/CHANGELOG.md +62 -0
- package/ClickAwayListener/ClickAwayListener.js +2 -2
- package/Fade/Fade.js +2 -2
- package/Grow/Grow.js +2 -2
- package/Icon/Icon.js +1 -1
- package/LinearProgress/LinearProgress.js +7 -0
- package/MenuList/MenuList.js +2 -1
- package/Modal/Modal.js +3 -3
- package/Modal/ModalManager.d.ts +1 -1
- package/Modal/ModalManager.js +5 -5
- package/Modal/useModal.js +3 -5
- package/Portal/Portal.js +2 -2
- package/Rating/Rating.d.ts +1 -1
- package/Rating/Rating.js +7 -2
- package/Select/Select.js +2 -2
- package/Slide/Slide.js +2 -2
- package/SwipeableDrawer/SwipeableDrawer.d.ts +1 -1
- package/Tooltip/Tooltip.js +2 -2
- package/Unstable_TrapFocus/FocusTrap.js +3 -3
- package/Zoom/Zoom.js +2 -2
- package/index.js +1 -1
- package/modern/Autocomplete/Autocomplete.js +1 -5
- package/modern/Button/Button.js +3 -4
- package/modern/ClickAwayListener/ClickAwayListener.js +2 -2
- package/modern/Fade/Fade.js +2 -2
- package/modern/Grow/Grow.js +2 -2
- package/modern/Icon/Icon.js +1 -1
- package/modern/LinearProgress/LinearProgress.js +7 -0
- package/modern/MenuList/MenuList.js +2 -1
- package/modern/Modal/Modal.js +3 -3
- package/modern/Modal/ModalManager.js +5 -5
- package/modern/Modal/useModal.js +3 -5
- package/modern/Portal/Portal.js +2 -2
- package/modern/Rating/Rating.js +7 -2
- package/modern/Select/Select.js +2 -2
- package/modern/Slide/Slide.js +2 -2
- package/modern/Tooltip/Tooltip.js +2 -2
- package/modern/Unstable_TrapFocus/FocusTrap.js +3 -3
- package/modern/Zoom/Zoom.js +2 -2
- package/modern/index.js +1 -1
- package/modern/styles/createGetSelector.js +8 -7
- package/modern/styles/createThemeWithVars.js +2 -0
- package/modern/styles/shouldSkipGeneratingVar.js +1 -1
- package/modern/useAutocomplete/useAutocomplete.js +3 -1
- package/modern/version/index.js +2 -2
- package/node/Autocomplete/Autocomplete.js +1 -5
- package/node/Button/Button.js +3 -4
- package/node/ClickAwayListener/ClickAwayListener.js +2 -2
- package/node/Fade/Fade.js +2 -2
- package/node/Grow/Grow.js +2 -2
- package/node/Icon/Icon.js +1 -1
- package/node/LinearProgress/LinearProgress.js +7 -0
- package/node/MenuList/MenuList.js +2 -1
- package/node/Modal/Modal.js +3 -3
- package/node/Modal/ModalManager.js +5 -5
- package/node/Modal/useModal.js +3 -5
- package/node/Portal/Portal.js +1 -1
- package/node/Rating/Rating.js +7 -2
- package/node/Select/Select.js +2 -2
- package/node/Slide/Slide.js +2 -2
- package/node/Tooltip/Tooltip.js +2 -2
- package/node/Unstable_TrapFocus/FocusTrap.js +2 -2
- package/node/Zoom/Zoom.js +2 -2
- package/node/index.js +1 -1
- package/node/styles/createGetSelector.js +8 -7
- package/node/styles/createThemeWithVars.js +2 -0
- package/node/styles/shouldSkipGeneratingVar.js +1 -1
- package/node/useAutocomplete/useAutocomplete.js +3 -1
- package/node/version/index.js +2 -2
- package/package.json +6 -6
- package/styles/ThemeProvider.d.ts +6 -0
- package/styles/ThemeProviderWithVars.d.ts +1 -0
- package/styles/createGetSelector.d.ts +3 -8
- package/styles/createGetSelector.js +8 -7
- package/styles/createTheme.d.ts +1 -1
- package/styles/createThemeNoVars.d.ts +1 -0
- package/styles/createThemeWithVars.d.ts +8 -0
- package/styles/createThemeWithVars.js +2 -0
- package/styles/shouldSkipGeneratingVar.js +1 -1
- package/useAutocomplete/useAutocomplete.js +3 -1
- package/version/index.js +2 -2
|
@@ -710,11 +710,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
710
710
|
ref: setAnchorEl,
|
|
711
711
|
className: classes.inputRoot,
|
|
712
712
|
startAdornment,
|
|
713
|
-
|
|
714
|
-
if (event.target === event.currentTarget) {
|
|
715
|
-
handleInputMouseDown(event);
|
|
716
|
-
}
|
|
717
|
-
},
|
|
713
|
+
onMouseDown: event => handleInputMouseDown(event),
|
|
718
714
|
...((hasClearIcon || hasPopupIcon) && {
|
|
719
715
|
endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {
|
|
720
716
|
className: classes.endAdornment,
|
package/Button/Button.js
CHANGED
|
@@ -147,7 +147,7 @@ const ButtonRoot = styled(ButtonBase, {
|
|
|
147
147
|
color: `var(--variant-textColor)`,
|
|
148
148
|
backgroundColor: `var(--variant-textBg)`
|
|
149
149
|
}
|
|
150
|
-
}, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(
|
|
150
|
+
}, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({
|
|
151
151
|
props: {
|
|
152
152
|
color
|
|
153
153
|
},
|
|
@@ -171,9 +171,8 @@ const ButtonRoot = styled(ButtonBase, {
|
|
|
171
171
|
color: 'inherit'
|
|
172
172
|
},
|
|
173
173
|
style: {
|
|
174
|
-
'
|
|
175
|
-
|
|
176
|
-
theme.vars.palette.text.primary : theme.palette.getContrastText?.(inheritContainedBackgroundColor),
|
|
174
|
+
color: 'inherit',
|
|
175
|
+
borderColor: 'currentColor',
|
|
177
176
|
'--variant-containedBg': theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,
|
|
178
177
|
'@media (hover: hover)': {
|
|
179
178
|
'&:hover': {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# [Versions](https://mui.com/versions/)
|
|
2
2
|
|
|
3
|
+
## v6.1.2
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v6.1.1..master -->
|
|
6
|
+
|
|
7
|
+
_Oct 2, 2024_
|
|
8
|
+
|
|
9
|
+
A big thanks to the 13 contributors who made this release possible.
|
|
10
|
+
|
|
11
|
+
### `@mui/material@6.1.2`
|
|
12
|
+
|
|
13
|
+
- [Modal] Remove unnecessary `manager` prop handling (#43867) @ZeeshanTamboli
|
|
14
|
+
- [Autocomplete] Fix listbox opens and closes on click when used with `limitTags` (#42494) @appleSimple
|
|
15
|
+
- [Button] Ignore `dark` and `contrastText` if not provided in the theme (#43861) @siriwatknp
|
|
16
|
+
- [Button] Fix regression for color `inherit` (#43862) @siriwatknp
|
|
17
|
+
- [LinearProgress] Fix background color (#43949) @sai6855
|
|
18
|
+
- Support CSS variables with shadow DOM (#43948) @siriwatknp
|
|
19
|
+
- Improve getReactElementRef() utils (#43022) @sai6855
|
|
20
|
+
- [Modal] Replace `show` parameter name with `hide` in modal manager (#43868) @ZeeshanTamboli
|
|
21
|
+
- [Rating] Use Rating `name` as prefix of input element ids (#43829) @yash49
|
|
22
|
+
- [Drawer] Refactor getScrollbarSize usages (#43828) @BrianWoolfolk
|
|
23
|
+
- [Drawer] Fix issue with main window being used instead of iframe's window (#43818) @albarv340
|
|
24
|
+
- [ThemeProvider] Support setting default mode (#43951) @siriwatknp
|
|
25
|
+
|
|
26
|
+
### Docs
|
|
27
|
+
|
|
28
|
+
- Update theme toggle demo (#43956) @Janpot
|
|
29
|
+
- Add note about minimum required webpack version (#43864) @Janpot
|
|
30
|
+
- Format Pigment CSS docs (#43812) @oliviertassinari
|
|
31
|
+
- Fix visual bug on dashboard template (#43836) @oliviertassinari
|
|
32
|
+
- Fix pigment-css.md syntax error (#43837) @kdichev
|
|
33
|
+
- Fix Sign-in template form experience (#43838) @oliviertassinari
|
|
34
|
+
- Remove "To be continued" section from v0 –> v1 migration guide (#43832) @samuelsycamore
|
|
35
|
+
- Fix 301 to chromium (#43809) @oliviertassinari
|
|
36
|
+
- [joy-ui] Add missing ComponentLinkHeader components (#43865) @samuelsycamore
|
|
37
|
+
- [Modal] Remove unnecessary type assertion (#43825) @ZeeshanTamboli
|
|
38
|
+
- [Table] Stabilize random series in virtualized table demo (#43744) @Janpot
|
|
39
|
+
- [system] Add migration guide link to `@mui/styles` pages (#43833) @samuelsycamore
|
|
40
|
+
|
|
41
|
+
### Core
|
|
42
|
+
|
|
43
|
+
- [code-infra] Fix flaky dashboard screenshot - take 2 (#43937) @Janpot
|
|
44
|
+
- [code-infra] Replace all instances of `e` with `event` and add eslint rule (#43866) @samuelsycamore
|
|
45
|
+
- [code-infra] Fix and update bundling fixtures (#43709) @Janpot
|
|
46
|
+
- [code-infra] Update transitive dependencies with vulnerabilties (#43895) @Janpot
|
|
47
|
+
- [code-infra] Optimize regression tests (#43889) @Janpot
|
|
48
|
+
- [code-infra] Remove custom playwright installation steps (#43881) @Janpot
|
|
49
|
+
- [code-infra] Fix flaky dashboard screenshot (#43890) @Janpot
|
|
50
|
+
- [code-infra] Add new instanceof proptypes for toolpad (#43814) @Janpot
|
|
51
|
+
- Fix eslint-plugin-react-compiler issues in usePagination tests (#43946) @wilhelmlofsten
|
|
52
|
+
- Uniformity in version range @oliviertassinari
|
|
53
|
+
- Replace `toBeAriaHidden` matcher with `toBeInaccessible` in tests (#43870) @ZeeshanTamboli
|
|
54
|
+
- [docs-infra] Strengthen CSP (#43711) @oliviertassinari
|
|
55
|
+
- [docs-infra] Open Codesandbox demo with fontsize=12 (#43860) @siriwatknp
|
|
56
|
+
- [icons] Reduce Material Icon page size (#43911) @oliviertassinari
|
|
57
|
+
- [test] Point Istanbul to correct URL (#43935) @sai6855
|
|
58
|
+
- [test] Sync React.version parse logic with codebase (#43820) @oliviertassinari
|
|
59
|
+
- [website] Add 'Row spanning' (#43831) @oliviertassinari
|
|
60
|
+
- [website] Improve Next roles section (#43822) @oliviertassinari
|
|
61
|
+
- [website] Open the xCharts, eXplore and X general react engineer roles (#43805) @DanailH
|
|
62
|
+
|
|
63
|
+
All contributors of this release in alphabetical order: @albarv340, @appleSimple, @BrianWoolfolk, @DanailH, @Janpot, @kdichev, @oliviertassinari, @sai6855, @samuelsycamore, @siriwatknp, @wilhelmlofsten, @yash49, @ZeeshanTamboli
|
|
64
|
+
|
|
3
65
|
## v6.1.1
|
|
4
66
|
|
|
5
67
|
<!-- generated comparing v6.1.0..master -->
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
6
|
-
import
|
|
6
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
7
7
|
|
|
8
8
|
// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -48,7 +48,7 @@ function ClickAwayListener(props) {
|
|
|
48
48
|
activatedRef.current = false;
|
|
49
49
|
};
|
|
50
50
|
}, []);
|
|
51
|
-
const handleRef = useForkRef(
|
|
51
|
+
const handleRef = useForkRef(getReactElementRef(children), nodeRef);
|
|
52
52
|
|
|
53
53
|
// The handler doesn't take event.defaultPrevented into account:
|
|
54
54
|
//
|
package/Fade/Fade.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { Transition } from 'react-transition-group';
|
|
6
6
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import { useTheme } from "../zero-styled/index.js";
|
|
9
9
|
import { reflow, getTransitionProps } from "../transitions/utils.js";
|
|
10
10
|
import useForkRef from "../utils/useForkRef.js";
|
|
@@ -48,7 +48,7 @@ const Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {
|
|
|
48
48
|
} = props;
|
|
49
49
|
const enableStrictModeCompat = true;
|
|
50
50
|
const nodeRef = React.useRef(null);
|
|
51
|
-
const handleRef = useForkRef(nodeRef,
|
|
51
|
+
const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
|
|
52
52
|
const normalizedTransitionCallback = callback => maybeIsAppearing => {
|
|
53
53
|
if (callback) {
|
|
54
54
|
const node = nodeRef.current;
|
package/Grow/Grow.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import useTimeout from '@mui/utils/useTimeout';
|
|
6
6
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import { Transition } from 'react-transition-group';
|
|
9
9
|
import { useTheme } from "../zero-styled/index.js";
|
|
10
10
|
import { getTransitionProps, reflow } from "../transitions/utils.js";
|
|
@@ -58,7 +58,7 @@ const Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {
|
|
|
58
58
|
const autoTimeout = React.useRef();
|
|
59
59
|
const theme = useTheme();
|
|
60
60
|
const nodeRef = React.useRef(null);
|
|
61
|
-
const handleRef = useForkRef(nodeRef,
|
|
61
|
+
const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
|
|
62
62
|
const normalizedTransitionCallback = callback => maybeIsAppearing => {
|
|
63
63
|
if (callback) {
|
|
64
64
|
const node = nodeRef.current;
|
package/Icon/Icon.js
CHANGED
|
@@ -37,7 +37,7 @@ const IconRoot = styled('span', {
|
|
|
37
37
|
userSelect: 'none',
|
|
38
38
|
width: '1em',
|
|
39
39
|
height: '1em',
|
|
40
|
-
// Chrome fix for https://
|
|
40
|
+
// Chrome fix for https://issues.chromium.org/issues/41375697
|
|
41
41
|
// To remove at some point.
|
|
42
42
|
overflow: 'hidden',
|
|
43
43
|
display: 'inline-block',
|
|
@@ -293,6 +293,13 @@ const LinearProgressBar2 = styled('span', {
|
|
|
293
293
|
style: {
|
|
294
294
|
backgroundColor: 'var(--LinearProgressBar2-barColor, currentColor)'
|
|
295
295
|
}
|
|
296
|
+
}, {
|
|
297
|
+
props: ({
|
|
298
|
+
ownerState
|
|
299
|
+
}) => ownerState.variant !== 'buffer' && ownerState.color === 'inherit',
|
|
300
|
+
style: {
|
|
301
|
+
backgroundColor: 'currentColor'
|
|
302
|
+
}
|
|
296
303
|
}, {
|
|
297
304
|
props: {
|
|
298
305
|
color: 'inherit'
|
package/MenuList/MenuList.js
CHANGED
|
@@ -8,6 +8,7 @@ import List from "../List/index.js";
|
|
|
8
8
|
import getScrollbarSize from "../utils/getScrollbarSize.js";
|
|
9
9
|
import useForkRef from "../utils/useForkRef.js";
|
|
10
10
|
import useEnhancedEffect from "../utils/useEnhancedEffect.js";
|
|
11
|
+
import { ownerWindow } from "../utils/index.js";
|
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
13
|
function nextItem(list, item, disableListWrap) {
|
|
13
14
|
if (list === item) {
|
|
@@ -111,7 +112,7 @@ const MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {
|
|
|
111
112
|
// of the menu.
|
|
112
113
|
const noExplicitWidth = !listRef.current.style.width;
|
|
113
114
|
if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
|
|
114
|
-
const scrollbarSize = `${getScrollbarSize(
|
|
115
|
+
const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;
|
|
115
116
|
listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;
|
|
116
117
|
listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
|
|
117
118
|
}
|
package/Modal/Modal.js
CHANGED
|
@@ -187,12 +187,12 @@ const Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {
|
|
|
187
187
|
getSlotProps: otherHandlers => {
|
|
188
188
|
return getBackdropProps({
|
|
189
189
|
...otherHandlers,
|
|
190
|
-
onClick:
|
|
190
|
+
onClick: event => {
|
|
191
191
|
if (onBackdropClick) {
|
|
192
|
-
onBackdropClick(
|
|
192
|
+
onBackdropClick(event);
|
|
193
193
|
}
|
|
194
194
|
if (otherHandlers?.onClick) {
|
|
195
|
-
otherHandlers.onClick(
|
|
195
|
+
otherHandlers.onClick(event);
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
});
|
package/Modal/ModalManager.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface ManagedModalProps {
|
|
2
2
|
disableScrollLock?: boolean;
|
|
3
3
|
}
|
|
4
|
-
export declare function ariaHidden(element: Element,
|
|
4
|
+
export declare function ariaHidden(element: Element, hide: boolean): void;
|
|
5
5
|
interface Modal {
|
|
6
6
|
mount: Element;
|
|
7
7
|
modalRef: Element;
|
package/Modal/ModalManager.js
CHANGED
|
@@ -7,8 +7,8 @@ function isOverflowing(container) {
|
|
|
7
7
|
}
|
|
8
8
|
return container.scrollHeight > container.clientHeight;
|
|
9
9
|
}
|
|
10
|
-
export function ariaHidden(element,
|
|
11
|
-
if (
|
|
10
|
+
export function ariaHidden(element, hide) {
|
|
11
|
+
if (hide) {
|
|
12
12
|
element.setAttribute('aria-hidden', 'true');
|
|
13
13
|
} else {
|
|
14
14
|
element.removeAttribute('aria-hidden');
|
|
@@ -26,13 +26,13 @@ function isAriaHiddenForbiddenOnElement(element) {
|
|
|
26
26
|
const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';
|
|
27
27
|
return isForbiddenTagName || isInputHidden;
|
|
28
28
|
}
|
|
29
|
-
function ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude,
|
|
29
|
+
function ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, hide) {
|
|
30
30
|
const blacklist = [mountElement, currentElement, ...elementsToExclude];
|
|
31
31
|
[].forEach.call(container.children, element => {
|
|
32
32
|
const isNotExcludedElement = !blacklist.includes(element);
|
|
33
33
|
const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);
|
|
34
34
|
if (isNotExcludedElement && isNotForbiddenElement) {
|
|
35
|
-
ariaHidden(element,
|
|
35
|
+
ariaHidden(element, hide);
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
@@ -53,7 +53,7 @@ function handleContainer(containerInfo, props) {
|
|
|
53
53
|
if (!props.disableScrollLock) {
|
|
54
54
|
if (isOverflowing(container)) {
|
|
55
55
|
// Compute the size before applying overflow hidden to avoid any scroll jumps.
|
|
56
|
-
const scrollbarSize = getScrollbarSize(
|
|
56
|
+
const scrollbarSize = getScrollbarSize(ownerWindow(container));
|
|
57
57
|
restoreStyle.push({
|
|
58
58
|
value: container.style.paddingRight,
|
|
59
59
|
property: 'padding-right',
|
package/Modal/useModal.js
CHANGED
|
@@ -13,7 +13,7 @@ function getHasTransition(children) {
|
|
|
13
13
|
|
|
14
14
|
// A modal manager used to track and manage the state of open Modals.
|
|
15
15
|
// Modals don't open on the server so this won't conflict with concurrent requests.
|
|
16
|
-
const
|
|
16
|
+
const manager = new ModalManager();
|
|
17
17
|
/**
|
|
18
18
|
*
|
|
19
19
|
* Demos:
|
|
@@ -29,8 +29,6 @@ function useModal(parameters) {
|
|
|
29
29
|
container,
|
|
30
30
|
disableEscapeKeyDown = false,
|
|
31
31
|
disableScrollLock = false,
|
|
32
|
-
// @ts-ignore internal logic - Base UI supports the manager as a prop too
|
|
33
|
-
manager = defaultManager,
|
|
34
32
|
closeAfterTransition = false,
|
|
35
33
|
onTransitionEnter,
|
|
36
34
|
onTransitionExited,
|
|
@@ -76,7 +74,7 @@ function useModal(parameters) {
|
|
|
76
74
|
handleMounted();
|
|
77
75
|
}
|
|
78
76
|
});
|
|
79
|
-
const isTopModal =
|
|
77
|
+
const isTopModal = () => manager.isTopModal(getModal());
|
|
80
78
|
const handlePortalRef = useEventCallback(node => {
|
|
81
79
|
mountNodeRef.current = node;
|
|
82
80
|
if (!node) {
|
|
@@ -90,7 +88,7 @@ function useModal(parameters) {
|
|
|
90
88
|
});
|
|
91
89
|
const handleClose = React.useCallback(() => {
|
|
92
90
|
manager.remove(getModal(), ariaHiddenProp);
|
|
93
|
-
}, [ariaHiddenProp
|
|
91
|
+
}, [ariaHiddenProp]);
|
|
94
92
|
React.useEffect(() => {
|
|
95
93
|
return () => {
|
|
96
94
|
handleClose();
|
package/Portal/Portal.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import * as ReactDOM from 'react-dom';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef,
|
|
6
|
+
import { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
function getContainer(container) {
|
|
9
9
|
return typeof container === 'function' ? container() : container;
|
|
@@ -28,7 +28,7 @@ const Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef
|
|
|
28
28
|
disablePortal = false
|
|
29
29
|
} = props;
|
|
30
30
|
const [mountNode, setMountNode] = React.useState(null);
|
|
31
|
-
const handleRef = useForkRef(
|
|
31
|
+
const handleRef = useForkRef(/*#__PURE__*/React.isValidElement(children) ? getReactElementRef(children) : null, forwardedRef);
|
|
32
32
|
useEnhancedEffect(() => {
|
|
33
33
|
if (!disablePortal) {
|
|
34
34
|
setMountNode(getContainer(container) || document.body);
|
package/Rating/Rating.d.ts
CHANGED
|
@@ -74,7 +74,7 @@ export interface RatingProps
|
|
|
74
74
|
/**
|
|
75
75
|
* The name attribute of the radio `input` elements.
|
|
76
76
|
* This input `name` should be unique within the page.
|
|
77
|
-
* Being unique within a form is insufficient since the `name` is used to
|
|
77
|
+
* Being unique within a form is insufficient since the `name` is used to generate IDs.
|
|
78
78
|
*/
|
|
79
79
|
name?: string;
|
|
80
80
|
/**
|
package/Rating/Rating.js
CHANGED
|
@@ -226,7 +226,12 @@ function RatingItem(props) {
|
|
|
226
226
|
const isHovered = itemValue <= hover;
|
|
227
227
|
const isFocused = itemValue <= focus;
|
|
228
228
|
const isChecked = itemValue === ratingValueRounded;
|
|
229
|
-
|
|
229
|
+
|
|
230
|
+
// "name" ensures unique IDs across different Rating components in React 17,
|
|
231
|
+
// preventing one component from affecting another. React 18's useId already handles this.
|
|
232
|
+
// Update to const id = useId(); when React 17 support is dropped.
|
|
233
|
+
// More details: https://github.com/mui/material-ui/issues/40997
|
|
234
|
+
const id = `${name}-${useId()}`;
|
|
230
235
|
const container = /*#__PURE__*/_jsx(RatingIcon, {
|
|
231
236
|
as: IconContainerComponent,
|
|
232
237
|
value: itemValue,
|
|
@@ -619,7 +624,7 @@ process.env.NODE_ENV !== "production" ? Rating.propTypes /* remove-proptypes */
|
|
|
619
624
|
/**
|
|
620
625
|
* The name attribute of the radio `input` elements.
|
|
621
626
|
* This input `name` should be unique within the page.
|
|
622
|
-
* Being unique within a form is insufficient since the `name` is used to
|
|
627
|
+
* Being unique within a form is insufficient since the `name` is used to generate IDs.
|
|
623
628
|
*/
|
|
624
629
|
name: PropTypes.string,
|
|
625
630
|
/**
|
package/Select/Select.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import deepmerge from '@mui/utils/deepmerge';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import SelectInput from "./SelectInput.js";
|
|
9
9
|
import formControlState from "../FormControl/formControlState.js";
|
|
10
10
|
import useFormControl from "../FormControl/useFormControl.js";
|
|
@@ -92,7 +92,7 @@ const Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {
|
|
|
92
92
|
ownerState: ownerState
|
|
93
93
|
})
|
|
94
94
|
}[variant];
|
|
95
|
-
const inputComponentRef = useForkRef(ref,
|
|
95
|
+
const inputComponentRef = useForkRef(ref, getReactElementRef(InputComponent));
|
|
96
96
|
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
97
97
|
children: /*#__PURE__*/React.cloneElement(InputComponent, {
|
|
98
98
|
// Most of the logic is implemented in `SelectInput`.
|
package/Slide/Slide.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Transition } from 'react-transition-group';
|
|
|
6
6
|
import chainPropTypes from '@mui/utils/chainPropTypes';
|
|
7
7
|
import HTMLElementType from '@mui/utils/HTMLElementType';
|
|
8
8
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
9
|
-
import
|
|
9
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
10
10
|
import debounce from "../utils/debounce.js";
|
|
11
11
|
import useForkRef from "../utils/useForkRef.js";
|
|
12
12
|
import { useTheme } from "../zero-styled/index.js";
|
|
@@ -106,7 +106,7 @@ const Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {
|
|
|
106
106
|
...other
|
|
107
107
|
} = props;
|
|
108
108
|
const childrenRef = React.useRef(null);
|
|
109
|
-
const handleRef = useForkRef(
|
|
109
|
+
const handleRef = useForkRef(getReactElementRef(children), childrenRef, ref);
|
|
110
110
|
const normalizedTransitionCallback = callback => isAppearing => {
|
|
111
111
|
if (callback) {
|
|
112
112
|
// onEnterXxx and onExitXxx callbacks have a different arguments.length value.
|
|
@@ -16,7 +16,7 @@ export interface SwipeableDrawerProps extends Omit<DrawerProps, 'onClose' | 'ope
|
|
|
16
16
|
*/
|
|
17
17
|
allowSwipeInChildren?:
|
|
18
18
|
| boolean
|
|
19
|
-
| ((
|
|
19
|
+
| ((event: TouchEvent, swipeArea: HTMLDivElement, paper: HTMLDivElement) => boolean);
|
|
20
20
|
/**
|
|
21
21
|
* Disable the backdrop transition.
|
|
22
22
|
* This can improve the FPS on low-end devices.
|
package/Tooltip/Tooltip.js
CHANGED
|
@@ -10,7 +10,7 @@ import { alpha } from '@mui/system/colorManipulator';
|
|
|
10
10
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
11
11
|
import isFocusVisible from '@mui/utils/isFocusVisible';
|
|
12
12
|
import appendOwnerState from '@mui/utils/appendOwnerState';
|
|
13
|
-
import
|
|
13
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
14
14
|
import { styled, useTheme } from "../zero-styled/index.js";
|
|
15
15
|
import memoTheme from "../utils/memoTheme.js";
|
|
16
16
|
import { useDefaultProps } from "../DefaultPropsProvider/index.js";
|
|
@@ -514,7 +514,7 @@ const Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {
|
|
|
514
514
|
document.removeEventListener('keydown', handleKeyDown);
|
|
515
515
|
};
|
|
516
516
|
}, [handleClose, open]);
|
|
517
|
-
const handleRef = useForkRef(
|
|
517
|
+
const handleRef = useForkRef(getReactElementRef(children), setChildNode, ref);
|
|
518
518
|
|
|
519
519
|
// There is no point in displaying an empty tooltip.
|
|
520
520
|
// So we exclude all falsy values, except 0, which is valid.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument,
|
|
6
|
+
import { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';
|
|
7
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
8
|
// Inspired by https://github.com/focus-trap/tabbable
|
|
9
9
|
const candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])'].join(',');
|
|
@@ -14,7 +14,7 @@ function getTabIndex(node) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// Browsers do not return `tabIndex` correctly for contentEditable nodes;
|
|
17
|
-
// https://
|
|
17
|
+
// https://issues.chromium.org/issues/41283952
|
|
18
18
|
// so if they don't have a tabindex attribute specifically set, assume it's 0.
|
|
19
19
|
// in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
|
|
20
20
|
// `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
|
|
@@ -92,7 +92,7 @@ function FocusTrap(props) {
|
|
|
92
92
|
// It waits for the active element to move into the component to activate.
|
|
93
93
|
const activated = React.useRef(false);
|
|
94
94
|
const rootRef = React.useRef(null);
|
|
95
|
-
const handleRef = useForkRef(
|
|
95
|
+
const handleRef = useForkRef(getReactElementRef(children), rootRef);
|
|
96
96
|
const lastKeydown = React.useRef(null);
|
|
97
97
|
React.useEffect(() => {
|
|
98
98
|
// We might render an empty child.
|
package/Zoom/Zoom.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { Transition } from 'react-transition-group';
|
|
6
6
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import { useTheme } from "../zero-styled/index.js";
|
|
9
9
|
import { reflow, getTransitionProps } from "../transitions/utils.js";
|
|
10
10
|
import useForkRef from "../utils/useForkRef.js";
|
|
@@ -48,7 +48,7 @@ const Zoom = /*#__PURE__*/React.forwardRef(function Zoom(props, ref) {
|
|
|
48
48
|
...other
|
|
49
49
|
} = props;
|
|
50
50
|
const nodeRef = React.useRef(null);
|
|
51
|
-
const handleRef = useForkRef(nodeRef,
|
|
51
|
+
const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
|
|
52
52
|
const normalizedTransitionCallback = callback => maybeIsAppearing => {
|
|
53
53
|
if (callback) {
|
|
54
54
|
const node = nodeRef.current;
|
package/index.js
CHANGED
|
@@ -710,11 +710,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
710
710
|
ref: setAnchorEl,
|
|
711
711
|
className: classes.inputRoot,
|
|
712
712
|
startAdornment,
|
|
713
|
-
|
|
714
|
-
if (event.target === event.currentTarget) {
|
|
715
|
-
handleInputMouseDown(event);
|
|
716
|
-
}
|
|
717
|
-
},
|
|
713
|
+
onMouseDown: event => handleInputMouseDown(event),
|
|
718
714
|
...((hasClearIcon || hasPopupIcon) && {
|
|
719
715
|
endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {
|
|
720
716
|
className: classes.endAdornment,
|
package/modern/Button/Button.js
CHANGED
|
@@ -147,7 +147,7 @@ const ButtonRoot = styled(ButtonBase, {
|
|
|
147
147
|
color: `var(--variant-textColor)`,
|
|
148
148
|
backgroundColor: `var(--variant-textBg)`
|
|
149
149
|
}
|
|
150
|
-
}, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter(
|
|
150
|
+
}, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({
|
|
151
151
|
props: {
|
|
152
152
|
color
|
|
153
153
|
},
|
|
@@ -171,9 +171,8 @@ const ButtonRoot = styled(ButtonBase, {
|
|
|
171
171
|
color: 'inherit'
|
|
172
172
|
},
|
|
173
173
|
style: {
|
|
174
|
-
'
|
|
175
|
-
|
|
176
|
-
theme.vars.palette.text.primary : theme.palette.getContrastText?.(inheritContainedBackgroundColor),
|
|
174
|
+
color: 'inherit',
|
|
175
|
+
borderColor: 'currentColor',
|
|
177
176
|
'--variant-containedBg': theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,
|
|
178
177
|
'@media (hover: hover)': {
|
|
179
178
|
'&:hover': {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
6
|
-
import
|
|
6
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
7
7
|
|
|
8
8
|
// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -48,7 +48,7 @@ function ClickAwayListener(props) {
|
|
|
48
48
|
activatedRef.current = false;
|
|
49
49
|
};
|
|
50
50
|
}, []);
|
|
51
|
-
const handleRef = useForkRef(
|
|
51
|
+
const handleRef = useForkRef(getReactElementRef(children), nodeRef);
|
|
52
52
|
|
|
53
53
|
// The handler doesn't take event.defaultPrevented into account:
|
|
54
54
|
//
|
package/modern/Fade/Fade.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { Transition } from 'react-transition-group';
|
|
6
6
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import { useTheme } from "../zero-styled/index.js";
|
|
9
9
|
import { reflow, getTransitionProps } from "../transitions/utils.js";
|
|
10
10
|
import useForkRef from "../utils/useForkRef.js";
|
|
@@ -48,7 +48,7 @@ const Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {
|
|
|
48
48
|
} = props;
|
|
49
49
|
const enableStrictModeCompat = true;
|
|
50
50
|
const nodeRef = React.useRef(null);
|
|
51
|
-
const handleRef = useForkRef(nodeRef,
|
|
51
|
+
const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
|
|
52
52
|
const normalizedTransitionCallback = callback => maybeIsAppearing => {
|
|
53
53
|
if (callback) {
|
|
54
54
|
const node = nodeRef.current;
|
package/modern/Grow/Grow.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import useTimeout from '@mui/utils/useTimeout';
|
|
6
6
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
7
|
-
import
|
|
7
|
+
import getReactElementRef from '@mui/utils/getReactElementRef';
|
|
8
8
|
import { Transition } from 'react-transition-group';
|
|
9
9
|
import { useTheme } from "../zero-styled/index.js";
|
|
10
10
|
import { getTransitionProps, reflow } from "../transitions/utils.js";
|
|
@@ -58,7 +58,7 @@ const Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {
|
|
|
58
58
|
const autoTimeout = React.useRef();
|
|
59
59
|
const theme = useTheme();
|
|
60
60
|
const nodeRef = React.useRef(null);
|
|
61
|
-
const handleRef = useForkRef(nodeRef,
|
|
61
|
+
const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);
|
|
62
62
|
const normalizedTransitionCallback = callback => maybeIsAppearing => {
|
|
63
63
|
if (callback) {
|
|
64
64
|
const node = nodeRef.current;
|
package/modern/Icon/Icon.js
CHANGED
|
@@ -37,7 +37,7 @@ const IconRoot = styled('span', {
|
|
|
37
37
|
userSelect: 'none',
|
|
38
38
|
width: '1em',
|
|
39
39
|
height: '1em',
|
|
40
|
-
// Chrome fix for https://
|
|
40
|
+
// Chrome fix for https://issues.chromium.org/issues/41375697
|
|
41
41
|
// To remove at some point.
|
|
42
42
|
overflow: 'hidden',
|
|
43
43
|
display: 'inline-block',
|
|
@@ -293,6 +293,13 @@ const LinearProgressBar2 = styled('span', {
|
|
|
293
293
|
style: {
|
|
294
294
|
backgroundColor: 'var(--LinearProgressBar2-barColor, currentColor)'
|
|
295
295
|
}
|
|
296
|
+
}, {
|
|
297
|
+
props: ({
|
|
298
|
+
ownerState
|
|
299
|
+
}) => ownerState.variant !== 'buffer' && ownerState.color === 'inherit',
|
|
300
|
+
style: {
|
|
301
|
+
backgroundColor: 'currentColor'
|
|
302
|
+
}
|
|
296
303
|
}, {
|
|
297
304
|
props: {
|
|
298
305
|
color: 'inherit'
|
|
@@ -8,6 +8,7 @@ import List from "../List/index.js";
|
|
|
8
8
|
import getScrollbarSize from "../utils/getScrollbarSize.js";
|
|
9
9
|
import useForkRef from "../utils/useForkRef.js";
|
|
10
10
|
import useEnhancedEffect from "../utils/useEnhancedEffect.js";
|
|
11
|
+
import { ownerWindow } from "../utils/index.js";
|
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
13
|
function nextItem(list, item, disableListWrap) {
|
|
13
14
|
if (list === item) {
|
|
@@ -111,7 +112,7 @@ const MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {
|
|
|
111
112
|
// of the menu.
|
|
112
113
|
const noExplicitWidth = !listRef.current.style.width;
|
|
113
114
|
if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
|
|
114
|
-
const scrollbarSize = `${getScrollbarSize(
|
|
115
|
+
const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;
|
|
115
116
|
listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;
|
|
116
117
|
listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
|
|
117
118
|
}
|
package/modern/Modal/Modal.js
CHANGED
|
@@ -187,12 +187,12 @@ const Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {
|
|
|
187
187
|
getSlotProps: otherHandlers => {
|
|
188
188
|
return getBackdropProps({
|
|
189
189
|
...otherHandlers,
|
|
190
|
-
onClick:
|
|
190
|
+
onClick: event => {
|
|
191
191
|
if (onBackdropClick) {
|
|
192
|
-
onBackdropClick(
|
|
192
|
+
onBackdropClick(event);
|
|
193
193
|
}
|
|
194
194
|
if (otherHandlers?.onClick) {
|
|
195
|
-
otherHandlers.onClick(
|
|
195
|
+
otherHandlers.onClick(event);
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
});
|