vant-fork
Version:
Lightweight Mobile UI Components built on Vue
97 lines (88 loc) • 2.33 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _create = _interopRequireDefault(require("../utils/create"));
var _findParent = _interopRequireDefault(require("../mixins/find-parent"));
var _default = (0, _create.default)({
render: function render() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c('div', {
class: _vm.b({
disabled: _vm.isDisabled
}),
on: {
"click": function click($event) {
_vm.$emit('click');
}
}
}, [_c('span', {
class: _vm.b('input')
}, [_c('input', {
directives: [{
name: "model",
rawName: "v-model",
value: _vm.currentValue,
expression: "currentValue"
}],
class: _vm.b('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), _vm.$slots.default ? _c('span', {
class: _vm.b('label', _vm.labelPosition),
on: {
"click": _vm.onClickLabel
}
}, [_vm._t("default")], 2) : _vm._e()]);
},
name: 'radio',
mixins: [_findParent.default],
props: {
name: null,
value: null,
disabled: Boolean,
labelDisabled: Boolean,
labelPosition: Boolean
},
computed: {
currentValue: {
get: function get() {
return this.parent ? this.parent.value : this.value;
},
set: function set(val) {
(this.parent || this).$emit('input', val);
}
},
isDisabled: function isDisabled() {
return this.parent ? this.parent.disabled || this.disabled : this.disabled;
}
},
created: function created() {
this.findParent('van-radio-group');
},
methods: {
onClickLabel: function onClickLabel() {
if (!this.isDisabled && !this.labelDisabled) {
this.currentValue = this.name;
}
}
}
});
exports.default = _default;