From e2290d5e147769a01d403f1f5b1b06151bcfc75c Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Mon, 14 Apr 2025 15:33:13 +0100 Subject: [PATCH 1/2] Add card ctas --- .../components/projects/Dashboard.vue | 23 +++++++++- .../components/projects/DashboardFilled.vue | 5 +++ .../projects/MoveToWorkspaceAlert.vue | 11 ++--- .../projects/ProjectDashboardCard.vue | 45 ++++++++++++++----- .../frontend-2/pages/projects/[id]/index.vue | 9 +++- 5 files changed, 71 insertions(+), 22 deletions(-) diff --git a/packages/frontend-2/components/projects/Dashboard.vue b/packages/frontend-2/components/projects/Dashboard.vue index 425a131db..a41f7dc65 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..b2b9e1aa1 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', $event)" />
@@ -19,6 +20,10 @@ import type { ProjectsDashboardFilledUserFragment } from '~~/lib/common/generated/gql/graphql' +defineEmits<{ + 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..1d6d25314 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' }}
- @@ -57,5 +52,7 @@ defineProps<{ projectId?: string }>() -const showMoveProjectDialog = ref(false) +defineEmits<{ + moveProject: (projectId: string) => void +}>() 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 +} From 3d1a643f8b700762fc4655c4351731b9766e67a3 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Mon, 14 Apr 2025 16:01:58 +0100 Subject: [PATCH 2/2] Fix emits --- packages/frontend-2/components/projects/Dashboard.vue | 4 ++-- packages/frontend-2/components/projects/DashboardFilled.vue | 4 ++-- .../frontend-2/components/projects/MoveToWorkspaceAlert.vue | 6 ++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/frontend-2/components/projects/Dashboard.vue b/packages/frontend-2/components/projects/Dashboard.vue index a41f7dc65..ce3b2ef6b 100644 --- a/packages/frontend-2/components/projects/Dashboard.vue +++ b/packages/frontend-2/components/projects/Dashboard.vue @@ -4,7 +4,7 @@
@@ -67,7 +67,7 @@
@@ -21,7 +21,7 @@ import type { } from '~~/lib/common/generated/gql/graphql' defineEmits<{ - moveProject: (projectId: string) => void + (e: 'moveProject', projectId: string): void }>() const props = defineProps<{ diff --git a/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue b/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue index 1d6d25314..a7627d27a 100644 --- a/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue +++ b/packages/frontend-2/components/projects/MoveToWorkspaceAlert.vue @@ -48,11 +48,9 @@ import { ExclamationCircleIcon } from '@heroicons/vue/24/outline' import { LearnMoreMoveProjectsUrl } from '~/lib/common/helpers/route' +defineEmits(['moveProject']) + defineProps<{ projectId?: string }>() - -defineEmits<{ - moveProject: (projectId: string) => void -}>()