1
0

feat: add withDefaults, defineEmits and defineSlots types for Dropdown

This commit is contained in:
Dominik Pschenitschni 2024-07-06 12:20:33 +02:00 committed by konrad
parent 043a6dd049
commit 5545b0e447

View File

@ -36,20 +36,31 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref, type PropType} from 'vue' import {ref} from 'vue'
import {onClickOutside} from '@vueuse/core' import {onClickOutside} from '@vueuse/core'
import type {IconProp} from '@fortawesome/fontawesome-svg-core' import type {IconProp} from '@fortawesome/fontawesome-svg-core'
import CustomTransition from '@/components/misc/CustomTransition.vue' import CustomTransition from '@/components/misc/CustomTransition.vue'
import BaseButton from '@/components/base/BaseButton.vue' import BaseButton from '@/components/base/BaseButton.vue'
defineProps({ withDefaults(defineProps<{
triggerIcon: { triggerIcon?: IconProp
type: String as PropType<IconProp>, }>(), {
default: 'ellipsis-h', triggerIcon: 'ellipsis-h',
},
}) })
const emit = defineEmits(['close'])
const emit = defineEmits<{
'close': [event: PointerEvent]
}>()
defineSlots<{
'trigger': (props: {
close: () => void,
toggleOpen: () => void,
open: boolean
}) => void,
'default': () => void
}>()
const initialMount = ref(false) const initialMount = ref(false)
@ -64,7 +75,7 @@ function toggleOpen() {
} }
const dropdown = ref() const dropdown = ref()
onClickOutside(dropdown, (e: Event) => { onClickOutside(dropdown, (e) => {
if (!open.value) { if (!open.value) {
return return
} }