@dreamcommerce/aurora 3.0.0-243 → 3.0.0-245
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/build/cjs/packages/aurora/src/components/modal/components/modal/modal.js +92 -72
- package/build/cjs/packages/aurora/src/components/modal/components/modal/modal.js.map +1 -1
- package/build/esm/packages/aurora/src/components/modal/components/modal/modal.js +93 -73
- package/build/esm/packages/aurora/src/components/modal/components/modal/modal.js.map +1 -1
- package/package.json +1 -1
|
@@ -46,6 +46,10 @@ var Modal = function Modal(_ref) {
|
|
|
46
46
|
_useState6 = _rollupPluginBabelHelpers.slicedToArray(_useState5, 2),
|
|
47
47
|
hasScroll = _useState6[0],
|
|
48
48
|
setHasScroll = _useState6[1];
|
|
49
|
+
var scrollTimeoutRef = React.useRef();
|
|
50
|
+
var contentRef = React.useRef(null);
|
|
51
|
+
var modalRef = React.useRef(null);
|
|
52
|
+
var isInitializedRef = React.useRef(false);
|
|
49
53
|
var _useModalsContext = use_modals_context.useModalsContext(),
|
|
50
54
|
modalsManagerContainerSelector = _useModalsContext.modalsManagerContainerSelector,
|
|
51
55
|
addModal = _useModalsContext.addModal,
|
|
@@ -54,94 +58,107 @@ var Modal = function Modal(_ref) {
|
|
|
54
58
|
showModal = _useModalsContext.showModal,
|
|
55
59
|
hideAllModals = _useModalsContext.hideAllModals;
|
|
56
60
|
var $modalsManagerContainer = document.querySelector(modalsManagerContainerSelector);
|
|
57
|
-
var modalRef = /*#__PURE__*/React__default['default'].createRef();
|
|
58
|
-
var contentRef = React__default['default'].useRef(null);
|
|
59
61
|
var modal = getModal(name);
|
|
60
62
|
var _useState7 = React.useState(false),
|
|
61
63
|
_useState8 = _rollupPluginBabelHelpers.slicedToArray(_useState7, 2),
|
|
62
64
|
renderModal = _useState8[0],
|
|
63
65
|
setRenderModal = _useState8[1];
|
|
64
|
-
var closeModal = function
|
|
66
|
+
var closeModal = React.useCallback(function () {
|
|
65
67
|
hideAllModalsOnClose ? hideAllModals(onCloseAction) : hideModal(name, onCloseAction);
|
|
66
|
-
};
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
var
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
handleScroll();
|
|
82
|
-
el.addEventListener('scroll', handleScroll);
|
|
68
|
+
}, [hideAllModalsOnClose, hideAllModals, hideModal, name, onCloseAction]);
|
|
69
|
+
var checkScroll = React.useCallback(function () {
|
|
70
|
+
var contentElement = contentRef.current;
|
|
71
|
+
if (!contentElement) return;
|
|
72
|
+
var scrollTop = contentElement.scrollTop,
|
|
73
|
+
scrollHeight = contentElement.scrollHeight,
|
|
74
|
+
clientHeight = contentElement.clientHeight;
|
|
75
|
+
var atBottom = Math.abs(scrollTop + clientHeight - scrollHeight) < 5;
|
|
76
|
+
var hasScrollableContent = scrollHeight > clientHeight;
|
|
77
|
+
setIsScrolledToBottom(atBottom);
|
|
78
|
+
setHasScroll(hasScrollableContent);
|
|
79
|
+
}, []);
|
|
80
|
+
var handleScroll = React.useCallback(function () {
|
|
81
|
+
if (scrollTimeoutRef.current) {
|
|
82
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
scrollTimeoutRef.current = setTimeout(checkScroll, 50);
|
|
85
|
+
}, [checkScroll]);
|
|
86
|
+
// Handle scroll detection
|
|
85
87
|
React.useEffect(function () {
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
if (!renderModal || !visibleClass) return;
|
|
89
|
+
var contentElement = contentRef.current;
|
|
90
|
+
if (!contentElement) return;
|
|
91
|
+
checkScroll();
|
|
92
|
+
contentElement.addEventListener('scroll', handleScroll);
|
|
89
93
|
return function () {
|
|
90
|
-
|
|
91
|
-
(
|
|
94
|
+
contentElement.removeEventListener('scroll', handleScroll);
|
|
95
|
+
if (scrollTimeoutRef.current) {
|
|
96
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
97
|
+
}
|
|
92
98
|
};
|
|
93
|
-
}, [renderModal]);
|
|
94
|
-
|
|
95
|
-
refs: [modalRef],
|
|
96
|
-
callback: function callback() {
|
|
97
|
-
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === modal_constants.MODAL_VISIBILITY_STATE.visible) hideAllModalsOnClose ? hideAllModals(onCloseAction) : hideModal(name, onCloseAction);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
99
|
+
}, [renderModal, visibleClass, handleScroll, checkScroll]);
|
|
100
|
+
// Initial setup
|
|
100
101
|
React.useEffect(function () {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
if (!isInitializedRef.current) {
|
|
103
|
+
addModal({
|
|
104
|
+
name: name,
|
|
105
|
+
visibilityState: modal_constants.MODAL_VISIBILITY_STATE.none,
|
|
106
|
+
width: width
|
|
107
|
+
});
|
|
108
|
+
if (initiallyVisible) showModal(name);
|
|
109
|
+
isInitializedRef.current = true;
|
|
110
|
+
}
|
|
107
111
|
return function () {
|
|
108
|
-
closeModal();
|
|
112
|
+
return closeModal();
|
|
109
113
|
};
|
|
110
114
|
}, []);
|
|
115
|
+
// Handle visibility changes
|
|
111
116
|
React.useEffect(function () {
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
117
|
+
var timeoutId;
|
|
118
|
+
switch (modal === null || modal === void 0 ? void 0 : modal.visibilityState) {
|
|
119
|
+
case modal_constants.MODAL_VISIBILITY_STATE.visible:
|
|
120
|
+
setRenderModal(true);
|
|
121
|
+
timeoutId = setTimeout(function () {
|
|
122
|
+
return setVisibleClass(true);
|
|
123
|
+
}, modal_constants.MODAL_SLIDE_FADE_DURATION);
|
|
124
|
+
break;
|
|
125
|
+
case modal_constants.MODAL_VISIBILITY_STATE.hidden:
|
|
126
|
+
setVisibleClass(false);
|
|
127
|
+
break;
|
|
128
|
+
case modal_constants.MODAL_VISIBILITY_STATE.none:
|
|
129
|
+
setVisibleClass(false);
|
|
130
|
+
timeoutId = setTimeout(function () {
|
|
131
|
+
return setRenderModal(false);
|
|
132
|
+
}, modal_constants.MODAL_SLIDE_FADE_DURATION);
|
|
133
|
+
break;
|
|
128
134
|
}
|
|
129
135
|
return function () {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
};
|
|
133
|
-
}, [modal]);
|
|
134
|
-
React.useEffect(function () {
|
|
135
|
-
var handleKeyDown = function handleKeyDown(event) {
|
|
136
|
-
if (event.key === 'Escape' && closeOnEscButton) {
|
|
137
|
-
closeModal();
|
|
136
|
+
if (timeoutId) {
|
|
137
|
+
clearTimeout(timeoutId);
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
|
+
}, [modal === null || modal === void 0 ? void 0 : modal.visibilityState]);
|
|
141
|
+
// Handle keyboard events
|
|
142
|
+
var handleKeyDown = React.useCallback(function (event) {
|
|
143
|
+
if (event.key === 'Escape' && closeOnEscButton) {
|
|
144
|
+
closeModal();
|
|
145
|
+
}
|
|
146
|
+
}, [closeOnEscButton, closeModal]);
|
|
147
|
+
React.useEffect(function () {
|
|
140
148
|
document.addEventListener('keydown', handleKeyDown);
|
|
141
149
|
return function () {
|
|
142
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
150
|
+
return document.removeEventListener('keydown', handleKeyDown);
|
|
143
151
|
};
|
|
144
|
-
}, []);
|
|
152
|
+
}, [handleKeyDown]);
|
|
153
|
+
// Handle outside click
|
|
154
|
+
use_click_outside.useClickOutside({
|
|
155
|
+
refs: [modalRef],
|
|
156
|
+
callback: function callback() {
|
|
157
|
+
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === modal_constants.MODAL_VISIBILITY_STATE.visible) {
|
|
158
|
+
closeModal();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
145
162
|
if (!$modalsManagerContainer) return null;
|
|
146
163
|
return renderModal ? /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/React__default['default'].createElement("div", {
|
|
147
164
|
ref: modalRef,
|
|
@@ -150,19 +167,22 @@ var Modal = function Modal(_ref) {
|
|
|
150
167
|
className: cn.cn(modal_variants.modalVariants({
|
|
151
168
|
width: width
|
|
152
169
|
}), visibleClass ? 'aurora-opacity-100 aurora-animate-modal-slide-in' : 'aurora-opacity-0 aurora-animate-modal-slide-out')
|
|
153
|
-
}, header
|
|
170
|
+
}, header && (/*#__PURE__*/React__default['default'].createElement(modal_header.ModalHeader, {
|
|
154
171
|
hasCloseIcon: modal_utils.ModalUtils.isHeaderObject(header) ? (_header$hasCloseIcon = header.hasCloseIcon) !== null && _header$hasCloseIcon !== void 0 ? _header$hasCloseIcon : true : true,
|
|
155
172
|
onClose: closeModal
|
|
156
|
-
}, modal_utils.ModalUtils.isHeaderObject(header) ? header.content : header))
|
|
157
|
-
ref:
|
|
173
|
+
}, modal_utils.ModalUtils.isHeaderObject(header) ? header.content : header)), children && (/*#__PURE__*/React__default['default'].createElement("div", {
|
|
174
|
+
ref: contentRef,
|
|
158
175
|
className: cn.cn("aurora-overflow-y-auto custom-scrollbar first:aurora-mt-6 last:aurora-mb-6 aurora-px-6", {
|
|
159
176
|
'aurora-pb-6': footer && hasScroll
|
|
160
|
-
})
|
|
161
|
-
|
|
177
|
+
}),
|
|
178
|
+
style: {
|
|
179
|
+
maxHeight: 'calc(100vh - 200px)'
|
|
180
|
+
}
|
|
181
|
+
}, children)), footer && (/*#__PURE__*/React__default['default'].createElement(modal_footer.ModalFooter, {
|
|
162
182
|
className: cn.cn('', {
|
|
163
183
|
'aurora-border-t': hasScroll && !isScrolledToBottom
|
|
164
184
|
})
|
|
165
|
-
}, footer))
|
|
185
|
+
}, footer))), $modalsManagerContainer) : null;
|
|
166
186
|
};
|
|
167
187
|
|
|
168
188
|
exports.Modal = Modal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
1
|
+
import React, { useState, useRef, useCallback, useEffect } from 'react';
|
|
2
2
|
import { slicedToArray as _slicedToArray } from '../../../../../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
3
3
|
import { cn } from '../../../../utilities/cn.js';
|
|
4
4
|
import { useClickOutside } from '../../../../hooks/use_click_outside.js';
|
|
@@ -38,6 +38,10 @@ var Modal = function Modal(_ref) {
|
|
|
38
38
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
39
39
|
hasScroll = _useState6[0],
|
|
40
40
|
setHasScroll = _useState6[1];
|
|
41
|
+
var scrollTimeoutRef = useRef();
|
|
42
|
+
var contentRef = useRef(null);
|
|
43
|
+
var modalRef = useRef(null);
|
|
44
|
+
var isInitializedRef = useRef(false);
|
|
41
45
|
var _useModalsContext = useModalsContext(),
|
|
42
46
|
modalsManagerContainerSelector = _useModalsContext.modalsManagerContainerSelector,
|
|
43
47
|
addModal = _useModalsContext.addModal,
|
|
@@ -46,94 +50,107 @@ var Modal = function Modal(_ref) {
|
|
|
46
50
|
showModal = _useModalsContext.showModal,
|
|
47
51
|
hideAllModals = _useModalsContext.hideAllModals;
|
|
48
52
|
var $modalsManagerContainer = document.querySelector(modalsManagerContainerSelector);
|
|
49
|
-
var modalRef = /*#__PURE__*/React.createRef();
|
|
50
|
-
var contentRef = React.useRef(null);
|
|
51
53
|
var modal = getModal(name);
|
|
52
54
|
var _useState7 = useState(false),
|
|
53
55
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
54
56
|
renderModal = _useState8[0],
|
|
55
57
|
setRenderModal = _useState8[1];
|
|
56
|
-
var closeModal = function
|
|
58
|
+
var closeModal = useCallback(function () {
|
|
57
59
|
hideAllModalsOnClose ? hideAllModals(onCloseAction) : hideModal(name, onCloseAction);
|
|
58
|
-
};
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
};
|
|
70
|
-
var
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
handleScroll();
|
|
74
|
-
el.addEventListener('scroll', handleScroll);
|
|
60
|
+
}, [hideAllModalsOnClose, hideAllModals, hideModal, name, onCloseAction]);
|
|
61
|
+
var checkScroll = useCallback(function () {
|
|
62
|
+
var contentElement = contentRef.current;
|
|
63
|
+
if (!contentElement) return;
|
|
64
|
+
var scrollTop = contentElement.scrollTop,
|
|
65
|
+
scrollHeight = contentElement.scrollHeight,
|
|
66
|
+
clientHeight = contentElement.clientHeight;
|
|
67
|
+
var atBottom = Math.abs(scrollTop + clientHeight - scrollHeight) < 5;
|
|
68
|
+
var hasScrollableContent = scrollHeight > clientHeight;
|
|
69
|
+
setIsScrolledToBottom(atBottom);
|
|
70
|
+
setHasScroll(hasScrollableContent);
|
|
71
|
+
}, []);
|
|
72
|
+
var handleScroll = useCallback(function () {
|
|
73
|
+
if (scrollTimeoutRef.current) {
|
|
74
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
scrollTimeoutRef.current = setTimeout(checkScroll, 50);
|
|
77
|
+
}, [checkScroll]);
|
|
78
|
+
// Handle scroll detection
|
|
77
79
|
useEffect(function () {
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
if (!renderModal || !visibleClass) return;
|
|
81
|
+
var contentElement = contentRef.current;
|
|
82
|
+
if (!contentElement) return;
|
|
83
|
+
checkScroll();
|
|
84
|
+
contentElement.addEventListener('scroll', handleScroll);
|
|
81
85
|
return function () {
|
|
82
|
-
|
|
83
|
-
(
|
|
86
|
+
contentElement.removeEventListener('scroll', handleScroll);
|
|
87
|
+
if (scrollTimeoutRef.current) {
|
|
88
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
89
|
+
}
|
|
84
90
|
};
|
|
85
|
-
}, [renderModal]);
|
|
86
|
-
|
|
87
|
-
refs: [modalRef],
|
|
88
|
-
callback: function callback() {
|
|
89
|
-
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === MODAL_VISIBILITY_STATE.visible) hideAllModalsOnClose ? hideAllModals(onCloseAction) : hideModal(name, onCloseAction);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
91
|
+
}, [renderModal, visibleClass, handleScroll, checkScroll]);
|
|
92
|
+
// Initial setup
|
|
92
93
|
useEffect(function () {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
if (!isInitializedRef.current) {
|
|
95
|
+
addModal({
|
|
96
|
+
name: name,
|
|
97
|
+
visibilityState: MODAL_VISIBILITY_STATE.none,
|
|
98
|
+
width: width
|
|
99
|
+
});
|
|
100
|
+
if (initiallyVisible) showModal(name);
|
|
101
|
+
isInitializedRef.current = true;
|
|
102
|
+
}
|
|
99
103
|
return function () {
|
|
100
|
-
closeModal();
|
|
104
|
+
return closeModal();
|
|
101
105
|
};
|
|
102
106
|
}, []);
|
|
107
|
+
// Handle visibility changes
|
|
103
108
|
useEffect(function () {
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
var timeoutId;
|
|
110
|
+
switch (modal === null || modal === void 0 ? void 0 : modal.visibilityState) {
|
|
111
|
+
case MODAL_VISIBILITY_STATE.visible:
|
|
112
|
+
setRenderModal(true);
|
|
113
|
+
timeoutId = setTimeout(function () {
|
|
114
|
+
return setVisibleClass(true);
|
|
115
|
+
}, MODAL_SLIDE_FADE_DURATION);
|
|
116
|
+
break;
|
|
117
|
+
case MODAL_VISIBILITY_STATE.hidden:
|
|
118
|
+
setVisibleClass(false);
|
|
119
|
+
break;
|
|
120
|
+
case MODAL_VISIBILITY_STATE.none:
|
|
121
|
+
setVisibleClass(false);
|
|
122
|
+
timeoutId = setTimeout(function () {
|
|
123
|
+
return setRenderModal(false);
|
|
124
|
+
}, MODAL_SLIDE_FADE_DURATION);
|
|
125
|
+
break;
|
|
120
126
|
}
|
|
121
127
|
return function () {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
}, [modal]);
|
|
126
|
-
useEffect(function () {
|
|
127
|
-
var handleKeyDown = function handleKeyDown(event) {
|
|
128
|
-
if (event.key === 'Escape' && closeOnEscButton) {
|
|
129
|
-
closeModal();
|
|
128
|
+
if (timeoutId) {
|
|
129
|
+
clearTimeout(timeoutId);
|
|
130
130
|
}
|
|
131
131
|
};
|
|
132
|
+
}, [modal === null || modal === void 0 ? void 0 : modal.visibilityState]);
|
|
133
|
+
// Handle keyboard events
|
|
134
|
+
var handleKeyDown = useCallback(function (event) {
|
|
135
|
+
if (event.key === 'Escape' && closeOnEscButton) {
|
|
136
|
+
closeModal();
|
|
137
|
+
}
|
|
138
|
+
}, [closeOnEscButton, closeModal]);
|
|
139
|
+
useEffect(function () {
|
|
132
140
|
document.addEventListener('keydown', handleKeyDown);
|
|
133
141
|
return function () {
|
|
134
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
142
|
+
return document.removeEventListener('keydown', handleKeyDown);
|
|
135
143
|
};
|
|
136
|
-
}, []);
|
|
144
|
+
}, [handleKeyDown]);
|
|
145
|
+
// Handle outside click
|
|
146
|
+
useClickOutside({
|
|
147
|
+
refs: [modalRef],
|
|
148
|
+
callback: function callback() {
|
|
149
|
+
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === MODAL_VISIBILITY_STATE.visible) {
|
|
150
|
+
closeModal();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
137
154
|
if (!$modalsManagerContainer) return null;
|
|
138
155
|
return renderModal ? /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement("div", {
|
|
139
156
|
ref: modalRef,
|
|
@@ -142,19 +159,22 @@ var Modal = function Modal(_ref) {
|
|
|
142
159
|
className: cn(modalVariants({
|
|
143
160
|
width: width
|
|
144
161
|
}), visibleClass ? 'aurora-opacity-100 aurora-animate-modal-slide-in' : 'aurora-opacity-0 aurora-animate-modal-slide-out')
|
|
145
|
-
}, header
|
|
162
|
+
}, header && (/*#__PURE__*/React.createElement(ModalHeader, {
|
|
146
163
|
hasCloseIcon: ModalUtils.isHeaderObject(header) ? (_header$hasCloseIcon = header.hasCloseIcon) !== null && _header$hasCloseIcon !== void 0 ? _header$hasCloseIcon : true : true,
|
|
147
164
|
onClose: closeModal
|
|
148
|
-
}, ModalUtils.isHeaderObject(header) ? header.content : header))
|
|
149
|
-
ref:
|
|
165
|
+
}, ModalUtils.isHeaderObject(header) ? header.content : header)), children && (/*#__PURE__*/React.createElement("div", {
|
|
166
|
+
ref: contentRef,
|
|
150
167
|
className: cn("aurora-overflow-y-auto custom-scrollbar first:aurora-mt-6 last:aurora-mb-6 aurora-px-6", {
|
|
151
168
|
'aurora-pb-6': footer && hasScroll
|
|
152
|
-
})
|
|
153
|
-
|
|
169
|
+
}),
|
|
170
|
+
style: {
|
|
171
|
+
maxHeight: 'calc(100vh - 200px)'
|
|
172
|
+
}
|
|
173
|
+
}, children)), footer && (/*#__PURE__*/React.createElement(ModalFooter, {
|
|
154
174
|
className: cn('', {
|
|
155
175
|
'aurora-border-t': hasScroll && !isScrolledToBottom
|
|
156
176
|
})
|
|
157
|
-
}, footer))
|
|
177
|
+
}, footer))), $modalsManagerContainer) : null;
|
|
158
178
|
};
|
|
159
179
|
|
|
160
180
|
export { Modal };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|