21224: details card now shows when it is selected Arvados-DCO-1.1-Signed-off-by:...
[arvados.git] / services / workbench2 / src / views-components / multiselect-toolbar / ms-user-action-set.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ActiveIcon, AdminMenuIcon, AdvancedIcon, AttributesIcon, DeactivateUserIcon, LoginAsIcon } from 'components/icon/icon';
6 import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
7 import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
8 import { openActivateDialog, openDeactivateDialog, openSetupDialog } from 'store/user-profile/user-profile-actions';
9 import { UserAccountStatus, openUserAttributes } from 'store/users/users-actions';
10 import { loginAs } from 'store/users/users-actions';
11
12 const { ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER } = MultiSelectMenuActionNames;
13
14 const msUserAttributes: MultiSelectMenuAction = {
15     name: ATTRIBUTES,
16     icon: AttributesIcon,
17     hasAlts: false,
18     isForMulti: false,
19     execute: (dispatch, resources) => {
20         dispatch<any>(openUserAttributes(resources[0].uuid));
21     },
22 };
23
24 const msAdvancedAction: MultiSelectMenuAction = {
25     name: API_DETAILS,
26     icon: AdvancedIcon,
27     hasAlts: false,
28     isForMulti: false,
29     execute: (dispatch, resources) => {
30         dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
31     },
32 };
33
34 const msActivateUser: MultiSelectMenuAction = {
35     name: ACTIVATE_USER,
36     icon: ActiveIcon,
37     hasAlts: false,
38     isForMulti: false,
39     execute: (dispatch, resources) => {
40         dispatch<any>(openActivateDialog(resources[0].uuid));
41     },
42     filters: [UserAccountStatus.INACTIVE, UserAccountStatus.SETUP],
43 };
44
45 const msSetupUser: MultiSelectMenuAction = {
46     name: SETUP_USER,
47     icon: AdminMenuIcon,
48     hasAlts: false,
49     isForMulti: false,
50     execute: (dispatch, resources) => {
51         dispatch<any>(openSetupDialog(resources[0].uuid));
52     },
53     filters: [UserAccountStatus.INACTIVE],
54 };
55
56 const msDeactivateUser: MultiSelectMenuAction = {
57     name: DEACTIVATE_USER,
58     icon: DeactivateUserIcon,
59     hasAlts: false,
60     isForMulti: false,
61     execute: (dispatch, resources) => {
62         dispatch<any>(openDeactivateDialog(resources[0].uuid));
63     },
64     filters: [UserAccountStatus.ACTIVE, UserAccountStatus.SETUP],
65 };
66
67 const msLoginAsUser: MultiSelectMenuAction = {
68     name: LOGIN_AS_USER,
69     icon: LoginAsIcon,
70     hasAlts: false,
71     isForMulti: false,
72     execute: (dispatch, resources) => {
73         dispatch<any>(loginAs(resources[0].uuid));
74     },
75     filters: [UserAccountStatus.OTHER]
76 };
77
78 export const msUserActionSet: MultiSelectMenuActionSet = [[msAdvancedAction, msUserAttributes, msSetupUser, msActivateUser, msDeactivateUser, msLoginAsUser]];
79
80 export const msUserCommonActionFilter = new Set([ATTRIBUTES, API_DETAILS]);
81 export const msUserAdminActionFilter = new Set([ATTRIBUTES, API_DETAILS, SETUP_USER, ACTIVATE_USER, DEACTIVATE_USER, LOGIN_AS_USER]);