@dreamcommerce/aurora 3.0.0-243 → 3.0.0-244
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 +95 -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 +96 -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,110 @@ 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 and modal state
|
|
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);
|
|
93
|
+
var resizeObserver = new ResizeObserver(checkScroll);
|
|
94
|
+
resizeObserver.observe(contentElement);
|
|
89
95
|
return function () {
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
contentElement.removeEventListener('scroll', handleScroll);
|
|
97
|
+
resizeObserver.disconnect();
|
|
98
|
+
if (scrollTimeoutRef.current) {
|
|
99
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
100
|
+
}
|
|
92
101
|
};
|
|
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
|
-
});
|
|
102
|
+
}, [renderModal, visibleClass, handleScroll, checkScroll]);
|
|
103
|
+
// Initial setup
|
|
100
104
|
React.useEffect(function () {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
if (!isInitializedRef.current) {
|
|
106
|
+
addModal({
|
|
107
|
+
name: name,
|
|
108
|
+
visibilityState: modal_constants.MODAL_VISIBILITY_STATE.none,
|
|
109
|
+
width: width
|
|
110
|
+
});
|
|
111
|
+
if (initiallyVisible) showModal(name);
|
|
112
|
+
isInitializedRef.current = true;
|
|
113
|
+
}
|
|
107
114
|
return function () {
|
|
108
|
-
closeModal();
|
|
115
|
+
return closeModal();
|
|
109
116
|
};
|
|
110
117
|
}, []);
|
|
118
|
+
// Handle visibility changes
|
|
111
119
|
React.useEffect(function () {
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
var timeoutId;
|
|
121
|
+
switch (modal === null || modal === void 0 ? void 0 : modal.visibilityState) {
|
|
122
|
+
case modal_constants.MODAL_VISIBILITY_STATE.visible:
|
|
123
|
+
setRenderModal(true);
|
|
124
|
+
timeoutId = setTimeout(function () {
|
|
125
|
+
return setVisibleClass(true);
|
|
126
|
+
}, modal_constants.MODAL_SLIDE_FADE_DURATION);
|
|
127
|
+
break;
|
|
128
|
+
case modal_constants.MODAL_VISIBILITY_STATE.hidden:
|
|
129
|
+
setVisibleClass(false);
|
|
130
|
+
break;
|
|
131
|
+
case modal_constants.MODAL_VISIBILITY_STATE.none:
|
|
132
|
+
setVisibleClass(false);
|
|
133
|
+
timeoutId = setTimeout(function () {
|
|
134
|
+
return setRenderModal(false);
|
|
135
|
+
}, modal_constants.MODAL_SLIDE_FADE_DURATION);
|
|
136
|
+
break;
|
|
128
137
|
}
|
|
129
138
|
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();
|
|
139
|
+
if (timeoutId) {
|
|
140
|
+
clearTimeout(timeoutId);
|
|
138
141
|
}
|
|
139
142
|
};
|
|
143
|
+
}, [modal === null || modal === void 0 ? void 0 : modal.visibilityState]);
|
|
144
|
+
// Handle keyboard events
|
|
145
|
+
var handleKeyDown = React.useCallback(function (event) {
|
|
146
|
+
if (event.key === 'Escape' && closeOnEscButton) {
|
|
147
|
+
closeModal();
|
|
148
|
+
}
|
|
149
|
+
}, [closeOnEscButton, closeModal]);
|
|
150
|
+
React.useEffect(function () {
|
|
140
151
|
document.addEventListener('keydown', handleKeyDown);
|
|
141
152
|
return function () {
|
|
142
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
153
|
+
return document.removeEventListener('keydown', handleKeyDown);
|
|
143
154
|
};
|
|
144
|
-
}, []);
|
|
155
|
+
}, [handleKeyDown]);
|
|
156
|
+
// Handle outside click
|
|
157
|
+
use_click_outside.useClickOutside({
|
|
158
|
+
refs: [modalRef],
|
|
159
|
+
callback: function callback() {
|
|
160
|
+
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === modal_constants.MODAL_VISIBILITY_STATE.visible) {
|
|
161
|
+
closeModal();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
});
|
|
145
165
|
if (!$modalsManagerContainer) return null;
|
|
146
166
|
return renderModal ? /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/React__default['default'].createElement("div", {
|
|
147
167
|
ref: modalRef,
|
|
@@ -150,19 +170,22 @@ var Modal = function Modal(_ref) {
|
|
|
150
170
|
className: cn.cn(modal_variants.modalVariants({
|
|
151
171
|
width: width
|
|
152
172
|
}), visibleClass ? 'aurora-opacity-100 aurora-animate-modal-slide-in' : 'aurora-opacity-0 aurora-animate-modal-slide-out')
|
|
153
|
-
}, header
|
|
173
|
+
}, header && (/*#__PURE__*/React__default['default'].createElement(modal_header.ModalHeader, {
|
|
154
174
|
hasCloseIcon: modal_utils.ModalUtils.isHeaderObject(header) ? (_header$hasCloseIcon = header.hasCloseIcon) !== null && _header$hasCloseIcon !== void 0 ? _header$hasCloseIcon : true : true,
|
|
155
175
|
onClose: closeModal
|
|
156
|
-
}, modal_utils.ModalUtils.isHeaderObject(header) ? header.content : header))
|
|
157
|
-
ref:
|
|
176
|
+
}, modal_utils.ModalUtils.isHeaderObject(header) ? header.content : header)), children && (/*#__PURE__*/React__default['default'].createElement("div", {
|
|
177
|
+
ref: contentRef,
|
|
158
178
|
className: cn.cn("aurora-overflow-y-auto custom-scrollbar first:aurora-mt-6 last:aurora-mb-6 aurora-px-6", {
|
|
159
179
|
'aurora-pb-6': footer && hasScroll
|
|
160
|
-
})
|
|
161
|
-
|
|
180
|
+
}),
|
|
181
|
+
style: {
|
|
182
|
+
maxHeight: 'calc(100vh - 200px)'
|
|
183
|
+
}
|
|
184
|
+
}, children)), footer && (/*#__PURE__*/React__default['default'].createElement(modal_footer.ModalFooter, {
|
|
162
185
|
className: cn.cn('', {
|
|
163
186
|
'aurora-border-t': hasScroll && !isScrolledToBottom
|
|
164
187
|
})
|
|
165
|
-
}, footer))
|
|
188
|
+
}, footer))), $modalsManagerContainer) : null;
|
|
166
189
|
};
|
|
167
190
|
|
|
168
191
|
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;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,110 @@ 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 and modal state
|
|
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);
|
|
85
|
+
var resizeObserver = new ResizeObserver(checkScroll);
|
|
86
|
+
resizeObserver.observe(contentElement);
|
|
81
87
|
return function () {
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
contentElement.removeEventListener('scroll', handleScroll);
|
|
89
|
+
resizeObserver.disconnect();
|
|
90
|
+
if (scrollTimeoutRef.current) {
|
|
91
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
92
|
+
}
|
|
84
93
|
};
|
|
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
|
-
});
|
|
94
|
+
}, [renderModal, visibleClass, handleScroll, checkScroll]);
|
|
95
|
+
// Initial setup
|
|
92
96
|
useEffect(function () {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
if (!isInitializedRef.current) {
|
|
98
|
+
addModal({
|
|
99
|
+
name: name,
|
|
100
|
+
visibilityState: MODAL_VISIBILITY_STATE.none,
|
|
101
|
+
width: width
|
|
102
|
+
});
|
|
103
|
+
if (initiallyVisible) showModal(name);
|
|
104
|
+
isInitializedRef.current = true;
|
|
105
|
+
}
|
|
99
106
|
return function () {
|
|
100
|
-
closeModal();
|
|
107
|
+
return closeModal();
|
|
101
108
|
};
|
|
102
109
|
}, []);
|
|
110
|
+
// Handle visibility changes
|
|
103
111
|
useEffect(function () {
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
var timeoutId;
|
|
113
|
+
switch (modal === null || modal === void 0 ? void 0 : modal.visibilityState) {
|
|
114
|
+
case MODAL_VISIBILITY_STATE.visible:
|
|
115
|
+
setRenderModal(true);
|
|
116
|
+
timeoutId = setTimeout(function () {
|
|
117
|
+
return setVisibleClass(true);
|
|
118
|
+
}, MODAL_SLIDE_FADE_DURATION);
|
|
119
|
+
break;
|
|
120
|
+
case MODAL_VISIBILITY_STATE.hidden:
|
|
121
|
+
setVisibleClass(false);
|
|
122
|
+
break;
|
|
123
|
+
case MODAL_VISIBILITY_STATE.none:
|
|
124
|
+
setVisibleClass(false);
|
|
125
|
+
timeoutId = setTimeout(function () {
|
|
126
|
+
return setRenderModal(false);
|
|
127
|
+
}, MODAL_SLIDE_FADE_DURATION);
|
|
128
|
+
break;
|
|
120
129
|
}
|
|
121
130
|
return function () {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
}, [modal]);
|
|
126
|
-
useEffect(function () {
|
|
127
|
-
var handleKeyDown = function handleKeyDown(event) {
|
|
128
|
-
if (event.key === 'Escape' && closeOnEscButton) {
|
|
129
|
-
closeModal();
|
|
131
|
+
if (timeoutId) {
|
|
132
|
+
clearTimeout(timeoutId);
|
|
130
133
|
}
|
|
131
134
|
};
|
|
135
|
+
}, [modal === null || modal === void 0 ? void 0 : modal.visibilityState]);
|
|
136
|
+
// Handle keyboard events
|
|
137
|
+
var handleKeyDown = useCallback(function (event) {
|
|
138
|
+
if (event.key === 'Escape' && closeOnEscButton) {
|
|
139
|
+
closeModal();
|
|
140
|
+
}
|
|
141
|
+
}, [closeOnEscButton, closeModal]);
|
|
142
|
+
useEffect(function () {
|
|
132
143
|
document.addEventListener('keydown', handleKeyDown);
|
|
133
144
|
return function () {
|
|
134
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
145
|
+
return document.removeEventListener('keydown', handleKeyDown);
|
|
135
146
|
};
|
|
136
|
-
}, []);
|
|
147
|
+
}, [handleKeyDown]);
|
|
148
|
+
// Handle outside click
|
|
149
|
+
useClickOutside({
|
|
150
|
+
refs: [modalRef],
|
|
151
|
+
callback: function callback() {
|
|
152
|
+
if (closeOnOutsideClick && (modal === null || modal === void 0 ? void 0 : modal.visibilityState) === MODAL_VISIBILITY_STATE.visible) {
|
|
153
|
+
closeModal();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
137
157
|
if (!$modalsManagerContainer) return null;
|
|
138
158
|
return renderModal ? /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement("div", {
|
|
139
159
|
ref: modalRef,
|
|
@@ -142,19 +162,22 @@ var Modal = function Modal(_ref) {
|
|
|
142
162
|
className: cn(modalVariants({
|
|
143
163
|
width: width
|
|
144
164
|
}), visibleClass ? 'aurora-opacity-100 aurora-animate-modal-slide-in' : 'aurora-opacity-0 aurora-animate-modal-slide-out')
|
|
145
|
-
}, header
|
|
165
|
+
}, header && (/*#__PURE__*/React.createElement(ModalHeader, {
|
|
146
166
|
hasCloseIcon: ModalUtils.isHeaderObject(header) ? (_header$hasCloseIcon = header.hasCloseIcon) !== null && _header$hasCloseIcon !== void 0 ? _header$hasCloseIcon : true : true,
|
|
147
167
|
onClose: closeModal
|
|
148
|
-
}, ModalUtils.isHeaderObject(header) ? header.content : header))
|
|
149
|
-
ref:
|
|
168
|
+
}, ModalUtils.isHeaderObject(header) ? header.content : header)), children && (/*#__PURE__*/React.createElement("div", {
|
|
169
|
+
ref: contentRef,
|
|
150
170
|
className: cn("aurora-overflow-y-auto custom-scrollbar first:aurora-mt-6 last:aurora-mb-6 aurora-px-6", {
|
|
151
171
|
'aurora-pb-6': footer && hasScroll
|
|
152
|
-
})
|
|
153
|
-
|
|
172
|
+
}),
|
|
173
|
+
style: {
|
|
174
|
+
maxHeight: 'calc(100vh - 200px)'
|
|
175
|
+
}
|
|
176
|
+
}, children)), footer && (/*#__PURE__*/React.createElement(ModalFooter, {
|
|
154
177
|
className: cn('', {
|
|
155
178
|
'aurora-border-t': hasScroll && !isScrolledToBottom
|
|
156
179
|
})
|
|
157
|
-
}, footer))
|
|
180
|
+
}, footer))), $modalsManagerContainer) : null;
|
|
158
181
|
};
|
|
159
182
|
|
|
160
183
|
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;AACA;AACA;AACA;"}
|