refactor: improvemets

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-03-24 19:10:52 -04:00
parent b6d6bed2ee
commit da6a407445
16 changed files with 1063 additions and 254 deletions
+35 -9
View File
@@ -1,17 +1,37 @@
<script setup lang="ts">
import { computed } from 'vue'
import { VNavigationDrawer } from 'vuetify/components'
import { CollectionObject } from '@DocumentsManager/models/collection'
import { EntityObject } from '@DocumentsManager/models/entity'
import { getFileIcon, formatSize, formatDate } from '@/utils/fileHelpers'
const props = defineProps<{
const props = withDefaults(defineProps<{
selectedItems: (CollectionObject | EntityObject)[]
}>()
embedded?: boolean
}>(), {
embedded: false,
})
const emit = defineEmits<{
'close': []
}>()
const panelComponent = computed(() => props.embedded ? 'div' : VNavigationDrawer)
const panelProps = computed(() => {
if (props.embedded) {
return {}
}
return {
modelValue: hasSelection.value,
key: props.selectedItems.map(item => String(item.identifier)).join(','),
location: 'right',
width: 320,
temporary: true,
}
})
const hasSelection = computed(() => props.selectedItems.length > 0)
const singleSelection = computed(() => props.selectedItems.length === 1)
const selectedItem = computed(() => props.selectedItems[0] ?? null)
@@ -52,13 +72,12 @@ const totalSize = computed(() => {
</script>
<template>
<v-navigation-drawer
:model-value="hasSelection"
:key="selectedItems.map(i => String(i.identifier)).join(',')"
location="right"
width="320"
temporary
<component
:is="panelComponent"
v-if="!embedded || hasSelection"
v-bind="panelProps"
class="files-info-panel"
:class="{ 'files-info-panel--embedded': embedded }"
>
<div class="pa-4">
<!-- Header -->
@@ -172,11 +191,18 @@ const totalSize = computed(() => {
</v-list>
</template>
</div>
</v-navigation-drawer>
</component>
</template>
<style scoped>
.files-info-panel {
border-left: 1px solid rgb(var(--v-border-color)) !important;
}
.files-info-panel--embedded {
width: 320px;
flex-shrink: 0;
overflow-y: auto;
background-color: rgb(var(--v-theme-surface));
}
</style>