Merge branch '20219-log-api' into main. Closes #20219
[arvados.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 { openCollectionPartialMoveToExistingCollectionDialog, openCollectionPartialMoveToNewCollectionDialog } from "store/collections/collection-partial-move-actions";
12 import { openCollectionPartialCopyToExistingCollectionDialog, openCollectionPartialCopyToNewCollectionDialog } from "store/collections/collection-partial-copy-actions";
13
14 export const readOnlyCollectionDirectoryItemActionSet: ContextMenuActionSet = [[
15     {
16         name: "Copy item into new collection",
17         icon: FileCopyIcon,
18         execute: (dispatch, resource) => {
19             dispatch<any>(openCollectionPartialCopyToNewCollectionDialog(resource));
20         }
21     },
22     {
23         name: "Copy item into existing collection",
24         icon: FileCopyIcon,
25         execute: (dispatch, resource) => {
26             dispatch<any>(openCollectionPartialCopyToExistingCollectionDialog(resource));
27         }
28     },
29     {
30         component: CollectionFileViewerAction,
31         execute: () => { return; },
32     },
33     {
34         component: CollectionCopyToClipboardAction,
35         execute: () => { return; },
36     }
37 ]];
38
39 export const readOnlyCollectionFileItemActionSet: ContextMenuActionSet = [[
40     {
41         component: DownloadCollectionFileAction,
42         execute: () => { return; }
43     },
44     ...readOnlyCollectionDirectoryItemActionSet.reduce((prev, next) => prev.concat(next), []),
45 ]];
46
47 const writableActionSet: ContextMenuActionSet = [[
48     {
49         name: "Move item into new collection",
50         icon: FileMoveIcon,
51         execute: (dispatch, resource) => {
52             dispatch<any>(openCollectionPartialMoveToNewCollectionDialog(resource));
53         }
54     },
55     {
56         name: "Move item into existing collection",
57         icon: FileMoveIcon,
58         execute: (dispatch, resource) => {
59             dispatch<any>(openCollectionPartialMoveToExistingCollectionDialog(resource));
60         }
61     },
62     {
63         name: "Rename",
64         icon: RenameIcon,
65         execute: (dispatch, resource) => {
66             dispatch<any>(openRenameFileDialog({
67                 name: resource.name,
68                 id: resource.uuid,
69                 path: resource.uuid.split('/').slice(1).join('/') }));
70         }
71     },
72     {
73         name: "Remove",
74         icon: RemoveIcon,
75         execute: (dispatch, resource) => {
76             dispatch<any>(openFileRemoveDialog(resource.uuid));
77         }
78     }
79 ]];
80
81 export const collectionDirectoryItemActionSet: ContextMenuActionSet = readOnlyCollectionDirectoryItemActionSet.concat(writableActionSet);
82
83 export const collectionFileItemActionSet: ContextMenuActionSet = readOnlyCollectionFileItemActionSet.concat(writableActionSet);