57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const prefixCls = 'i-radio';
|
|
|
|
Component({
|
|
externalClasses: ['i-class'],
|
|
relations: {
|
|
'../radio-group/index': {
|
|
type: 'parent'
|
|
}
|
|
},
|
|
properties: {
|
|
value: {
|
|
type: String,
|
|
value: ''
|
|
},
|
|
checked: {
|
|
type: Boolean,
|
|
value: false
|
|
},
|
|
disabled: {
|
|
type: Boolean,
|
|
value: false
|
|
},
|
|
color: {
|
|
type: String,
|
|
value: '#2d8cf0'
|
|
},
|
|
position: {
|
|
type: String,
|
|
value: 'left', //left right
|
|
observer: 'setPosition'
|
|
}
|
|
},
|
|
data: {
|
|
checked: true,
|
|
positionCls: `${prefixCls}-radio-left`,
|
|
},
|
|
attached() {
|
|
this.setPosition();
|
|
},
|
|
methods: {
|
|
changeCurrent(current) {
|
|
this.setData({ checked: current });
|
|
},
|
|
radioChange() {
|
|
if (this.data.disabled) return;
|
|
const item = { current: !this.data.checked, value: this.data.value };
|
|
const parent = this.getRelationNodes('../radio-group/index')[0];
|
|
parent ? parent.emitEvent(item) : this.triggerEvent('change', item);
|
|
},
|
|
setPosition() {
|
|
this.setData({
|
|
positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-radio-left` : `${prefixCls}-radio-right`,
|
|
});
|
|
}
|
|
}
|
|
});
|