web_ppt / frontend /src /components /RadioGroup.vue
CatPtain's picture
Upload 339 files
89ce340 verified
raw
history blame
676 Bytes
<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>