MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -312,6 +312,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -328,7 +341,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -312,6 +312,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -328,7 +341,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -312,6 +312,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -328,7 +341,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -312,6 +312,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -328,7 +341,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -312,6 +312,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -328,7 +341,7 @@
}, true);
-
+
-
+
MTFHRT@groups.io | Wiki
@@ -313,6 +313,19 @@
if (bar) bar.classList.remove('active');
});
+ // Bootstrap appends an open tooltip to , outside the content HTMX
+ // replaces, so clicking a boosted link while its tooltip shows would leave
+ // the tooltip stranded on the new page. Dispose of the open tooltips
+ // whose triggers are about to be swapped out.
+ document.addEventListener('htmx:beforeSwap', function(evt) {
+ var target = evt.detail && evt.detail.target;
+ if (!target || typeof bootstrap === 'undefined') return;
+ target.querySelectorAll('[aria-describedby^="tooltip"]').forEach(function(el) {
+ var tip = bootstrap.Tooltip.getInstance(el);
+ if (tip) tip.dispose();
+ });
+ });
+
// Haptic feedback on mobile-native chrome taps: bottom-nav tabs, back
// chevron, and the navbar overflow action slot. Uses the shared helpers
// from qtutils/appfunctions.qtpl — they no-op on non-Capacitor runtimes,
@@ -329,7 +342,7 @@
}, true);
-
+