Compare commits

..

2 Commits

3 changed files with 22 additions and 1 deletions

View File

@ -1 +1 @@
v20260101-13-run-checks-select-all-indeterminate-state-fix
v20260101-14-run-checks-select-all-indeterminate-stuck-dash-fix

View File

@ -389,6 +389,14 @@ function statusClass(status) {
selectAll.indeterminate = false;
selectAll.checked = !!checked;
// Some browsers can keep rendering the indeterminate UI even after
// setting it to false when the click default action runs afterwards.
// Re-assert the header state on the next tick.
setTimeout(function () {
selectAll.indeterminate = false;
selectAll.checked = !!checked;
}, 0);
updateButtons();
}
@ -423,6 +431,12 @@ function statusClass(status) {
// Fully control header checkbox behavior to prevent indeterminate state from getting stuck.
selectAll.addEventListener('click', toggleHeaderSelection, true);
// If the browser applies a late default toggle, force the visual state
// back to whatever the row selection actually is.
selectAll.addEventListener('change', function () {
refreshSelectAll();
}, true);
selectAll.addEventListener('keydown', function (e) {
// Space/Enter should behave the same as a click.
if (e.key === ' ' || e.code === 'Space' || e.key === 'Enter') {

View File

@ -201,6 +201,13 @@
- Ensured that after clearing all selected rows, the “Select all” checkbox can again be used to select all rows normally.
- Improved synchronization between individual row selection and the global “Select all” checkbox state.
---
## v20260101-14-run-checks-select-all-indeterminate-stuck-dash-fix
- Fixed an issue on the Run Checks page where the “Select all” checkbox could remain visually stuck in the indeterminate (`-`) state after clearing the current selection.
- Ensured the header checkbox state is re-synced after the click/change cycle so it correctly reflects the row selection state.
================================================================================================================================================
## v0.1.14