mirror of https://github.com/ElemeFE/element
Table: fix select-all checkbox is selected when all rows are not selectable.
parent
402a9abacb
commit
012c0185f2
|
@ -313,21 +313,31 @@ TableStore.prototype.updateAllSelected = function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
let isAllSelected = true;
|
let isAllSelected = true;
|
||||||
|
let selectedCount = 0;
|
||||||
for (let i = 0, j = data.length; i < j; i++) {
|
for (let i = 0, j = data.length; i < j; i++) {
|
||||||
const item = data[i];
|
const item = data[i];
|
||||||
if (selectable) {
|
if (selectable) {
|
||||||
if (selectable.call(null, item, i) && !isSelected(item)) {
|
const isRowSelectable = selectable.call(null, item, i);
|
||||||
isAllSelected = false;
|
if (isRowSelectable) {
|
||||||
break;
|
if (!isSelected(item)) {
|
||||||
|
isAllSelected = false;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
selectedCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!isSelected(item)) {
|
if (!isSelected(item)) {
|
||||||
isAllSelected = false;
|
isAllSelected = false;
|
||||||
break;
|
break;
|
||||||
|
} else {
|
||||||
|
selectedCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selectedCount === 0) isAllSelected = false;
|
||||||
|
|
||||||
states.isAllSelected = isAllSelected;
|
states.isAllSelected = isAllSelected;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -623,6 +623,48 @@ describe('Table', () => {
|
||||||
}, DELAY);
|
}, 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 => {
|
it('emit selection-change after row has been removed', done => {
|
||||||
const vm = createVue({
|
const vm = createVue({
|
||||||
template: `
|
template: `
|
||||||
|
|
Loading…
Reference in New Issue