@mui/material 6.0.0-beta.0 → 6.0.0-beta.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.d.ts +6 -7
- package/Autocomplete/Autocomplete.js +1 -1
- package/Badge/Badge.d.ts +1 -1
- package/Badge/Badge.js +2 -2
- package/Badge/useBadge.d.ts +13 -0
- package/Badge/useBadge.js +41 -0
- package/Badge/useBadge.types.d.ts +40 -0
- package/Badge/useBadge.types.js +1 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/Breadcrumbs/Breadcrumbs.js +1 -1
- package/CHANGELOG.md +48 -0
- package/ClickAwayListener/ClickAwayListener.d.ts +47 -0
- package/ClickAwayListener/ClickAwayListener.js +178 -0
- package/ClickAwayListener/index.d.ts +2 -2
- package/ClickAwayListener/index.js +1 -1
- package/InputBase/InputBase.js +2 -2
- package/ListItem/ListItem.js +1 -1
- package/Menu/Menu.js +1 -1
- package/Modal/Modal.d.ts +1 -1
- package/Modal/Modal.js +1 -1
- package/Modal/ModalManager.d.ts +25 -0
- package/Modal/ModalManager.js +211 -0
- package/Modal/index.d.ts +1 -1
- package/Modal/index.js +1 -1
- package/Modal/useModal.d.ts +13 -0
- package/Modal/useModal.js +195 -0
- package/Modal/useModal.types.d.ts +115 -0
- package/Modal/useModal.types.js +1 -0
- package/NoSsr/NoSsr.d.ts +25 -0
- package/NoSsr/NoSsr.js +73 -0
- package/NoSsr/NoSsr.types.d.ts +18 -0
- package/NoSsr/NoSsr.types.js +1 -0
- package/NoSsr/index.d.ts +3 -2
- package/NoSsr/index.js +1 -1
- package/Popover/Popover.js +1 -1
- package/Popper/BasePopper.d.ts +7 -0
- package/Popper/BasePopper.js +370 -0
- package/Popper/BasePopper.types.d.ts +130 -0
- package/Popper/BasePopper.types.js +1 -0
- package/Popper/Popper.d.ts +1 -1
- package/Popper/Popper.js +1 -1
- package/Popper/index.d.ts +2 -1
- package/Popper/index.js +2 -1
- package/Popper/popperClasses.d.ts +8 -0
- package/Popper/popperClasses.js +7 -0
- package/Portal/Portal.d.ts +16 -0
- package/Portal/Portal.js +92 -0
- package/Portal/Portal.types.d.ts +23 -0
- package/Portal/Portal.types.js +1 -0
- package/Portal/index.d.ts +3 -2
- package/Portal/index.js +1 -1
- package/Slider/Slider.d.ts +2 -2
- package/Slider/Slider.js +3 -2
- package/Slider/useSlider.d.ts +14 -0
- package/Slider/useSlider.js +647 -0
- package/Slider/useSlider.types.d.ts +228 -0
- package/Slider/useSlider.types.js +1 -0
- package/Snackbar/Snackbar.d.ts +1 -1
- package/Snackbar/Snackbar.js +3 -3
- package/Snackbar/useSnackbar.d.ts +14 -0
- package/Snackbar/useSnackbar.js +133 -0
- package/Snackbar/useSnackbar.types.d.ts +60 -0
- package/Snackbar/useSnackbar.types.js +1 -0
- package/SwipeableDrawer/SwipeableDrawer.js +1 -1
- package/TabScrollButton/TabScrollButton.d.ts +1 -1
- package/TabScrollButton/TabScrollButton.js +1 -1
- package/TablePagination/TablePagination.js +1 -1
- package/Tabs/Tabs.d.ts +1 -1
- package/Tabs/Tabs.js +1 -1
- package/TextareaAutosize/TextareaAutosize.d.ts +14 -0
- package/TextareaAutosize/TextareaAutosize.js +222 -0
- package/TextareaAutosize/TextareaAutosize.types.d.ts +13 -0
- package/TextareaAutosize/TextareaAutosize.types.js +1 -0
- package/TextareaAutosize/index.d.ts +3 -2
- package/TextareaAutosize/index.js +1 -1
- package/Tooltip/Tooltip.js +1 -1
- package/Unstable_TrapFocus/FocusTrap.d.ts +10 -0
- package/Unstable_TrapFocus/FocusTrap.js +330 -0
- package/Unstable_TrapFocus/FocusTrap.types.d.ts +51 -0
- package/Unstable_TrapFocus/FocusTrap.types.js +1 -0
- package/Unstable_TrapFocus/index.d.ts +2 -2
- package/Unstable_TrapFocus/index.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +2 -2
- package/modern/Autocomplete/Autocomplete.js +1 -1
- package/modern/Badge/Badge.js +2 -2
- package/modern/Badge/useBadge.js +41 -0
- package/modern/Badge/useBadge.types.js +1 -0
- package/modern/Breadcrumbs/Breadcrumbs.js +1 -1
- package/modern/ClickAwayListener/ClickAwayListener.js +178 -0
- package/modern/ClickAwayListener/index.js +1 -1
- package/modern/InputBase/InputBase.js +2 -2
- package/modern/ListItem/ListItem.js +1 -1
- package/modern/Menu/Menu.js +1 -1
- package/modern/Modal/Modal.js +1 -1
- package/modern/Modal/ModalManager.js +211 -0
- package/modern/Modal/index.js +1 -1
- package/modern/Modal/useModal.js +195 -0
- package/modern/Modal/useModal.types.js +1 -0
- package/modern/NoSsr/NoSsr.js +73 -0
- package/modern/NoSsr/NoSsr.types.js +1 -0
- package/modern/NoSsr/index.js +1 -1
- package/modern/Popover/Popover.js +1 -1
- package/modern/Popper/BasePopper.js +370 -0
- package/modern/Popper/BasePopper.types.js +1 -0
- package/modern/Popper/Popper.js +1 -1
- package/modern/Popper/index.js +2 -1
- package/modern/Popper/popperClasses.js +7 -0
- package/modern/Portal/Portal.js +92 -0
- package/modern/Portal/Portal.types.js +1 -0
- package/modern/Portal/index.js +1 -1
- package/modern/Slider/Slider.js +3 -2
- package/modern/Slider/useSlider.js +647 -0
- package/modern/Slider/useSlider.types.js +1 -0
- package/modern/Snackbar/Snackbar.js +3 -3
- package/modern/Snackbar/useSnackbar.js +133 -0
- package/modern/Snackbar/useSnackbar.types.js +1 -0
- package/modern/SwipeableDrawer/SwipeableDrawer.js +1 -1
- package/modern/TabScrollButton/TabScrollButton.js +1 -1
- package/modern/TablePagination/TablePagination.js +1 -1
- package/modern/Tabs/Tabs.js +1 -1
- package/modern/TextareaAutosize/TextareaAutosize.js +222 -0
- package/modern/TextareaAutosize/TextareaAutosize.types.js +1 -0
- package/modern/TextareaAutosize/index.js +1 -1
- package/modern/Tooltip/Tooltip.js +1 -1
- package/modern/Unstable_TrapFocus/FocusTrap.js +330 -0
- package/modern/Unstable_TrapFocus/FocusTrap.types.js +1 -0
- package/modern/Unstable_TrapFocus/index.js +1 -1
- package/modern/index.js +2 -2
- package/modern/useAutocomplete/useAutocomplete.js +976 -2
- package/modern/utils/PolymorphicComponent.js +1 -0
- package/modern/utils/areArraysEqual.js +4 -0
- package/modern/utils/index.js +1 -1
- package/modern/utils/isHostComponent.js +7 -0
- package/modern/utils/omitEventHandlers.js +18 -0
- package/modern/utils/shouldSpreadAdditionalProps.js +1 -1
- package/modern/utils/useSlot.js +3 -1
- package/node/Autocomplete/Autocomplete.js +3 -3
- package/node/Badge/Badge.js +5 -5
- package/node/Badge/useBadge.js +46 -0
- package/node/Badge/useBadge.types.js +5 -0
- package/node/Breadcrumbs/Breadcrumbs.js +2 -2
- package/node/ClickAwayListener/ClickAwayListener.js +184 -0
- package/node/ClickAwayListener/index.js +1 -1
- package/node/InputBase/InputBase.js +7 -7
- package/node/ListItem/ListItem.js +3 -3
- package/node/Menu/Menu.js +3 -3
- package/node/Modal/Modal.js +2 -2
- package/node/Modal/ModalManager.js +219 -0
- package/node/Modal/index.js +2 -2
- package/node/Modal/useModal.js +205 -0
- package/node/Modal/useModal.types.js +5 -0
- package/node/NoSsr/NoSsr.js +81 -0
- package/node/NoSsr/NoSsr.types.js +5 -0
- package/node/NoSsr/index.js +3 -2
- package/node/Popover/Popover.js +2 -2
- package/node/Popper/BasePopper.js +379 -0
- package/node/Popper/BasePopper.types.js +5 -0
- package/node/Popper/Popper.js +2 -2
- package/node/Popper/index.js +14 -1
- package/node/Popper/popperClasses.js +15 -0
- package/node/Portal/Portal.js +100 -0
- package/node/Portal/Portal.types.js +5 -0
- package/node/Portal/index.js +3 -2
- package/node/Slider/Slider.js +14 -13
- package/node/Slider/useSlider.js +670 -0
- package/node/Slider/useSlider.types.js +5 -0
- package/node/Snackbar/Snackbar.js +6 -6
- package/node/Snackbar/useSnackbar.js +141 -0
- package/node/Snackbar/useSnackbar.types.js +5 -0
- package/node/SwipeableDrawer/SwipeableDrawer.js +2 -2
- package/node/TabScrollButton/TabScrollButton.js +3 -3
- package/node/TablePagination/TablePagination.js +2 -2
- package/node/Tabs/Tabs.js +3 -3
- package/node/TextareaAutosize/TextareaAutosize.js +230 -0
- package/node/TextareaAutosize/TextareaAutosize.types.js +5 -0
- package/node/TextareaAutosize/index.js +3 -2
- package/node/Tooltip/Tooltip.js +5 -5
- package/node/Unstable_TrapFocus/FocusTrap.js +339 -0
- package/node/Unstable_TrapFocus/FocusTrap.types.js +5 -0
- package/node/Unstable_TrapFocus/index.js +3 -2
- package/node/index.js +3 -3
- package/node/useAutocomplete/useAutocomplete.js +985 -18
- package/node/utils/PolymorphicComponent.js +5 -0
- package/node/utils/areArraysEqual.js +10 -0
- package/node/utils/index.js +2 -2
- package/node/utils/isHostComponent.js +13 -0
- package/node/utils/omitEventHandlers.js +24 -0
- package/node/utils/shouldSpreadAdditionalProps.js +3 -2
- package/node/utils/useSlot.js +6 -4
- package/package.json +8 -8
- package/styles/overrides.d.ts +1 -1
- package/useAutocomplete/useAutocomplete.d.ts +468 -2
- package/useAutocomplete/useAutocomplete.js +976 -2
- package/utils/PolymorphicComponent.d.ts +17 -0
- package/utils/PolymorphicComponent.js +1 -0
- package/utils/areArraysEqual.d.ts +3 -0
- package/utils/areArraysEqual.js +4 -0
- package/utils/index.d.ts +2 -1
- package/utils/index.js +1 -1
- package/utils/isHostComponent.d.ts +6 -0
- package/utils/isHostComponent.js +7 -0
- package/utils/omitEventHandlers.d.ts +9 -0
- package/utils/omitEventHandlers.js +18 -0
- package/utils/shouldSpreadAdditionalProps.js +1 -1
- package/utils/types.d.ts +2 -1
- package/utils/useSlot.js +3 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
3
|
import { OverridableStringUnion } from '@mui/types';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { IconButtonProps, InternalStandardProps as StandardProps, Theme } from '@mui/material';
|
|
5
|
+
import { ChipProps, ChipTypeMap } from '@mui/material/Chip';
|
|
6
|
+
import { PaperProps } from '@mui/material/Paper';
|
|
7
|
+
import { PopperProps } from '@mui/material/Popper';
|
|
8
|
+
import useAutocomplete, {
|
|
6
9
|
AutocompleteChangeDetails,
|
|
7
10
|
AutocompleteChangeReason,
|
|
8
11
|
AutocompleteCloseReason,
|
|
@@ -11,11 +14,7 @@ import {
|
|
|
11
14
|
createFilterOptions,
|
|
12
15
|
UseAutocompleteProps,
|
|
13
16
|
AutocompleteFreeSoloValueMapping,
|
|
14
|
-
} from '
|
|
15
|
-
import { IconButtonProps, InternalStandardProps as StandardProps, Theme } from '@mui/material';
|
|
16
|
-
import { ChipProps, ChipTypeMap } from '@mui/material/Chip';
|
|
17
|
-
import { PaperProps } from '@mui/material/Paper';
|
|
18
|
-
import { PopperProps } from '@mui/material/Popper';
|
|
17
|
+
} from '../useAutocomplete';
|
|
19
18
|
import { AutocompleteClasses } from './autocompleteClasses';
|
|
20
19
|
import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types';
|
|
21
20
|
|
|
@@ -6,9 +6,9 @@ import PropTypes from 'prop-types';
|
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import integerPropType from '@mui/utils/integerPropType';
|
|
8
8
|
import chainPropTypes from '@mui/utils/chainPropTypes';
|
|
9
|
-
import { useAutocomplete, createFilterOptions } from '@mui/base';
|
|
10
9
|
import composeClasses from '@mui/utils/composeClasses';
|
|
11
10
|
import { alpha } from '@mui/system/colorManipulator';
|
|
11
|
+
import useAutocomplete, { createFilterOptions } from '../useAutocomplete';
|
|
12
12
|
import Popper from '../Popper';
|
|
13
13
|
import ListSubheader from '../ListSubheader';
|
|
14
14
|
import Paper from '../Paper';
|
package/Badge/Badge.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
3
|
import { OverridableStringUnion, Simplify } from '@mui/types';
|
|
4
|
-
import { SlotComponentProps } from '
|
|
4
|
+
import { SlotComponentProps } from '../utils/types';
|
|
5
5
|
import { Theme } from '../styles';
|
|
6
6
|
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
|
|
7
7
|
import { BadgeClasses } from './badgeClasses';
|
package/Badge/Badge.js
CHANGED
|
@@ -5,8 +5,8 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import usePreviousProps from '@mui/utils/usePreviousProps';
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
|
-
import
|
|
9
|
-
import
|
|
8
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
9
|
+
import useBadge from './useBadge';
|
|
10
10
|
import { styled } from '../zero-styled';
|
|
11
11
|
import { useDefaultProps } from '../DefaultPropsProvider';
|
|
12
12
|
import capitalize from '../utils/capitalize';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UseBadgeParameters, UseBadgeReturnValue } from './useBadge.types';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* Demos:
|
|
5
|
+
*
|
|
6
|
+
* - [Badge](https://next.mui.com/base-ui/react-badge/#hook)
|
|
7
|
+
*
|
|
8
|
+
* API:
|
|
9
|
+
*
|
|
10
|
+
* - [useBadge API](https://next.mui.com/base-ui/react-badge/hooks-api/#use-badge)
|
|
11
|
+
*/
|
|
12
|
+
declare function useBadge(parameters: UseBadgeParameters): UseBadgeReturnValue;
|
|
13
|
+
export default useBadge;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { usePreviousProps } from '@mui/utils';
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* Demos:
|
|
7
|
+
*
|
|
8
|
+
* - [Badge](https://next.mui.com/base-ui/react-badge/#hook)
|
|
9
|
+
*
|
|
10
|
+
* API:
|
|
11
|
+
*
|
|
12
|
+
* - [useBadge API](https://next.mui.com/base-ui/react-badge/hooks-api/#use-badge)
|
|
13
|
+
*/
|
|
14
|
+
function useBadge(parameters) {
|
|
15
|
+
const {
|
|
16
|
+
badgeContent: badgeContentProp,
|
|
17
|
+
invisible: invisibleProp = false,
|
|
18
|
+
max: maxProp = 99,
|
|
19
|
+
showZero = false
|
|
20
|
+
} = parameters;
|
|
21
|
+
const prevProps = usePreviousProps({
|
|
22
|
+
badgeContent: badgeContentProp,
|
|
23
|
+
max: maxProp
|
|
24
|
+
});
|
|
25
|
+
let invisible = invisibleProp;
|
|
26
|
+
if (invisibleProp === false && badgeContentProp === 0 && !showZero) {
|
|
27
|
+
invisible = true;
|
|
28
|
+
}
|
|
29
|
+
const {
|
|
30
|
+
badgeContent,
|
|
31
|
+
max = maxProp
|
|
32
|
+
} = invisible ? prevProps : parameters;
|
|
33
|
+
const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;
|
|
34
|
+
return {
|
|
35
|
+
badgeContent,
|
|
36
|
+
invisible,
|
|
37
|
+
max,
|
|
38
|
+
displayValue
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export default useBadge;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface UseBadgeParameters {
|
|
3
|
+
/**
|
|
4
|
+
* The content rendered within the badge.
|
|
5
|
+
*/
|
|
6
|
+
badgeContent?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* If `true`, the badge is invisible.
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
invisible?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Max count to show.
|
|
14
|
+
* @default 99
|
|
15
|
+
*/
|
|
16
|
+
max?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Controls whether the badge is hidden when `badgeContent` is zero.
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
showZero?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface UseBadgeReturnValue {
|
|
24
|
+
/**
|
|
25
|
+
* Defines the content that's displayed inside the badge.
|
|
26
|
+
*/
|
|
27
|
+
badgeContent: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* If `true`, the component will not be visible.
|
|
30
|
+
*/
|
|
31
|
+
invisible: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Maximum number to be displayed in the badge.
|
|
34
|
+
*/
|
|
35
|
+
max: number;
|
|
36
|
+
/**
|
|
37
|
+
* Value to be displayed in the badge. If `badgeContent` is greater than `max`, it will return `max+`.
|
|
38
|
+
*/
|
|
39
|
+
displayValue: React.ReactNode;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
|
-
import { SlotComponentProps } from '
|
|
3
|
+
import { SlotComponentProps } from '../utils/types';
|
|
4
4
|
import { Theme } from '../styles';
|
|
5
5
|
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
|
|
6
6
|
import { BreadcrumbsClasses } from './breadcrumbsClasses';
|
|
@@ -5,8 +5,8 @@ import { isFragment } from 'react-is';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import integerPropType from '@mui/utils/integerPropType';
|
|
8
|
-
import { useSlotProps } from '@mui/base/utils';
|
|
9
8
|
import composeClasses from '@mui/utils/composeClasses';
|
|
9
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
10
10
|
import { styled } from '../zero-styled';
|
|
11
11
|
import { useDefaultProps } from '../DefaultPropsProvider';
|
|
12
12
|
import Typography from '../Typography';
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# [Versions](https://mui.com/versions/)
|
|
2
2
|
|
|
3
|
+
## v6.0.0-beta.2
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v6.0.0-beta.1..next -->
|
|
6
|
+
|
|
7
|
+
_Jul 16, 2024_
|
|
8
|
+
|
|
9
|
+
### `@mui/material@6.0.0-beta.2`
|
|
10
|
+
|
|
11
|
+
- ​<!-- 1 -->[material] Add missing dependency (#42961) @mnajdova
|
|
12
|
+
|
|
13
|
+
### Docs
|
|
14
|
+
|
|
15
|
+
- ​<!-- 2 -->[docs] Move feedback from Canny to GitHub @oliviertassinari
|
|
16
|
+
|
|
17
|
+
All contributors of this release in alphabetical order: @mnajdova, @oliviertassinari
|
|
18
|
+
|
|
19
|
+
## v6.0.0-beta.1
|
|
20
|
+
|
|
21
|
+
<!-- generated comparing v6.0.0-beta.0..next -->
|
|
22
|
+
|
|
23
|
+
_Jul 16, 2024_
|
|
24
|
+
|
|
25
|
+
A big thanks to the 6 contributors who made this release possible.
|
|
26
|
+
|
|
27
|
+
### `@mui/material@6.0.0-beta.1`
|
|
28
|
+
|
|
29
|
+
- ​<!-- 03 -->Remove dependency on @mui/base (#42907) @mnajdova
|
|
30
|
+
- ​<!-- 02 -->Set material-pigment-css to public (#42912) @siriwatknp
|
|
31
|
+
|
|
32
|
+
### `@mui/codemod@6.0.0-beta.1`
|
|
33
|
+
|
|
34
|
+
- ​<!-- 10 -->Support sx conditional inside spread element (#42894) @siriwatknp
|
|
35
|
+
|
|
36
|
+
### Docs
|
|
37
|
+
|
|
38
|
+
- ​<!-- 07 -->Fix 301 link @oliviertassinari
|
|
39
|
+
- ​<!-- 04 -->[material-ui] Add script to generate template screenshots (#42903) @siriwatknp
|
|
40
|
+
|
|
41
|
+
### Core
|
|
42
|
+
|
|
43
|
+
- ​<!-- 09 -->[core] Remove custom hooks from the `mui-name-matches-component-name` linting rule (#42773) @flaviendelangle
|
|
44
|
+
- ​<!-- 08 -->[core] Normalize rest / other to match the most common used @oliviertassinari
|
|
45
|
+
- ​<!-- 06 -->[docs-infra] Move Ads component to TS (#42842) @alexfauquette
|
|
46
|
+
- ​<!-- 05 -->[docs-infra] Support code tabs overflow (#42913) @arminmeh
|
|
47
|
+
- ​<!-- 01 -->[website] Sync /about page @oliviertassinari
|
|
48
|
+
|
|
49
|
+
All contributors of this release in alphabetical order: @alexfauquette, @arminmeh, @flaviendelangle, @mnajdova, @oliviertassinari, @siriwatknp
|
|
50
|
+
|
|
3
51
|
## v6.0.0-beta.0
|
|
4
52
|
|
|
5
53
|
<!-- generated comparing v6.0.0-alpha.14..next -->
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type ClickAwayMouseEventHandler = 'onClick' | 'onMouseDown' | 'onMouseUp' | 'onPointerDown' | 'onPointerUp';
|
|
3
|
+
type ClickAwayTouchEventHandler = 'onTouchStart' | 'onTouchEnd';
|
|
4
|
+
export interface ClickAwayListenerProps {
|
|
5
|
+
/**
|
|
6
|
+
* The wrapped element.
|
|
7
|
+
*/
|
|
8
|
+
children: React.ReactElement<any>;
|
|
9
|
+
/**
|
|
10
|
+
* If `true`, the React tree is ignored and only the DOM tree is considered.
|
|
11
|
+
* This prop changes how portaled elements are handled.
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
disableReactTree?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The mouse event to listen to. You can disable the listener by providing `false`.
|
|
17
|
+
* @default 'onClick'
|
|
18
|
+
*/
|
|
19
|
+
mouseEvent?: ClickAwayMouseEventHandler | false;
|
|
20
|
+
/**
|
|
21
|
+
* Callback fired when a "click away" event is detected.
|
|
22
|
+
*/
|
|
23
|
+
onClickAway: (event: MouseEvent | TouchEvent) => void;
|
|
24
|
+
/**
|
|
25
|
+
* The touch event to listen to. You can disable the listener by providing `false`.
|
|
26
|
+
* @default 'onTouchEnd'
|
|
27
|
+
*/
|
|
28
|
+
touchEvent?: ClickAwayTouchEventHandler | false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Listen for click events that occur somewhere in the document, outside of the element itself.
|
|
32
|
+
* For instance, if you need to hide a menu when people click anywhere else on your page.
|
|
33
|
+
*
|
|
34
|
+
* Demos:
|
|
35
|
+
*
|
|
36
|
+
* - [Click-Away Listener](https://next.mui.com/material-ui/react-click-away-listener/)
|
|
37
|
+
* - [Menu](https://next.mui.com/material-ui/react-menu/)
|
|
38
|
+
*
|
|
39
|
+
* API:
|
|
40
|
+
*
|
|
41
|
+
* - [ClickAwayListener API](https://next.mui.com/material-ui/api/click-away-listener/)
|
|
42
|
+
*/
|
|
43
|
+
declare function ClickAwayListener(props: ClickAwayListenerProps): React.JSX.Element;
|
|
44
|
+
declare namespace ClickAwayListener {
|
|
45
|
+
var propTypes: any;
|
|
46
|
+
}
|
|
47
|
+
export { ClickAwayListener };
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
6
|
+
|
|
7
|
+
// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase<EventName> : never` once generatePropTypes runs with TS 4.1
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
function mapEventPropToEvent(eventProp) {
|
|
10
|
+
return eventProp.substring(2).toLowerCase();
|
|
11
|
+
}
|
|
12
|
+
function clickedRootScrollbar(event, doc) {
|
|
13
|
+
return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Listen for click events that occur somewhere in the document, outside of the element itself.
|
|
17
|
+
* For instance, if you need to hide a menu when people click anywhere else on your page.
|
|
18
|
+
*
|
|
19
|
+
* Demos:
|
|
20
|
+
*
|
|
21
|
+
* - [Click-Away Listener](https://next.mui.com/material-ui/react-click-away-listener/)
|
|
22
|
+
* - [Menu](https://next.mui.com/material-ui/react-menu/)
|
|
23
|
+
*
|
|
24
|
+
* API:
|
|
25
|
+
*
|
|
26
|
+
* - [ClickAwayListener API](https://next.mui.com/material-ui/api/click-away-listener/)
|
|
27
|
+
*/
|
|
28
|
+
function ClickAwayListener(props) {
|
|
29
|
+
const {
|
|
30
|
+
children,
|
|
31
|
+
disableReactTree = false,
|
|
32
|
+
mouseEvent = 'onClick',
|
|
33
|
+
onClickAway,
|
|
34
|
+
touchEvent = 'onTouchEnd'
|
|
35
|
+
} = props;
|
|
36
|
+
const movedRef = React.useRef(false);
|
|
37
|
+
const nodeRef = React.useRef(null);
|
|
38
|
+
const activatedRef = React.useRef(false);
|
|
39
|
+
const syntheticEventRef = React.useRef(false);
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
// Ensure that this component is not "activated" synchronously.
|
|
42
|
+
// https://github.com/facebook/react/issues/20074
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
activatedRef.current = true;
|
|
45
|
+
}, 0);
|
|
46
|
+
return () => {
|
|
47
|
+
activatedRef.current = false;
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
const handleRef = useForkRef(
|
|
51
|
+
// @ts-expect-error TODO upstream fix
|
|
52
|
+
children.ref, nodeRef);
|
|
53
|
+
|
|
54
|
+
// The handler doesn't take event.defaultPrevented into account:
|
|
55
|
+
//
|
|
56
|
+
// event.preventDefault() is meant to stop default behaviors like
|
|
57
|
+
// clicking a checkbox to check it, hitting a button to submit a form,
|
|
58
|
+
// and hitting left arrow to move the cursor in a text input etc.
|
|
59
|
+
// Only special HTML elements have these default behaviors.
|
|
60
|
+
const handleClickAway = useEventCallback(event => {
|
|
61
|
+
// Given developers can stop the propagation of the synthetic event,
|
|
62
|
+
// we can only be confident with a positive value.
|
|
63
|
+
const insideReactTree = syntheticEventRef.current;
|
|
64
|
+
syntheticEventRef.current = false;
|
|
65
|
+
const doc = ownerDocument(nodeRef.current);
|
|
66
|
+
|
|
67
|
+
// 1. IE11 support, which trigger the handleClickAway even after the unbind
|
|
68
|
+
// 2. The child might render null.
|
|
69
|
+
// 3. Behave like a blur listener.
|
|
70
|
+
if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Do not act if user performed touchmove
|
|
75
|
+
if (movedRef.current) {
|
|
76
|
+
movedRef.current = false;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
let insideDOM;
|
|
80
|
+
|
|
81
|
+
// If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js
|
|
82
|
+
if (event.composedPath) {
|
|
83
|
+
insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;
|
|
84
|
+
} else {
|
|
85
|
+
insideDOM = !doc.documentElement.contains(
|
|
86
|
+
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
87
|
+
event.target) || nodeRef.current.contains(
|
|
88
|
+
// @ts-expect-error returns `false` as intended when not dispatched from a Node
|
|
89
|
+
event.target);
|
|
90
|
+
}
|
|
91
|
+
if (!insideDOM && (disableReactTree || !insideReactTree)) {
|
|
92
|
+
onClickAway(event);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Keep track of mouse/touch events that bubbled up through the portal.
|
|
97
|
+
const createHandleSynthetic = handlerName => event => {
|
|
98
|
+
syntheticEventRef.current = true;
|
|
99
|
+
const childrenPropsHandler = children.props[handlerName];
|
|
100
|
+
if (childrenPropsHandler) {
|
|
101
|
+
childrenPropsHandler(event);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const childrenProps = {
|
|
105
|
+
ref: handleRef
|
|
106
|
+
};
|
|
107
|
+
if (touchEvent !== false) {
|
|
108
|
+
childrenProps[touchEvent] = createHandleSynthetic(touchEvent);
|
|
109
|
+
}
|
|
110
|
+
React.useEffect(() => {
|
|
111
|
+
if (touchEvent !== false) {
|
|
112
|
+
const mappedTouchEvent = mapEventPropToEvent(touchEvent);
|
|
113
|
+
const doc = ownerDocument(nodeRef.current);
|
|
114
|
+
const handleTouchMove = () => {
|
|
115
|
+
movedRef.current = true;
|
|
116
|
+
};
|
|
117
|
+
doc.addEventListener(mappedTouchEvent, handleClickAway);
|
|
118
|
+
doc.addEventListener('touchmove', handleTouchMove);
|
|
119
|
+
return () => {
|
|
120
|
+
doc.removeEventListener(mappedTouchEvent, handleClickAway);
|
|
121
|
+
doc.removeEventListener('touchmove', handleTouchMove);
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}, [handleClickAway, touchEvent]);
|
|
126
|
+
if (mouseEvent !== false) {
|
|
127
|
+
childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);
|
|
128
|
+
}
|
|
129
|
+
React.useEffect(() => {
|
|
130
|
+
if (mouseEvent !== false) {
|
|
131
|
+
const mappedMouseEvent = mapEventPropToEvent(mouseEvent);
|
|
132
|
+
const doc = ownerDocument(nodeRef.current);
|
|
133
|
+
doc.addEventListener(mappedMouseEvent, handleClickAway);
|
|
134
|
+
return () => {
|
|
135
|
+
doc.removeEventListener(mappedMouseEvent, handleClickAway);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return undefined;
|
|
139
|
+
}, [handleClickAway, mouseEvent]);
|
|
140
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
141
|
+
children: /*#__PURE__*/React.cloneElement(children, childrenProps)
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
process.env.NODE_ENV !== "production" ? ClickAwayListener.propTypes /* remove-proptypes */ = {
|
|
145
|
+
// ┌────────────────────────────── Warning ──────────────────────────────┐
|
|
146
|
+
// │ These PropTypes are generated from the TypeScript type definitions. │
|
|
147
|
+
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
|
|
148
|
+
// └─────────────────────────────────────────────────────────────────────┘
|
|
149
|
+
/**
|
|
150
|
+
* The wrapped element.
|
|
151
|
+
*/
|
|
152
|
+
children: elementAcceptingRef.isRequired,
|
|
153
|
+
/**
|
|
154
|
+
* If `true`, the React tree is ignored and only the DOM tree is considered.
|
|
155
|
+
* This prop changes how portaled elements are handled.
|
|
156
|
+
* @default false
|
|
157
|
+
*/
|
|
158
|
+
disableReactTree: PropTypes.bool,
|
|
159
|
+
/**
|
|
160
|
+
* The mouse event to listen to. You can disable the listener by providing `false`.
|
|
161
|
+
* @default 'onClick'
|
|
162
|
+
*/
|
|
163
|
+
mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),
|
|
164
|
+
/**
|
|
165
|
+
* Callback fired when a "click away" event is detected.
|
|
166
|
+
*/
|
|
167
|
+
onClickAway: PropTypes.func.isRequired,
|
|
168
|
+
/**
|
|
169
|
+
* The touch event to listen to. You can disable the listener by providing `false`.
|
|
170
|
+
* @default 'onTouchEnd'
|
|
171
|
+
*/
|
|
172
|
+
touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])
|
|
173
|
+
} : void 0;
|
|
174
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
175
|
+
// eslint-disable-next-line
|
|
176
|
+
ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);
|
|
177
|
+
}
|
|
178
|
+
export { ClickAwayListener };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ClickAwayListener as default } from '
|
|
2
|
-
export type { ClickAwayListenerProps } from '
|
|
1
|
+
export { ClickAwayListener as default } from './ClickAwayListener';
|
|
2
|
+
export type { ClickAwayListenerProps } from './ClickAwayListener';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { ClickAwayListener as default } from '
|
|
1
|
+
export { ClickAwayListener as default } from './ClickAwayListener';
|
package/InputBase/InputBase.js
CHANGED
|
@@ -7,9 +7,9 @@ import PropTypes from 'prop-types';
|
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
9
9
|
import refType from '@mui/utils/refType';
|
|
10
|
-
import { TextareaAutosize } from '@mui/base';
|
|
11
|
-
import { isHostComponent } from '@mui/base/utils';
|
|
12
10
|
import composeClasses from '@mui/utils/composeClasses';
|
|
11
|
+
import TextareaAutosize from '../TextareaAutosize';
|
|
12
|
+
import isHostComponent from '../utils/isHostComponent';
|
|
13
13
|
import formControlState from '../FormControl/formControlState';
|
|
14
14
|
import FormControlContext from '../FormControl/FormControlContext';
|
|
15
15
|
import useFormControl from '../FormControl/useFormControl';
|
package/ListItem/ListItem.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
|
-
import { isHostComponent } from '@mui/base/utils';
|
|
7
6
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
7
|
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
9
8
|
import chainPropTypes from '@mui/utils/chainPropTypes';
|
|
10
9
|
import { alpha } from '@mui/system/colorManipulator';
|
|
10
|
+
import isHostComponent from '../utils/isHostComponent';
|
|
11
11
|
import { styled } from '../zero-styled';
|
|
12
12
|
import { useDefaultProps } from '../DefaultPropsProvider';
|
|
13
13
|
import ButtonBase from '../ButtonBase';
|
package/Menu/Menu.js
CHANGED
|
@@ -5,9 +5,9 @@ import { isFragment } from 'react-is';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
|
-
import { useSlotProps } from '@mui/base/utils';
|
|
9
8
|
import HTMLElementType from '@mui/utils/HTMLElementType';
|
|
10
9
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
10
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
11
11
|
import MenuList from '../MenuList';
|
|
12
12
|
import Popover, { PopoverPaper } from '../Popover';
|
|
13
13
|
import rootShouldForwardProp from '../styles/rootShouldForwardProp';
|
package/Modal/Modal.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
3
|
import { OverrideProps } from '@mui/types';
|
|
4
|
-
import { SlotComponentProps } from '
|
|
4
|
+
import { SlotComponentProps } from '../utils/types';
|
|
5
5
|
import { PortalProps } from '../Portal';
|
|
6
6
|
import { Theme } from '../styles';
|
|
7
7
|
import Backdrop, { BackdropProps } from '../Backdrop';
|
package/Modal/Modal.js
CHANGED
|
@@ -5,13 +5,13 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import HTMLElementType from '@mui/utils/HTMLElementType';
|
|
7
7
|
import elementAcceptingRef from '@mui/utils/elementAcceptingRef';
|
|
8
|
-
import { unstable_useModal as useModal } from '@mui/base/unstable_useModal';
|
|
9
8
|
import composeClasses from '@mui/utils/composeClasses';
|
|
10
9
|
import FocusTrap from '../Unstable_TrapFocus';
|
|
11
10
|
import Portal from '../Portal';
|
|
12
11
|
import { styled } from '../zero-styled';
|
|
13
12
|
import { useDefaultProps } from '../DefaultPropsProvider';
|
|
14
13
|
import Backdrop from '../Backdrop';
|
|
14
|
+
import useModal from './useModal';
|
|
15
15
|
import { getModalUtilityClass } from './modalClasses';
|
|
16
16
|
import useSlot from '../utils/useSlot';
|
|
17
17
|
import { useForkRef } from '../utils';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ManagedModalProps {
|
|
2
|
+
disableScrollLock?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare function ariaHidden(element: Element, show: boolean): void;
|
|
5
|
+
interface Modal {
|
|
6
|
+
mount: Element;
|
|
7
|
+
modalRef: Element;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @ignore - do not document.
|
|
11
|
+
*
|
|
12
|
+
* Proper state management for containers and the modals in those containers.
|
|
13
|
+
* Simplified, but inspired by react-overlay's ModalManager class.
|
|
14
|
+
* Used by the Modal to ensure proper styling of containers.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ModalManager {
|
|
17
|
+
private containers;
|
|
18
|
+
private modals;
|
|
19
|
+
constructor();
|
|
20
|
+
add(modal: Modal, container: HTMLElement): number;
|
|
21
|
+
mount(modal: Modal, props: ManagedModalProps): void;
|
|
22
|
+
remove(modal: Modal, ariaHiddenState?: boolean): number;
|
|
23
|
+
isTopModal(modal: Modal): boolean;
|
|
24
|
+
}
|
|
25
|
+
export {};
|