diff --git a/packages/element3/packages/radio-group/RadioGroup.vue b/packages/element3/packages/radio-group/RadioGroup.vue deleted file mode 100644 index e6bf217f8..000000000 --- a/packages/element3/packages/radio-group/RadioGroup.vue +++ /dev/null @@ -1,137 +0,0 @@ - - diff --git a/packages/element3/packages/radio-group/index.js b/packages/element3/packages/radio-group/index.js deleted file mode 100644 index 8aec4a60d..000000000 --- a/packages/element3/packages/radio-group/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import RadioGroup from './RadioGroup.vue' - -/* istanbul ignore next */ -RadioGroup.install = function (app) { - app.component(RadioGroup.name, RadioGroup) -} - -export default RadioGroup diff --git a/packages/element3/packages/theme-chalk/src/radioGroup.scss b/packages/element3/packages/theme-chalk/src/radioGroup.scss new file mode 100644 index 000000000..86ac150f1 --- /dev/null +++ b/packages/element3/packages/theme-chalk/src/radioGroup.scss @@ -0,0 +1,9 @@ +@import 'mixins/mixins'; +@import 'common/var'; + +@include b(radio-group) { + display: inline-block; + line-height: 1; + vertical-align: middle; + font-size: 0; +} diff --git a/packages/element3/src/components/Radio/tests/Radio.spec.js b/packages/element3/src/components/Radio/tests/Radio.spec.js index a8c17c860..d41419afa 100644 --- a/packages/element3/src/components/Radio/tests/Radio.spec.js +++ b/packages/element3/src/components/Radio/tests/Radio.spec.js @@ -1,6 +1,6 @@ import { mount } from '@vue/test-utils' import { ref, h, reactive } from 'vue' -import RadioGroup from 'element-ui/packages/radio-group/RadioGroup' +import RadioGroup from '../../RadioGroup/src/RadioGroup.vue' import Radio from '../src/Radio.vue' describe('Radio.vue', () => { diff --git a/packages/element3/src/components/RadioButton/tests/RadioButton.spec.js b/packages/element3/src/components/RadioButton/tests/RadioButton.spec.js index 7ec47e835..48086105f 100644 --- a/packages/element3/src/components/RadioButton/tests/RadioButton.spec.js +++ b/packages/element3/src/components/RadioButton/tests/RadioButton.spec.js @@ -1,5 +1,5 @@ import RadioButton from '../src/RadioButton.vue' -import RadioGroup from 'element-ui/packages/radio-group/RadioGroup' +import RadioGroup from '../../RadioGroup/src/RadioGroup.vue' import { mount } from '@vue/test-utils' import { ref, h, nextTick, reactive } from 'vue' diff --git a/packages/element3/src/components/RadioGroup/index.js b/packages/element3/src/components/RadioGroup/index.js new file mode 100644 index 000000000..30a0502c3 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/index.js @@ -0,0 +1,7 @@ +import ElRadioGroup from './src/RadioGroup' + +ElRadioGroup.install = function (app) { + app.component(ElRadioGroup.name, ElRadioGroup) +} + +export { ElRadioGroup } diff --git a/packages/element3/src/components/RadioGroup/src/RadioGroup.vue b/packages/element3/src/components/RadioGroup/src/RadioGroup.vue new file mode 100644 index 000000000..5b3061141 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/src/RadioGroup.vue @@ -0,0 +1,45 @@ + + + diff --git a/packages/element3/src/components/RadioGroup/src/props.ts b/packages/element3/src/components/RadioGroup/src/props.ts new file mode 100644 index 000000000..8d1295867 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/src/props.ts @@ -0,0 +1,21 @@ +import { RadioGroupSize } from './types' +import { PropType } from 'vue' + +export const props = { + modelValue: [String, Number, Symbol, Boolean], + size: { + type: String as PropType, + validator(val: string): boolean { + return ['medium', 'small', 'mini', ''].includes(val) + } + }, + fill: { + type: String, + default: '#409EFF' + }, + textColor: { + type: String, + default: '#ffffff' + }, + disabled: Boolean +} diff --git a/packages/element3/src/components/RadioGroup/src/types.ts b/packages/element3/src/components/RadioGroup/src/types.ts new file mode 100644 index 000000000..447b86fb2 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/src/types.ts @@ -0,0 +1 @@ +export type RadioGroupSize = 'medium' | 'small' | 'mini' diff --git a/packages/element3/src/components/RadioGroup/tests/RadioGroup.spec.ts b/packages/element3/src/components/RadioGroup/tests/RadioGroup.spec.ts new file mode 100644 index 000000000..15801ab55 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/tests/RadioGroup.spec.ts @@ -0,0 +1,67 @@ +import RadioGroup from '../src/RadioGroup.vue' +import { mount } from '@vue/test-utils' +import { ref } from 'vue' + +describe('radioGroup.vue', () => { + it('should show content', () => { + const wrapper = mount(RadioGroup, { + slots: { + default: 'radioGroup' + } + }) + + expect(wrapper).toHaveTextContent('radioGroup') + }) + + it('form-item size', async () => { + const wrapper = mount(RadioGroup, { + props: { + size: '' + }, + global: { + provide: { + elFormItem: { + elFormItemSize: 'small' + } + } + } + }) + + expect(wrapper.vm.radioGroupSize).toEqual('small') + + await wrapper.setProps({ + size: 'medium' + }) + expect(wrapper.vm.radioGroupSize).toEqual('medium') + }) + + it('size', async () => { + const wrapper = mount(RadioGroup, { + props: { + size: 'mini' + } + }) + + expect(wrapper.vm.radioGroupSize).toEqual('mini') + + await wrapper.setProps({ + size: 'small' + }) + expect(wrapper.vm.radioGroupSize).toEqual('small') + }) + + it('modelValue', async () => { + const modelValue = ref('') + const wrapper = mount(RadioGroup, { + props: { + modelValue, + 'update:modelValue'(v) { + modelValue.value = v + } + } + }) + + await wrapper.setProps({ modelValue: '上海' }) + expect(wrapper.vm.modelValue).toEqual('上海') + }) +}) diff --git a/packages/element3/src/components/RadioGroup/tests/props.spec.ts b/packages/element3/src/components/RadioGroup/tests/props.spec.ts new file mode 100644 index 000000000..e2888c741 --- /dev/null +++ b/packages/element3/src/components/RadioGroup/tests/props.spec.ts @@ -0,0 +1,24 @@ +import { props } from '../src/props' + +describe('RadioGroup.props', () => { + it('size', () => { + const { size } = props + + expect(size.validator('medium')).toBe(true) + expect(size.validator('small')).toBe(true) + expect(size.validator('mini')).toBe(true) + expect(size.validator('')).toBe(true) + }) + + it('fill', () => { + const { fill } = props + + expect(fill.default).toBe('#409EFF') + }) + + it('textColor', () => { + const { textColor } = props + + expect(textColor.default).toBe('#ffffff') + }) +}) diff --git a/packages/element3/src/index.js b/packages/element3/src/index.js index 46c25fbb3..bc17a8cef 100644 --- a/packages/element3/src/index.js +++ b/packages/element3/src/index.js @@ -15,7 +15,7 @@ import { ElLink } from './components/Link' // Form import { ElRadio } from './components/Radio' import { ElRadioButton } from './components/RadioButton' -import ElRadioGroup from '../packages/radio-group' +import { ElRadioGroup } from './components/RadioGroup' import ElCheckbox from '../packages/checkbox' import ElCheckboxButton from '../packages/checkbox-button' import ElCheckboxGroup from '../packages/checkbox-group'