diff --git a/packages/frontend-2/components/projects/Dashboard.vue b/packages/frontend-2/components/projects/Dashboard.vue index 425a131db..ce3b2ef6b 100644 --- a/packages/frontend-2/components/projects/Dashboard.vue +++ b/packages/frontend-2/components/projects/Dashboard.vue @@ -2,7 +2,10 @@
- +

Projects

@@ -61,7 +64,11 @@ @create-project="openNewProject = true" /> @@ -105,6 +117,8 @@ const selectedRoles = ref(undefined as Optional) const filterProjectsToMove = ref(false) const openNewProject = ref(false) const showLoadingBar = ref(false) +const showMoveProjectDialog = ref(false) +const emittedProjectId = ref('') const areQueriesLoading = useQueryLoading() const isWorkspacesEnabled = useIsWorkspacesEnabled() useUserProjectsUpdatedTracking() @@ -180,6 +194,11 @@ const infiniteLoad = async (state: InfiniteLoaderState) => { } } +const onMoveProject = (projectId: string) => { + emittedProjectId.value = projectId + showMoveProjectDialog.value = true +} + watch(search, (newVal) => { if (newVal) showLoadingBar.value = true else showLoadingBar.value = false diff --git a/packages/frontend-2/components/projects/DashboardFilled.vue b/packages/frontend-2/components/projects/DashboardFilled.vue index e5e492f5c..aa6c8ef7b 100644 --- a/packages/frontend-2/components/projects/DashboardFilled.vue +++ b/packages/frontend-2/components/projects/DashboardFilled.vue @@ -6,6 +6,7 @@ :project="project" :show-workspace-link="showWorkspaceLink" :workspace-page="workspacePage" + @move-project="$emit('moveProject', project.id)" />
@@ -19,6 +20,10 @@ import type { ProjectsDashboardFilledUserFragment } from '~~/lib/common/generated/gql/graphql' +defineEmits<{ + (e: 'moveProject', projectId: string): void +}>() + const props = defineProps<{ projects: ProjectsDashboardFilledProjectFragment | ProjectsDashboardFilledUserFragment showWorkspaceLink?: boolean diff --git a/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue b/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue index 66b8a25f5..a7627d27a 100644 --- a/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue +++ b/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue @@ -26,7 +26,7 @@
- + {{ projectId ? 'Move project' : 'Show projects to move' }}
- @@ -53,9 +48,9 @@ import { ExclamationCircleIcon } from '@heroicons/vue/24/outline' import { LearnMoreMoveProjectsUrl } from '~/lib/common/helpers/route' +defineEmits(['moveProject']) + defineProps<{ projectId?: string }>() - -const showMoveProjectDialog = ref(false) diff --git a/packages/frontend-2/components/projects/ProjectDashboardCard.vue b/packages/frontend-2/components/projects/ProjectDashboardCard.vue index 64b8cafc5..e3889b2e1 100644 --- a/packages/frontend-2/components/projects/ProjectDashboardCard.vue +++ b/packages/frontend-2/components/projects/ProjectDashboardCard.vue @@ -4,9 +4,16 @@ class="relative group flex flex-col items-stretch md:flex-row md:space-x-2 border border-outline-3 rounded-xl p-4 transition bg-foundation" >
+ + Project to move + - - {{ - `${modelItemTotalCount} ${modelItemTotalCount === 1 ? 'model' : 'models'}` - }} - +
+ + {{ + `${modelItemTotalCount} ${ + modelItemTotalCount === 1 ? 'model' : 'models' + }` + }} + + + Move project... + +
@@ -100,6 +119,10 @@ import { ChevronRightIcon } from '@heroicons/vue/20/solid' import { workspaceRoute } from '~/lib/common/helpers/route' import { RoleInfo, type StreamRoles } from '@speckle/shared' +defineEmits<{ + moveProject: [projectId: string] +}>() + const props = defineProps<{ project: ProjectDashboardItemFragment showWorkspaceLink?: boolean diff --git a/packages/frontend-2/pages/projects/[id]/index.vue b/packages/frontend-2/pages/projects/[id]/index.vue index 88a37707b..3fdd85d46 100644 --- a/packages/frontend-2/pages/projects/[id]/index.vue +++ b/packages/frontend-2/pages/projects/[id]/index.vue @@ -10,6 +10,7 @@
-
@@ -315,4 +316,8 @@ const onActionChosen = (params: { item: LayoutMenuItem; event: MouseEvent }) => break } } + +const onMoveProject = () => { + showMoveDialog.value = true +}