@expressms/smartapp-ui 3.0.0-alpha.85 → 3.0.0-alpha.87
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/main/hooks/useModal.d.ts +1 -0
- package/build/main/hooks/useModal.js +126 -60
- package/build/main/hooks/useModal.js.map +1 -1
- package/build/main/styles/styles.scss +1 -1
- package/build/main//321/201omponents/Calendar/Calendar.js +3 -2
- package/build/main//321/201omponents/Calendar/Calendar.js.map +1 -1
- package/build/main//321/201omponents/Calendar/types.d.ts +3 -1
- package/build/main//321/201omponents/Modal/Modal.js +18 -3
- package/build/main//321/201omponents/Modal/Modal.js.map +1 -1
- package/package.json +2 -3
|
@@ -23,5 +23,6 @@ export declare const useModal: ({ platform, isModalOpen, isClosableOutside, isDi
|
|
|
23
23
|
shouldUseBottomSheet: boolean;
|
|
24
24
|
renderModal: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element | null;
|
|
25
25
|
offsetScrollY: number;
|
|
26
|
+
bottomKeyboardPadding: number;
|
|
26
27
|
};
|
|
27
28
|
export {};
|
|
@@ -10,44 +10,35 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useCallback, useEffect, useLayoutEffect, useState } from 'react';
|
|
14
|
-
import { Sheet } from 'react-modal-sheet';
|
|
13
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
14
|
+
import { Sheet, useVirtualKeyboard } from 'react-modal-sheet';
|
|
15
15
|
import Popup from 'reactjs-popup';
|
|
16
16
|
import useDetectKeyboardOpen from 'use-detect-keyboard-open';
|
|
17
17
|
import { DEFAULT_BOTTOM_SHEET_SCROLL_MOBILE_CONFIG } from '../сomponents/Modal/Modal';
|
|
18
|
-
import { clickOutsideTheModal, isAndroidPlatform,
|
|
18
|
+
import { clickOutsideTheModal, isAndroidPlatform, isMobilePlatform } from '../helpers';
|
|
19
19
|
import { BOTTOM_SHEET, BOTTOM_SHEET_SCROLL_POSITION, EVENT_LISTENER_TYPES, PLATFORM } from '../constants';
|
|
20
20
|
var OFFSET = 30;
|
|
21
21
|
var MAX_MODAL_MOBILE_HEIGHT = 360;
|
|
22
22
|
var MODAL_ANIMATION = 'modalFadeIn 0.25s ease-in-out forwards';
|
|
23
|
+
var KEYBOARD_OPEN_THRESHOLD = 100;
|
|
24
|
+
var DEFAULT_ANDROID_KEYBOARD_HEIGHT = 260;
|
|
23
25
|
export var DEFAULT_BOTTOM_SHEET_DETENT = 'content';
|
|
24
26
|
// Проблемы с типизацией в либе.
|
|
25
27
|
var DRAG_THRESHOLD = {
|
|
26
28
|
dragVelocityThreshold: 2000,
|
|
27
29
|
tweenConfig: { ease: 'easeInOut', duration: 0.35 },
|
|
28
30
|
};
|
|
29
|
-
var generateElementBottomOffset = function (_a) {
|
|
30
|
-
var element = _a.element, scrollTo = _a.scrollTo;
|
|
31
|
-
var offsetTop = 0;
|
|
32
|
-
var currentElement = element;
|
|
33
|
-
while (currentElement) {
|
|
34
|
-
var currentOffsetTop = currentElement.offsetTop, offsetParent = currentElement.offsetParent;
|
|
35
|
-
offsetTop += currentOffsetTop;
|
|
36
|
-
currentElement = offsetParent;
|
|
37
|
-
}
|
|
38
|
-
var elementOffsetHeight = element.offsetHeight;
|
|
39
|
-
return scrollTo === BOTTOM_SHEET_SCROLL_POSITION.top ? offsetTop : offsetTop + elementOffsetHeight;
|
|
40
|
-
};
|
|
41
31
|
var generateOffsetY = function (_a) {
|
|
42
|
-
var focusedElement = _a.focusedElement, extraPaddingFocusedElement = _a.extraPaddingFocusedElement, scrollTo = _a.scrollTo;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
32
|
+
var focusedElement = _a.focusedElement, visualViewport = _a.visualViewport, extraPaddingFocusedElement = _a.extraPaddingFocusedElement, scrollTo = _a.scrollTo;
|
|
33
|
+
var _b = focusedElement.getBoundingClientRect(), top = _b.top, bottom = _b.bottom;
|
|
34
|
+
var viewportTop = (visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.offsetTop) || 0;
|
|
35
|
+
var viewportBottom = viewportTop + ((visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.height) || window.innerHeight);
|
|
36
|
+
if (scrollTo === BOTTOM_SHEET_SCROLL_POSITION.top) {
|
|
37
|
+
var targetTop = viewportTop + OFFSET + extraPaddingFocusedElement;
|
|
38
|
+
return top < targetTop ? top - targetTop : 0;
|
|
39
|
+
}
|
|
40
|
+
var targetBottom = viewportBottom - OFFSET - extraPaddingFocusedElement;
|
|
41
|
+
return bottom > targetBottom ? bottom - targetBottom : 0;
|
|
51
42
|
};
|
|
52
43
|
export var useModal = function (_a) {
|
|
53
44
|
var _b = _a.platform, platform = _b === void 0 ? PLATFORM.web : _b, isModalOpen = _a.isModalOpen, isClosableOutside = _a.isClosableOutside, _c = _a.isDisabledBottomSheet, isDisabledBottomSheet = _c === void 0 ? false : _c, _d = _a.initialIsBottomSheet, initialIsBottomSheet = _d === void 0 ? false : _d, modalRef = _a.modalRef, scrollRef = _a.scrollRef, popupClassName = _a.popupClassName, popupStyles = _a.popupStyles, bottomSheetProps = _a.bottomSheetProps, bottomSheetStyles = _a.bottomSheetStyles, _e = _a.bottomSheetDetent, bottomSheetDetent = _e === void 0 ? DEFAULT_BOTTOM_SHEET_DETENT : _e, handleClickOutside = _a.handleClickOutside, handleCloseModal = _a.handleCloseModal, bottomSheetScrollMobileConfig = _a.bottomSheetScrollMobileConfig;
|
|
@@ -55,11 +46,57 @@ export var useModal = function (_a) {
|
|
|
55
46
|
var _f = useState(initialIsBottomSheet), shouldUseBottomSheet = _f[0], setShouldUseBottomSheet = _f[1];
|
|
56
47
|
var _g = useState(0), offsetScrollY = _g[0], setOffsetScrollY = _g[1];
|
|
57
48
|
var _h = useState(null), focusedElement = _h[0], setFocusedElement = _h[1];
|
|
58
|
-
var _j = useState(
|
|
49
|
+
var _j = useState(0), androidKeyboardHeight = _j[0], setAndroidKeyboardHeight = _j[1];
|
|
50
|
+
var lastKnownAndroidKeyboardHeightRef = useRef(0);
|
|
59
51
|
var _k = bottomSheetProps || {}, _l = _k.sheetProps, sheetProps = _l === void 0 ? {} : _l, _m = _k.sheetBackdropProps, sheetBackdropProps = _m === void 0 ? {} : _m, _o = _k.sheetContentProps, sheetContentProps = _o === void 0 ? {} : _o, _p = _k.sheetContainerProps, sheetContainerProps = _p === void 0 ? {} : _p;
|
|
60
52
|
var _q = bottomSheetStyles || {}, _r = _q.sheetStyles, sheetStyles = _r === void 0 ? {} : _r, _s = _q.sheetBackdropStyles, sheetBackdropStyles = _s === void 0 ? {} : _s, _t = _q.sheetContentStyles, sheetContentStyles = _t === void 0 ? {} : _t, _u = _q.sheetContainerStyles, sheetContainerStyles = _u === void 0 ? {} : _u;
|
|
61
53
|
var _v = bottomSheetScrollMobileConfig || DEFAULT_BOTTOM_SHEET_SCROLL_MOBILE_CONFIG, scrollTo = _v.scrollTo, shouldDoScrollToFocusedElement = _v.shouldDoScrollToFocusedElement, _w = _v.extraPaddingFocusedElement, extraPaddingFocusedElement = _w === void 0 ? 0 : _w;
|
|
62
|
-
var
|
|
54
|
+
var isMobileBottomSheet = isModalOpen && shouldUseBottomSheet && isMobilePlatform(platform) && shouldDoScrollToFocusedElement;
|
|
55
|
+
var isAndroid = isAndroidPlatform(platform);
|
|
56
|
+
var _x = useVirtualKeyboard({
|
|
57
|
+
isEnabled: isMobileBottomSheet,
|
|
58
|
+
containerRef: modalRef,
|
|
59
|
+
visualViewportThreshold: KEYBOARD_OPEN_THRESHOLD,
|
|
60
|
+
}), isKeyboardOpen = _x.isKeyboardOpen, keyboardHeight = _x.keyboardHeight;
|
|
61
|
+
useEffect(function () {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
if (!isMobileBottomSheet || !isAndroid) {
|
|
64
|
+
setAndroidKeyboardHeight(0);
|
|
65
|
+
lastKnownAndroidKeyboardHeightRef.current = 0;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
var updateAndroidKeyboardHeight = function () {
|
|
69
|
+
var visualViewport = window.visualViewport, innerHeight = window.innerHeight;
|
|
70
|
+
var measuredKeyboardHeight = Math.max(innerHeight - ((visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.height) || innerHeight), 0);
|
|
71
|
+
if (measuredKeyboardHeight > 0)
|
|
72
|
+
lastKnownAndroidKeyboardHeightRef.current = measuredKeyboardHeight;
|
|
73
|
+
if (!isAndroidKeyboardOpen)
|
|
74
|
+
return setAndroidKeyboardHeight(0);
|
|
75
|
+
setAndroidKeyboardHeight(measuredKeyboardHeight || lastKnownAndroidKeyboardHeightRef.current || DEFAULT_ANDROID_KEYBOARD_HEIGHT);
|
|
76
|
+
};
|
|
77
|
+
(_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.addEventListener(EVENT_LISTENER_TYPES.resize, updateAndroidKeyboardHeight);
|
|
78
|
+
(_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.addEventListener('scroll', updateAndroidKeyboardHeight);
|
|
79
|
+
window.addEventListener(EVENT_LISTENER_TYPES.resize, updateAndroidKeyboardHeight);
|
|
80
|
+
updateAndroidKeyboardHeight();
|
|
81
|
+
return function () {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
(_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.removeEventListener(EVENT_LISTENER_TYPES.resize, updateAndroidKeyboardHeight);
|
|
84
|
+
(_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.removeEventListener('scroll', updateAndroidKeyboardHeight);
|
|
85
|
+
window.removeEventListener(EVENT_LISTENER_TYPES.resize, updateAndroidKeyboardHeight);
|
|
86
|
+
};
|
|
87
|
+
}, [isAndroid, isMobileBottomSheet, isAndroidKeyboardOpen]);
|
|
88
|
+
var isKeyboardActuallyOpen = isAndroid ? isAndroidKeyboardOpen || isKeyboardOpen : isKeyboardOpen;
|
|
89
|
+
var keyboardHeightActual = isAndroid ? Math.max(keyboardHeight, androidKeyboardHeight) : keyboardHeight;
|
|
90
|
+
var correctSheetProps = __assign(__assign(__assign(__assign({}, DRAG_THRESHOLD), { avoidKeyboard: false }), sheetProps), { disableDrag: isKeyboardActuallyOpen || Boolean(sheetProps.disableDrag) });
|
|
91
|
+
var correctSheetContentProps = useMemo(function () {
|
|
92
|
+
var _a, _b;
|
|
93
|
+
var disableDragProp = sheetContentProps.disableDrag;
|
|
94
|
+
var disableDrag = function (state) {
|
|
95
|
+
var disableDragByProp = typeof disableDragProp === 'function' ? disableDragProp(state) : Boolean(disableDragProp);
|
|
96
|
+
return isKeyboardActuallyOpen || disableDragByProp;
|
|
97
|
+
};
|
|
98
|
+
return __assign(__assign({}, sheetContentProps), { disableDrag: disableDrag, scrollStyle: __assign(__assign({}, sheetContentProps.scrollStyle), { paddingBottom: (_b = (_a = sheetContentProps.scrollStyle) === null || _a === void 0 ? void 0 : _a.paddingBottom) !== null && _b !== void 0 ? _b : 'var(--keyboard-inset-height, 0px)' }) });
|
|
99
|
+
}, [isKeyboardActuallyOpen, sheetContentProps]);
|
|
63
100
|
var updateModalState = useCallback(function () {
|
|
64
101
|
var modalElement = modalRef.current;
|
|
65
102
|
if (!modalElement)
|
|
@@ -85,47 +122,71 @@ export var useModal = function (_a) {
|
|
|
85
122
|
// Контролируем фокус и блюр на элементах.
|
|
86
123
|
useEffect(function () {
|
|
87
124
|
var handleFocus = function (_a) {
|
|
125
|
+
var _b;
|
|
88
126
|
var target = _a.target;
|
|
89
|
-
|
|
127
|
+
if (!(target instanceof HTMLElement))
|
|
128
|
+
return;
|
|
129
|
+
if (!((_b = modalRef.current) === null || _b === void 0 ? void 0 : _b.contains(target)))
|
|
130
|
+
return;
|
|
131
|
+
setFocusedElement(target);
|
|
132
|
+
};
|
|
133
|
+
var handleBlur = function () {
|
|
134
|
+
requestAnimationFrame(function () {
|
|
135
|
+
var _a;
|
|
136
|
+
var activeElement = document.activeElement;
|
|
137
|
+
if (activeElement && ((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.contains(activeElement)))
|
|
138
|
+
setFocusedElement(activeElement);
|
|
139
|
+
else
|
|
140
|
+
setFocusedElement(null);
|
|
141
|
+
});
|
|
90
142
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
document.addEventListener(
|
|
94
|
-
document.addEventListener(EVENT_LISTENER_TYPES.blur, handleBlur, true);
|
|
143
|
+
if (isMobileBottomSheet) {
|
|
144
|
+
document.addEventListener('focusin', handleFocus);
|
|
145
|
+
document.addEventListener('focusout', handleBlur);
|
|
95
146
|
}
|
|
96
147
|
return function () {
|
|
97
|
-
document.removeEventListener(
|
|
98
|
-
document.removeEventListener(
|
|
148
|
+
document.removeEventListener('focusin', handleFocus);
|
|
149
|
+
document.removeEventListener('focusout', handleBlur);
|
|
99
150
|
};
|
|
100
|
-
}, [
|
|
101
|
-
|
|
102
|
-
useEffect(function () {
|
|
151
|
+
}, [isMobileBottomSheet, modalRef]);
|
|
152
|
+
var recalculateScrollOffset = useCallback(function () {
|
|
103
153
|
var _a;
|
|
104
|
-
var visualViewport = window.visualViewport
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
154
|
+
var visualViewport = window.visualViewport;
|
|
155
|
+
if (!isMobileBottomSheet || !isKeyboardActuallyOpen || !focusedElement)
|
|
156
|
+
return setOffsetScrollY(0);
|
|
157
|
+
if (!((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.contains(focusedElement)))
|
|
158
|
+
return setOffsetScrollY(0);
|
|
159
|
+
var scrollOffset = generateOffsetY({
|
|
160
|
+
focusedElement: focusedElement,
|
|
161
|
+
visualViewport: visualViewport,
|
|
162
|
+
scrollTo: scrollTo,
|
|
163
|
+
extraPaddingFocusedElement: extraPaddingFocusedElement,
|
|
164
|
+
});
|
|
165
|
+
setOffsetScrollY(scrollOffset);
|
|
166
|
+
}, [isMobileBottomSheet, isKeyboardActuallyOpen, focusedElement, modalRef, scrollTo, extraPaddingFocusedElement]);
|
|
167
|
+
useEffect(function () {
|
|
168
|
+
recalculateScrollOffset();
|
|
169
|
+
}, [recalculateScrollOffset]);
|
|
170
|
+
useEffect(function () {
|
|
171
|
+
var visualViewport = window.visualViewport;
|
|
172
|
+
if (!isMobileBottomSheet || !isKeyboardActuallyOpen || !visualViewport)
|
|
173
|
+
return;
|
|
174
|
+
visualViewport.addEventListener(EVENT_LISTENER_TYPES.resize, recalculateScrollOffset);
|
|
175
|
+
visualViewport.addEventListener('scroll', recalculateScrollOffset);
|
|
117
176
|
return function () {
|
|
118
|
-
|
|
119
|
-
|
|
177
|
+
visualViewport.removeEventListener(EVENT_LISTENER_TYPES.resize, recalculateScrollOffset);
|
|
178
|
+
visualViewport.removeEventListener('scroll', recalculateScrollOffset);
|
|
120
179
|
};
|
|
121
|
-
}, [
|
|
180
|
+
}, [isMobileBottomSheet, isKeyboardActuallyOpen, recalculateScrollOffset]);
|
|
122
181
|
useEffect(function () {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}, [focusedElement,
|
|
182
|
+
if (!isMobileBottomSheet || !isKeyboardActuallyOpen || !focusedElement || !window.ResizeObserver)
|
|
183
|
+
return;
|
|
184
|
+
var resizeObserver = new ResizeObserver(function () { return recalculateScrollOffset(); });
|
|
185
|
+
resizeObserver.observe(focusedElement);
|
|
186
|
+
return function () { return resizeObserver.disconnect(); };
|
|
187
|
+
}, [focusedElement, isKeyboardActuallyOpen, isMobileBottomSheet, recalculateScrollOffset]);
|
|
188
|
+
//eslint-disable-next-line
|
|
189
|
+
console.log(keyboardHeight, 'keyboardHeight');
|
|
129
190
|
var renderModal = function (children) {
|
|
130
191
|
if (!isModalOpen)
|
|
131
192
|
return null;
|
|
@@ -135,10 +196,15 @@ export var useModal = function (_a) {
|
|
|
135
196
|
isClosableOutside && clickOutsideTheModal(handleCloseModal, handleClickOutside);
|
|
136
197
|
};
|
|
137
198
|
//DRAG_THRESHOLD
|
|
138
|
-
var BottomSheetModal = (_jsxs(Sheet, __assign({ style: __assign(__assign({}, sheetStyles), { zIndex: 100 }), id: BOTTOM_SHEET, className: "smartapp-bottom-sheet", detent: bottomSheetDetent, onClose: handleCloseModal, isOpen: isModalOpen }, correctSheetProps, { children: [_jsx(Sheet.Container, __assign({ style: sheetContainerStyles, className: "smartapp-bottom-sheet__container" }, sheetContainerProps, { children: _jsx(Sheet.Content, __assign({ style: sheetContentStyles, scrollRef: scrollRef },
|
|
199
|
+
var BottomSheetModal = (_jsxs(Sheet, __assign({ style: __assign(__assign({}, sheetStyles), { zIndex: 100 }), id: BOTTOM_SHEET, className: "smartapp-bottom-sheet", detent: bottomSheetDetent, onClose: handleCloseModal, isOpen: isModalOpen }, correctSheetProps, { children: [_jsx(Sheet.Container, __assign({ style: sheetContainerStyles, className: "smartapp-bottom-sheet__container" }, sheetContainerProps, { children: _jsx(Sheet.Content, __assign({ style: sheetContentStyles, scrollRef: scrollRef }, correctSheetContentProps, { children: children })) })), _jsx(Sheet.Backdrop, __assign({ style: sheetBackdropStyles, onClick: handleOutsideClick, className: "smartapp-bottom-sheet__backdrop" }, sheetBackdropProps))] })));
|
|
139
200
|
var Modal = (_jsx(Popup, __assign({ className: popupClassName, overlayStyle: __assign(__assign({}, popupStyles), { opacity: 0, animation: MODAL_ANIMATION }), closeOnDocumentClick: isClosableOutside, modal: true, open: isModalOpen, closeOnEscape: isClosableOutside, onClose: handleCloseModal }, { children: children })));
|
|
140
201
|
return shouldUseBottomSheet ? BottomSheetModal : Modal;
|
|
141
202
|
};
|
|
142
|
-
return {
|
|
203
|
+
return {
|
|
204
|
+
shouldUseBottomSheet: shouldUseBottomSheet,
|
|
205
|
+
renderModal: renderModal,
|
|
206
|
+
offsetScrollY: offsetScrollY,
|
|
207
|
+
bottomKeyboardPadding: isKeyboardActuallyOpen ? keyboardHeightActual : 0,
|
|
208
|
+
};
|
|
143
209
|
};
|
|
144
210
|
//# sourceMappingURL=useModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModal.js","sourceRoot":"","sources":["../../../src/hooks/useModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAc,EAAa,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useModal.js","sourceRoot":"","sources":["../../../src/hooks/useModal.tsx"],"names":[],"mappings":"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"}
|