mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-24 10:20:19 +08:00
48 lines
941 B
JavaScript
48 lines
941 B
JavaScript
import { createNamespace } from '../utils';
|
|
import { ParentMixin } from '../mixins/relation';
|
|
|
|
const [createComponent, bem] = createNamespace('checkbox-group');
|
|
|
|
export default createComponent({
|
|
mixins: [ParentMixin('vanCheckbox')],
|
|
|
|
props: {
|
|
max: [Number, String],
|
|
disabled: Boolean,
|
|
iconSize: [Number, String],
|
|
checkedColor: String,
|
|
value: {
|
|
type: Array,
|
|
default: () => [],
|
|
},
|
|
},
|
|
|
|
watch: {
|
|
value(val) {
|
|
this.$emit('change', val);
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
// @exposed-api
|
|
toggleAll(checked) {
|
|
if (checked === false) {
|
|
this.$emit('input', []);
|
|
return;
|
|
}
|
|
|
|
let { children } = this;
|
|
if (!checked) {
|
|
children = children.filter(item => !item.checked);
|
|
}
|
|
|
|
const names = children.map(item => item.name);
|
|
this.$emit('input', names);
|
|
},
|
|
},
|
|
|
|
render() {
|
|
return <div class={bem()}>{this.slots()}</div>;
|
|
},
|
|
});
|