| <template> | |
| <ButtonGroup class="radio-group"> | |
| <slot></slot> | |
| </ButtonGroup> | |
| </template> | |
| <script lang="ts" setup> | |
| import { computed, provide } from 'vue' | |
| import { injectKeyRadioGroupValue } from '@/types/injectKey' | |
| import ButtonGroup from './ButtonGroup.vue' | |
| const props = withDefaults(defineProps<{ | |
| value: string | |
| disabled?: boolean | |
| }>(), { | |
| disabled: false, | |
| }) | |
| const emit = defineEmits<{ | |
| (event: 'update:value', payload: string): void | |
| }>() | |
| const updateValue = (value: string) => { | |
| if (props.disabled) return | |
| emit('update:value', value) | |
| } | |
| const value = computed(() => props.value) | |
| provide(injectKeyRadioGroupValue, { | |
| value, | |
| updateValue, | |
| }) | |
| </script> |