Merge branch 'main' from arvados-workbench2.git
[arvados.git] / services / workbench2 / src / components / multiselect-toolbar / ms-toolbar-action-filters.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ResourceKind } from "models/resource";
6 import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
7 import { msCollectionActionSet } from "views-components/multiselect-toolbar/ms-collection-action-set";
8 import { msProjectActionSet } from "views-components/multiselect-toolbar/ms-project-action-set";
9 import { msProcessActionSet } from "views-components/multiselect-toolbar/ms-process-action-set";
10
11 export type TMultiselectActionsFilters = Record<string, [ContextMenuActionSet, Set<string>]>;
12
13 export const contextMenuActionConsts = {
14     MAKE_A_COPY: "Make a copy",
15     MOVE_TO: "Move to",
16     TOGGLE_TRASH_ACTION: "ToggleTrashAction",
17     COPY_TO_CLIPBOARD: "Copy to clipboard",
18     COPY_AND_RERUN_PROCESS: "Copy and re-run process",
19     REMOVE: "Remove",
20 };
21
22 const { MOVE_TO, TOGGLE_TRASH_ACTION, REMOVE, MAKE_A_COPY } = contextMenuActionConsts;
23
24 //these sets govern what actions are on the ms toolbar for each resource kind
25 const projectMSActionsFilter = new Set([MOVE_TO, TOGGLE_TRASH_ACTION]);
26 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
27 const collectionMSActionsFilter = new Set([MAKE_A_COPY, MOVE_TO, TOGGLE_TRASH_ACTION]);
28
29 const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
30
31 export const multiselectActionsFilters: TMultiselectActionsFilters = {
32     [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
33     [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
34     [COLLECTION]: [msCollectionActionSet, collectionMSActionsFilter],
35 };