feat: collection rename
Signed-off-by: Sebastian <krupinski01@gmail.com>
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user