You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					67 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.8 KiB
			| 
								 
											6 months ago
										 
									 | 
							
								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);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								});
							 |