Merge branch '21128-toolbar-context-menu'
[arvados-workbench2.git] / src / views-components / context-menu / action-sets / collection-files-item-action-set.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ContextMenuActionSet } from "../context-menu-action-set";
6 import { FileCopyIcon, FileMoveIcon, RemoveIcon, RenameIcon } from "components/icon/icon";
7 import { DownloadCollectionFileAction } from "../actions/download-collection-file-action";
8 import { openFileRemoveDialog, openRenameFileDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
9 import { CollectionFileViewerAction } from "views-components/context-menu/actions/collection-file-viewer-action";
10 import { CollectionCopyToClipboardAction } from "../actions/collection-copy-to-clipboard-action";
11 import {
12     openCollectionPartialMoveToExistingCollectionDialog,
13     openCollectionPartialMoveToNewCollectionDialog,
14 } from "store/collections/collection-partial-move-actions";
15 import {
16     openCollectionPartialCopyToExistingCollectionDialog,
17     openCollectionPartialCopyToNewCollectionDialog,
18 } from "store/collections/collection-partial-copy-actions";
19
20 export const readOnlyCollectionDirectoryItemActionSet: ContextMenuActionSet = [
21     [
22         {
23             name: "Copy item into new collection",
24             icon: FileCopyIcon,
25             execute: (dispatch, resources) => {
26                 dispatch<any>(openCollectionPartialCopyToNewCollectionDialog(resources[0]));
27             },
28         },
29         {
30             name: "Copy item into existing collection",
31             icon: FileCopyIcon,
32             execute: (dispatch, resources) => {
33                 dispatch<any>(openCollectionPartialCopyToExistingCollectionDialog(resources[0]));
34             },
35         },
36         {
37             component: CollectionFileViewerAction,
38             execute: () => {
39                 return;
40             },
41         },
42         {
43             component: CollectionCopyToClipboardAction,
44             execute: () => {
45                 return;
46             },
47         },
48     ],
49 ];
50
51 export const readOnlyCollectionFileItemActionSet: ContextMenuActionSet = [
52     [
53         {
54             component: DownloadCollectionFileAction,
55             execute: () => {
56                 return;
57             },
58         },
59         ...readOnlyCollectionDirectoryItemActionSet.reduce((prev, next) => prev.concat(next), []),
60     ],
61 ];
62
63 const writableActionSet: ContextMenuActionSet = [
64     [
65         {
66             name: "Move item into new collection",
67             icon: FileMoveIcon,
68             execute: (dispatch, resources) => {
69                 dispatch<any>(openCollectionPartialMoveToNewCollectionDialog(resources[0]));
70             },
71         },
72         {
73             name: "Move item into existing collection",
74             icon: FileMoveIcon,
75             execute: (dispatch, resources) => {
76                 dispatch<any>(openCollectionPartialMoveToExistingCollectionDialog(resources[0]));
77             },
78         },
79         {
80             name: "Rename",
81             icon: RenameIcon,
82             execute: (dispatch, resources) => {
83                 dispatch<any>(
84                     openRenameFileDialog({
85                         name: resources[0].name,
86                         id: resources[0].uuid,
87                         path: resources[0].uuid.split("/").slice(1).join("/"),
88                     })
89                 );
90             },
91         },
92         {
93             name: "Remove",
94             icon: RemoveIcon,
95             execute: (dispatch, resources) => {
96                 dispatch<any>(openFileRemoveDialog(resources[0].uuid));
97             },
98         },
99     ],
100 ];
101
102 export const collectionDirectoryItemActionSet: ContextMenuActionSet = readOnlyCollectionDirectoryItemActionSet.concat(writableActionSet);
103
104 export const collectionFileItemActionSet: ContextMenuActionSet = readOnlyCollectionFileItemActionSet.concat(writableActionSet);