Update samy.js

This commit is contained in:
2025-12-21 16:46:24 -05:00
parent 5cef503724
commit 4a386c00d8

76
samy.js
View File

@@ -94,7 +94,7 @@ document.addEventListener("DOMContentLoaded", () => {
}); });
// ======================================================================= // =======================================================================
// Onboarding: Select-all left/right columns // Onboarding: Select-all left columns
// ======================================================================= // =======================================================================
function toggleColumn(col) { function toggleColumn(col) {
const master = document.getElementById( const master = document.getElementById(
@@ -129,7 +129,7 @@ function updateSelectAll(col) {
} }
document.addEventListener("DOMContentLoaded", () => { document.addEventListener("DOMContentLoaded", () => {
["left", "right"].forEach((col) => { ["left"].forEach((col) => {
document document
.querySelectorAll(`#onboardTab input[type=checkbox][data-column="${col}"]`) .querySelectorAll(`#onboardTab input[type=checkbox][data-column="${col}"]`)
.forEach((cb) => .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 // Off-boarding Select All
// ======================================================================= // =======================================================================