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

@@ -6,6 +6,7 @@ import { useUser } from '@KTXC/composables/useUser'
import FolderTreeView from './FolderTreeView.vue'
import FolderPageView from './FolderPageView.vue'
import CreateFolderDialog from './CreateFolderDialog.vue'
import RenameFolderDialog from './RenameFolderDialog.vue'
import type { CollectionObject } from '@MailManager/models/collection'
import type { ServiceInterface } from '@MailManager/types/service'
@@ -40,6 +41,9 @@ const folderViewMode = computed(() => {
const createDialogVisible = ref(false)
const createDialogService = ref<ServiceInterface | null>(null)
const createDialogParent = ref<CollectionObject | null>(null)
const renameDialogVisible = ref(false)
const renameDialogService = ref<ServiceInterface | null>(null)
const renameDialogFolder = ref<CollectionObject | null>(null)
// Handle create folder event from child components
const handleCreateFolder = (service: ServiceInterface, parentFolder: CollectionObject | null = null) => {
@@ -54,6 +58,16 @@ const handleFolderCreated = (newFolder: CollectionObject) => {
emit('select', newFolder)
}
const handleEditFolder = (service: ServiceInterface, folder: CollectionObject) => {
renameDialogService.value = service
renameDialogFolder.value = folder
renameDialogVisible.value = true
}
const handleFolderRenamed = (updatedFolder: CollectionObject) => {
emit('select', updatedFolder)
}
// Computed: all folders for validation
const allFolders = computed(() =>
serviceGroups.value.flatMap(g => g.folders)
@@ -136,6 +150,7 @@ const serviceGroups = computed(() => {
:service-groups="serviceGroups"
@select="emit('select', $event)"
@create-folder="handleCreateFolder"
@edit-folder="handleEditFolder"
/>
<!-- Page-based View -->
@@ -145,6 +160,7 @@ const serviceGroups = computed(() => {
:service-groups="serviceGroups"
@select="emit('select', $event)"
@create-folder="handleCreateFolder"
@edit-folder="handleEditFolder"
/>
<!-- Empty state -->
@@ -164,6 +180,15 @@ const serviceGroups = computed(() => {
:all-folders="allFolders"
@created="handleFolderCreated"
/>
<RenameFolderDialog
v-if="renameDialogService && renameDialogFolder"
v-model="renameDialogVisible"
:service="renameDialogService"
:folder="renameDialogFolder"
:all-folders="allFolders"
@updated="handleFolderRenamed"
/>
</template>
<style scoped>