67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
(function () {
|
|
const masterCheck = document.getElementById('master-check');
|
|
const rowChecks = document.querySelectorAll('.row-check');
|
|
const bulkForm = document.getElementById('users-bulk-form');
|
|
const selectedIdsInput = document.getElementById('bulk-selected-ids');
|
|
const selectedCount = document.getElementById('selected-count');
|
|
const focusCreateBtn = document.querySelector('[data-users-action="focus-create"]');
|
|
const selectVisibleBtns = document.querySelectorAll('[data-users-action="select-visible"]');
|
|
|
|
function updateSelected() {
|
|
const checked = document.querySelectorAll('.row-check:checked');
|
|
const ids = Array.from(checked).map(cb => cb.value);
|
|
selectedIdsInput.value = ids.join(',');
|
|
if (selectedCount) {
|
|
selectedCount.textContent = ids.length + ' selected';
|
|
}
|
|
if (masterCheck) {
|
|
const allRowChecks = document.querySelectorAll('.row-check');
|
|
masterCheck.checked = allRowChecks.length > 0 && checked.length === allRowChecks.length;
|
|
masterCheck.indeterminate = checked.length > 0 && checked.length < allRowChecks.length;
|
|
}
|
|
}
|
|
|
|
if (masterCheck) {
|
|
masterCheck.addEventListener('change', function () {
|
|
document.querySelectorAll('.row-check').forEach(function (cb) {
|
|
cb.checked = masterCheck.checked;
|
|
});
|
|
updateSelected();
|
|
});
|
|
}
|
|
|
|
document.addEventListener('change', function (event) {
|
|
if (event.target.classList.contains('row-check')) {
|
|
updateSelected();
|
|
}
|
|
});
|
|
|
|
selectVisibleBtns.forEach(function (btn) {
|
|
btn.addEventListener('click', function () {
|
|
document.querySelectorAll('.row-check').forEach(function (cb) {
|
|
cb.checked = true;
|
|
});
|
|
updateSelected();
|
|
});
|
|
});
|
|
|
|
if (focusCreateBtn) {
|
|
focusCreateBtn.addEventListener('click', function () {
|
|
var usernameInput = document.getElementById('users-username');
|
|
if (usernameInput) {
|
|
usernameInput.scrollIntoView({ behavior: 'smooth' });
|
|
setTimeout(function () { usernameInput.focus(); }, 150);
|
|
}
|
|
});
|
|
}
|
|
|
|
updateSelected();
|
|
})();
|
|
|
|
function setBulkAction(actionUrl) {
|
|
var form = document.getElementById('users-bulk-form');
|
|
if (form) {
|
|
form.action = actionUrl;
|
|
}
|
|
return true;
|
|
} |