Compare commits
No commits in common. "9777cb2ea78d878eb5748434422fce6f6b9ae782" and "8e6fb4b66d52af5b345de7e44ceb35b47f65e504" have entirely different histories.
9777cb2ea7
...
8e6fb4b66d
@ -1 +1 @@
|
|||||||
v20260101-08-run-checks-shift-multiselect-persist
|
v20260101-07-run-checks-shift-multiselect-delegation-fix
|
||||||
|
|||||||
@ -289,12 +289,7 @@
|
|||||||
// Shift-click range selection for checkbox rows
|
// Shift-click range selection for checkbox rows
|
||||||
var lastCheckedCb = null;
|
var lastCheckedCb = null;
|
||||||
|
|
||||||
|
function statusClass(status) {
|
||||||
|
|
||||||
// Track checkbox state before click to avoid double-toggle issues across browsers
|
|
||||||
var lastMouseDownCb = null;
|
|
||||||
var lastMouseDownChecked = null;
|
|
||||||
function statusClass(status) {
|
|
||||||
var s = (status || "").toString().toLowerCase();
|
var s = (status || "").toString().toLowerCase();
|
||||||
|
|
||||||
// Allow derived display strings like "Success (override)"
|
// Allow derived display strings like "Success (override)"
|
||||||
@ -381,17 +376,10 @@ function statusClass(status) {
|
|||||||
table.addEventListener('mousedown', function (e) {
|
table.addEventListener('mousedown', function (e) {
|
||||||
var t = e.target;
|
var t = e.target;
|
||||||
if (!t) return;
|
if (!t) return;
|
||||||
|
if (t.classList && t.classList.contains('rc_row_cb') && e.shiftKey) {
|
||||||
if (t.classList && t.classList.contains('rc_row_cb')) {
|
e.preventDefault();
|
||||||
// Remember state before click so Shift-click logic can reliably compute the intended target state
|
if (window.getSelection) {
|
||||||
lastMouseDownCb = t;
|
try { window.getSelection().removeAllRanges(); } catch (err) {}
|
||||||
lastMouseDownChecked = t.checked;
|
|
||||||
|
|
||||||
if (e.shiftKey) {
|
|
||||||
e.preventDefault();
|
|
||||||
if (window.getSelection) {
|
|
||||||
try { window.getSelection().removeAllRanges(); } catch (err) {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
@ -407,15 +395,9 @@ table.addEventListener('click', function (e) {
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
// The default action would toggle the checkbox; do it manually
|
// The default action would toggle the checkbox; do it manually
|
||||||
// Use the remembered pre-click state to avoid double toggling in some browsers
|
var targetChecked = !t.checked;
|
||||||
var preChecked = (lastMouseDownCb === t ? lastMouseDownChecked : t.checked);
|
|
||||||
var targetChecked = !preChecked;
|
|
||||||
t.checked = targetChecked;
|
t.checked = targetChecked;
|
||||||
|
|
||||||
// Reset mousedown tracking once we've consumed it
|
|
||||||
lastMouseDownCb = null;
|
|
||||||
lastMouseDownChecked = null;
|
|
||||||
|
|
||||||
var cbs = Array.prototype.slice.call(table.querySelectorAll('tbody .rc_row_cb'));
|
var cbs = Array.prototype.slice.call(table.querySelectorAll('tbody .rc_row_cb'));
|
||||||
var start = cbs.indexOf(lastCheckedCb);
|
var start = cbs.indexOf(lastCheckedCb);
|
||||||
var end = cbs.indexOf(t);
|
var end = cbs.indexOf(t);
|
||||||
@ -440,12 +422,7 @@ table.addEventListener('click', function (e) {
|
|||||||
// Normal click: let default toggle happen, but remember the last checkbox
|
// Normal click: let default toggle happen, but remember the last checkbox
|
||||||
lastCheckedCb = t;
|
lastCheckedCb = t;
|
||||||
|
|
||||||
|
// Defer update until after the checkbox state changes
|
||||||
|
|
||||||
// Reset mousedown tracking
|
|
||||||
lastMouseDownCb = null;
|
|
||||||
lastMouseDownChecked = null;
|
|
||||||
// Defer update until after the checkbox state changes
|
|
||||||
setTimeout(updateButtons, 0);
|
setTimeout(updateButtons, 0);
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
|
|||||||
@ -151,13 +151,6 @@
|
|||||||
- Disabled default browser text selection when using Shift during checkbox interaction.
|
- Disabled default browser text selection when using Shift during checkbox interaction.
|
||||||
- Applied Gmail-style range selection logic for consistent multi-row selection behavior.
|
- Applied Gmail-style range selection logic for consistent multi-row selection behavior.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## v20260101-08-run-checks-shift-multiselect-selection-retain
|
|
||||||
|
|
||||||
- Fixed Shift-click multi-select on the Run Checks page so the initial checkbox selection is preserved when selecting additional rows with Shift.
|
|
||||||
- Made Shift range selection use the checkbox pre-click state to prevent unintended double-toggles across browsers.
|
|
||||||
|
|
||||||
================================================================================================================================================
|
================================================================================================================================================
|
||||||
## v0.1.14
|
## v0.1.14
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user