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

27 lines
1.1 KiB
Vue
Raw Normal View History

<script setup lang="ts">
const props = defineProps<{ enabled?: boolean; filter?: boolean; isDM?: boolean }>()
2022-11-27 16:20:33 +09:00
const showContent = ref(!props.enabled)
const toggleContent = useToggle(showContent)
watchEffect(() => {
showContent.value = !props.enabled
})
</script>
<template>
2022-11-30 11:07:13 +09:00
<div v-if="enabled" flex flex-col items-start>
<div class="content-rich" p="x-4 b-2.5" text-center text-secondary w-full border="~ base" border-0 border-b-dotted border-b-3 mt-2>
2022-11-30 11:07:13 +09:00
<slot name="spoiler" />
</div>
<div flex="~ gap-1 center" w-full :mb="isDM && !showContent ? '4' : ''" mt="-4.5">
<button btn-text px-2 py-1 :bg="isDM ? 'transparent' : 'base'" flex="~ center gap-2" :class="showContent ? '' : 'filter-saturate-0 hover:filter-saturate-100'" @click="toggleContent()">
2022-11-30 11:07:13 +09:00
<div v-if="showContent" i-ri:eye-line />
<div v-else i-ri:eye-close-line />
2022-12-05 05:00:02 +09:00
{{ showContent ? $t('status.spoiler_show_less') : $t(filter ? 'status.filter_show_anyway' : 'status.spoiler_show_more') }}
2022-11-30 11:07:13 +09:00
</button>
</div>
</div>
2022-11-27 16:20:33 +09:00
<slot v-if="!enabled || showContent" />
</template>