20031: Add multiple/single collection files context menu to selectively show actions...
[arvados-workbench2.git] / src / views-components / context-menu / action-sets / collection-files-action-set.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
6 import { collectionPanelFilesAction, openMultipleFilesRemoveDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
7 import {
8     openCollectionPartialCopyToNewCollectionDialog,
9     openCollectionPartialCopyToExistingCollectionDialog,
10     openCollectionPartialCopyToSeparateCollectionsDialog
11 } from 'store/collections/collection-partial-copy-actions';
12 import { openCollectionPartialMoveToExistingCollectionDialog, openCollectionPartialMoveToNewCollectionDialog, openCollectionPartialMoveToSeparateCollectionsDialog } from "store/collections/collection-partial-move-actions";
13
14 const copyActions: ContextMenuAction[] = [
15     {
16         name: "Copy selected into new collection",
17         execute: dispatch => {
18             dispatch<any>(openCollectionPartialCopyToNewCollectionDialog());
19         }
20     },
21     {
22         name: "Copy selected into existing collection",
23         execute: dispatch => {
24             dispatch<any>(openCollectionPartialCopyToExistingCollectionDialog());
25         }
26     },
27 ];
28
29 const copyActionsMultiple: ContextMenuAction[] = [
30     ...copyActions,
31     {
32         name: "Copy selected into separate collections",
33         execute: dispatch => {
34             dispatch<any>(openCollectionPartialCopyToSeparateCollectionsDialog());
35         }
36     }
37 ];
38
39 const moveActions: ContextMenuAction[] = [
40     {
41         name: "Move selected into new collection",
42         execute: dispatch => {
43             dispatch<any>(openCollectionPartialMoveToNewCollectionDialog());
44         }
45     },
46     {
47         name: "Move selected into existing collection",
48         execute: dispatch => {
49             dispatch<any>(openCollectionPartialMoveToExistingCollectionDialog());
50         }
51     },
52 ];
53
54 const moveActionsMultiple: ContextMenuAction[] = [
55     ...moveActions,
56     {
57         name: "Move selected into separate collections",
58         execute: dispatch => {
59             dispatch<any>(openCollectionPartialMoveToSeparateCollectionsDialog());
60         }
61     }
62 ];
63
64 const selectActions: ContextMenuAction[] = [
65     {
66         name: "Select all",
67         execute: dispatch => {
68             dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES());
69         }
70     },
71     {
72         name: "Unselect all",
73         execute: dispatch => {
74             dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES());
75         }
76     },
77 ];
78
79 const removeAction: ContextMenuAction = {
80     name: "Remove selected",
81     execute: dispatch => {
82         dispatch(openMultipleFilesRemoveDialog());
83     }
84 };
85
86 // These action sets are used on the multi-select actions button.
87 export const readOnlyCollectionFilesActionSet: ContextMenuActionSet = [
88     selectActions,
89     copyActions,
90 ];
91
92 export const readOnlyCollectionFilesMultipleActionSet: ContextMenuActionSet = [
93     selectActions,
94     copyActionsMultiple,
95 ];
96
97 export const collectionFilesActionSet: ContextMenuActionSet = readOnlyCollectionFilesActionSet.concat([[
98     removeAction,
99     ...moveActions
100 ]]);
101
102 export const collectionFilesMultipleActionSet: ContextMenuActionSet = readOnlyCollectionFilesMultipleActionSet.concat([[
103     removeAction,
104     ...moveActionsMultiple
105 ]]);