MCPcopy Create free account
hub / github.com/error311/FileRise / wireSelectAll

Function wireSelectAll

public/js/fileListView.js:3423–3525  ·  view source on GitHub ↗
(fileListContent)

Source from the content-addressed store, hash-verified

3421
3422// Wire "select all" header checkbox for the current table render
3423function wireSelectAll(fileListContent) {
3424 // Be flexible about how the header checkbox is identified
3425 const getSelectAll = () => fileListContent.querySelector(
3426 'thead input[type="checkbox"].select-all, ' +
3427 'thead .select-all input[type="checkbox"], ' +
3428 'thead input#selectAll, ' +
3429 'thead input#selectAllCheckbox, ' +
3430 'thead input[data-select-all]'
3431 );
3432 const selectAll = getSelectAll();
3433 if (!selectAll) return;
3434 if (selectAll.__wiredSelectAll) return;
3435 selectAll.__wiredSelectAll = true;
3436
3437 const getRowCbs = () =>
3438 Array.from(fileListContent.querySelectorAll('tbody .file-checkbox'))
3439 .filter(cb => !cb.disabled && !cb.closest('tr.folder-row'));
3440
3441 const clearFolderSelections = () => {
3442 fileListContent.querySelectorAll('tbody .folder-checkbox:checked').forEach(cb => {
3443 cb.checked = false;
3444 updateRowHighlight(cb);
3445 });
3446 };
3447
3448 const applySelectAll = () => {
3449 // Clear any folder selection when toggling all files
3450 clearFolderSelections();
3451 const checked = selectAll.checked;
3452 getRowCbs().forEach(cb => {
3453 cb.checked = checked;
3454 updateRowHighlight(cb);
3455 });
3456 updateFileActionButtons();
3457 // No indeterminate state when explicitly toggled
3458 selectAll.indeterminate = false;
3459 selectAll.__lastSelectAllChecked = selectAll.checked;
3460 };
3461
3462 const handleSelectAllChange = () => {
3463 applySelectAll();
3464 };
3465
3466 // Toggle all rows when the header checkbox changes
3467 selectAll.addEventListener('change', handleSelectAllChange);
3468
3469 // Some UI layers can swallow left-click toggles. Track state and force toggle if needed.
3470 selectAll.addEventListener('mousedown', (e) => {
3471 if (e.button !== 0) return;
3472 selectAll.__lastSelectAllChecked = selectAll.checked;
3473 });
3474
3475 selectAll.addEventListener('click', (e) => {
3476 if (e.button !== 0) return;
3477 if (selectAll.disabled) return;
3478 const last = selectAll.__lastSelectAllChecked;
3479 if (last === selectAll.checked) {
3480 selectAll.checked = !selectAll.checked;

Callers 1

renderFileTableFunction · 0.85

Calls 3

getSelectAllFunction · 0.85
handleSelectAllChangeFunction · 0.85
syncHeaderFunction · 0.85

Tested by

no test coverage detected