diff --git a/apps/frontend/app/components/common/ActivityOptions/ActivityMenu.vue b/apps/frontend/app/components/common/ActivityOptions/ActivityMenu.vue index 6d246ac3a..4a1e57099 100644 --- a/apps/frontend/app/components/common/ActivityOptions/ActivityMenu.vue +++ b/apps/frontend/app/components/common/ActivityOptions/ActivityMenu.vue @@ -1,15 +1,21 @@ diff --git a/packages/core-components/src/components/TailorTreeview/index.vue b/apps/frontend/app/components/editor/Sidebar/TailorTreeview/index.vue similarity index 76% rename from packages/core-components/src/components/TailorTreeview/index.vue rename to apps/frontend/app/components/editor/Sidebar/TailorTreeview/index.vue index d81837559..18d5fa669 100644 --- a/packages/core-components/src/components/TailorTreeview/index.vue +++ b/apps/frontend/app/components/editor/Sidebar/TailorTreeview/index.vue @@ -15,13 +15,24 @@ - + + + import { cloneDeep, uniq } from 'lodash-es'; import { computed, ref, watch } from 'vue'; +import Draggable from 'vuedraggable'; +import type { ChangeEvent, SortableEvent } from '@/types/draggable'; import ItemGroup from './ItemGroup.vue'; +import { useCurrentRepository } from '@/stores/current-repository'; + +const repositoryStore = useCurrentRepository(); +const reorder = useOutlineReorder(); const props = defineProps<{ items: any[]; @@ -122,3 +139,9 @@ watch( { deep: true }, ); + + diff --git a/apps/frontend/app/components/repository/Outline/OutlineItem.vue b/apps/frontend/app/components/repository/Outline/OutlineItem.vue index 9ccdbe7eb..1a093be68 100644 --- a/apps/frontend/app/components/repository/Outline/OutlineItem.vue +++ b/apps/frontend/app/components/repository/Outline/OutlineItem.vue @@ -56,7 +56,7 @@ {{ isExpanded ? 'Collapse' : 'Expand' }} - + -
+
@@ -107,18 +109,20 @@ import { activity as activityUtils } from '@tailor-cms/utils'; import Draggable from 'vuedraggable'; import { size } from 'lodash-es'; +import { useDisplay } from 'vuetify'; +import type { ChangeEvent, SortableEvent } from '@/types/draggable'; import ActivityName from '@/components/common/ActivityName.vue'; import OptionsMenu from '@/components/common/ActivityOptions/ActivityMenu.vue'; import OutlineItem from '@/components/repository/Outline/OutlineItem.vue'; import OutlineItemToolbar from '@/components/common/ActivityOptions/ActivityToolbar.vue'; import type { StoreActivity } from '@/stores/activity'; -import { useDisplay } from 'vuetify'; const { smAndUp } = useDisplay(); const currentRepositoryStore = useCurrentRepository(); const { taxonomy } = storeToRefs(currentRepositoryStore); +const { onOutlineItemDrop } = currentRepositoryStore; interface Props { activity: StoreActivity; @@ -230,7 +234,7 @@ $background-color: rgb(var(--v-theme-primary-darken-2)); } } -.sub-activity { +.activity-wrapper .activity-wrapper { margin-left: 1.25rem; } diff --git a/apps/frontend/app/composables/useOutlineReorder.ts b/apps/frontend/app/composables/useOutlineReorder.ts index 8dc521026..9b1fe4b8e 100644 --- a/apps/frontend/app/composables/useOutlineReorder.ts +++ b/apps/frontend/app/composables/useOutlineReorder.ts @@ -1,10 +1,12 @@ +import type { SortableEvent } from '@/types/draggable'; import { useActivityStore } from '@/stores/activity'; export const useOutlineReorder = () => - ({ newIndex: newPosition }: { newIndex: number }, items: any[]) => { + ({ newIndex }: SortableEvent, items: any[]) => { + if (newIndex === undefined) return; const activityStore = useActivityStore(); - const activity = items[newPosition]; - const context = { items, newPosition }; + const activity = items[newIndex]; + const context = { items, newPosition: newIndex }; return activityStore.reorder(activity, context); }; diff --git a/apps/frontend/app/pages/repository/[[id]]/root/structure.vue b/apps/frontend/app/pages/repository/[[id]]/root/structure.vue index e667a5aee..13e975651 100644 --- a/apps/frontend/app/pages/repository/[[id]]/root/structure.vue +++ b/apps/frontend/app/pages/repository/[[id]]/root/structure.vue @@ -17,11 +17,13 @@