(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; }