From 143485e107734cf2deb860930066b2961c1ff341 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Mon, 26 Jan 2026 20:18:33 +0100 Subject: [PATCH] Changes More Functions to wiki --- frontend/components/wiki/WikiEditor.vue | 237 +++++++++++++++++++++--- frontend/nuxt.config.ts | 4 +- frontend/package.json | 9 + frontend/stores/wiki.ts | 53 ------ 4 files changed, 227 insertions(+), 76 deletions(-) delete mode 100644 frontend/stores/wiki.ts diff --git a/frontend/components/wiki/WikiEditor.vue b/frontend/components/wiki/WikiEditor.vue index 6f41f13..7130774 100644 --- a/frontend/components/wiki/WikiEditor.vue +++ b/frontend/components/wiki/WikiEditor.vue @@ -1,28 +1,84 @@ - \ No newline at end of file diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts index 5e9547f..9bc778d 100644 --- a/frontend/nuxt.config.ts +++ b/frontend/nuxt.config.ts @@ -24,7 +24,7 @@ export default defineNuxtConfig({ }], build: { - transpile: ['@vuepic/vue-datepicker'] + transpile: ['@vuepic/vue-datepicker','@tiptap/vue-3'] }, @@ -41,7 +41,7 @@ export default defineNuxtConfig({ vite: { optimizeDeps: { - include: ["@editorjs/editorjs", "dayjs"], + include: ["@editorjs/editorjs", "dayjs",'@tiptap/vue-3'], }, }, diff --git a/frontend/package.json b/frontend/package.json index 4d2d65b..f852015 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -46,7 +46,16 @@ "@popperjs/core": "^2.11.8", "@sentry/browser": "^9.11.0", "@sentry/integrations": "^7.114.0", + "@tiptap/extension-bubble-menu": "^3.17.1", + "@tiptap/extension-image": "^3.17.1", + "@tiptap/extension-link": "^3.17.1", "@tiptap/extension-placeholder": "^3.17.1", + "@tiptap/extension-table": "^3.17.1", + "@tiptap/extension-table-cell": "^3.17.1", + "@tiptap/extension-table-header": "^3.17.1", + "@tiptap/extension-table-row": "^3.17.1", + "@tiptap/extension-task-item": "^3.17.1", + "@tiptap/extension-task-list": "^3.17.1", "@tiptap/pm": "^3.17.1", "@tiptap/starter-kit": "^3.17.1", "@tiptap/vue-3": "^3.17.1", diff --git a/frontend/stores/wiki.ts b/frontend/stores/wiki.ts deleted file mode 100644 index c23ae0a..0000000 --- a/frontend/stores/wiki.ts +++ /dev/null @@ -1,53 +0,0 @@ -// stores/wiki.ts -import { defineStore } from 'pinia' - -export const useWikiStore = defineStore('wiki', () => { - const flatItems = ref([]) - const isLoading = ref(false) - - // Computed: Wandelt flatItems automatisch in Baum um, wenn sich Daten ändern - const tree = computed(() => buildTree(flatItems.value)) - - // Action: Baum laden - async function fetchTree(params: { entityType?: string, entityId?: number, entityUuid?: string } = {}) { - isLoading.value = true - try { - const { data } = await useFetch('/api/wiki/tree', { - query: params - }) - if (data.value) { - flatItems.value = data.value - } - } catch (e) { - console.error('Wiki tree fetch error', e) - } finally { - isLoading.value = false - } - } - - // Action: Eintrag verschieben (Drag & Drop im UI) - async function moveItem(itemId: string, newParentId: string | null, newSortOrder: number) { - // 1. Optimistic Update im State (damit es sich sofort schnell anfühlt) - const itemIndex = flatItems.value.findIndex(i => i.id === itemId) - if (itemIndex > -1) { - flatItems.value[itemIndex].parentId = newParentId - flatItems.value[itemIndex].sortOrder = newSortOrder - } - - // 2. API Call im Hintergrund - await $fetch(`/api/wiki/${itemId}`, { - method: 'PATCH', - body: { parentId: newParentId, sortOrder: newSortOrder } - }) - - // Fallback: Wenn Error, müsste man hier den alten State wiederherstellen - } - - return { - flatItems, - tree, - isLoading, - fetchTree, - moveItem - } -}) \ No newline at end of file