@startlibs/components 1.1.4 → 1.2.0-rc.1
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/lib/BasicBulletList.mjs +1 -1
- package/lib/BasicBulletList.mjs.map +1 -1
- package/lib/Button.mjs +3 -3
- package/lib/Button.mjs.map +1 -1
- package/lib/ContextMenu.mjs +22 -6
- package/lib/ContextMenu.mjs.map +1 -1
- package/lib/Dialog.mjs +60 -24
- package/lib/Dialog.mjs.map +1 -1
- package/lib/Icon.mjs +10 -4
- package/lib/Icon.mjs.map +1 -1
- package/lib/Loading.mjs +26 -3
- package/lib/Loading.mjs.map +1 -1
- package/lib/PageLoader.mjs +2 -2
- package/lib/PageLoader.mjs.map +1 -1
- package/lib/PersistentNotifications.mjs +1 -1
- package/lib/PersistentNotifications.mjs.map +1 -1
- package/lib/SplitColumnsContainer.mjs +77 -6
- package/lib/SplitColumnsContainer.mjs.map +1 -1
- package/lib/TextButton.mjs +1 -1
- package/lib/TextButton.mjs.map +1 -1
- package/lib/ToastNotifications.mjs +16 -14
- package/lib/ToastNotifications.mjs.map +1 -1
- package/lib/alt/dialogs/DialogWithImageHeader.mjs +1 -1
- package/lib/alt/dialogs/DialogWithImageHeader.mjs.map +1 -1
- package/lib/alt/dialogs/DialogWithSidebar.mjs +7 -3
- package/lib/alt/dialogs/DialogWithSidebar.mjs.map +1 -1
- package/lib/alt/dialogs/MobileBubbleDialog.mjs +1 -1
- package/lib/alt/dialogs/MobileBubbleDialog.mjs.map +1 -1
- package/lib/containers/DialogContainer.mjs +29 -10
- package/lib/containers/DialogContainer.mjs.map +1 -1
- package/lib/index.cjs +286 -93
- package/lib/index.cjs.map +1 -1
- package/lib/willUseIsSticky.mjs +23 -2
- package/lib/willUseIsSticky.mjs.map +1 -1
- package/lib-yak/BasicBulletList.mjs +27 -0
- package/lib-yak/BasicBulletList.mjs.map +1 -0
- package/lib-yak/Button.mjs +374 -0
- package/lib-yak/Button.mjs.map +1 -0
- package/lib-yak/ContextMenu.mjs +642 -0
- package/lib-yak/ContextMenu.mjs.map +1 -0
- package/lib-yak/Dialog.mjs +469 -0
- package/lib-yak/Dialog.mjs.map +1 -0
- package/lib-yak/Draggable.mjs +892 -0
- package/lib-yak/Draggable.mjs.map +1 -0
- package/lib-yak/ErrorBoundary.mjs +108 -0
- package/lib-yak/ErrorBoundary.mjs.map +1 -0
- package/lib-yak/FillLastLineResizer.mjs +238 -0
- package/lib-yak/FillLastLineResizer.mjs.map +1 -0
- package/lib-yak/Flip.mjs +644 -0
- package/lib-yak/Flip.mjs.map +1 -0
- package/lib-yak/FlipList.mjs +186 -0
- package/lib-yak/FlipList.mjs.map +1 -0
- package/lib-yak/FormatDate.mjs +25 -0
- package/lib-yak/FormatDate.mjs.map +1 -0
- package/lib-yak/Icon.mjs +74 -0
- package/lib-yak/Icon.mjs.map +1 -0
- package/lib-yak/Image.mjs +41 -0
- package/lib-yak/Image.mjs.map +1 -0
- package/lib-yak/Link.mjs +116 -0
- package/lib-yak/Link.mjs.map +1 -0
- package/lib-yak/Loading.mjs +54 -0
- package/lib-yak/Loading.mjs.map +1 -0
- package/lib-yak/LoadingDiv.mjs +82 -0
- package/lib-yak/LoadingDiv.mjs.map +1 -0
- package/lib-yak/Notifications.mjs +99 -0
- package/lib-yak/Notifications.mjs.map +1 -0
- package/lib-yak/PageLoader.mjs +61 -0
- package/lib-yak/PageLoader.mjs.map +1 -0
- package/lib-yak/PersistentNotifications.mjs +209 -0
- package/lib-yak/PersistentNotifications.mjs.map +1 -0
- package/lib-yak/Popup.mjs +66 -0
- package/lib-yak/Popup.mjs.map +1 -0
- package/lib-yak/SplitColumnsContainer.mjs +140 -0
- package/lib-yak/SplitColumnsContainer.mjs.map +1 -0
- package/lib-yak/SwitchDiv.mjs +60 -0
- package/lib-yak/SwitchDiv.mjs.map +1 -0
- package/lib-yak/TextButton.mjs +61 -0
- package/lib-yak/TextButton.mjs.map +1 -0
- package/lib-yak/ToastNotifications.mjs +316 -0
- package/lib-yak/ToastNotifications.mjs.map +1 -0
- package/lib-yak/Tooltip.mjs +176 -0
- package/lib-yak/Tooltip.mjs.map +1 -0
- package/lib-yak/TransitionDiv.mjs +59 -0
- package/lib-yak/TransitionDiv.mjs.map +1 -0
- package/lib-yak/WarningDialog.mjs +107 -0
- package/lib-yak/WarningDialog.mjs.map +1 -0
- package/lib-yak/alt/buttons/OnClickLoadingButton.mjs +36 -0
- package/lib-yak/alt/buttons/OnClickLoadingButton.mjs.map +1 -0
- package/lib-yak/alt/dialogs/DialogWithImageHeader.mjs +50 -0
- package/lib-yak/alt/dialogs/DialogWithImageHeader.mjs.map +1 -0
- package/lib-yak/alt/dialogs/DialogWithSidebar.mjs +193 -0
- package/lib-yak/alt/dialogs/DialogWithSidebar.mjs.map +1 -0
- package/lib-yak/alt/dialogs/MobileBubbleDialog.mjs +82 -0
- package/lib-yak/alt/dialogs/MobileBubbleDialog.mjs.map +1 -0
- package/lib-yak/containers/DialogContainer.mjs +482 -0
- package/lib-yak/containers/DialogContainer.mjs.map +1 -0
- package/lib-yak/containers/Reposition.mjs +35 -0
- package/lib-yak/containers/Reposition.mjs.map +1 -0
- package/lib-yak/containers/usePositioning.mjs +311 -0
- package/lib-yak/containers/usePositioning.mjs.map +1 -0
- package/lib-yak/index.mjs +37 -0
- package/lib-yak/index.mjs.map +1 -0
- package/lib-yak/useDialogWithToggle.mjs +18 -0
- package/lib-yak/useDialogWithToggle.mjs.map +1 -0
- package/lib-yak/willUseIsSticky.mjs +147 -0
- package/lib-yak/willUseIsSticky.mjs.map +1 -0
- package/package.json +12 -3
- package/src/BasicBulletList.jsx +1 -1
- package/src/Button.jsx +36 -30
- package/src/ContextMenu.jsx +21 -7
- package/src/Dialog.jsx +30 -12
- package/src/Icon.jsx +5 -4
- package/src/Loading.jsx +19 -5
- package/src/PageLoader.jsx +3 -3
- package/src/PersistentNotifications.jsx +2 -2
- package/src/SplitColumnsContainer.jsx +89 -30
- package/src/TextButton.jsx +1 -1
- package/src/ToastNotifications.jsx +15 -8
- package/src/alt/dialogs/DialogWithImageHeader.jsx +2 -2
- package/src/alt/dialogs/DialogWithSidebar.jsx +6 -5
- package/src/alt/dialogs/MobileBubbleDialog.jsx +1 -1
- package/src/containers/DialogContainer.jsx +11 -4
- package/src/willUseIsSticky.jsx +22 -2
- package/lib/index.js +0 -5444
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import _get from 'lodash/fp/get';
|
|
4
|
+
import { yakDomTag } from '@startlibs/utils/yakDomTag';
|
|
5
|
+
import React, { forwardRef, useRef, useEffect } from 'react';
|
|
6
|
+
import { styled, css } from '@yak/react';
|
|
7
|
+
import { Slot, willUseLayers, useEnsureRef, useRefState, Fill } from '@startlibs/core';
|
|
8
|
+
import { oneWayAnimation, twoWayAnimation, identityOpacityFrames, callIfFunction } from '@startlibs/utils';
|
|
9
|
+
import { ErrorBoundary } from '../ErrorBoundary.mjs';
|
|
10
|
+
import { useFlipAnimation } from '../Flip.mjs';
|
|
11
|
+
|
|
12
|
+
const _excluded = ["tagAs", "withScroll", "fullscreen", "fullscreenOnMobile"],
|
|
13
|
+
_excluded2 = ["timing", "nestedFlip", "enterEffect", "leaveEffect", "modalIn", "modalOut", "blurBackdrop"];
|
|
14
|
+
const dialogFadeInDown = oneWayAnimation('opacity: 0; transform: translateY(50px);', 'opacity: 1; transform: translateY(0);');
|
|
15
|
+
const [dialogModalIn, dialogModalOut] = twoWayAnimation('opacity: 0;', 'opacity: 1;');
|
|
16
|
+
const Modal = styled(yakDomTag("div")).attrs({
|
|
17
|
+
className: "styled-modal"
|
|
18
|
+
})`
|
|
19
|
+
position: fixed;
|
|
20
|
+
top:0;
|
|
21
|
+
bottom:0;
|
|
22
|
+
left:0;
|
|
23
|
+
right:0;
|
|
24
|
+
will-change: opacity;
|
|
25
|
+
background-color: rgba(0,0,0,0.7);
|
|
26
|
+
${props => props.$blurBackdrop && css`backdrop-filter: blur(10px);`}
|
|
27
|
+
`;
|
|
28
|
+
const ModalContainer = styled(yakDomTag("div")).attrs({
|
|
29
|
+
className: "styled-modal-container"
|
|
30
|
+
})`
|
|
31
|
+
position: fixed;
|
|
32
|
+
top:0;
|
|
33
|
+
bottom:0;
|
|
34
|
+
left:0;
|
|
35
|
+
right:0;
|
|
36
|
+
/* Barra invisível mantendo a LARGURA NATIVA da calha (scrollbar-color não
|
|
37
|
+
colapsa a largura como scrollbar-width:none / ::-webkit-scrollbar faziam).
|
|
38
|
+
Essa calha compensa a remoção da scrollbar do body ao abrir a dialog (body
|
|
39
|
+
vira overflow:hidden e o viewport alarga ~15px no fim da animação); sem ela,
|
|
40
|
+
a dialog centralizada dá um pulinho lateral. Aqui: sem barra visível e sem salto. */
|
|
41
|
+
scrollbar-color: transparent transparent;
|
|
42
|
+
`;
|
|
43
|
+
|
|
44
|
+
// R6: "as" não existe no yak. tagAs troca a tag renderizada (form quando a dialog embute um
|
|
45
|
+
// form, senão div). withScroll/fullscreen/fullscreenOnMobile são lidos pelo template abaixo,
|
|
46
|
+
// mas não são atributos DOM válidos: como o alvo do styled() agora é um componente (não mais
|
|
47
|
+
// styled.div puro), o styled-components para de filtrar prop inválida sozinho — tiram-se à mão
|
|
48
|
+
// antes do spread no elemento real.
|
|
49
|
+
const DialogCenterTagAs = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
50
|
+
let {
|
|
51
|
+
tagAs: Tag = 'div',
|
|
52
|
+
withScroll,
|
|
53
|
+
fullscreen,
|
|
54
|
+
fullscreenOnMobile
|
|
55
|
+
} = _ref,
|
|
56
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
57
|
+
return /*#__PURE__*/React.createElement(Tag, _extends({
|
|
58
|
+
ref: ref
|
|
59
|
+
}, props));
|
|
60
|
+
});
|
|
61
|
+
const DialogCenter = styled(DialogCenterTagAs)`
|
|
62
|
+
@supports (position:sticky) {
|
|
63
|
+
will-change: transform, opacity;
|
|
64
|
+
&.JS-wc-off {
|
|
65
|
+
will-change: auto;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
display: -webkit-box;
|
|
69
|
+
display: -ms-flexbox;
|
|
70
|
+
display: flex;
|
|
71
|
+
overflow-y: ${props => props.withScroll ? "scroll" : "hidden"};
|
|
72
|
+
overflow-x:hidden;
|
|
73
|
+
/* idem ModalContainer: calha nativa reservada (sem salto), track invisível — mas o
|
|
74
|
+
polegar é visível, senão dialog mais alta que a tela rola sem nenhuma pista.
|
|
75
|
+
Claro porque a calha fica sobre o backdrop escuro. Sem overflow, o Chromium não
|
|
76
|
+
desenha polegar → não sobra track fantasma. */
|
|
77
|
+
scrollbar-color: rgba(255,255,255,0.6) transparent;
|
|
78
|
+
position:fixed;
|
|
79
|
+
top:0;
|
|
80
|
+
bottom:0;
|
|
81
|
+
left:0;
|
|
82
|
+
right:0;
|
|
83
|
+
align-items: center;
|
|
84
|
+
@media (min-width: 601px) {
|
|
85
|
+
padding: ${props => props.fullscreen ? '1rem' : '3rem 0.5rem'};
|
|
86
|
+
}
|
|
87
|
+
@media (max-width: 600px) {
|
|
88
|
+
padding: ${props => props.fullscreenOnMobile ? '0' : '0.5rem'};
|
|
89
|
+
}
|
|
90
|
+
`;
|
|
91
|
+
const PopupSlot = styled(Slot)`
|
|
92
|
+
position: absolute;
|
|
93
|
+
left:0;
|
|
94
|
+
top: 0;
|
|
95
|
+
width: 100%;
|
|
96
|
+
`;
|
|
97
|
+
styled(Slot)`
|
|
98
|
+
width:100%;
|
|
99
|
+
position: absolute;
|
|
100
|
+
`;
|
|
101
|
+
const editableSelector = 'textarea,input,[contenteditable]';
|
|
102
|
+
const focusableSelector = 'button,a,' + editableSelector;
|
|
103
|
+
const shouldPreventResolvers = [];
|
|
104
|
+
let shouldPreventDialogPop = Promise.resolve();
|
|
105
|
+
const preventDialogPop = cb => {
|
|
106
|
+
shouldPreventDialogPop = shouldPreventDialogPop.then(() => {
|
|
107
|
+
new Promise(res => {
|
|
108
|
+
shouldPreventResolvers.push(res);
|
|
109
|
+
cb();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
const waitForPop = () => {
|
|
114
|
+
return shouldPreventDialogPop;
|
|
115
|
+
};
|
|
116
|
+
const preventDialogPopState = e => {
|
|
117
|
+
const resolver = shouldPreventResolvers.shift();
|
|
118
|
+
if (resolver) {
|
|
119
|
+
e.stopImmediatePropagation();
|
|
120
|
+
resolver();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
window.addEventListener("popstate", preventDialogPopState);
|
|
124
|
+
const fixPosition = (query, fn) => {
|
|
125
|
+
const elements = document.querySelectorAll(query);
|
|
126
|
+
if (elements.length) {
|
|
127
|
+
Array.prototype.slice.call(elements).forEach(fn);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
let openLayers = 0;
|
|
131
|
+
let fakedScrollTop = 0;
|
|
132
|
+
const isFakeScrolled = () => openLayers > 0 && fakedScrollTop > 0;
|
|
133
|
+
const removeWindowScroll = (opening, keepDisabledScroll) => {
|
|
134
|
+
if (opening) {
|
|
135
|
+
openLayers = Math.max(openLayers + 1, 1);
|
|
136
|
+
if (openLayers > 1) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
openLayers = Math.min(openLayers - 1, 0);
|
|
141
|
+
if (openLayers < 0) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const finishReset = (marginRight, scrollTop) => {
|
|
146
|
+
// body.style.paddingRight = marginRight + 'px'
|
|
147
|
+
window.scroll(window.scrollLeft || window.scrollX || 0, scrollTop);
|
|
148
|
+
if (keepDisabledScroll) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
fixPosition('.navbar,.JS-fix-dialog-scroll', n => {
|
|
152
|
+
if (opening) {
|
|
153
|
+
const {
|
|
154
|
+
right
|
|
155
|
+
} = window.getComputedStyle(n);
|
|
156
|
+
n.style.right = parseInt(right) + marginRight + 'px';
|
|
157
|
+
} else {
|
|
158
|
+
n.style.right = null;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
fixPosition('.JS-fix-dialog-scroll-transform', n => {
|
|
162
|
+
if (marginRight) {
|
|
163
|
+
n.style.transform = window.getComputedStyle(n).transform + ` translateX(-${marginRight / 2}px)`;
|
|
164
|
+
} else {
|
|
165
|
+
n.style.transform = null;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
fixPosition('.JS-on-open-dialog', n => {
|
|
169
|
+
if (opening) {
|
|
170
|
+
n.classList.add('JS-dialog-open');
|
|
171
|
+
} else {
|
|
172
|
+
n.classList.remove('JS-dialog-open');
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
window.requestAnimationFrame(() => window.dispatchEvent(new CustomEvent('resize', {
|
|
176
|
+
detail: {
|
|
177
|
+
dialog: true
|
|
178
|
+
}
|
|
179
|
+
})));
|
|
180
|
+
};
|
|
181
|
+
const body = document.body;
|
|
182
|
+
let bodyWidth = body.offsetWidth;
|
|
183
|
+
if (opening) {
|
|
184
|
+
const scrollTop = window.pageYOffset;
|
|
185
|
+
fakedScrollTop = scrollTop;
|
|
186
|
+
if (keepDisabledScroll) {
|
|
187
|
+
body.style.overflowY = 'scroll';
|
|
188
|
+
} else {
|
|
189
|
+
body.style.overflow = 'hidden';
|
|
190
|
+
}
|
|
191
|
+
const marginRight = body.offsetWidth - bodyWidth;
|
|
192
|
+
body.style.position = 'fixed';
|
|
193
|
+
body.style.top = -scrollTop + "px";
|
|
194
|
+
body.style.left = '0';
|
|
195
|
+
if (!keepDisabledScroll) {
|
|
196
|
+
body.style.right = marginRight + 'px';
|
|
197
|
+
} else {
|
|
198
|
+
body.style.right = '0';
|
|
199
|
+
}
|
|
200
|
+
finishReset(marginRight, scrollTop);
|
|
201
|
+
} else {
|
|
202
|
+
fakedScrollTop = 0;
|
|
203
|
+
// setTimeout(() => {
|
|
204
|
+
const scrollTop = parseInt(body.style.top);
|
|
205
|
+
body.style.overflow = '';
|
|
206
|
+
body.style.position = '';
|
|
207
|
+
body.style.top = '';
|
|
208
|
+
body.style.left = '';
|
|
209
|
+
body.style.right = '';
|
|
210
|
+
finishReset(0, -scrollTop);
|
|
211
|
+
// },250)
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const [useDialogLayers, getDialogLayersSize] = willUseLayers(React.useLayoutEffect);
|
|
215
|
+
const DialogContainer = /*#__PURE__*/forwardRef((_ref2, forwardedRef) => {
|
|
216
|
+
let {
|
|
217
|
+
children,
|
|
218
|
+
title,
|
|
219
|
+
closeDialog,
|
|
220
|
+
closeOnClick,
|
|
221
|
+
dontRefocus,
|
|
222
|
+
onConfirm,
|
|
223
|
+
prev,
|
|
224
|
+
next,
|
|
225
|
+
form,
|
|
226
|
+
noFormWrap,
|
|
227
|
+
withFormWrap,
|
|
228
|
+
placement = 'Dialog',
|
|
229
|
+
DialogErrorContent,
|
|
230
|
+
customHref,
|
|
231
|
+
animation = dialogFadeInDown,
|
|
232
|
+
animationTiming,
|
|
233
|
+
animationLeaveEffect,
|
|
234
|
+
animationEnterEffect,
|
|
235
|
+
skipKeys,
|
|
236
|
+
fullscreenOnMobile,
|
|
237
|
+
fullscreen,
|
|
238
|
+
confirmChanges = false,
|
|
239
|
+
skipDom,
|
|
240
|
+
modalRef,
|
|
241
|
+
skipCheckFocus,
|
|
242
|
+
autoComplete,
|
|
243
|
+
blurBackdrop
|
|
244
|
+
} = _ref2;
|
|
245
|
+
const dialogRef = useEnsureRef(forwardedRef);
|
|
246
|
+
const prevActiveElement = useRefState(document.activeElement);
|
|
247
|
+
const modal = useEnsureRef(modalRef);
|
|
248
|
+
const modalScroll = useRef();
|
|
249
|
+
const mouseDownInModal = useRefState();
|
|
250
|
+
const previousHash = useRefState(window.location.hash);
|
|
251
|
+
const [layerIndex, {
|
|
252
|
+
isTop,
|
|
253
|
+
getSize
|
|
254
|
+
}] = useDialogLayers({
|
|
255
|
+
onFirst: () => {
|
|
256
|
+
waitForPop().then(() => {
|
|
257
|
+
if (customHref && encodeURI(customHref) === window.location.hash) {
|
|
258
|
+
window.history.replaceState(history.state, '', window.location.pathname);
|
|
259
|
+
window.history.pushState({
|
|
260
|
+
dialog: true
|
|
261
|
+
}, '', customHref);
|
|
262
|
+
} else {
|
|
263
|
+
window.history.pushState({
|
|
264
|
+
dialog: true
|
|
265
|
+
}, '', window.location.href + (customHref || ""));
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
// clearPreventDialogPop()
|
|
269
|
+
if (document.body.scrollHeight === document.body.clientHeight) {
|
|
270
|
+
modal.current.style.overflowY = "scroll";
|
|
271
|
+
if (modalScroll.current) {
|
|
272
|
+
modalScroll.current.style.overflowY = "scroll";
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// resetNavbar(true)
|
|
276
|
+
},
|
|
277
|
+
onRemove: layers => {
|
|
278
|
+
if (layers === 0 && _get('dialog', window.history.state) === true || customHref && window.location.hash === encodeURI(customHref)) {
|
|
279
|
+
preventDialogPop(() => {
|
|
280
|
+
window.history.back();
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
onEmpty: () => {
|
|
285
|
+
if (document.body.scrollHeight > document.body.clientHeight) {
|
|
286
|
+
if (modalScroll.current) {
|
|
287
|
+
modalScroll.current.style.overflowY = "hidden";
|
|
288
|
+
}
|
|
289
|
+
} else if (modal.current) {
|
|
290
|
+
modal.current.style.overflowY = "scroll";
|
|
291
|
+
}
|
|
292
|
+
removeWindowScroll(false);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
const confirmCloseDialog = () => {
|
|
296
|
+
if (form && form.getHasChanged() && confirmChanges) {
|
|
297
|
+
form.confirm().then(closeDialog);
|
|
298
|
+
} else {
|
|
299
|
+
callIfFunction(closeDialog);
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
/*
|
|
303
|
+
useEffect(() => () => {
|
|
304
|
+
setTimeout(() => {
|
|
305
|
+
if (window.location.hash === previousHash.get() && _.get('dialog', window.history.state) === true) {
|
|
306
|
+
console.log("???")
|
|
307
|
+
}
|
|
308
|
+
}, 100)
|
|
309
|
+
}, [])*/
|
|
310
|
+
|
|
311
|
+
React.useRef();
|
|
312
|
+
useEffect(() => {
|
|
313
|
+
if (customHref && window.location.hash !== customHref) {
|
|
314
|
+
// if (pastFirstTime.current) {
|
|
315
|
+
waitForPop().then(() => {
|
|
316
|
+
if (window.location.hash) {
|
|
317
|
+
window.history.replaceState({
|
|
318
|
+
dialog: true
|
|
319
|
+
}, '', customHref);
|
|
320
|
+
} else {
|
|
321
|
+
window.history.pushState({
|
|
322
|
+
dialog: true
|
|
323
|
+
}, '', customHref);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// } else {
|
|
327
|
+
// window.history.pushState({dialog: true}, '', customHref)
|
|
328
|
+
// pastFirstTime.current = true
|
|
329
|
+
// }
|
|
330
|
+
previousHash.set(encodeURI(customHref));
|
|
331
|
+
}
|
|
332
|
+
}, [customHref]);
|
|
333
|
+
useEffect(() => {
|
|
334
|
+
window.addEventListener('keydown', checkKey);
|
|
335
|
+
window.addEventListener('focusin', checkFocus);
|
|
336
|
+
window.addEventListener('popstate', checkHistory);
|
|
337
|
+
return () => {
|
|
338
|
+
window.removeEventListener('keydown', checkKey);
|
|
339
|
+
window.removeEventListener('focusin', checkFocus);
|
|
340
|
+
window.removeEventListener('popstate', checkHistory);
|
|
341
|
+
if (!dontRefocus && document.body.contains(prevActiveElement.get()) && prevActiveElement.get().matches(focusableSelector)) {
|
|
342
|
+
setTimeout(() => prevActiveElement.get().focus(), 0);
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}, []);
|
|
346
|
+
const checkHistory = e => {
|
|
347
|
+
if (!isTop() /* || (previousHash.get() !== window.location.hash && !customHref)*/) return;
|
|
348
|
+
if (_get('willOpenDialog', window.history.state) === true) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
if (_get('dialog', window.history.state) !== true) {
|
|
352
|
+
window.history.pushState({
|
|
353
|
+
dialog: true
|
|
354
|
+
}, '', window.location.href);
|
|
355
|
+
}
|
|
356
|
+
confirmCloseDialog();
|
|
357
|
+
};
|
|
358
|
+
const checkFocus = e => {
|
|
359
|
+
if (!isTop() || skipCheckFocus) return;
|
|
360
|
+
if (modal.current && !e.target.closest('.' + modal.current.className.split(' ').join('.'))) {
|
|
361
|
+
const nextTab = modal.current.querySelector('[tabindex]');
|
|
362
|
+
if (nextTab) nextTab.focus();
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
const checkKey = e => {
|
|
366
|
+
var _e$target, _e$target2;
|
|
367
|
+
if (!isTop() || skipKeys || ((_e$target = e.target) === null || _e$target === void 0 || (_e$target = _e$target.className) === null || _e$target === void 0 ? void 0 : _e$target.indexOf("JS-dialog-skip-evts")) >= 0 || (_e$target2 = e.target) !== null && _e$target2 !== void 0 && _e$target2.closest(".JS-dialog-skip-evts")) return;
|
|
368
|
+
if (modal.current && e.shiftKey && e.keyCode === 9 && modal.current.querySelector('[tabindex]') === document.activeElement) {
|
|
369
|
+
e.preventDefault();
|
|
370
|
+
const prevTab = [].slice.call(modal.current.querySelectorAll('[tabindex]')).reduce((acc, el) => el.tabIndex >= acc.tabIndex ? el : acc, {
|
|
371
|
+
tabIndex: -1
|
|
372
|
+
});
|
|
373
|
+
if (prevTab && prevTab.focus) prevTab.focus();
|
|
374
|
+
}
|
|
375
|
+
if (e.key === 'Escape') {
|
|
376
|
+
e.preventDefault();
|
|
377
|
+
confirmCloseDialog();
|
|
378
|
+
} else if (e.key === 'Enter') {
|
|
379
|
+
if (e.target) {
|
|
380
|
+
const target = e.target.closest(focusableSelector + ',div');
|
|
381
|
+
if (target && (target.tagName.toLowerCase() !== 'input' || target.form || target.type.toLowerCase() === 'file') && target.matches(focusableSelector)) return;
|
|
382
|
+
}
|
|
383
|
+
e.preventDefault();
|
|
384
|
+
e.stopPropagation();
|
|
385
|
+
if (onConfirm) {
|
|
386
|
+
onConfirm();
|
|
387
|
+
} else if (form) {
|
|
388
|
+
form.submitForm();
|
|
389
|
+
}
|
|
390
|
+
} else if (!e.target.matches(editableSelector)) {
|
|
391
|
+
if (e.key === 'ArrowLeft' && prev) {
|
|
392
|
+
prev();
|
|
393
|
+
} else if (e.key === 'ArrowRight' && next) {
|
|
394
|
+
next();
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
const checkClick = e => {
|
|
399
|
+
if (closeOnClick && e.target === e.currentTarget && mouseDownInModal.get()) {
|
|
400
|
+
confirmCloseDialog();
|
|
401
|
+
}
|
|
402
|
+
mouseDownInModal.set(false);
|
|
403
|
+
};
|
|
404
|
+
const mouseDown = e => {
|
|
405
|
+
mouseDownInModal.set(e.target === e.currentTarget);
|
|
406
|
+
};
|
|
407
|
+
const usingForm = withFormWrap || form && !noFormWrap;
|
|
408
|
+
useFlipAnimation(dialogRef, animation, true, {
|
|
409
|
+
nestedFlip: !skipDom,
|
|
410
|
+
onEnterEnd: () => {
|
|
411
|
+
if (getSize() === 1) {
|
|
412
|
+
removeWindowScroll(true);
|
|
413
|
+
}
|
|
414
|
+
if (document.body.scrollHeight === document.body.clientHeight) {
|
|
415
|
+
modal.current.style.overflowY = "none";
|
|
416
|
+
}
|
|
417
|
+
if (modalScroll.current) {
|
|
418
|
+
modalScroll.current.style.overflowY = "scroll";
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
leaveEffect: animationLeaveEffect,
|
|
422
|
+
enterEffect: animationEnterEffect,
|
|
423
|
+
timing: animationTiming
|
|
424
|
+
});
|
|
425
|
+
useFlipAnimation(modal, !skipDom && identityOpacityFrames, true, {
|
|
426
|
+
timing: animationTiming
|
|
427
|
+
});
|
|
428
|
+
const content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PopupSlot, {
|
|
429
|
+
name: 'Popup-' + layerIndex
|
|
430
|
+
}), /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
431
|
+
title: callIfFunction(title),
|
|
432
|
+
closeDialog: closeDialog,
|
|
433
|
+
Error: DialogErrorContent
|
|
434
|
+
}, callIfFunction(children, {
|
|
435
|
+
confirmCloseDialog
|
|
436
|
+
}, dialogRef, fullscreenOnMobile)));
|
|
437
|
+
return /*#__PURE__*/React.createElement(Fill, {
|
|
438
|
+
name: placement
|
|
439
|
+
}, skipDom ? content : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AnimatedModal, {
|
|
440
|
+
timing: animationTiming,
|
|
441
|
+
blurBackdrop: blurBackdrop
|
|
442
|
+
}), /*#__PURE__*/React.createElement(ModalContainer, {
|
|
443
|
+
ref: modal
|
|
444
|
+
}, /*#__PURE__*/React.createElement(DialogCenter, {
|
|
445
|
+
autoComplete: autoComplete,
|
|
446
|
+
className: "JS-has-wc",
|
|
447
|
+
withScroll: getSize() > 1,
|
|
448
|
+
fullscreen: fullscreen,
|
|
449
|
+
fullscreenOnMobile: fullscreenOnMobile,
|
|
450
|
+
ref: modalScroll,
|
|
451
|
+
tagAs: usingForm ? 'form' : undefined,
|
|
452
|
+
onClick: checkClick,
|
|
453
|
+
onSubmit: usingForm ? () => {} : undefined,
|
|
454
|
+
onMouseDown: mouseDown
|
|
455
|
+
}, content))));
|
|
456
|
+
});
|
|
457
|
+
const AnimatedModal = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
|
|
458
|
+
let {
|
|
459
|
+
timing,
|
|
460
|
+
nestedFlip,
|
|
461
|
+
enterEffect,
|
|
462
|
+
leaveEffect,
|
|
463
|
+
modalIn = dialogModalIn,
|
|
464
|
+
modalOut = dialogModalOut,
|
|
465
|
+
blurBackdrop
|
|
466
|
+
} = _ref3,
|
|
467
|
+
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
468
|
+
const modal = useEnsureRef(ref);
|
|
469
|
+
useFlipAnimation(modal, modalIn, modalOut, {
|
|
470
|
+
timing,
|
|
471
|
+
nestedFlip,
|
|
472
|
+
leaveEffect,
|
|
473
|
+
enterEffect
|
|
474
|
+
});
|
|
475
|
+
return /*#__PURE__*/React.createElement(Modal, _extends({}, props, {
|
|
476
|
+
$blurBackdrop: blurBackdrop,
|
|
477
|
+
ref: modal
|
|
478
|
+
}));
|
|
479
|
+
});
|
|
480
|
+
|
|
481
|
+
export { AnimatedModal, DialogContainer, Modal, ModalContainer, dialogFadeInDown, dialogModalIn, dialogModalOut, getDialogLayersSize, isFakeScrolled, preventDialogPop, removeWindowScroll, useDialogLayers, waitForPop };
|
|
482
|
+
//# sourceMappingURL=DialogContainer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogContainer.mjs","sources":["../../src/containers/DialogContainer.jsx"],"sourcesContent":["import React, {forwardRef, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport _ from 'lodash/fp'\nimport {Fill, Slot, useEnsureRef, useRefState, willUseLayers} from '@startlibs/core'\nimport {callIfFunction, identityOpacityFrames, media, oneWayAnimation, twoWayAnimation} from '@startlibs/utils'\nimport {ErrorBoundary} from '../ErrorBoundary'\nimport {useFlipAnimation} from '../Flip'\n\nexport const dialogFadeInDown = oneWayAnimation('opacity: 0; transform: translateY(50px);', 'opacity: 1; transform: translateY(0);')\nconst [dialogModalIn, dialogModalOut] = twoWayAnimation('opacity: 0;', 'opacity: 1;')\nexport {dialogModalIn, dialogModalOut}\n\nexport const Modal = styled.div`\n position: fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n will-change: opacity;\n background-color: rgba(0,0,0,0.7);\n ${props => props.$blurBackdrop && `backdrop-filter: blur(10px);`}\n`\n\nexport const ModalContainer = styled.div`\n position: fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n /* Barra invisível mantendo a LARGURA NATIVA da calha (scrollbar-color não\n colapsa a largura como scrollbar-width:none / ::-webkit-scrollbar faziam).\n Essa calha compensa a remoção da scrollbar do body ao abrir a dialog (body\n vira overflow:hidden e o viewport alarga ~15px no fim da animação); sem ela,\n a dialog centralizada dá um pulinho lateral. Aqui: sem barra visível e sem salto. */\n scrollbar-color: transparent transparent;\n`\n\n// R6: \"as\" não existe no yak. tagAs troca a tag renderizada (form quando a dialog embute um\n// form, senão div). withScroll/fullscreen/fullscreenOnMobile são lidos pelo template abaixo,\n// mas não são atributos DOM válidos: como o alvo do styled() agora é um componente (não mais\n// styled.div puro), o styled-components para de filtrar prop inválida sozinho — tiram-se à mão\n// antes do spread no elemento real.\nconst DialogCenterTagAs = React.forwardRef(({tagAs: Tag = 'div', withScroll, fullscreen, fullscreenOnMobile, ...props}, ref) => <Tag ref={ref} {...props}/>)\n\nconst DialogCenter = styled(DialogCenterTagAs)`\n @supports (position:sticky) {\n will-change: transform, opacity;\n &.JS-wc-off {\n will-change: auto;\n }\n }\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n overflow-y: ${props => props.withScroll ? \"scroll\" : \"hidden\"};\n overflow-x:hidden;\n /* idem ModalContainer: calha nativa reservada (sem salto), track invisível — mas o\n polegar é visível, senão dialog mais alta que a tela rola sem nenhuma pista.\n Claro porque a calha fica sobre o backdrop escuro. Sem overflow, o Chromium não\n desenha polegar → não sobra track fantasma. */\n scrollbar-color: rgba(255,255,255,0.6) transparent;\n position:fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n align-items: center;\n ${media.desktop`\n padding: ${props => props.fullscreen ? '1rem' : '3rem 0.5rem'};\n `}\n ${media.mobile`\n padding: ${props => props.fullscreenOnMobile ? '0' : '0.5rem'};\n `}\n`\n\nconst PopupSlot = styled(Slot)`\nposition: absolute;\nleft:0;\ntop: 0;\nwidth: 100%;\n`\nconst RelativeSlot = styled(Slot)`\nwidth:100%;\nposition: absolute;\n`\nconst editableSelector = 'textarea,input,[contenteditable]'\nconst focusableSelector = 'button,a,'+editableSelector\n\nconst shouldPreventResolvers = []\nlet shouldPreventDialogPop = Promise.resolve()\nexport const preventDialogPop = (cb) => {\n shouldPreventDialogPop = shouldPreventDialogPop.then(() => {\n new Promise((res) => {\n shouldPreventResolvers.push(res)\n cb()\n })\n })\n}\nexport const waitForPop = () => {\n return shouldPreventDialogPop\n}\nconst preventDialogPopState = (e) => {\n const resolver = shouldPreventResolvers.shift()\n if (resolver) {\n e.stopImmediatePropagation()\n resolver()\n }\n}\n\nwindow.addEventListener(\"popstate\",preventDialogPopState)\n\nconst fixPosition = (query, fn) => {\n const elements = document.querySelectorAll(query)\n if (elements.length) {\n Array.prototype.slice.call(elements).forEach(fn)\n }\n}\n\nlet openLayers = 0\nlet fakedScrollTop = 0\nexport const isFakeScrolled = () => openLayers>0 && fakedScrollTop > 0\nexport const removeWindowScroll = (opening, keepDisabledScroll) => {\n if (opening) {\n openLayers = Math.max(openLayers+1,1)\n if (openLayers>1) {\n return\n }\n } else {\n openLayers = Math.min(openLayers-1,0)\n if (openLayers<0) {\n return\n }\n }\n const finishReset = (marginRight, scrollTop) => {\n // body.style.paddingRight = marginRight + 'px'\n window.scroll(window.scrollLeft || window.scrollX || 0, scrollTop)\n if (keepDisabledScroll) { return }\n fixPosition('.navbar,.JS-fix-dialog-scroll', n => {\n if (opening) {\n const {right} = window.getComputedStyle(n)\n n.style.right = (parseInt(right) + marginRight) + 'px'\n } else {\n n.style.right = null\n }\n })\n fixPosition('.JS-fix-dialog-scroll-transform', n => {\n if (marginRight) {\n n.style.transform = window.getComputedStyle(n).transform + ` translateX(-${marginRight / 2}px)`\n } else {\n n.style.transform = null\n }\n })\n\n fixPosition('.JS-on-open-dialog', n => {\n if (opening) {\n n.classList.add('JS-dialog-open')\n } else {\n n.classList.remove('JS-dialog-open')\n }\n })\n window.requestAnimationFrame(()=>window.dispatchEvent(new CustomEvent('resize', {detail: {dialog: true}})))\n }\n\n const body = document.body\n let bodyWidth = body.offsetWidth\n if (opening) {\n const scrollTop = window.pageYOffset\n fakedScrollTop = scrollTop\n if (keepDisabledScroll) {\n body.style.overflowY = 'scroll'\n } else {\n body.style.overflow = 'hidden'\n }\n const marginRight = (body.offsetWidth - bodyWidth)\n\n body.style.position = 'fixed'\n body.style.top = -scrollTop + \"px\"\n body.style.left = '0'\n if (!keepDisabledScroll) {\n body.style.right = marginRight + 'px'\n } else {\n body.style.right = '0'\n }\n\n finishReset(marginRight,scrollTop)\n } else {\n fakedScrollTop = 0\n // setTimeout(() => {\n const scrollTop = parseInt(body.style.top)\n body.style.overflow = ''\n\n body.style.position = ''\n body.style.top = ''\n body.style.left = ''\n body.style.right = ''\n finishReset(0,-scrollTop)\n // },250)\n }\n}\n\nconst {href: originalHref, hash: originalHash} = window.location\n\nconst [useDialogLayers, getDialogLayersSize] = willUseLayers(React.useLayoutEffect)\nexport {useDialogLayers, getDialogLayersSize}\n\nexport const DialogContainer = forwardRef((\n {\n children, title, closeDialog, closeOnClick, dontRefocus, onConfirm, prev, next, form, noFormWrap, withFormWrap, placement = 'Dialog',\n DialogErrorContent, customHref, animation = dialogFadeInDown, animationTiming, animationLeaveEffect, animationEnterEffect, skipKeys,fullscreenOnMobile, fullscreen, confirmChanges = false, skipDom, modalRef, skipCheckFocus,\n autoComplete, blurBackdrop\n },\n forwardedRef) => {\n\n const dialogRef = useEnsureRef(forwardedRef)\n const prevActiveElement = useRefState(document.activeElement)\n const modal = useEnsureRef(modalRef)\n const modalScroll = useRef()\n const mouseDownInModal = useRefState()\n const previousHash = useRefState(window.location.hash)\n\n const [layerIndex, {isTop, getSize}] = useDialogLayers({\n onFirst: () => {\n waitForPop().then(() => {\n if (customHref && encodeURI(customHref) === window.location.hash) {\n window.history.replaceState(history.state, '', window.location.pathname)\n window.history.pushState({dialog: true}, '', customHref)\n } else {\n window.history.pushState({dialog: true}, '', window.location.href + (customHref || \"\"))\n }\n })\n // clearPreventDialogPop()\n if (document.body.scrollHeight === document.body.clientHeight) {\n modal.current.style.overflowY = \"scroll\"\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"scroll\"\n }\n }\n // resetNavbar(true)\n },\n onRemove: (layers) => {\n if (\n (layers === 0 && _.get('dialog', window.history.state) === true) ||\n (customHref && window.location.hash === encodeURI(customHref))\n ) {\n preventDialogPop(() => {\n window.history.back()\n })\n }\n },\n onEmpty: () => {\n if (document.body.scrollHeight > document.body.clientHeight) {\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"hidden\"\n }\n } else if (modal.current) {\n modal.current.style.overflowY = \"scroll\"\n }\n removeWindowScroll(false)\n }\n })\n\n const confirmCloseDialog = () => {\n if (form && form.getHasChanged() && confirmChanges) {\n form.confirm()\n .then(closeDialog)\n } else {\n callIfFunction(closeDialog)\n }\n }\n/*\n useEffect(() => () => {\n setTimeout(() => {\n if (window.location.hash === previousHash.get() && _.get('dialog', window.history.state) === true) {\n console.log(\"???\")\n }\n }, 100)\n }, [])*/\n\n const pastFirstTime = React.useRef()\n\n\n useEffect(() => {\n if (customHref && window.location.hash !== customHref) {\n // if (pastFirstTime.current) {\n waitForPop().then(() => {\n if (window.location.hash) {\n window.history.replaceState({dialog: true}, '', customHref)\n } else {\n window.history.pushState({dialog: true}, '', customHref)\n }\n })\n // } else {\n // window.history.pushState({dialog: true}, '', customHref)\n // pastFirstTime.current = true\n // }\n previousHash.set(encodeURI(customHref))\n }\n }, [customHref])\n\n useEffect(() => {\n window.addEventListener('keydown', checkKey)\n window.addEventListener('focusin', checkFocus)\n window.addEventListener('popstate', checkHistory)\n return () => {\n window.removeEventListener('keydown', checkKey)\n window.removeEventListener('focusin', checkFocus)\n window.removeEventListener('popstate', checkHistory)\n if (!dontRefocus && document.body.contains(prevActiveElement.get()) && prevActiveElement.get().matches(focusableSelector)) {\n setTimeout(() => prevActiveElement.get().focus(), 0)\n }\n }\n }, [])\n\n\n const checkHistory = (e) => {\n if (!isTop()/* || (previousHash.get() !== window.location.hash && !customHref)*/) return\n if (_.get('willOpenDialog', window.history.state) === true) { return }\n if (_.get('dialog', window.history.state) !== true) {\n window.history.pushState({dialog: true}, '', window.location.href)\n }\n confirmCloseDialog()\n }\n\n const checkFocus = (e) => {\n if (!isTop() || skipCheckFocus) return\n if (modal.current && !e.target.closest('.' + modal.current.className.split(' ').join('.'))) {\n const nextTab = modal.current.querySelector('[tabindex]')\n if (nextTab)\n nextTab.focus()\n }\n }\n\n const checkKey = (e) => {\n if (!isTop() || skipKeys || e.target?.className?.indexOf(\"JS-dialog-skip-evts\")>=0 || e.target?.closest(\".JS-dialog-skip-evts\")) return\n if (modal.current && e.shiftKey && e.keyCode === 9 && modal.current.querySelector('[tabindex]') === document.activeElement) {\n e.preventDefault()\n const prevTab = [].slice.call(modal.current.querySelectorAll('[tabindex]')).reduce((acc, el) => el.tabIndex >= acc.tabIndex ? el : acc, {tabIndex: -1})\n if (prevTab && prevTab.focus)\n prevTab.focus()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n confirmCloseDialog()\n } else if (e.key === 'Enter') {\n if (e.target) {\n const target = e.target.closest(focusableSelector + ',div')\n if (target && (target.tagName.toLowerCase() !== 'input' || target.form || target.type.toLowerCase() === 'file') && target.matches(focusableSelector))\n return\n }\n e.preventDefault()\n e.stopPropagation()\n if (onConfirm) {\n onConfirm()\n } else if (form) {\n form.submitForm()\n }\n } else if (!e.target.matches(editableSelector)) {\n if (e.key === 'ArrowLeft' && prev) {\n prev()\n } else if (e.key === 'ArrowRight' && next) {\n next()\n }\n }\n }\n\n const checkClick = (e) => {\n if (closeOnClick && e.target === e.currentTarget && mouseDownInModal.get()) {\n confirmCloseDialog()\n }\n mouseDownInModal.set(false)\n }\n const mouseDown = (e) => {\n mouseDownInModal.set(e.target === e.currentTarget)\n }\n\n const usingForm = withFormWrap || (form && !noFormWrap)\n\n useFlipAnimation(dialogRef, animation, true, {\n nestedFlip: !skipDom,\n onEnterEnd: () => {\n if (getSize() === 1) {\n removeWindowScroll(true);\n }\n if (document.body.scrollHeight === document.body.clientHeight) {\n modal.current.style.overflowY = \"none\"\n }\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"scroll\"\n }\n },\n leaveEffect:animationLeaveEffect,\n enterEffect:animationEnterEffect,\n timing:animationTiming\n })\n useFlipAnimation(modal, !skipDom && identityOpacityFrames, true,{timing:animationTiming})\n\n const content = <>\n <PopupSlot name={'Popup-' + layerIndex}/>\n <ErrorBoundary title={callIfFunction(title)} closeDialog={closeDialog} Error={DialogErrorContent}>\n {callIfFunction(children, {confirmCloseDialog}, dialogRef, fullscreenOnMobile)}\n </ErrorBoundary>\n </>\n\n return (\n <Fill name={placement}>\n {\n skipDom\n ? content\n : <>\n <AnimatedModal timing={animationTiming} blurBackdrop={blurBackdrop}/>\n <ModalContainer ref={modal}>\n\n <DialogCenter autoComplete={autoComplete} className=\"JS-has-wc\" withScroll={getSize()>1} fullscreen={fullscreen} fullscreenOnMobile={fullscreenOnMobile} ref={modalScroll} tagAs={usingForm ? 'form' : undefined} onClick={checkClick}\n onSubmit={usingForm ? () => {} : undefined}\n onMouseDown={mouseDown}>\n {content}\n </DialogCenter>\n </ModalContainer>\n </>\n }\n </Fill>\n )\n})\n\nexport const AnimatedModal = React.forwardRef(({timing,nestedFlip,enterEffect,leaveEffect,modalIn = dialogModalIn, modalOut = dialogModalOut, blurBackdrop,...props},ref) => {\n const modal = useEnsureRef(ref)\n useFlipAnimation(modal, modalIn, modalOut,{timing,nestedFlip,leaveEffect,enterEffect})\n return <Modal {...props} $blurBackdrop={blurBackdrop} ref={modal}/>\n})\n\n"],"names":["dialogFadeInDown","oneWayAnimation","dialogModalIn","dialogModalOut","twoWayAnimation","Modal","styled","yakDomTag","attrs","className","props","$blurBackdrop","css","ModalContainer","DialogCenterTagAs","React","forwardRef","_ref","ref","tagAs","Tag","withScroll","fullscreen","fullscreenOnMobile","_objectWithoutProperties","_excluded","createElement","_extends","DialogCenter","PopupSlot","Slot","editableSelector","focusableSelector","shouldPreventResolvers","shouldPreventDialogPop","Promise","resolve","preventDialogPop","cb","then","res","push","waitForPop","preventDialogPopState","e","resolver","shift","stopImmediatePropagation","window","addEventListener","fixPosition","query","fn","elements","document","querySelectorAll","length","Array","prototype","slice","call","forEach","openLayers","fakedScrollTop","isFakeScrolled","removeWindowScroll","opening","keepDisabledScroll","Math","max","min","finishReset","marginRight","scrollTop","scroll","scrollLeft","scrollX","n","right","getComputedStyle","style","parseInt","transform","classList","add","remove","requestAnimationFrame","dispatchEvent","CustomEvent","detail","dialog","body","bodyWidth","offsetWidth","pageYOffset","overflowY","overflow","position","top","left","useDialogLayers","getDialogLayersSize","willUseLayers","useLayoutEffect","DialogContainer","_ref2","forwardedRef","children","title","closeDialog","closeOnClick","dontRefocus","onConfirm","prev","next","form","noFormWrap","withFormWrap","placement","DialogErrorContent","customHref","animation","animationTiming","animationLeaveEffect","animationEnterEffect","skipKeys","confirmChanges","skipDom","modalRef","skipCheckFocus","autoComplete","blurBackdrop","dialogRef","useEnsureRef","prevActiveElement","useRefState","activeElement","modal","modalScroll","useRef","mouseDownInModal","previousHash","location","hash","layerIndex","isTop","getSize","onFirst","encodeURI","history","replaceState","state","pathname","pushState","href","scrollHeight","clientHeight","current","onRemove","layers","_get","back","onEmpty","confirmCloseDialog","getHasChanged","confirm","callIfFunction","useEffect","set","checkKey","checkFocus","checkHistory","removeEventListener","contains","get","matches","setTimeout","focus","target","closest","split","join","nextTab","querySelector","_e$target","_e$target2","indexOf","shiftKey","keyCode","preventDefault","prevTab","reduce","acc","el","tabIndex","key","tagName","toLowerCase","type","stopPropagation","submitForm","checkClick","currentTarget","mouseDown","usingForm","useFlipAnimation","nestedFlip","onEnterEnd","leaveEffect","enterEffect","timing","identityOpacityFrames","content","Fragment","name","ErrorBoundary","Error","Fill","AnimatedModal","undefined","onClick","onSubmit","onMouseDown","_ref3","modalIn","modalOut","_excluded2"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import { yakDomTag } from '@startlibs/utils/yakDomTag';
|
|
4
|
+
import React, { useMemo } from 'react';
|
|
5
|
+
import { useEnsureRef, Fill } from '@startlibs/core';
|
|
6
|
+
import { usePositioning } from './usePositioning.mjs';
|
|
7
|
+
import { styled } from '@yak/react';
|
|
8
|
+
import { getDialogLayersSize } from './DialogContainer.mjs';
|
|
9
|
+
|
|
10
|
+
const _excluded = ["slot", "className", "onClick", "children"];
|
|
11
|
+
const AbsoluteContainer = styled(yakDomTag("div"))`
|
|
12
|
+
position: absolute;
|
|
13
|
+
`;
|
|
14
|
+
const Reposition = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
15
|
+
let {
|
|
16
|
+
slot = 'Popup',
|
|
17
|
+
className,
|
|
18
|
+
onClick,
|
|
19
|
+
children
|
|
20
|
+
} = _ref,
|
|
21
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
22
|
+
const popupRef = useEnsureRef(ref);
|
|
23
|
+
const [positionInfo, placeholder] = usePositioning(popupRef, rest);
|
|
24
|
+
const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : slot + '-' + (getDialogLayersSize() - 1), []);
|
|
25
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, placeholder, /*#__PURE__*/React.createElement(Fill, {
|
|
26
|
+
name: slotName
|
|
27
|
+
}, /*#__PURE__*/React.createElement(AbsoluteContainer, _extends({}, positionInfo, {
|
|
28
|
+
onClick: onClick,
|
|
29
|
+
className: className,
|
|
30
|
+
ref: popupRef
|
|
31
|
+
}), children)));
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
export { Reposition };
|
|
35
|
+
//# sourceMappingURL=Reposition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reposition.mjs","sources":["../../src/containers/Reposition.jsx"],"sourcesContent":["import React, {useMemo} from 'react'\nimport {Fill, useEnsureRef} from '@startlibs/core'\nimport {usePositioning} from './usePositioning'\nimport styled from 'styled-components'\nimport {getDialogLayersSize} from './DialogContainer'\n\nconst AbsoluteContainer = styled.div`\nposition: absolute;\n`\n\nexport const Reposition = React.forwardRef(({slot = 'Popup', className, onClick, children, ...rest},ref) => {\n const popupRef = useEnsureRef(ref)\n const [positionInfo, placeholder] = usePositioning(popupRef, rest)\n\n const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : (slot + '-' + (getDialogLayersSize() - 1)), [])\n return <>\n {placeholder}\n <Fill name={slotName}>\n <AbsoluteContainer {...positionInfo} onClick={onClick} className={className} ref={popupRef}>\n {children}\n </AbsoluteContainer>\n </Fill>\n </>\n})"],"names":["AbsoluteContainer","styled","yakDomTag","Reposition","React","forwardRef","_ref","ref","slot","className","onClick","children","rest","_objectWithoutProperties","_excluded","popupRef","useEnsureRef","positionInfo","placeholder","usePositioning","slotName","useMemo","getDialogLayersSize","createElement","Fragment","Fill","name","_extends"],"mappings":";;;;;;;;;;AAMA,MAAMA,iBAAiB,GAAGC,MAAA,CAAAC,SAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAC1B;AACA,CAAC,CAAA;AAEM,MAAMC,UAAU,gBAAGC,KAAK,CAACC,UAAU,CAAC,CAAAC,IAAA,EAAyDC,GAAG,KAAK;EAAA,IAAhE;AAACC,MAAAA,IAAI,GAAG,OAAO;MAAEC,SAAS;MAAEC,OAAO;AAAEC,MAAAA,QAAAA;AAAiB,KAAC,GAAAL,IAAA;AAALM,IAAAA,IAAI,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA,CAAA;AAChG,EAAA,MAAMC,QAAQ,GAAGC,YAAY,CAACT,GAAG,CAAC,CAAA;EAClC,MAAM,CAACU,YAAY,EAAEC,WAAW,CAAC,GAAGC,cAAc,CAACJ,QAAQ,EAAEH,IAAI,CAAC,CAAA;EAElE,MAAMQ,QAAQ,GAAGC,OAAO,CAAC,MAAMC,mBAAmB,EAAE,KAAK,CAAC,GAAGd,IAAI,GAAIA,IAAI,GAAG,GAAG,IAAIc,mBAAmB,EAAE,GAAG,CAAC,CAAE,EAAE,EAAE,CAAC,CAAA;AACnH,EAAA,oBAAOlB,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,EACJN,IAAAA,EAAAA,WAAW,eACZd,KAAA,CAAAmB,aAAA,CAACE,IAAI,EAAA;AAACC,IAAAA,IAAI,EAAEN,QAAAA;GACVhB,eAAAA,KAAA,CAAAmB,aAAA,CAACvB,iBAAiB,EAAA2B,QAAA,KAAKV,YAAY,EAAA;AAAEP,IAAAA,OAAO,EAAEA,OAAQ;AAACD,IAAAA,SAAS,EAAEA,SAAU;AAACF,IAAAA,GAAG,EAAEQ,QAAAA;GAC/EJ,CAAAA,EAAAA,QACgB,CACf,CACN,CAAC,CAAA;AACL,CAAC;;;;"}
|