diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/tab-sync.js b/qdrant-landing/themes/qdrant-2024/assets/js/tab-sync.js index f05539946..d10b86fce 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/js/tab-sync.js +++ b/qdrant-landing/themes/qdrant-2024/assets/js/tab-sync.js @@ -3,6 +3,30 @@ * Add data-tab-sync="group-id" to the tab container (parent of tab buttons). * Tab buttons must have data-tab with matching values across synchronized groups. * Programmatic clicks (isTrusted: false) are ignored to avoid sync loops. + * + * Optional data-tab-sync-direction: + * - "down-only": only sync to tab groups that appear later in the DOM (below the clicked one). + * E.g. with A, B, C: A syncs B and C; B syncs C; C syncs none. + * + * @example Basic usage (bidirectional sync) + *
+ * + * + *
+ *
+ * + * + *
+ * + * @example Down-only (sync flows downward only) + *
+ * + * + *
+ *
+ * + * + *
*/ export function initTabSync() { document.addEventListener( @@ -18,8 +42,20 @@ export function initTabSync() { const tabId = tab.getAttribute('data-tab'); if (!syncGroup || !tabId) return; - document.querySelectorAll(`[data-tab-sync="${syncGroup}"]`).forEach((group) => { - if (group === container) return; + const groups = [...document.querySelectorAll(`[data-tab-sync="${syncGroup}"]`)]; + const hasDownOnly = groups.some((g) => g.getAttribute('data-tab-sync-direction') === 'down-only'); + + const shouldSyncTo = (group) => { + if (group === container) return false; + if (hasDownOnly) { + const groupIsBelow = !!(container.compareDocumentPosition(group) & Node.DOCUMENT_POSITION_FOLLOWING); + if (!groupIsBelow) return false; + } + return true; + }; + + groups.forEach((group) => { + if (!shouldSyncTo(group)) return; const matchingTab = group.querySelector(`[data-tab="${tabId}"]`); if (matchingTab) matchingTab.click(); }); diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/pricing/qdrant-pricing-doors.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/pricing/qdrant-pricing-doors.html index 5cc73fd9a..2dad5c38a 100644 --- a/qdrant-landing/themes/qdrant-2024/layouts/partials/pricing/qdrant-pricing-doors.html +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/pricing/qdrant-pricing-doors.html @@ -2,7 +2,7 @@
{{/* Navigation Tabs – data-tab-sync groups tab switching across sections */}} -
+
{{ range .context.Params.tabs }}