diff --git a/samy.js b/samy.js index f735a18..b0e57a4 100644 --- a/samy.js +++ b/samy.js @@ -94,7 +94,7 @@ document.addEventListener("DOMContentLoaded", () => { }); // ======================================================================= -// Onboarding: Select-all left/right columns +// Onboarding: Select-all left columns // ======================================================================= function toggleColumn(col) { const master = document.getElementById( @@ -129,7 +129,7 @@ function updateSelectAll(col) { } document.addEventListener("DOMContentLoaded", () => { - ["left", "right"].forEach((col) => { + ["left"].forEach((col) => { document .querySelectorAll(`#onboardTab input[type=checkbox][data-column="${col}"]`) .forEach((cb) => @@ -139,6 +139,78 @@ document.addEventListener("DOMContentLoaded", () => { }); }); +// ======================================================================= +// Onboarding: Right side split Select All (apps + tweaks) +// ======================================================================= + +// apps = only checkboxes marked data-group="apps" +// tweaks = everything in right column NOT marked as apps +const ONBOARD_RIGHT_GROUPS = { + apps: { + masterId: "selectAllAppsCheckbox", + selector: + '#onboardTab input[type=checkbox][data-column="right"][data-group="apps"]', + }, + tweaks: { + masterId: "selectAllTweaksCheckbox", + selector: + '#onboardTab input[type=checkbox][data-column="right"]:not([data-group="apps"])', + }, +}; + +function toggleOnboardGroup(groupKey) { + const cfg = ONBOARD_RIGHT_GROUPS[groupKey]; + if (!cfg) return; + + const master = document.getElementById(cfg.masterId); + if (!master) return; + + const children = document.querySelectorAll(cfg.selector); + + children.forEach((cb) => { + cb.checked = master.checked; + }); + + // fire change handlers so renameComputer / suboptions update properly + setTimeout(() => { + children.forEach((cb) => cb.dispatchEvent(new Event("change"))); + }, 0); +} + +function updateOnboardGroupSelectAll(groupKey) { + const cfg = ONBOARD_RIGHT_GROUPS[groupKey]; + if (!cfg) return; + + const master = document.getElementById(cfg.masterId); + if (!master) return; + + const children = document.querySelectorAll(cfg.selector); + + if (!children.length) { + master.checked = false; + return; + } + + master.checked = Array.from(children).every((cb) => cb.checked); +} + +document.addEventListener("DOMContentLoaded", () => { + Object.keys(ONBOARD_RIGHT_GROUPS).forEach((groupKey) => { + const cfg = ONBOARD_RIGHT_GROUPS[groupKey]; + + // When any child checkbox changes, refresh that group's Select All + document.querySelectorAll(cfg.selector).forEach((cb) => { + cb.addEventListener("change", () => + updateOnboardGroupSelectAll(groupKey) + ); + }); + + // Initial set + updateOnboardGroupSelectAll(groupKey); + }); +}); + + // ======================================================================= // Off-boarding Select All // =======================================================================