feat: toast component
This commit is contained in:
@@ -12,7 +12,8 @@ import type {
|
||||
ThemableChildrenApply,
|
||||
} from '@/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/types'
|
||||
import { toRefs } from 'vue'
|
||||
import { simplifyTailwindClasses } from '../../../../../utils/simplifyTailwindClasses'
|
||||
import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
|
||||
import type { FlowbiteTheme } from '@/components/utils/FlowbiteThemable/types'
|
||||
|
||||
const props = defineProps({
|
||||
apply: {
|
||||
@@ -23,6 +24,10 @@ const props = defineProps({
|
||||
type: String,
|
||||
default: 'div',
|
||||
},
|
||||
theme: {
|
||||
type: String as PropType<FlowbiteTheme>,
|
||||
default: undefined,
|
||||
},
|
||||
})
|
||||
|
||||
const { classes } = useFlowbiteThemableChildClasses(toRefs(props))
|
||||
|
||||
@@ -4,6 +4,7 @@ import type {
|
||||
ThemableChildrenApply,
|
||||
} from '../types'
|
||||
import { useFlowbiteThemable } from '../../../composables/useFlowbiteThemable'
|
||||
import type { FlowbiteTheme } from '@/components/utils/FlowbiteThemable/types'
|
||||
|
||||
type UseFlowbiteThemableChildReturns = {
|
||||
classes: Ref<string>
|
||||
@@ -11,11 +12,12 @@ type UseFlowbiteThemableChildReturns = {
|
||||
|
||||
type UseFlowbiteThemableChildProps = {
|
||||
apply: Ref<ThemableChildrenApply[]>
|
||||
theme?: Ref<FlowbiteTheme | undefined>
|
||||
}
|
||||
|
||||
export function useFlowbiteThemableChildClasses(props: UseFlowbiteThemableChildProps): UseFlowbiteThemableChildReturns {
|
||||
|
||||
const { textClasses, borderClasses, backgroundClasses, hoverClasses, disabledClasses, focusClasses, isActive } = useFlowbiteThemable()
|
||||
const { textClasses, borderClasses, backgroundClasses, hoverClasses, disabledClasses, focusClasses, isActive } = useFlowbiteThemable(props.theme?.value)
|
||||
|
||||
const classes = computed(() => {
|
||||
if(!isActive.value) return ''
|
||||
|
||||
@@ -63,41 +63,45 @@ const flowbiteThemeClasses: FlowbiteThemes<FlowbiteTheme> = {
|
||||
|
||||
}
|
||||
|
||||
export function useFlowbiteThemable(): UseFlowbiteThemableReturns {
|
||||
export function useFlowbiteThemable(_theme?: FlowbiteTheme): UseFlowbiteThemableReturns {
|
||||
|
||||
const theme = inject<Ref<FlowbiteTheme | null>>(FLOWBITE_THEMABLE_INJECTION_KEY, ref(null))
|
||||
|
||||
const isActive = computed(() => !!theme?.value)
|
||||
const color = computed(() => theme?.value || undefined)
|
||||
|
||||
const themeName = computed(() => {
|
||||
return _theme || theme.value
|
||||
})
|
||||
|
||||
const backgroundClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].background
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].background
|
||||
})
|
||||
|
||||
const disabledClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].disabled
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].disabled
|
||||
})
|
||||
|
||||
const hoverClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].hover
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].hover
|
||||
})
|
||||
|
||||
const textClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].text
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].text
|
||||
})
|
||||
|
||||
const borderClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].border
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].border
|
||||
})
|
||||
|
||||
const focusClasses = computed(() => {
|
||||
if(!theme.value) return ''
|
||||
return flowbiteThemeClasses[theme.value].focus
|
||||
if(!themeName.value) return ''
|
||||
return flowbiteThemeClasses[themeName.value].focus
|
||||
})
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user