feat(ButtonGroup): new component (#88)

Co-authored-by: Benjamin Canac <canacb1@gmail.com>
This commit is contained in:
Romain Hamel
2024-05-07 11:19:25 +02:00
committed by GitHub
parent 2c5d7ccf70
commit 43066fd9ea
12 changed files with 317 additions and 10 deletions

View File

@@ -0,0 +1,21 @@
import { type InjectionKey, type ComputedRef } from 'vue'
import { inject, computed } from 'vue'
import type { GetObjectField } from '#ui/types/utils'
import type { ButtonGroupProps } from '../components/ButtonGroup.vue'
export const buttonGroupInjectionKey: InjectionKey<ComputedRef<{
size: ButtonGroupProps ['size']
orientation: ButtonGroupProps['orientation']
}>> = Symbol('nuxt-ui.button-group')
type Props<T> = {
size?: GetObjectField<T, 'size'>
}
export function useButtonGroup<T>(props: Props<T>) {
const buttonGroup = inject(buttonGroupInjectionKey, undefined)
return {
orientation: computed(() => buttonGroup?.value.orientation),
size: computed(() => props?.size ?? buttonGroup?.value.size)
}
}