This commit is contained in:
vadim committed 2026-09-24 15:08:46 +03:00
commit fcec12e5ba
78 files changed
+9569

No files matched your search

+61
View File
@@ -0,0 +1,61 @@
<script setup lang="ts">
import { computed, onMounted } from 'vue'
import { storeToRefs } from 'pinia'
import { useProjectStore } from '@/stores/project.ts'
const projectStore = useProjectStore()
const { projects, current } = storeToRefs(projectStore)
const currentProjectName = computed(() => current.value?.name ?? 'Select project')
const selected = computed(() => (current.value ? [current.value.id] : []))
function select(value: unknown) {
console.log(value)
const id = Array.isArray(value) ? value[0] : value
const project = projects.value.find((el) => el.id === id)
if (!project) {
throw new Error(`Project ${id} not found`)
}
projectStore.select(project)
}
onMounted(async () => {
await projectStore.list({ page: 1, limit: 100 })
await projectStore.restoreCurrent()
if (!current.value && projects.value[0]) {
projectStore.select(projects.value[0])
}
})
</script>
<template>
<div v-if="projects.length" class="">
<v-menu>
<template v-slot:activator="{ props }">
<v-btn border density="comfortable" variant="flat" :text="currentProjectName" v-bind="props" />
</template>
<v-list
width="12rem"
class="mt-1"
border
select-strategy="single-leaf"
density="compact"
:selected="selected"
mandatory
@update:selected="select"
>
<v-list-item slim v-for="project in projects" :key="project.id" :value="project.id">
<v-list-item-title>
<v-chip size="small" color="primary" variant="flat" density="compact">{{ project.key }}</v-chip>
{{ project.name }}
</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
</div>
</template>
<style scoped lang="scss"></style>