2021-01-30 16:17:04 +00:00
|
|
|
<template>
|
2024-02-07 11:18:19 +00:00
|
|
|
<Dropdown>
|
2022-11-18 12:59:38 +00:00
|
|
|
<template #trigger="triggerProps">
|
2024-02-07 11:18:19 +00:00
|
|
|
<slot
|
|
|
|
name="trigger"
|
|
|
|
v-bind="triggerProps"
|
|
|
|
>
|
|
|
|
<BaseButton
|
|
|
|
class="dropdown-trigger"
|
|
|
|
@click="triggerProps.toggleOpen"
|
|
|
|
>
|
|
|
|
<icon
|
|
|
|
icon="ellipsis-h"
|
|
|
|
class="icon"
|
|
|
|
/>
|
2022-11-18 12:59:38 +00:00
|
|
|
</BaseButton>
|
|
|
|
</slot>
|
|
|
|
</template>
|
|
|
|
|
2022-11-13 21:04:57 +00:00
|
|
|
<template v-if="isSavedFilter(project)">
|
2024-02-07 11:18:19 +00:00
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'filter.settings.edit', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="pen"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.edit') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'filter.settings.delete', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="trash-alt"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('misc.delete') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
2021-01-30 16:17:04 +00:00
|
|
|
</template>
|
2021-11-01 17:19:59 +00:00
|
|
|
|
2022-11-13 21:04:57 +00:00
|
|
|
<template v-else-if="project.isArchived">
|
2024-02-07 11:18:19 +00:00
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.archive', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="archive"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.unarchive') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
2021-01-30 16:17:04 +00:00
|
|
|
</template>
|
|
|
|
<template v-else>
|
2024-02-07 11:18:19 +00:00
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.edit', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="pen"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.edit') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2021-01-30 16:17:04 +00:00
|
|
|
v-if="backgroundsEnabled"
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.background', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="image"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.setBackground') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.share', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="share-alt"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.share') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.duplicate', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="paste"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.duplicate') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.archive', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="archive"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.archive') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
2022-10-07 16:15:00 +00:00
|
|
|
<Subscription
|
2022-07-20 15:08:46 +00:00
|
|
|
class="has-no-shadow"
|
2021-02-14 19:18:51 +00:00
|
|
|
:is-button="false"
|
2022-11-13 21:04:57 +00:00
|
|
|
entity="project"
|
|
|
|
:entity-id="project.id"
|
|
|
|
:model-value="project.subscription"
|
2022-07-20 15:08:46 +00:00
|
|
|
type="dropdown"
|
2024-02-07 11:18:19 +00:00
|
|
|
@update:modelValue="setSubscriptionInStore"
|
2021-02-14 19:18:51 +00:00
|
|
|
/>
|
2024-02-07 11:18:19 +00:00
|
|
|
<DropdownItem
|
2023-10-18 18:12:29 +00:00
|
|
|
:to="{ name: 'project.settings.webhooks', params: { projectId: project.id } }"
|
|
|
|
icon="bolt"
|
|
|
|
>
|
|
|
|
{{ $t('project.webhooks.title') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2023-04-14 16:18:03 +00:00
|
|
|
v-if="level < 2"
|
|
|
|
:to="{ name: 'project.createFromParent', params: { parentProjectId: project.id } }"
|
|
|
|
icon="layer-group"
|
|
|
|
>
|
|
|
|
{{ $t('menu.createProject') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
|
|
|
<DropdownItem
|
2022-11-13 21:04:57 +00:00
|
|
|
:to="{ name: 'project.settings.delete', params: { projectId: project.id } }"
|
2021-01-30 16:17:04 +00:00
|
|
|
icon="trash-alt"
|
|
|
|
class="has-text-danger"
|
|
|
|
>
|
2021-06-23 23:24:57 +00:00
|
|
|
{{ $t('menu.delete') }}
|
2024-02-07 11:18:19 +00:00
|
|
|
</DropdownItem>
|
2021-01-30 16:17:04 +00:00
|
|
|
</template>
|
2024-02-07 11:18:19 +00:00
|
|
|
</Dropdown>
|
2021-01-30 16:17:04 +00:00
|
|
|
</template>
|
|
|
|
|
2022-01-30 12:40:14 +00:00
|
|
|
<script setup lang="ts">
|
2022-07-20 22:42:36 +00:00
|
|
|
import {ref, computed, watchEffect, type PropType} from 'vue'
|
2022-01-30 12:40:14 +00:00
|
|
|
|
2022-11-18 12:59:38 +00:00
|
|
|
import BaseButton from '@/components/base/BaseButton.vue'
|
2021-07-25 13:27:15 +00:00
|
|
|
import Dropdown from '@/components/misc/dropdown.vue'
|
|
|
|
import DropdownItem from '@/components/misc/dropdown-item.vue'
|
2022-10-07 16:15:00 +00:00
|
|
|
import Subscription from '@/components/misc/subscription.vue'
|
2022-11-13 21:04:57 +00:00
|
|
|
import type {IProject} from '@/modelTypes/IProject'
|
2022-09-06 09:36:01 +00:00
|
|
|
import type {ISubscription} from '@/modelTypes/ISubscription'
|
2022-10-27 19:56:14 +00:00
|
|
|
|
|
|
|
import {isSavedFilter} from '@/services/savedFilter'
|
2022-09-21 00:21:22 +00:00
|
|
|
import {useConfigStore} from '@/stores/config'
|
2022-11-13 21:04:57 +00:00
|
|
|
import {useProjectStore} from '@/stores/projects'
|
2021-01-30 16:17:04 +00:00
|
|
|
|
2022-01-30 12:40:14 +00:00
|
|
|
const props = defineProps({
|
2022-11-13 21:04:57 +00:00
|
|
|
project: {
|
|
|
|
type: Object as PropType<IProject>,
|
2022-01-30 12:40:14 +00:00
|
|
|
required: true,
|
2021-02-14 19:18:51 +00:00
|
|
|
},
|
2023-04-14 16:18:03 +00:00
|
|
|
level: {
|
|
|
|
type: Number,
|
|
|
|
},
|
2022-01-30 12:40:14 +00:00
|
|
|
})
|
|
|
|
|
2022-11-13 21:04:57 +00:00
|
|
|
const projectStore = useProjectStore()
|
2022-07-20 22:42:36 +00:00
|
|
|
const subscription = ref<ISubscription | null>(null)
|
2022-01-30 12:40:14 +00:00
|
|
|
watchEffect(() => {
|
2022-11-13 21:04:57 +00:00
|
|
|
subscription.value = props.project.subscription ?? null
|
2022-01-30 12:40:14 +00:00
|
|
|
})
|
|
|
|
|
2022-09-21 00:21:22 +00:00
|
|
|
const configStore = useConfigStore()
|
|
|
|
const backgroundsEnabled = computed(() => configStore.enabledBackgroundProviders?.length > 0)
|
2022-10-07 16:15:00 +00:00
|
|
|
|
|
|
|
function setSubscriptionInStore(sub: ISubscription) {
|
|
|
|
subscription.value = sub
|
2022-11-13 21:04:57 +00:00
|
|
|
const updatedProject = {
|
|
|
|
...props.project,
|
2022-10-07 16:15:00 +00:00
|
|
|
subscription: sub,
|
|
|
|
}
|
2022-11-13 21:04:57 +00:00
|
|
|
projectStore.setProject(updatedProject)
|
2022-10-07 16:15:00 +00:00
|
|
|
}
|
2022-11-18 12:59:38 +00:00
|
|
|
</script>
|