File size: 676 Bytes
89ce340 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<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> |