@farm-investimentos/front-mfe-components 15.14.3 → 15.14.4
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/dist/front-mfe-components.common.js +836 -109
- package/dist/front-mfe-components.common.js.map +1 -1
- package/dist/front-mfe-components.css +1 -1
- package/dist/front-mfe-components.umd.js +836 -109
- package/dist/front-mfe-components.umd.js.map +1 -1
- package/dist/front-mfe-components.umd.min.js +1 -1
- package/dist/front-mfe-components.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Tooltip/Tooltip.vue +56 -3
package/package.json
CHANGED
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
<div class="farm-tooltip__title">
|
|
29
29
|
<slot name="title"></slot>
|
|
30
30
|
</div>
|
|
31
|
-
<span v-if="externalControl" class="farm-tooltip__close" @click="onClose"
|
|
31
|
+
<span v-if="externalControl" class="farm-tooltip__close" @click="onClose">×
|
|
32
|
+
|
|
33
|
+
</span>
|
|
32
34
|
</div>
|
|
33
35
|
<div class="farm-tooltip__content">
|
|
34
36
|
<slot />
|
|
@@ -105,6 +107,7 @@ export default defineComponent({
|
|
|
105
107
|
let hasBeenBoostrapped = false;
|
|
106
108
|
let scrollListener = null;
|
|
107
109
|
let isInsideModal = false;
|
|
110
|
+
let modalScrollElements = [];
|
|
108
111
|
|
|
109
112
|
const calculatePosition = () => {
|
|
110
113
|
const parentBoundingClientRect = parent.value.getBoundingClientRect();
|
|
@@ -229,7 +232,43 @@ export default defineComponent({
|
|
|
229
232
|
styles.left = `${left}px`;
|
|
230
233
|
styles.top = `${top}px`;
|
|
231
234
|
};
|
|
235
|
+
|
|
236
|
+
// Escutar scroll da window E do modal
|
|
232
237
|
window.addEventListener('scroll', scrollListener, true);
|
|
238
|
+
|
|
239
|
+
// Encontrar o modal e escutar seu scroll interno também
|
|
240
|
+
const modalElement = parent.value.closest('.farm-modal');
|
|
241
|
+
if (modalElement) {
|
|
242
|
+
// Função para detectar elementos scrolláveis
|
|
243
|
+
const isScrollable = (element) => {
|
|
244
|
+
const style = window.getComputedStyle(element);
|
|
245
|
+
return (
|
|
246
|
+
style.overflow === 'auto' ||
|
|
247
|
+
style.overflow === 'scroll' ||
|
|
248
|
+
style.overflowY === 'auto' ||
|
|
249
|
+
style.overflowY === 'scroll' ||
|
|
250
|
+
style.overflowX === 'auto' ||
|
|
251
|
+
style.overflowX === 'scroll'
|
|
252
|
+
);
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// Buscar todos os elementos dentro do modal
|
|
256
|
+
const allElements = modalElement.querySelectorAll('*');
|
|
257
|
+
const scrollableElements = Array.from(allElements).filter(isScrollable);
|
|
258
|
+
|
|
259
|
+
// Adicionar elementos específicos do modal que podem ter scroll
|
|
260
|
+
const modalSpecificElements = modalElement.querySelectorAll(
|
|
261
|
+
'.farm-modal--content, .farm-modal--content > div, [data-simplebar], .simplebar-content-wrapper'
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
// Combinar e remover duplicatas
|
|
265
|
+
const elementsToWatch = [...new Set([...scrollableElements, ...modalSpecificElements, modalElement])];
|
|
266
|
+
|
|
267
|
+
elementsToWatch.forEach(element => {
|
|
268
|
+
element.addEventListener('scroll', scrollListener, true);
|
|
269
|
+
modalScrollElements.push(element);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
233
272
|
} else {
|
|
234
273
|
// Comportamento original para tooltips fora de modais
|
|
235
274
|
popup.value.style.position = 'absolute';
|
|
@@ -260,9 +299,16 @@ export default defineComponent({
|
|
|
260
299
|
hideTimeout = window.setTimeout(() => {
|
|
261
300
|
showOver.value = false;
|
|
262
301
|
|
|
263
|
-
// Remover
|
|
302
|
+
// Remover listeners de scroll quando tooltip for escondido
|
|
264
303
|
if (scrollListener) {
|
|
265
304
|
window.removeEventListener('scroll', scrollListener, true);
|
|
305
|
+
|
|
306
|
+
// Remover listeners dos elementos de scroll do modal
|
|
307
|
+
modalScrollElements.forEach(element => {
|
|
308
|
+
element.removeEventListener('scroll', scrollListener, true);
|
|
309
|
+
});
|
|
310
|
+
modalScrollElements = [];
|
|
311
|
+
|
|
266
312
|
scrollListener = null;
|
|
267
313
|
}
|
|
268
314
|
|
|
@@ -285,9 +331,16 @@ export default defineComponent({
|
|
|
285
331
|
hideTimeout = null;
|
|
286
332
|
}
|
|
287
333
|
|
|
288
|
-
// Limpar
|
|
334
|
+
// Limpar listeners de scroll se existirem
|
|
289
335
|
if (scrollListener) {
|
|
290
336
|
window.removeEventListener('scroll', scrollListener, true);
|
|
337
|
+
|
|
338
|
+
// Remover listeners dos elementos de scroll do modal
|
|
339
|
+
modalScrollElements.forEach(element => {
|
|
340
|
+
element.removeEventListener('scroll', scrollListener, true);
|
|
341
|
+
});
|
|
342
|
+
modalScrollElements = [];
|
|
343
|
+
|
|
291
344
|
scrollListener = null;
|
|
292
345
|
}
|
|
293
346
|
|