From 1081ab8d7fb04657610ca68e407dc7c0de5f5f2d Mon Sep 17 00:00:00 2001 From: Xin <5097752+imfing@users.noreply.github.com> Date: Tue, 5 Aug 2025 20:37:42 +0800 Subject: [PATCH] fix: tab not switching on non-synced mode (#732) * fix: tab not switching on non-synced mode * fix(tabs): improve tab synchronization logic and clean up data attributes * refactor(tabs): streamline tab synchronization logic --- assets/js/tabs.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/assets/js/tabs.js b/assets/js/tabs.js index 12a7d64..a9d09be 100644 --- a/assets/js/tabs.js +++ b/assets/js/tabs.js @@ -23,9 +23,9 @@ }); } - const groups = document.querySelectorAll('[data-tab-group]'); + const syncGroups = document.querySelectorAll('[data-tab-group]'); - groups.forEach((group) => { + syncGroups.forEach((group) => { const key = encodeURIComponent(group.dataset.tabGroup); const saved = localStorage.getItem('hextra-tab-' + key); if (saved !== null) { @@ -39,12 +39,18 @@ const index = Array.from(container.querySelectorAll('.hextra-tabs-toggle')).indexOf( e.target ); - const key = encodeURIComponent(container.dataset.tabGroup); - document - .querySelectorAll('[data-tab-group="' + container.dataset.tabGroup + '"]') - .forEach((grp) => updateGroup(grp, index)); - if (key) { + + if (container.dataset.tabGroup) { + // Sync behavior: update all tab groups with the same name + const tabGroupValue = container.dataset.tabGroup; + const key = encodeURIComponent(tabGroupValue); + document + .querySelectorAll('[data-tab-group="' + tabGroupValue + '"]') + .forEach((grp) => updateGroup(grp, index)); localStorage.setItem('hextra-tab-' + key, index.toString()); + } else { + // Non-sync behavior: update only this specific tab group + updateGroup(container, index); } }); });