UNPKG

dvant

Version:

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

64 lines (50 loc) 2.18 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-radio", class: { 'van-radio--disabled': _vm.isDisabled }, on: { "click": function click($event) { _vm.$emit('click'); } } }, [_c('span', { staticClass: "van-radio__input" }, [_c('input', { directives: [{ name: "model", rawName: "v-model", value: _vm.currentValue, expression: "currentValue" }], staticClass: "van-radio__control", attrs: { "type": "radio", "disabled": _vm.isDisabled }, domProps: { "value": _vm.name, "checked": _vm._q(_vm.currentValue, _vm.name) }, on: { "change": function change($event) { _vm.currentValue = _vm.name; } } }), _c('icon', { attrs: { "name": _vm.currentValue === _vm.name ? 'checked' : 'check' } })], 1), _c('span', { staticClass: "van-radio__label", on: { "click": _vm.onClickLabel } }, [_vm._t("default")], 2)]); }, name: 'van-radio', mixins: [_findParent2.default], props: { value: {}, disabled: Boolean, name: [String, Number] }, computed: { isGroup: function isGroup() { return !!this.findParentByName('van-radio-group'); }, currentValue: { get: function get() { return this.isGroup && this.parentGroup ? this.parentGroup.value : this.value; }, set: function set(val) { if (this.isGroup && this.parentGroup) { this.parentGroup.$emit('input', val); } else { this.$emit('input', val); } } }, isDisabled: function isDisabled() { return this.isGroup && this.parentGroup ? this.parentGroup.disabled || this.disabled : this.disabled; } }, methods: { onClickLabel: function onClickLabel() { if (this.isDisabled) { return; } this.currentValue = this.name; } } });