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 @@
-
+
onMoveProject(id)"
+ />
Projects
@@ -61,7 +64,11 @@
@create-project="openNewProject = true"
/>
-
+ onMoveProject(id)"
+ />
+
@@ -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
+}