mirror of https://github.com/ElemeFE/element
Add minimum/maximum prop to checkbox group
parent
b9e3e7faef
commit
3cefe969be
|
@ -9,7 +9,9 @@
|
||||||
mixins: [Emitter],
|
mixins: [Emitter],
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
value: {}
|
value: {},
|
||||||
|
minimum: String,
|
||||||
|
maximum: String
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
|
|
@ -66,7 +66,18 @@
|
||||||
|
|
||||||
set(val) {
|
set(val) {
|
||||||
if (this.isGroup) {
|
if (this.isGroup) {
|
||||||
|
let isLimitExceeded = false;
|
||||||
|
(this._checkboxGroup.minimum !== undefined &&
|
||||||
|
val.length < this._checkboxGroup.minimum &&
|
||||||
|
(isLimitExceeded = true));
|
||||||
|
|
||||||
|
(this._checkboxGroup.maximum !== undefined &&
|
||||||
|
val.length > this._checkboxGroup.maximum &&
|
||||||
|
(isLimitExceeded = true));
|
||||||
|
|
||||||
|
isLimitExceeded === false &&
|
||||||
this.dispatch('ElCheckboxGroup', 'input', [val]);
|
this.dispatch('ElCheckboxGroup', 'input', [val]);
|
||||||
|
|
||||||
} else if (this.value !== undefined) {
|
} else if (this.value !== undefined) {
|
||||||
this.$emit('input', val);
|
this.$emit('input', val);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -68,6 +68,45 @@ describe('Checkbox', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('checkbox group minimum and maximum', done => {
|
||||||
|
vm = createVue({
|
||||||
|
template: `
|
||||||
|
<el-checkbox-group
|
||||||
|
v-model="checkList"
|
||||||
|
minimum="1"
|
||||||
|
maximum="2"
|
||||||
|
>
|
||||||
|
<el-checkbox label="a" ref="a"></el-checkbox>
|
||||||
|
<el-checkbox label="b" ref="b"></el-checkbox>
|
||||||
|
<el-checkbox label="c" ref="c"></el-checkbox>
|
||||||
|
<el-checkbox label="d" ref="d"></el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkList: ['a'],
|
||||||
|
lastEvent: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
expect(vm.checkList.length === 1).to.be.true;
|
||||||
|
vm.$refs.a.$el.click();
|
||||||
|
vm.$nextTick(() => {
|
||||||
|
expect(vm.checkList.indexOf('a') !== -1).to.be.true;
|
||||||
|
vm.$refs.b.$el.click();
|
||||||
|
vm.$nextTick(() => {
|
||||||
|
expect(vm.checkList.indexOf('a') !== -1).to.be.true;
|
||||||
|
expect(vm.checkList.indexOf('b') !== -1).to.be.true;
|
||||||
|
vm.$refs.c.$el.click();
|
||||||
|
vm.$nextTick(() => {
|
||||||
|
expect(vm.checkList.indexOf('c') !== -1).to.be.false;
|
||||||
|
expect(vm.checkList.indexOf('d') !== -1).to.be.false;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('nested group', done => {
|
it('nested group', done => {
|
||||||
vm = createVue({
|
vm = createVue({
|
||||||
template: `
|
template: `
|
||||||
|
|
Loading…
Reference in New Issue