mirror of https://github.com/ElemeFE/element
Table: fix select-all checkbox is selected when all rows are not selectable.
parent
1dad71e170
commit
0a54bd41f1
|
@ -313,21 +313,31 @@ TableStore.prototype.updateAllSelected = function() {
|
|||
};
|
||||
|
||||
let isAllSelected = true;
|
||||
let selectedCount = 0;
|
||||
for (let i = 0, j = data.length; i < j; i++) {
|
||||
const item = data[i];
|
||||
if (selectable) {
|
||||
if (selectable.call(null, item, i) && !isSelected(item)) {
|
||||
isAllSelected = false;
|
||||
break;
|
||||
const isRowSelectable = selectable.call(null, item, i);
|
||||
if (isRowSelectable) {
|
||||
if (!isSelected(item)) {
|
||||
isAllSelected = false;
|
||||
break;
|
||||
} else {
|
||||
selectedCount++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!isSelected(item)) {
|
||||
isAllSelected = false;
|
||||
break;
|
||||
} else {
|
||||
selectedCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedCount === 0) isAllSelected = false;
|
||||
|
||||
states.isAllSelected = isAllSelected;
|
||||
};
|
||||
|
||||
|
|
|
@ -623,6 +623,48 @@ describe('Table', () => {
|
|||
}, DELAY);
|
||||
});
|
||||
|
||||
it('selectable === false & check selectAll status', done => {
|
||||
const vm = createVue({
|
||||
template: `
|
||||
<el-table :data="testData" @selection-change="change">
|
||||
<el-table-column type="selection" :selectable="filterSelect" />
|
||||
<el-table-column prop="name" label="name" />
|
||||
<el-table-column prop="release" label="release" />
|
||||
<el-table-column prop="director" label="director" />
|
||||
<el-table-column prop="runtime" label="runtime" />
|
||||
</el-table>
|
||||
`,
|
||||
|
||||
created() {
|
||||
},
|
||||
|
||||
data() {
|
||||
return { selected: [], testData: null };
|
||||
},
|
||||
|
||||
methods: {
|
||||
change(rows) {
|
||||
this.selected = rows;
|
||||
},
|
||||
|
||||
filterSelect(row, index) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
||||
vm.testData = getTestData();
|
||||
|
||||
setTimeout(_ => {
|
||||
expect(vm.$el.querySelector('.el-checkbox').__vue__.checked).to.be.false;
|
||||
setTimeout(_ => {
|
||||
expect(vm.selected).to.length(0);
|
||||
destroyVM(vm);
|
||||
done();
|
||||
}, DELAY);
|
||||
}, DELAY);
|
||||
});
|
||||
|
||||
it('emit selection-change after row has been removed', done => {
|
||||
const vm = createVue({
|
||||
template: `
|
||||
|
|
Loading…
Reference in New Issue