Skip to content

Commit a54e895

Browse files
committed
fix: fix merge cell checkbox state update #3668
1 parent d1c0214 commit a54e895

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@visactor/vtable",
5+
"comment": "fix: fix merge cell checkbox state update #3668",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@visactor/vtable"
10+
}

packages/vtable/src/state/checkbox/checkbox.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,26 @@ export function setCheckedState(
1212
field: string | number,
1313
checked: boolean | 'indeterminate',
1414
state: StateManager
15+
) {
16+
const table = state.table;
17+
const cellRange = table.getCellRange(col, row);
18+
if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {
19+
for (let i = cellRange.start.col; i <= cellRange.end.col; i++) {
20+
for (let j = cellRange.start.row; j <= cellRange.end.row; j++) {
21+
setSingleCheckedState(i, j, field, checked, state);
22+
}
23+
}
24+
} else {
25+
setSingleCheckedState(col, row, field, checked, state);
26+
}
27+
}
28+
29+
function setSingleCheckedState(
30+
col: number,
31+
row: number,
32+
field: string | number,
33+
checked: boolean | 'indeterminate',
34+
state: StateManager
1535
) {
1636
const recordIndex = state.table.getRecordShowIndexByCell(col, row);
1737
if (recordIndex >= 0) {

0 commit comments

Comments
 (0)