()
| 3496 | |
| 3497 | // Keep header checkbox state in sync with row selections |
| 3498 | const syncHeader = () => { |
| 3499 | const master = getSelectAll(); |
| 3500 | if (!master) return; |
| 3501 | const cbs = getRowCbs(); |
| 3502 | const total = cbs.length; |
| 3503 | const checked = cbs.filter(cb => cb.checked).length; |
| 3504 | if (!total) { |
| 3505 | master.checked = false; |
| 3506 | master.indeterminate = false; |
| 3507 | return; |
| 3508 | } |
| 3509 | master.checked = checked === total; |
| 3510 | master.indeterminate = checked > 0 && checked < total; |
| 3511 | }; |
| 3512 | |
| 3513 | // Listen for any row checkbox changes to refresh header state |
| 3514 | if (!fileListContent.__wiredSelectAllContainer) { |
no test coverage detected