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>
|
2022-11-27 05:41:18 +09:00
|
|
|
<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>
|