UNPKG

3.49 kBJavaScriptView Raw
1import { oneOfType, func, node, string, bool, oneOf } from 'prop-types';
2import { animatePropTypes, restrictHidePropTypes, animateDefaultProps, restrictDefaultProps } from './types/props.js';
3import { a as _objectSpread, c as _objectWithoutPropertiesLoose, g as _extends } from './chunk-1f79df9b.js';
4import { createElement, Fragment } from 'react';
5import Portal from './Portal/index.js';
6import Backdrop from './Backdrop/index.js';
7import { a as isFunction } from './chunk-5c9bbccf.js';
8import { a as TrapFocus } from './chunk-df6ef69d.js';
9import ModalContainer from './Modal/ModalContainer.js';
10import _Modal from './Modal/styled.js';
11import ModalHide from './Modal/ModalHide.js';
12import ModalShow from './Modal/ModalShow.js';
13
14var Modal = function Modal(_ref) {
15 var children = _ref.children,
16 delay = _ref.delay,
17 duration = _ref.duration,
18 fade = _ref.fade,
19 hide = _ref.hide,
20 hideOnEsc = _ref.hideOnEsc,
21 hideOnClickOutside = _ref.hideOnClickOutside,
22 isVisible = _ref.isVisible,
23 kind = _ref.kind,
24 _ref$renderWrapper = _ref.renderWrapper,
25 renderWrapper = _ref$renderWrapper === void 0 ? function (children) {
26 return children;
27 } : _ref$renderWrapper,
28 showActionButtons = _ref.showActionButtons,
29 showCloseButton = _ref.showCloseButton,
30 props = _objectWithoutPropertiesLoose(_ref, ["children", "delay", "duration", "fade", "hide", "hideOnEsc", "hideOnClickOutside", "isVisible", "kind", "renderWrapper", "showActionButtons", "showCloseButton"]);
31
32 return createElement(Portal, null, createElement(TrapFocus, {
33 isActive: isVisible,
34 usesPortal: true
35 }, function (_ref2) {
36 var fallbackFocusRef = _ref2.fallbackFocusRef,
37 initialFocusRef = _ref2.initialFocusRef;
38 return createElement(Fragment, null, createElement(Backdrop, {
39 delay: delay,
40 duration: duration,
41 expand: undefined,
42 hide: hideOnClickOutside && kind !== 'alert' ? hide : undefined,
43 fade: fade,
44 hideOnEsc: kind === 'alert' ? false : hideOnEsc,
45 isVisible: isVisible,
46 slide: undefined,
47 use: hideOnClickOutside && kind !== 'alert' ? ModalHide : undefined
48 }), createElement(_Modal, _extends({
49 "aria-modal": "true",
50 delay: delay,
51 duration: duration,
52 fade: fade,
53 hideOnEsc: kind === 'alert' ? false : hideOnEsc,
54 hideOnClickOutside: kind === 'alert' ? false : hideOnClickOutside,
55 isVisible: isVisible
56 }, props), renderWrapper(isFunction(children) ? children({
57 fallbackFocusRef: fallbackFocusRef,
58 initialFocusRef: initialFocusRef
59 }) : children)));
60 }));
61};
62var modalPropTypes = _objectSpread({}, animatePropTypes, restrictHidePropTypes, {
63 children: oneOfType([func, node]).isRequired,
64 className: string,
65 isVisible: bool,
66 hide: func,
67 kind: oneOf(['alert']),
68 showActionButtons: bool,
69 showCloseButton: bool,
70 renderWrapper: func
71});
72Modal.propTypes = modalPropTypes;
73var modalDefaultProps = _objectSpread({}, animateDefaultProps, restrictDefaultProps, {
74 className: undefined,
75 isVisible: false,
76 kind: undefined,
77 showActionButtons: false,
78 showCloseButton: false,
79 hideOnClickOutside: true,
80 hideOnEsc: true,
81 renderWrapper: function renderWrapper(children) {
82 return children;
83 }
84});
85Modal.defaultProps = modalDefaultProps;
86Modal.Container = ModalContainer;
87Modal.Hide = ModalHide;
88Modal.Show = ModalShow;
89var C = Modal;
90
91export { modalPropTypes as a, modalDefaultProps as b, C as c };