1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import { createNamespace } from '../utils';
- import { CheckboxMixin } from '../mixins/checkbox';
- var _createNamespace = createNamespace('checkbox'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- export default createComponent({
- mixins: [CheckboxMixin({
- bem: bem,
- role: 'checkbox',
- parent: 'vanCheckbox'
- })],
- computed: {
- checked: {
- get: function get() {
- if (this.parent) {
- return this.parent.value.indexOf(this.name) !== -1;
- }
- return this.value;
- },
- set: function set(val) {
- if (this.parent) {
- this.setParentValue(val);
- } else {
- this.$emit('input', val);
- }
- }
- }
- },
- watch: {
- value: function value(val) {
- this.$emit('change', val);
- }
- },
- methods: {
- // @exposed-api
- toggle: function toggle(checked) {
- var _this = this;
- if (checked === void 0) {
- checked = !this.checked;
- }
- // When toggle method is called multiple times at the same time,
- // only the last call is valid.
- // This is a hack for usage inside Cell.
- clearTimeout(this.toggleTask);
- this.toggleTask = setTimeout(function () {
- _this.checked = checked;
- });
- },
- setParentValue: function setParentValue(val) {
- var parent = this.parent;
- var value = parent.value.slice();
- if (val) {
- if (parent.max && value.length >= parent.max) {
- return;
- }
- /* istanbul ignore else */
- if (value.indexOf(this.name) === -1) {
- value.push(this.name);
- parent.$emit('input', value);
- }
- } else {
- var index = value.indexOf(this.name);
- /* istanbul ignore else */
- if (index !== -1) {
- value.splice(index, 1);
- parent.$emit('input', value);
- }
- }
- }
- }
- });
|