Update samy.js
This commit is contained in:
76
samy.js
76
samy.js
@@ -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
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user