diff --git a/src/checkbox/index.js b/src/checkbox/index.js index fca7428d1..e54c2eacc 100644 --- a/src/checkbox/index.js +++ b/src/checkbox/index.js @@ -45,18 +45,6 @@ export default createComponent({ }); }, - onClickIcon() { - if (!this.isDisabled) { - this.toggle(); - } - }, - - onClickLabel() { - if (!this.isDisabled && !this.labelDisabled) { - this.toggle(); - } - }, - setParentValue(val) { const { parent } = this; const value = parent.value.slice(); diff --git a/src/mixins/checkbox.js b/src/mixins/checkbox.js index 068c15d23..00d27c9be 100644 --- a/src/mixins/checkbox.js +++ b/src/mixins/checkbox.js @@ -46,6 +46,20 @@ export const CheckboxMixin = ({ parent, bem, role }) => ({ } }, + methods: { + onClick(event) { + const { label } = this.$refs; + const { target } = event; + const labelClicked = label && (label === target || label.contains(target)); + + if (!this.disabled && !(labelClicked && this.labelDisabled)) { + this.toggle(); + } + + this.$emit('click', event); + } + }, + render() { const { slots, checked } = this; @@ -55,8 +69,8 @@ export const CheckboxMixin = ({ parent, bem, role }) => ({ const Label = slots() && ( {slots()} @@ -66,7 +80,6 @@ export const CheckboxMixin = ({ parent, bem, role }) => ({