1
0
mirror of https://github.com/elk-zone/elk synced 2024-11-27 22:38:11 +09:00
elk/components/status/StatusActionButton.vue

37 lines
965 B
Vue
Raw Normal View History

2022-11-24 14:04:20 +09:00
<script setup lang="ts">
defineProps<{
text?: string | number
2022-11-28 00:11:34 +09:00
content: string
2022-11-24 14:04:20 +09:00
color: string
icon: string
2022-11-24 17:34:05 +09:00
activeIcon?: string
2022-11-24 14:04:20 +09:00
hover: string
groupHover: string
active?: boolean
disabled?: boolean
2022-11-26 08:46:25 +09:00
as?: string
2022-11-24 14:04:20 +09:00
}>()
defineOptions({
inheritAttrs: false,
})
</script>
<template>
2022-11-26 08:46:25 +09:00
<component
2022-11-28 00:11:34 +09:00
:is="as || 'button'" w-fit
2022-11-26 08:46:25 +09:00
flex gap-1 items-center rounded group
2022-11-28 00:11:34 +09:00
:hover="hover" focus:outline-none :focus-visible="hover"
:class="active ? [color] : 'text-secondary'"
2022-11-24 17:34:05 +09:00
v-bind="$attrs"
>
2022-11-28 00:11:34 +09:00
<CommonTooltip placement="bottom" :content="content">
<div rounded-full p2 :group-hover="groupHover" :group-focus-visible="groupHover" group-focus-visible:ring="2 current">
<div :class="[active && activeIcon ? activeIcon : icon, { 'pointer-events-none': disabled }]" />
</div>
</CommonTooltip>
2022-11-24 14:04:20 +09:00
2022-11-28 00:11:34 +09:00
<span v-if="text" :class="active ? [color] : 'text-secondary-light'" text-sm>{{ text }}</span>
2022-11-26 08:46:25 +09:00
</component>
2022-11-24 14:04:20 +09:00
</template>