/
githubmirror
/
element
Обзор
Документация
Войти
/
githubmirror
/
element
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/radio/src/radio-button.vue
115 строк
3 KB
好多大米
Radio: fix checked state when browser go back (#21250)
23 авг 2021, 10:08
Не верифицирован
23 авг 2021, 10:08
a87ce4b
Код
Авторство
О чём код?
<template> <label class="el-radio-button" :class="[ size ? 'el-radio-button--' + size : '', { 'is-active': value === label }, { 'is-disabled': isDisabled }, { 'is-focus': focus } ]" role="radio" :aria-checked="value === label" :aria-disabled="isDisabled" :tabindex="tabIndex" @keydown.space.stop.prevent="value = isDisabled ? value : label" > <input class="el-radio-button__orig-radio" :value="label" type="radio" v-model="value" :name="name" @change="handleChange" :disabled="isDisabled" tabindex="-1" @focus="focus = true" @blur="focus = false" autocomplete="off" > <span class="el-radio-button__inner" :style="value === label ? activeStyle : null" @keydown.stop> <slot></slot> <template v-if="!$slots.default">{{label}}</template> </span> </label> </template> <script> import Emitter from 'element-ui/src/mixins/emitter'; export default { name: 'ElRadioButton', mixins: [Emitter], inject: { elForm: { default: '' }, elFormItem: { default: '' } }, props: { label: {}, disabled: Boolean, name: String }, data() { return { focus: false }; }, computed: { value: { get() { return this._radioGroup.value; }, set(value) { this._radioGroup.$emit('input', value); } }, _radioGroup() { let parent = this.$parent; while (parent) { if (parent.$options.componentName !== 'ElRadioGroup') { parent = parent.$parent; } else { return parent; } } return false; }, activeStyle() { return { backgroundColor: this._radioGroup.fill || '', borderColor: this._radioGroup.fill || '', boxShadow: this._radioGroup.fill ? `-1px 0 0 0 ${this._radioGroup.fill}` : '', color: this._radioGroup.textColor || '' }; }, _elFormItemSize() { return (this.elFormItem || {}).elFormItemSize; }, size() { return this._radioGroup.radioGroupSize || this._elFormItemSize || (this.$ELEMENT || {}).size; }, isDisabled() { return this.disabled || this._radioGroup.disabled || (this.elForm || {}).disabled; }, tabIndex() { return (this.isDisabled || (this._radioGroup && this.value !== this.label)) ? -1 : 0; } }, methods: { handleChange() { this.$nextTick(() => { this.dispatch('ElRadioGroup', 'handleChange', this.value); }); } } }; </script>