UNPKG

dvant

Version:

A Vue.js 2.0 Mobile UI at dawnwin modified from Youzan

104 lines (87 loc) 2.99 kB
'use strict'; exports.__esModule = true; var _utils = require('../utils'); var _findParent = require('../mixins/find-parent'); var _findParent2 = _interopRequireDefault(_findParent); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = (0, _utils.create)({ render: function render() { var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: "van-checkbox" }, [_c('icon', { staticClass: "van-checkbox__icon", class: ["van-checkbox--" + _vm.shape, { 'van-checkbox--disabled': _vm.isDisabled }, { 'van-checkbox--checked': _vm.isChecked }], attrs: { "name": "success" }, on: { "click": _vm.onClick } }), _c('span', { staticClass: "van-checkbox__label", on: { "click": function click($event) { _vm.onClick('label'); } } }, [_vm._t("default")], 2)], 1); }, name: 'van-checkbox', mixins: [_findParent2.default], props: { value: {}, disabled: Boolean, labelDisabled: { type: Boolean, default: false }, name: [String, Number], shape: { type: String, default: 'round' } }, watch: { value: function value(val) { this.$emit('change', val); } }, data: function data() { this.findParentByName('van-checkbox-group'); return {}; }, computed: { currentValue: { get: function get() { return this.parentGroup ? this.parentGroup.value.indexOf(this.name) !== -1 : this.value; }, set: function set(val) { var parentGroup = this.parentGroup; if (parentGroup) { var parentValue = this.parentGroup.value.slice(); if (val) { if (parentGroup.max && parentValue.length >= parentGroup.max) { return; } /* istanbul ignore else */ if (parentValue.indexOf(this.name) === -1) { parentValue.push(this.name); parentGroup.$emit('input', parentValue); } } else { var index = parentValue.indexOf(this.name); /* istanbul ignore else */ if (index !== -1) { parentValue.splice(index, 1); parentGroup.$emit('input', parentValue); } } } else { this.$emit('input', val); } } }, isChecked: function isChecked() { var currentValue = this.currentValue; if ({}.toString.call(currentValue) === '[object Boolean]') { return currentValue; } else if ((0, _utils.isDef)(currentValue)) { return currentValue === this.name; } }, isDisabled: function isDisabled() { return this.parentGroup && this.parentGroup.disabled || this.disabled; } }, methods: { onClick: function onClick(target) { if (!this.isDisabled && !(target === 'label' && this.labelDisabled)) { this.currentValue = !this.currentValue; } } } });