12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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);
- }
- },
- },
- });
|