feat: collection rename

Signed-off-by: Sebastian <krupinski01@gmail.com>
This commit is contained in:
2026-02-15 21:36:00 -05:00
parent 25d5c620bf
commit b1fe063df3
5 changed files with 434 additions and 44 deletions

View File

@@ -18,6 +18,7 @@ const props = defineProps<Props>()
const emit = defineEmits<{
select: [folder: CollectionObject]
createSubfolder: [service: ServiceInterface, parentFolder: CollectionObject]
editFolder: [service: ServiceInterface, folder: CollectionObject]
}>()
// Get icon for folder based on role
@@ -76,6 +77,7 @@ const isSelected = (folder: CollectionObject): boolean => {
<template v-slot:activator="{ props: activatorProps }">
<v-list-item
v-bind="activatorProps"
class="folder-row-item"
:title="node.folder.properties.label"
:active="isSelected(node.folder)"
@click.stop="emit('select', node.folder)"
@@ -112,6 +114,12 @@ const isSelected = (folder: CollectionObject): boolean => {
</template>
<v-list density="compact">
<v-list-item
prepend-icon="mdi-pencil"
@click="emit('editFolder', service, node.folder)"
>
<v-list-item-title>Edit Folder Name</v-list-item-title>
</v-list-item>
<v-list-item
prepend-icon="mdi-folder-plus"
@click="emit('createSubfolder', service, node.folder)"
@@ -133,12 +141,14 @@ const isSelected = (folder: CollectionObject): boolean => {
:selected-folder="selectedFolder"
@select="emit('select', $event)"
@create-subfolder="(service, parentFolder) => emit('createSubfolder', service, parentFolder)"
@edit-folder="(service, folder) => emit('editFolder', service, folder)"
/>
</div>
</v-list-group>
<v-list-item
v-else
class="folder-tree-item folder-row-item"
:title="node.folder.properties.label"
:active="isSelected(node.folder)"
@click="emit('select', node.folder)"
@@ -175,6 +185,12 @@ const isSelected = (folder: CollectionObject): boolean => {
</template>
<v-list density="compact">
<v-list-item
prepend-icon="mdi-pencil"
@click="emit('editFolder', service, node.folder)"
>
<v-list-item-title>Edit Folder Name</v-list-item-title>
</v-list-item>
<v-list-item
prepend-icon="mdi-folder-plus"
@click="emit('createSubfolder', service, node.folder)"
@@ -198,6 +214,11 @@ export default {
background-color: rgba(var(--v-theme-primary), 0.12);
}
/* Keep top-level leaf folders aligned with expandable folders */
.folder-tree-item {
--indent-padding: 0 !important;
}
/* Remove indentation for the folder-tree-group itself */
.folder-tree-group {
--indent-padding: 0 !important;
@@ -208,6 +229,15 @@ export default {
--indent-padding: 0;
}
.folder-row-item {
--v-list-item-prepend-size: 22px;
}
.folder-row-item :deep(.v-list-item__prepend) {
padding-inline-start: 4px;
margin-inline-end: 2px;
}
/* Add visual indicator for nested items */
.folder-tree-children {
position: relative;