import { canIUseModel } from '../common/version'; import { VantComponent } from '../common/component'; import { useParent } from '../common/relation'; VantComponent({ field: true, relation: useParent('radio-group', function () { this.updateFromParent(); }), classes: ['icon-class', 'label-class'], props: { name: null, value: null, disabled: Boolean, useIconSlot: Boolean, checkedColor: String, labelPosition: { type: String, value: 'right', }, labelDisabled: Boolean, shape: { type: String, value: 'round', }, iconSize: { type: null, value: 20, }, }, data: { direction: '', parentDisabled: false, }, methods: { updateFromParent() { if (!this.parent) { return; } const { value, disabled: parentDisabled, direction } = this.parent.data; this.setData({ value, direction, parentDisabled, }); }, emitChange(value) { const instance = this.parent || this; instance.$emit('input', value); instance.$emit('change', value); if (canIUseModel()) { instance.setData({ value }); } }, onChange() { if (!this.data.disabled && !this.data.parentDisabled) { this.emitChange(this.data.name); } }, onClickLabel() { const { disabled, parentDisabled, labelDisabled, name } = this.data; if (!(disabled || parentDisabled) && !labelDisabled) { this.emitChange(name); } }, }, });