From 2c8820b1c0a64305482af48c8ded0e08ace73b89 Mon Sep 17 00:00:00 2001 From: rkusan00 Date: Mon, 11 Nov 2024 12:23:27 +0100 Subject: [PATCH 01/43] Introduce flat outline view --- .../repository/Outline/OutlineCard.vue | 151 ++++++++++++++++++ .../repository/[[id]]/root/structure.vue | 103 ++++++++---- apps/frontend/stores/current-repository.ts | 12 +- packages/tailor-interfaces/schema.ts | 7 + 4 files changed, 237 insertions(+), 36 deletions(-) create mode 100644 apps/frontend/components/repository/Outline/OutlineCard.vue diff --git a/apps/frontend/components/repository/Outline/OutlineCard.vue b/apps/frontend/components/repository/Outline/OutlineCard.vue new file mode 100644 index 000000000..dd0665a51 --- /dev/null +++ b/apps/frontend/components/repository/Outline/OutlineCard.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/apps/frontend/pages/repository/[[id]]/root/structure.vue b/apps/frontend/pages/repository/[[id]]/root/structure.vue index e5fbfbffd..d8ae6bb1a 100644 --- a/apps/frontend/pages/repository/[[id]]/root/structure.vue +++ b/apps/frontend/pages/repository/[[id]]/root/structure.vue @@ -10,37 +10,19 @@ @search="(val) => (search = val)" /> - - @@ -84,26 +86,6 @@ provide('$storageService', storageService); const isHovered = ref(false); -const options = computed(() => { - const items = [ - { - name: 'Remove', - icon: 'mdi-delete', - action: () => deleteActivity(), - }, - ]; - if (selectedActivity.isEditable.value) { - const { id: activityId, repositoryId } = props.activity; - const params = { id: repositoryId, activityId }; - items.unshift({ - name: 'Open', - icon: 'mdi-page-next-outline', - action: () => navigateTo({ name: 'editor', params }), - }); - } - return items; -}); - const config = computed(() => $schemaService.getLevel(props.activity.type)); const isSelected = computed( @@ -121,21 +103,24 @@ const color = computed(() => { return isHighlighted.value ? 'primary-darken-1' : 'primary-darken-2'; }); -const deleteActivity = () => { - const { activity } = props; - const actionFunc = () => { - const focusNode = activity.parentId - ? activityStore.findById(activity.parentId) - : first(sortBy(repositoryStore.rootActivities, 'position')); - activityStore.remove(props.activity.id); - if (focusNode) repositoryStore.selectActivity(focusNode.id); - }; - return showConfirmationDialog({ +const openEditor = () => { + const { id: activityId, repositoryId } = props.activity; + const params = { id: repositoryId, activityId }; + navigateTo({ name: 'editor', params }); +}; + +const deleteActivity = () => + showConfirmationDialog({ title: 'Delete item?', - message: `Are you sure you want to delete ${activity.data.name}?`, - action: actionFunc, + message: `Are you sure you want to delete ${props.activity.data.name}?`, + action: () => { + const focusNode = props.activity.parentId + ? activityStore.findById(props.activity.parentId) + : first(sortBy(repositoryStore.rootActivities, 'position')); + activityStore.remove(props.activity.id); + if (focusNode) repositoryStore.selectActivity(focusNode.id); + }, }); -}; diff --git a/apps/frontend/components/repository/Outline/OutlineToolbar.vue b/apps/frontend/components/repository/Outline/OutlineToolbar.vue index 4ef5a4cdf..0e03b4f67 100644 --- a/apps/frontend/components/repository/Outline/OutlineToolbar.vue +++ b/apps/frontend/components/repository/Outline/OutlineToolbar.vue @@ -1,49 +1,53 @@