Skip to content

Commit e226764

Browse files
committed
fix is wrong select indicator when enable selectRow.onlyUnselectVisible
1 parent 38c782c commit e226764

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/BootstrapTable.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,16 @@ class BootstrapTable extends Component {
429429

430430
isSelectAll() {
431431
if (this.store.isEmpty()) return false;
432-
const unselectable = this.props.selectRow.unselectable;
433-
const defaultSelectRowKeys = this.store.getSelectedRowKeys();
434-
const allRowKeys = this.store.getAllRowkey();
432+
const { selectRow: { unselectable, onlyUnselectVisible } } = this.props;
433+
const keyField = this.store.getKeyField();
434+
const allRowKeys = onlyUnselectVisible ?
435+
this.store.get().map(r => r[keyField]) :
436+
this.store.getAllRowkey();
437+
let defaultSelectRowKeys = this.store.getSelectedRowKeys();
438+
439+
if (onlyUnselectVisible) {
440+
defaultSelectRowKeys = defaultSelectRowKeys.filter(x => x !== allRowKeys);
441+
}
435442

436443
if (defaultSelectRowKeys.length === 0) return false;
437444
let match = 0;
@@ -645,9 +652,17 @@ class BootstrapTable extends Component {
645652

646653
if (typeof result == 'undefined' || result !== false) {
647654
if (isSelected) {
648-
selectedRowKeys = Array.isArray(result) ?
649-
result :
650-
rows.map(r => r[keyField]);
655+
if (Array.isArray(result)) {
656+
selectedRowKeys = result;
657+
} else {
658+
const currentRowKeys = rows.map(r => r[keyField]);
659+
// onlyUnselectVisible default is false, #1276
660+
if (onlyUnselectVisible) {
661+
selectedRowKeys = selectedRowKeys.concat(currentRowKeys);
662+
} else {
663+
selectedRowKeys = currentRowKeys;
664+
}
665+
}
651666
} else {
652667
if (unselectable && selected) {
653668
selectedRowKeys = selected.filter(r => unselectable.indexOf(r) > -1);

0 commit comments

Comments
 (0)