1
0
mirror of https://github.com/elk-zone/elk synced 2024-12-12 13:48:04 +09:00
elk/components/common/dropdown/DropdownItem.vue

45 lines
883 B
Vue
Raw Normal View History

2022-11-24 17:34:05 +09:00
<script setup lang="ts">
import { dropdownContextKey } from './ctx'
defineProps<{
2022-11-24 18:15:58 +09:00
description?: string
2022-11-24 17:34:05 +09:00
icon?: string
2022-11-24 18:15:58 +09:00
checked?: boolean
2022-11-24 17:34:05 +09:00
}>()
const emit = defineEmits(['click'])
2022-11-26 14:05:44 +09:00
const { hide } = inject(dropdownContextKey, undefined) || {}
2022-11-24 17:34:05 +09:00
const handleClick = (evt: MouseEvent) => {
2022-11-26 14:05:44 +09:00
hide?.()
2022-11-24 17:34:05 +09:00
emit('click', evt)
}
</script>
<template>
2022-11-24 18:15:58 +09:00
<div
flex gap-3 items-center cursor-pointer px4 py3 hover-bg-active
2022-11-26 21:58:10 +09:00
v-bind="$attrs"
2022-11-24 18:15:58 +09:00
@click="handleClick"
>
2022-11-24 17:34:05 +09:00
<div v-if="icon" :class="icon" />
2022-11-24 18:15:58 +09:00
<div flex="~ col">
2022-11-26 14:05:44 +09:00
<div text-15px>
2022-11-24 18:15:58 +09:00
<slot />
</div>
<div text-3 text-secondary>
2022-11-24 18:15:58 +09:00
<slot name="description">
<p v-if="description">
{{ description }}
</p>
</slot>
</div>
</div>
<div flex-auto />
<div v-if="checked" i-ri:check-line />
2022-11-26 21:58:10 +09:00
<slot name="actions" />
2022-11-24 17:34:05 +09:00
</div>
</template>