1 | "use strict";
|
2 | 'use client';
|
3 |
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
5 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
6 | Object.defineProperty(exports, "__esModule", {
|
7 | value: true
|
8 | });
|
9 | exports.default = void 0;
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
12 | var _clsx = _interopRequireDefault(require("clsx"));
|
13 | var _HTMLElementType = _interopRequireDefault(require("@mui/utils/HTMLElementType"));
|
14 | var _elementAcceptingRef = _interopRequireDefault(require("@mui/utils/elementAcceptingRef"));
|
15 | var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
16 | var _Unstable_TrapFocus = _interopRequireDefault(require("../Unstable_TrapFocus"));
|
17 | var _Portal = _interopRequireDefault(require("../Portal"));
|
18 | var _zeroStyled = require("../zero-styled");
|
19 | var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
|
20 | var _DefaultPropsProvider = require("../DefaultPropsProvider");
|
21 | var _Backdrop = _interopRequireDefault(require("../Backdrop"));
|
22 | var _useModal = _interopRequireDefault(require("./useModal"));
|
23 | var _modalClasses = require("./modalClasses");
|
24 | var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
|
25 | var _utils = require("../utils");
|
26 | var _jsxRuntime = require("react/jsx-runtime");
|
27 | const useUtilityClasses = ownerState => {
|
28 | const {
|
29 | open,
|
30 | exited,
|
31 | classes
|
32 | } = ownerState;
|
33 | const slots = {
|
34 | root: ['root', !open && exited && 'hidden'],
|
35 | backdrop: ['backdrop']
|
36 | };
|
37 | return (0, _composeClasses.default)(slots, _modalClasses.getModalUtilityClass, classes);
|
38 | };
|
39 | const ModalRoot = (0, _zeroStyled.styled)('div', {
|
40 | name: 'MuiModal',
|
41 | slot: 'Root',
|
42 | overridesResolver: (props, styles) => {
|
43 | const {
|
44 | ownerState
|
45 | } = props;
|
46 | return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];
|
47 | }
|
48 | })((0, _memoTheme.default)(({
|
49 | theme
|
50 | }) => ({
|
51 | position: 'fixed',
|
52 | zIndex: (theme.vars || theme).zIndex.modal,
|
53 | right: 0,
|
54 | bottom: 0,
|
55 | top: 0,
|
56 | left: 0,
|
57 | variants: [{
|
58 | props: ({
|
59 | ownerState
|
60 | }) => !ownerState.open && ownerState.exited,
|
61 | style: {
|
62 | visibility: 'hidden'
|
63 | }
|
64 | }]
|
65 | })));
|
66 | const ModalBackdrop = (0, _zeroStyled.styled)(_Backdrop.default, {
|
67 | name: 'MuiModal',
|
68 | slot: 'Backdrop',
|
69 | overridesResolver: (props, styles) => {
|
70 | return styles.backdrop;
|
71 | }
|
72 | })({
|
73 | zIndex: -1
|
74 | });
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 | const Modal = React.forwardRef(function Modal(inProps, ref) {
|
90 | const props = (0, _DefaultPropsProvider.useDefaultProps)({
|
91 | name: 'MuiModal',
|
92 | props: inProps
|
93 | });
|
94 | const {
|
95 | BackdropComponent = ModalBackdrop,
|
96 | BackdropProps,
|
97 | classes: classesProp,
|
98 | className,
|
99 | closeAfterTransition = false,
|
100 | children,
|
101 | container,
|
102 | component,
|
103 | components = {},
|
104 | componentsProps = {},
|
105 | disableAutoFocus = false,
|
106 | disableEnforceFocus = false,
|
107 | disableEscapeKeyDown = false,
|
108 | disablePortal = false,
|
109 | disableRestoreFocus = false,
|
110 | disableScrollLock = false,
|
111 | hideBackdrop = false,
|
112 | keepMounted = false,
|
113 | onBackdropClick,
|
114 | onClose,
|
115 | onTransitionEnter,
|
116 | onTransitionExited,
|
117 | open,
|
118 | slotProps = {},
|
119 | slots = {},
|
120 |
|
121 | theme,
|
122 | ...other
|
123 | } = props;
|
124 | const propsWithDefaults = {
|
125 | ...props,
|
126 | closeAfterTransition,
|
127 | disableAutoFocus,
|
128 | disableEnforceFocus,
|
129 | disableEscapeKeyDown,
|
130 | disablePortal,
|
131 | disableRestoreFocus,
|
132 | disableScrollLock,
|
133 | hideBackdrop,
|
134 | keepMounted
|
135 | };
|
136 | const {
|
137 | getRootProps,
|
138 | getBackdropProps,
|
139 | getTransitionProps,
|
140 | portalRef,
|
141 | isTopModal,
|
142 | exited,
|
143 | hasTransition
|
144 | } = (0, _useModal.default)({
|
145 | ...propsWithDefaults,
|
146 | rootRef: ref
|
147 | });
|
148 | const ownerState = {
|
149 | ...propsWithDefaults,
|
150 | exited
|
151 | };
|
152 | const classes = useUtilityClasses(ownerState);
|
153 | const childProps = {};
|
154 | if (children.props.tabIndex === undefined) {
|
155 | childProps.tabIndex = '-1';
|
156 | }
|
157 |
|
158 |
|
159 | if (hasTransition) {
|
160 | const {
|
161 | onEnter,
|
162 | onExited
|
163 | } = getTransitionProps();
|
164 | childProps.onEnter = onEnter;
|
165 | childProps.onExited = onExited;
|
166 | }
|
167 | const externalForwardedProps = {
|
168 | ...other,
|
169 | slots: {
|
170 | root: components.Root,
|
171 | backdrop: components.Backdrop,
|
172 | ...slots
|
173 | },
|
174 | slotProps: {
|
175 | ...componentsProps,
|
176 | ...slotProps
|
177 | }
|
178 | };
|
179 | const [RootSlot, rootProps] = (0, _useSlot.default)('root', {
|
180 | elementType: ModalRoot,
|
181 | externalForwardedProps,
|
182 | getSlotProps: getRootProps,
|
183 | additionalProps: {
|
184 | ref,
|
185 | as: component
|
186 | },
|
187 | ownerState,
|
188 | className: (0, _clsx.default)(className, classes?.root, !ownerState.open && ownerState.exited && classes?.hidden)
|
189 | });
|
190 | const [BackdropSlot, backdropProps] = (0, _useSlot.default)('backdrop', {
|
191 | elementType: BackdropComponent,
|
192 | externalForwardedProps,
|
193 | additionalProps: BackdropProps,
|
194 | getSlotProps: otherHandlers => {
|
195 | return getBackdropProps({
|
196 | ...otherHandlers,
|
197 | onClick: event => {
|
198 | if (onBackdropClick) {
|
199 | onBackdropClick(event);
|
200 | }
|
201 | if (otherHandlers?.onClick) {
|
202 | otherHandlers.onClick(event);
|
203 | }
|
204 | }
|
205 | });
|
206 | },
|
207 | className: (0, _clsx.default)(BackdropProps?.className, classes?.backdrop),
|
208 | ownerState
|
209 | });
|
210 | const backdropRef = (0, _utils.useForkRef)(BackdropProps?.ref, backdropProps.ref);
|
211 | if (!keepMounted && !open && (!hasTransition || exited)) {
|
212 | return null;
|
213 | }
|
214 | return (0, _jsxRuntime.jsx)(_Portal.default, {
|
215 | ref: portalRef,
|
216 | container: container,
|
217 | disablePortal: disablePortal,
|
218 | children: (0, _jsxRuntime.jsxs)(RootSlot, {
|
219 | ...rootProps,
|
220 | children: [!hideBackdrop && BackdropComponent ? (0, _jsxRuntime.jsx)(BackdropSlot, {
|
221 | ...backdropProps,
|
222 | ref: backdropRef
|
223 | }) : null, (0, _jsxRuntime.jsx)(_Unstable_TrapFocus.default, {
|
224 | disableEnforceFocus: disableEnforceFocus,
|
225 | disableAutoFocus: disableAutoFocus,
|
226 | disableRestoreFocus: disableRestoreFocus,
|
227 | isEnabled: isTopModal,
|
228 | open: open,
|
229 | children: React.cloneElement(children, childProps)
|
230 | })]
|
231 | })
|
232 | });
|
233 | });
|
234 | process.env.NODE_ENV !== "production" ? Modal.propTypes = {
|
235 |
|
236 |
|
237 |
|
238 |
|
239 | |
240 |
|
241 |
|
242 |
|
243 |
|
244 |
|
245 |
|
246 |
|
247 |
|
248 |
|
249 |
|
250 |
|
251 |
|
252 |
|
253 | BackdropComponent: _propTypes.default.elementType,
|
254 | |
255 |
|
256 |
|
257 |
|
258 | BackdropProps: _propTypes.default.object,
|
259 | |
260 |
|
261 |
|
262 | children: _elementAcceptingRef.default.isRequired,
|
263 | |
264 |
|
265 |
|
266 | classes: _propTypes.default.object,
|
267 | |
268 |
|
269 |
|
270 | className: _propTypes.default.string,
|
271 | |
272 |
|
273 |
|
274 |
|
275 | closeAfterTransition: _propTypes.default.bool,
|
276 | |
277 |
|
278 |
|
279 |
|
280 | component: _propTypes.default.elementType,
|
281 | |
282 |
|
283 |
|
284 |
|
285 |
|
286 |
|
287 |
|
288 | components: _propTypes.default.shape({
|
289 | Backdrop: _propTypes.default.elementType,
|
290 | Root: _propTypes.default.elementType
|
291 | }),
|
292 | |
293 |
|
294 |
|
295 |
|
296 |
|
297 |
|
298 |
|
299 |
|
300 | componentsProps: _propTypes.default.shape({
|
301 | backdrop: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
302 | root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
|
303 | }),
|
304 | |
305 |
|
306 |
|
307 |
|
308 |
|
309 |
|
310 |
|
311 |
|
312 |
|
313 |
|
314 | container: _propTypes.default .oneOfType([_HTMLElementType.default, _propTypes.default.func]),
|
315 | |
316 |
|
317 |
|
318 |
|
319 |
|
320 |
|
321 |
|
322 |
|
323 |
|
324 | disableAutoFocus: _propTypes.default.bool,
|
325 | |
326 |
|
327 |
|
328 |
|
329 |
|
330 |
|
331 |
|
332 | disableEnforceFocus: _propTypes.default.bool,
|
333 | |
334 |
|
335 |
|
336 |
|
337 | disableEscapeKeyDown: _propTypes.default.bool,
|
338 | |
339 |
|
340 |
|
341 |
|
342 | disablePortal: _propTypes.default.bool,
|
343 | |
344 |
|
345 |
|
346 |
|
347 |
|
348 | disableRestoreFocus: _propTypes.default.bool,
|
349 | |
350 |
|
351 |
|
352 |
|
353 | disableScrollLock: _propTypes.default.bool,
|
354 | |
355 |
|
356 |
|
357 |
|
358 | hideBackdrop: _propTypes.default.bool,
|
359 | |
360 |
|
361 |
|
362 |
|
363 |
|
364 |
|
365 | keepMounted: _propTypes.default.bool,
|
366 | |
367 |
|
368 |
|
369 |
|
370 | onBackdropClick: _propTypes.default.func,
|
371 | |
372 |
|
373 |
|
374 |
|
375 |
|
376 |
|
377 |
|
378 | onClose: _propTypes.default.func,
|
379 | |
380 |
|
381 |
|
382 | onTransitionEnter: _propTypes.default.func,
|
383 | |
384 |
|
385 |
|
386 | onTransitionExited: _propTypes.default.func,
|
387 | |
388 |
|
389 |
|
390 | open: _propTypes.default.bool.isRequired,
|
391 | |
392 |
|
393 |
|
394 |
|
395 | slotProps: _propTypes.default.shape({
|
396 | backdrop: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
397 | root: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
|
398 | }),
|
399 | |
400 |
|
401 |
|
402 |
|
403 |
|
404 | slots: _propTypes.default.shape({
|
405 | backdrop: _propTypes.default.elementType,
|
406 | root: _propTypes.default.elementType
|
407 | }),
|
408 | |
409 |
|
410 |
|
411 | 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])
|
412 | } : void 0;
|
413 | var _default = exports.default = Modal; |
\ | No newline at end of file |