diff --git a/packages/docs/radio.md b/packages/docs/radio.md index 06d105f47a566b3a587422eaa32c5545f9c54e7a..186c4982530a2aa78c5a56da3f89491c089cb578 100644 --- a/packages/docs/radio.md +++ b/packages/docs/radio.md @@ -1,4 +1,4 @@ -# Radio 单选 +# Radio 单选框 ## props @@ -10,9 +10,9 @@ ## event -| name | 参数 | 说明 | -| :----- | :---------------------------------- | :------------- | -| change | {value: boolean, checked: boolean}; | 状态切换后触发 | +| name | 参数 | 说明 | +| :----- | :------------------------------------------------------ | :------------- | +| change | {value: string \| number \| boolean, checked: boolean}; | 状态切换后触发 | ## expose @@ -22,22 +22,25 @@ | :---- | :----------- | | radio | 自定义单选框 | -# RadioGroup 单选 +# RadioGroup 单选框组 ## props -| name | type | 默认值 | 说明 | -| :------------------- | :-------------------------- | :----- | ----------- | -| value | string \| number \| boolean | - | 单选框 vale | -| model-value(v-model) | string \| number \| boolean | - | 双向绑定值 | -| disabled | Boolean | false | 是否禁用 | -| direction | Boolean | false | 是否禁用 | +| name | type | 默认值 | 说明 | +| :------------------- | :-------------------------- | :----------- | ---------- | +| model-value(v-model) | string \| number \| boolean | - | 双向绑定值 | +| disabled | boolean | false | 是否禁用 | +| direction | RadioGroupDirectionT | 'horizontal' | 排列方向 | + +```ts +type RadioGroupDirectionT = 'horizontal' | 'vertical'; +``` ## event -| name | 参数 | 说明 | -| :----- | :------------- | :------------- | -| change | value: boolean | 状态切换后触发 | +| name | 参数 | 说明 | +| :----- | :--------------------------------- | :------------- | +| change | value: string \| number \| boolean | 状态切换后触发 | ## expose diff --git a/packages/opendesign/src/components/radio-group/ORadioGroup.vue b/packages/opendesign/src/components/radio-group/ORadioGroup.vue index 37256d2ce9f8544c08018568040e1411320326d8..fc1ab4d6b8b90d6f19bf021f26a083678b92bba0 100644 --- a/packages/opendesign/src/components/radio-group/ORadioGroup.vue +++ b/packages/opendesign/src/components/radio-group/ORadioGroup.vue @@ -7,7 +7,7 @@ interface RadioGroupPropT { modelValue?: string | boolean | number; disabled?: boolean; /** - * 单选组方向: 'horizontal' | 'vertical' + * 单选框组方向: 'horizontal' | 'vertical' */ direction?: RadioGroupDirectionT; } @@ -18,7 +18,7 @@ const props = withDefaults(defineProps(), { direction: 'horizontal', }); -const emit = defineEmits<{ +const emits = defineEmits<{ (e: 'update:modelValue', val: string | number | boolean): void; (e: 'change', val: string | number | boolean): void; }>(); @@ -26,8 +26,8 @@ const emit = defineEmits<{ const { modelValue, disabled } = toRefs(props); const onChange = (val: string | number | boolean) => { - emit('update:modelValue', val); - emit('change', val); + emits('update:modelValue', val); + emits('change', val); }; provide(radioGroupInjectKey, { modelValue, disabled, onChange }); @@ -38,5 +38,3 @@ provide(radioGroupInjectKey, { modelValue, disabled, onChange }); - - diff --git a/packages/opendesign/src/components/radio/ORadio.vue b/packages/opendesign/src/components/radio/ORadio.vue index 8a83b4846bdbf8128cc9da99c4a648bfd58ed2ac..c0a6a35501dea3eef15c16de02cd8dd52b1a22d9 100644 --- a/packages/opendesign/src/components/radio/ORadio.vue +++ b/packages/opendesign/src/components/radio/ORadio.vue @@ -12,7 +12,7 @@ const props = withDefaults(defineProps(), { disabled: false, }); -const emit = defineEmits<{ +const emits = defineEmits<{ (e: 'update:modelValue', val: string | number | boolean): void; (e: 'change', rlt: { value: string | number | boolean; checked: boolean }): void; }>(); @@ -36,13 +36,16 @@ const onChange = () => { const val = props.value; radioGroupInjection?.onChange(val); - emit('update:modelValue', val); + emits('update:modelValue', val); }; watch( () => isChecked.value, () => { - emit('change', { value: props.value, checked: isChecked.value }); + emits('change', { + value: radioGroupInjection ? radioGroupInjection.modelValue.value : (props.modelValue as string | number | boolean), + checked: isChecked.value, + }); } ); diff --git a/packages/opendesign/src/components/radio/__demo__/IndexRadio.vue b/packages/opendesign/src/components/radio/__demo__/IndexRadio.vue index 26a3a6210c47c23e465ccd0d5ee2cb251296a7b2..33532d34e1fe428bba0c793ad905cf3e16d5008b 100644 --- a/packages/opendesign/src/components/radio/__demo__/IndexRadio.vue +++ b/packages/opendesign/src/components/radio/__demo__/IndexRadio.vue @@ -3,6 +3,7 @@ import '../style'; import '../../radio-group/style'; import RadioBasic from './RadioBasic.vue'; import RadioDisabled from './RadioDisabled.vue'; +import RadioSlots from './RadioSlots.vue'; import RadioGroup from './RadioGroup.vue';