Footer in menu. Remove admin

This commit is contained in:
andrewwallacespeckle
2025-03-19 22:42:22 +00:00
parent 5ffa4592ae
commit 57d171dbe3
3 changed files with 42 additions and 6 deletions
@@ -71,7 +71,8 @@ const isActiveUserTargetUser = computed(
)
const filteredActionsItems = computed(() => {
const baseItems: LayoutMenuItem[][] = []
const mainItems: LayoutMenuItem[] = []
const footerItems: LayoutMenuItem[] = []
Object.entries(UPDATE_WORKSPACE_MEMBER_CONFIG).forEach(([type, config]) => {
if (
@@ -85,11 +86,24 @@ const filteredActionsItems = computed(() => {
targetUserCurrentSeatType: props.targetUser.seatType
})
) {
baseItems.push([{ title: config.menu.title, id: type as UserUpdateActionTypes }])
const item = { title: config.menu.title, id: type as UserUpdateActionTypes }
// Add remove/leave actions to footer, others to main section
if (
type === UserUpdateActionTypes.RemoveMember ||
type === UserUpdateActionTypes.LeaveWorkspace
) {
footerItems.push(item)
} else {
mainItems.push(item)
}
}
})
return baseItems
const result: LayoutMenuItem[][] = []
if (mainItems.length) result.push(mainItems)
if (footerItems.length) result.push(footerItems)
return result
})
const onActionChosen = (actionItem: LayoutMenuItem) => {
@@ -156,6 +170,7 @@ const onDialogConfirm = async () => {
case UserUpdateActionTypes.MakeGuest:
await onUpdateRole(Roles.Workspace.Guest)
break
case UserUpdateActionTypes.RemoveAdmin:
case UserUpdateActionTypes.MakeMember:
await onUpdateRole(Roles.Workspace.Member)
break
@@ -30,7 +30,7 @@ export const UPDATE_WORKSPACE_MEMBER_CONFIG: Record<
targetUserCurrentRole !== Roles.Workspace.Guest
},
dialog: {
title: 'Make Admin',
title: 'Make admin',
mainMessage: (seatType) =>
seatType === WorkspaceSeatType.Editor
? 'They will become project owner for all existing and new workspace projects.'
@@ -40,6 +40,26 @@ export const UPDATE_WORKSPACE_MEMBER_CONFIG: Record<
seatCountMessage: true
}
},
[UserUpdateActionTypes.RemoveAdmin]: {
menu: {
title: 'Remove as admin...',
show: ({
isActiveUserWorkspaceAdmin = false,
isActiveUserTargetUser,
targetUserCurrentRole
}) =>
isActiveUserWorkspaceAdmin &&
!isActiveUserTargetUser &&
targetUserCurrentRole === Roles.Workspace.Admin
},
dialog: {
title: 'Remove as admin',
mainMessage: 'They will lose admin privileges and become a member.',
showRoleInfo: false,
buttonText: 'Remove as admin',
seatCountMessage: false
}
},
[UserUpdateActionTypes.MakeGuest]: {
menu: {
title: 'Make guest...',
@@ -53,7 +73,7 @@ export const UPDATE_WORKSPACE_MEMBER_CONFIG: Record<
targetUserCurrentRole !== Roles.Workspace.Guest
},
dialog: {
title: 'Make Guest',
title: 'Make guest',
mainMessage: 'They will lose access to all existing workspace projects.',
showRoleInfo: true,
buttonText: 'Make a guest'
@@ -72,7 +92,7 @@ export const UPDATE_WORKSPACE_MEMBER_CONFIG: Record<
targetUserCurrentRole === Roles.Workspace.Guest
},
dialog: {
title: 'Make Member',
title: 'Make member',
mainMessage: (seatType) =>
seatType === WorkspaceSeatType.Editor
? 'They will be given a viewer seat and lose project ownership.'
@@ -16,6 +16,7 @@ export enum UserUpdateActionTypes {
RemoveMember = 'remove-member',
LeaveWorkspace = 'leave-workspace',
MakeAdmin = 'make-admin',
RemoveAdmin = 'remove-admin',
MakeGuest = 'make-guest',
MakeMember = 'make-member',
UpgradeEditor = 'upgrade-editor',