in frontend/janus.js [129:189]
updateSelection = function(event) {
const checked = Array.from(checkboxes).filter(function(checkbox) {
return checkbox.checked;
}),
permissions = checked.map(function(checkbox) {
return DOMPurify.sanitize(checkbox.getAttribute("data-permission-id"));
}),
clicked = event ? event.target : null,
accountContainer = clicked ? clicked.closest(".aws-account-body") : null,
otherAccountCheckboxes = accountContainer ? accountContainer.querySelectorAll(".multi-select__checkbox:not(:checked)") : [];
// enable feature if JS is available
document.querySelectorAll(".multi-select__container").forEach(el => el.style.display = "block");
// deal with disabling other permissions in the same account as the one just selected
if (event) {
if (clicked.checked) {
otherAccountCheckboxes.forEach(function(checkbox) {
checkbox.checked = false;
checkbox.disabled = true;
});
} else {
otherAccountCheckboxes.forEach(function(checkbox) {
checkbox.checked = false;
checkbox.disabled = false;
});
}
}
// update display
if (permissions.length) {
activeContainer.style.display = "block";
inactiveContainer.style.display = "none";
// disable all non-multi credentials links to avoid confusion
singleCredentialsLinks.forEach(function(link) {
link.classList.add('disabled');
});
accountContainers.forEach(function(container) {
container.style.filter = "grayscale(0)";
});
Array.from(accountContainers).filter(function(container) {
return !checked.some(function(checkbox) {
return container.contains(checkbox);
});
}).forEach(function(container) {
container.style.filter = "grayscale(0.6)";
});
} else {
inactiveContainer.style.display = "block";
activeContainer.style.display = "none";
// restore single credentials links
singleCredentialsLinks.forEach(function(link) {
link.classList.remove('disabled');
});
accountContainers.forEach(function(container) {
container.style.filter = "grayscale(0)";
});
}
controlFeedbackText.textContent = permissions.length === 1 ? permissions.length + " account" : permissions.length + " accounts";
updateLink(permissions);
};