15768: clipboard works Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox@curii...
[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 { 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
12 export const readOnlyCollectionDirectoryItemActionSet: ContextMenuActionSet = [
13     [
14         {
15             component: CollectionFileViewerAction,
16             execute: () => {
17                 return;
18             },
19         },
20         {
21             component: CollectionCopyToClipboardAction,
22             execute: () => {
23                 return;
24             },
25         },
26     ],
27 ];
28
29 export const readOnlyCollectionFileItemActionSet: ContextMenuActionSet = [
30     [
31         {
32             component: DownloadCollectionFileAction,
33             execute: () => {
34                 return;
35             },
36         },
37         ...readOnlyCollectionDirectoryItemActionSet.reduce((prev, next) => prev.concat(next), []),
38     ],
39 ];
40
41 const writableActionSet: ContextMenuActionSet = [
42     [
43         {
44             name: 'Rename',
45             icon: RenameIcon,
46             execute: (dispatch, resources) => {
47                 resources.forEach((resource) =>
48                     dispatch<any>(
49                         openRenameFileDialog({
50                             name: resource.name,
51                             id: resource.uuid,
52                             path: resource.uuid.split('/').slice(1).join('/'),
53                         })
54                     )
55                 );
56             },
57         },
58         {
59             name: 'Remove',
60             icon: RemoveIcon,
61             execute: (dispatch, resources) => {
62                 resources.forEach((resource) => dispatch<any>(openFileRemoveDialog(resource.uuid)));
63             },
64         },
65     ],
66 ];
67
68 export const collectionDirectoryItemActionSet: ContextMenuActionSet = readOnlyCollectionDirectoryItemActionSet.concat(writableActionSet);
69
70 export const collectionFileItemActionSet: ContextMenuActionSet = readOnlyCollectionFileItemActionSet.concat(writableActionSet);