UNPKG

7.32 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _zeroStyled = require("../zero-styled");
15var _DefaultPropsProvider = require("../DefaultPropsProvider");
16var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
17var _Fade = _interopRequireDefault(require("../Fade"));
18var _backdropClasses = require("./backdropClasses");
19var _jsxRuntime = require("react/jsx-runtime");
20const removeOwnerState = props => {
21 const {
22 ownerState,
23 ...rest
24 } = props;
25 return rest;
26};
27const useUtilityClasses = ownerState => {
28 const {
29 classes,
30 invisible
31 } = ownerState;
32 const slots = {
33 root: ['root', invisible && 'invisible']
34 };
35 return (0, _composeClasses.default)(slots, _backdropClasses.getBackdropUtilityClass, classes);
36};
37const BackdropRoot = (0, _zeroStyled.styled)('div', {
38 name: 'MuiBackdrop',
39 slot: 'Root',
40 overridesResolver: (props, styles) => {
41 const {
42 ownerState
43 } = props;
44 return [styles.root, ownerState.invisible && styles.invisible];
45 }
46})({
47 position: 'fixed',
48 display: 'flex',
49 alignItems: 'center',
50 justifyContent: 'center',
51 right: 0,
52 bottom: 0,
53 top: 0,
54 left: 0,
55 backgroundColor: 'rgba(0, 0, 0, 0.5)',
56 WebkitTapHighlightColor: 'transparent',
57 variants: [{
58 props: {
59 invisible: true
60 },
61 style: {
62 backgroundColor: 'transparent'
63 }
64 }]
65});
66const Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {
67 const props = (0, _DefaultPropsProvider.useDefaultProps)({
68 props: inProps,
69 name: 'MuiBackdrop'
70 });
71 const {
72 children,
73 className,
74 component = 'div',
75 invisible = false,
76 open,
77 components = {},
78 componentsProps = {},
79 slotProps = {},
80 slots = {},
81 TransitionComponent: TransitionComponentProp,
82 transitionDuration,
83 ...other
84 } = props;
85 const ownerState = {
86 ...props,
87 component,
88 invisible
89 };
90 const classes = useUtilityClasses(ownerState);
91 const backwardCompatibleSlots = {
92 transition: TransitionComponentProp,
93 root: components.Root,
94 ...slots
95 };
96 const backwardCompatibleSlotProps = {
97 ...componentsProps,
98 ...slotProps
99 };
100 const externalForwardedProps = {
101 slots: backwardCompatibleSlots,
102 slotProps: backwardCompatibleSlotProps
103 };
104 const [RootSlot, rootProps] = (0, _useSlot.default)('root', {
105 elementType: BackdropRoot,
106 externalForwardedProps,
107 className: (0, _clsx.default)(classes.root, className),
108 ownerState
109 });
110 const [TransitionSlot, transitionProps] = (0, _useSlot.default)('transition', {
111 elementType: _Fade.default,
112 externalForwardedProps,
113 ownerState
114 });
115 const transitionPropsRemoved = removeOwnerState(transitionProps);
116 return /*#__PURE__*/(0, _jsxRuntime.jsx)(TransitionSlot, {
117 in: open,
118 timeout: transitionDuration,
119 ...other,
120 ...transitionPropsRemoved,
121 children: /*#__PURE__*/(0, _jsxRuntime.jsx)(RootSlot, {
122 "aria-hidden": true,
123 ...rootProps,
124 classes: classes,
125 ref: ref,
126 children: children
127 })
128 });
129});
130process.env.NODE_ENV !== "production" ? Backdrop.propTypes /* remove-proptypes */ = {
131 // ┌────────────────────────────── Warning ──────────────────────────────┐
132 // │ These PropTypes are generated from the TypeScript type definitions. │
133 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
134 // └─────────────────────────────────────────────────────────────────────┘
135 /**
136 * The content of the component.
137 */
138 children: _propTypes.default.node,
139 /**
140 * Override or extend the styles applied to the component.
141 */
142 classes: _propTypes.default.object,
143 /**
144 * @ignore
145 */
146 className: _propTypes.default.string,
147 /**
148 * The component used for the root node.
149 * Either a string to use a HTML element or a component.
150 */
151 component: _propTypes.default.elementType,
152 /**
153 * The components used for each slot inside.
154 *
155 * @deprecated Use the `slots` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
156 *
157 * @default {}
158 */
159 components: _propTypes.default.shape({
160 Root: _propTypes.default.elementType
161 }),
162 /**
163 * The extra props for the slot components.
164 * You can override the existing props or add new ones.
165 *
166 * @deprecated Use the `slotProps` prop instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
167 *
168 * @default {}
169 */
170 componentsProps: _propTypes.default.shape({
171 root: _propTypes.default.object
172 }),
173 /**
174 * If `true`, the backdrop is invisible.
175 * It can be used when rendering a popover or a custom select component.
176 * @default false
177 */
178 invisible: _propTypes.default.bool,
179 /**
180 * If `true`, the component is shown.
181 */
182 open: _propTypes.default.bool.isRequired,
183 /**
184 * The props used for each slot inside.
185 * @default {}
186 */
187 slotProps: _propTypes.default.shape({
188 root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
189 transition: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
190 }),
191 /**
192 * The components used for each slot inside.
193 * @default {}
194 */
195 slots: _propTypes.default.shape({
196 root: _propTypes.default.elementType,
197 transition: _propTypes.default.elementType
198 }),
199 /**
200 * The system prop that allows defining system overrides as well as additional CSS styles.
201 */
202 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
203 /**
204 * The component used for the transition.
205 * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
206 * @default Fade
207 */
208 TransitionComponent: _propTypes.default.elementType,
209 /**
210 * The duration for the transition, in milliseconds.
211 * You may specify a single timeout for all transitions, or individually with an object.
212 */
213 transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({
214 appear: _propTypes.default.number,
215 enter: _propTypes.default.number,
216 exit: _propTypes.default.number
217 })])
218} : void 0;
219var _default = exports.default = Backdrop;
\No newline at end of file