feat(front): dangerous button can be popoveritem

This commit is contained in:
ArneBo 2025-02-14 11:20:10 +01:00
parent b8d4cb2aba
commit 69dd143486
2 changed files with 15 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import { useI18n } from 'vue-i18n'
import Button from '~/components/ui/Button.vue' import Button from '~/components/ui/Button.vue'
import Modal from '~/components/ui/Modal.vue' import Modal from '~/components/ui/Modal.vue'
import PopoverItem from '~/components/ui/popover/PopoverItem.vue'
interface Events { interface Events {
(e: 'confirm'): void (e: 'confirm'): void
@ -13,7 +14,8 @@ interface Events {
const props = defineProps<{ const props = defineProps<{
title?: string title?: string
action?: () => void, action?: () => void,
confirmColor?:'success' | 'danger' confirmColor?:'success' | 'danger',
popoverItem?: true
}>() }>()
const { t } = useI18n() const { t } = useI18n()
@ -30,9 +32,10 @@ const confirm = () => {
</script> </script>
<template> <template>
<Button <component :is="'popoverItem' in props ? PopoverItem : Button"
destructive destructive
@click.prevent.stop="showModal = true" @click.prevent.stop="showModal = true"
v-bind="$attrs"
> >
<slot /> <slot />
@ -58,5 +61,5 @@ const confirm = () => {
</Button> </Button>
</template> </template>
</Modal> </Modal>
</Button> </component>
</template> </template>

View File

@ -5,6 +5,7 @@ import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router'
import { computed, ref, reactive, watch, watchEffect } from 'vue' import { computed, ref, reactive, watch, watchEffect } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useStore } from '~/store' import { useStore } from '~/store'
import { useModal } from '~/ui/composables/useModal.ts'
import axios from 'axios' import axios from 'axios'
@ -22,6 +23,7 @@ import RadioButton from '~/components/radios/Button.vue'
import Loader from '~/components/ui/Loader.vue' import Loader from '~/components/ui/Loader.vue'
import Button from '~/components/ui/Button.vue' import Button from '~/components/ui/Button.vue'
import Link from '~/components/ui/Link.vue'
import Tabs from '~/components/ui/Tabs.vue' import Tabs from '~/components/ui/Tabs.vue'
import Tab from '~/components/ui/Tab.vue' import Tab from '~/components/ui/Tab.vue'
import OptionsButton from '~/components/ui/button/Options.vue' import OptionsButton from '~/components/ui/button/Options.vue'
@ -243,14 +245,15 @@ const updateSubscriptionCount = (delta: number) => {
@updated="object = $event" @updated="object = $event"
/> />
<Layout flex class="header-buttons"> <Layout flex class="header-buttons">
<Button <Link
v-if="isOwner" v-if="isOwner"
solid
primary primary
icon="bi-upload" icon="bi-upload"
@click.prevent.stop="store.commit('channels/showUploadModal', {show: true, config: {channel: object}})" :to="useModal('upload').to"
> >
{{ t('views.channels.DetailBase.button.upload') }} {{ t('views.channels.DetailBase.button.upload') }}
</Button> </Link>
<PlayButton <PlayButton
:is-playable="isPlayable" :is-playable="isPlayable"
split split
@ -306,11 +309,12 @@ const updateSubscriptionCount = (delta: number) => {
</PopoverItem> </PopoverItem>
<dangerous-button <dangerous-button
v-if="object" v-if="object"
:title="t('views.channels.DetailBase.button.delete')" popover-item
:title="t('views.channels.DetailBase.button.confirm')"
:is-loading="isLoading" :is-loading="isLoading"
icon="bi-trash" icon="bi-trash"
@confirm="remove()" @confirm="remove()"
> > {{ t('views.channels.DetailBase.button.confirm') }}
<template #modal-content> <template #modal-content>
{{ t('views.channels.DetailBase.modal.delete.content.warning') }} {{ t('views.channels.DetailBase.modal.delete.content.warning') }}
</template> </template>