From 3c15fa8809a4e0b06c1f798d902cd289bbc161a7 Mon Sep 17 00:00:00 2001
From: Mike
Date: Tue, 6 Aug 2024 10:03:22 +0200
Subject: [PATCH] Feat: Add member settings page (#2574)
---
.../components/form/select/WorkspaceRoles.vue | 83 +++++++++
.../project/model-page/dialog/MoveTo.vue | 5 +-
.../frontend-2/components/settings/Dialog.vue | 7 +-
.../components/settings/SectionHeader.vue | 3 +-
.../settings/shared/ChangeRoleDialog.vue | 52 ++++++
.../settings/workspaces/Members.vue | 37 ++++
.../settings/workspaces/members/Table.vue | 160 ++++++++++++++++++
.../viewer/resources/add-model/Dialog.vue | 5 +-
.../lib/common/generated/gql/gql.ts | 10 ++
.../lib/common/generated/gql/graphql.ts | 23 ++-
.../lib/settings/graphql/queries.ts | 18 ++
.../frontend-2/lib/settings/helpers/utils.ts | 7 +
.../lib/workspaces/graphql/mutations.ts | 15 ++
.../frontend-2/pages/projects/[id]/index.vue | 6 +-
packages/shared/src/core/constants.ts | 2 +-
packages/ui-components/src/lib.ts | 4 +-
16 files changed, 420 insertions(+), 17 deletions(-)
create mode 100644 packages/frontend-2/components/form/select/WorkspaceRoles.vue
create mode 100644 packages/frontend-2/components/settings/shared/ChangeRoleDialog.vue
create mode 100644 packages/frontend-2/components/settings/workspaces/Members.vue
create mode 100644 packages/frontend-2/components/settings/workspaces/members/Table.vue
create mode 100644 packages/frontend-2/lib/settings/helpers/utils.ts
create mode 100644 packages/frontend-2/lib/workspaces/graphql/mutations.ts
diff --git a/packages/frontend-2/components/form/select/WorkspaceRoles.vue b/packages/frontend-2/components/form/select/WorkspaceRoles.vue
new file mode 100644
index 000000000..cc6df772e
--- /dev/null
+++ b/packages/frontend-2/components/form/select/WorkspaceRoles.vue
@@ -0,0 +1,83 @@
+
+
+
+ {{ multiple ? 'Select roles' : 'Select role' }}
+
+
+
+
+
+
+ {{ RoleInfo.Workspace[item] + (i < value.length - 1 ? ', ' : '') }}
+
+
+
+ +{{ hiddenSelectedItemCount }}
+
+
+
+
+
+ {{ RoleInfo.Workspace[firstItem(value)].title }}
+
+
+
+
+
+ {{ RoleInfo.Workspace[firstItem(item)].title }}
+
+
+
+
+
diff --git a/packages/frontend-2/components/project/model-page/dialog/MoveTo.vue b/packages/frontend-2/components/project/model-page/dialog/MoveTo.vue
index 48a2bbca8..75483ea50 100644
--- a/packages/frontend-2/components/project/model-page/dialog/MoveTo.vue
+++ b/packages/frontend-2/components/project/model-page/dialog/MoveTo.vue
@@ -8,7 +8,7 @@
Move {{ versions.length }} version{{ versions.length > 1 ? 's' : '' }}
@@ -38,7 +38,6 @@ import { graphql } from '~~/lib/common/generated/gql'
import type { ProjectModelPageDialogMoveToVersionFragment } from '~~/lib/common/generated/gql/graphql'
import { useMixpanel } from '~~/lib/core/composables/mp'
import { useMoveVersions } from '~~/lib/projects/composables/versionManagement'
-import { LayoutTabsHoriztonal } from '@speckle/ui-components'
import type { LayoutPageTabItem } from '@speckle/ui-components'
graphql(`
diff --git a/packages/frontend-2/components/settings/Dialog.vue b/packages/frontend-2/components/settings/Dialog.vue
index 34afc376e..476b21204 100644
--- a/packages/frontend-2/components/settings/Dialog.vue
+++ b/packages/frontend-2/components/settings/Dialog.vue
@@ -77,6 +77,7 @@
!isMobile && 'simple-scrollbar overflow-y-auto flex-1'
]"
:user="user"
+ :workspace-id="targetWorkspaceId"
/>
@@ -91,6 +92,7 @@ import SettingsServerGeneral from '~/components/settings/server/General.vue'
import SettingsServerProjects from '~/components/settings/server/Projects.vue'
import SettingsServerActiveUsers from '~/components/settings/server/ActiveUsers.vue'
import SettingsServerPendingInvitations from '~/components/settings/server/PendingInvitations.vue'
+import SettingsWorkspacesMembers from '~/components/settings/workspaces/Members.vue'
import { useBreakpoints } from '@vueuse/core'
import { TailwindBreakpoints } from '~~/lib/common/helpers/tailwind'
import { UserIcon, ServerStackIcon } from '@heroicons/vue/24/outline'
@@ -154,7 +156,10 @@ const menuItemConfig = shallowRef<{ [key: string]: { [key: string]: MenuItem } }
}
},
workspace: {
- // Workspace menu items will be added here, general, members and projects
+ members: {
+ title: 'Members',
+ component: SettingsWorkspacesMembers
+ }
}
})
diff --git a/packages/frontend-2/components/settings/SectionHeader.vue b/packages/frontend-2/components/settings/SectionHeader.vue
index f30a7c159..1d09f06d1 100644
--- a/packages/frontend-2/components/settings/SectionHeader.vue
+++ b/packages/frontend-2/components/settings/SectionHeader.vue
@@ -24,7 +24,7 @@
>
{{ text }}
-
+
@@ -46,6 +46,7 @@ withDefaults(
text?: string
buttons?: Button[]
subheading?: boolean
+ hideDivider?: boolean
}>(),
{
buttons: () => []
diff --git a/packages/frontend-2/components/settings/shared/ChangeRoleDialog.vue b/packages/frontend-2/components/settings/shared/ChangeRoleDialog.vue
new file mode 100644
index 000000000..e34dd16fe
--- /dev/null
+++ b/packages/frontend-2/components/settings/shared/ChangeRoleDialog.vue
@@ -0,0 +1,52 @@
+
+
+ Change role
+
+
Are you sure you want to change the role of the selected user?
+
+
+ {{ name }}
+
+
+
{{ getRoleLabel(oldRole).title }}
+
+
{{ getRoleLabel(newRole).title }}
+
+
+
+
+
+
+
diff --git a/packages/frontend-2/components/settings/workspaces/Members.vue b/packages/frontend-2/components/settings/workspaces/Members.vue
new file mode 100644
index 000000000..7119f6c0c
--- /dev/null
+++ b/packages/frontend-2/components/settings/workspaces/Members.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ Guests
+ Pending invites
+
+
+
+
+
+
+
diff --git a/packages/frontend-2/components/settings/workspaces/members/Table.vue b/packages/frontend-2/components/settings/workspaces/members/Table.vue
new file mode 100644
index 000000000..152b27ace
--- /dev/null
+++ b/packages/frontend-2/components/settings/workspaces/members/Table.vue
@@ -0,0 +1,160 @@
+
+
+
+
+ Invite
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+ {{ item.company ? item.company : '-' }}
+
+
+
+
+ {{ item.verified ? 'Verified' : 'Unverified' }}
+
+
+
+ openChangeUserRoleDialog(item, newRoleValue)
+ "
+ />
+
+
+
+
+
+
+
diff --git a/packages/frontend-2/components/viewer/resources/add-model/Dialog.vue b/packages/frontend-2/components/viewer/resources/add-model/Dialog.vue
index af30bc4d4..6bd4ace3a 100644
--- a/packages/frontend-2/components/viewer/resources/add-model/Dialog.vue
+++ b/packages/frontend-2/components/viewer/resources/add-model/Dialog.vue
@@ -2,7 +2,7 @@
Add model
-
+
-
+