@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farm-investimentos/front-mfe-components",
3
- "version": "15.14.3",
3
+ "version": "15.14.4",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -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">×</span>
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 listener de scroll quando tooltip for escondido
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 listener de scroll se existir
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