Merge 'main' into 20382-process-action-menu-cancel
[arvados-workbench2.git] / src / views-components / context-menu / action-sets / collection-files-action-set.ts
index 3aeec4c09c08ed854612ebdc3aeb55c248f406f9..80deb37cade38c6768421f80187ee7ac6f5a0fe7 100644 (file)
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
 import { collectionPanelFilesAction, openMultipleFilesRemoveDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
-import { openCollectionPartialCopyDialog, openCollectionPartialCopyToSelectedCollectionDialog } from 'store/collections/collection-partial-copy-actions';
+import {
+    openCollectionPartialCopyMultipleToNewCollectionDialog,
+    openCollectionPartialCopyMultipleToExistingCollectionDialog,
+    openCollectionPartialCopyToSeparateCollectionsDialog
+} from 'store/collections/collection-partial-copy-actions';
+import { openCollectionPartialMoveMultipleToExistingCollectionDialog, openCollectionPartialMoveMultipleToNewCollectionDialog, openCollectionPartialMoveToSeparateCollectionsDialog } from "store/collections/collection-partial-move-actions";
+import { FileCopyIcon, FileMoveIcon, RemoveIcon, SelectAllIcon, SelectNoneIcon } from "components/icon/icon";
 
-// These action sets are used on the multi-select actions button.
-export const readOnlyCollectionFilesActionSet: ContextMenuActionSet = [[
+const copyActions: ContextMenuAction[] = [
     {
-        name: "Select all",
+        name: "Copy selected into new collection",
+        icon: FileCopyIcon,
         execute: dispatch => {
-            dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES());
+            dispatch<any>(openCollectionPartialCopyMultipleToNewCollectionDialog());
         }
     },
     {
-        name: "Unselect all",
+        name: "Copy selected into existing collection",
+        icon: FileCopyIcon,
         execute: dispatch => {
-            dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES());
+            dispatch<any>(openCollectionPartialCopyMultipleToExistingCollectionDialog());
         }
     },
+];
+
+const copyActionsMultiple: ContextMenuAction[] = [
+    ...copyActions,
     {
-        name: "Create a new collection with selected",
+        name: "Copy selected into separate collections",
+        icon: FileCopyIcon,
         execute: dispatch => {
-            dispatch<any>(openCollectionPartialCopyDialog());
+            dispatch<any>(openCollectionPartialCopyToSeparateCollectionsDialog());
+        }
+    }
+];
+
+const moveActions: ContextMenuAction[] = [
+    {
+        name: "Move selected into new collection",
+        icon: FileMoveIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialMoveMultipleToNewCollectionDialog());
+        }
+    },
+    {
+        name: "Move selected into existing collection",
+        icon: FileMoveIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialMoveMultipleToExistingCollectionDialog());
         }
     },
+];
+
+const moveActionsMultiple: ContextMenuAction[] = [
+    ...moveActions,
     {
-        name: "Copy selected into the collection",
+        name: "Move selected into separate collections",
+        icon: FileMoveIcon,
         execute: dispatch => {
-            dispatch<any>(openCollectionPartialCopyToSelectedCollectionDialog());
+            dispatch<any>(openCollectionPartialMoveToSeparateCollectionsDialog());
         }
     }
-]];
+];
 
-export const collectionFilesActionSet: ContextMenuActionSet = readOnlyCollectionFilesActionSet.concat([[
+const selectActions: ContextMenuAction[] = [
     {
-        name: "Remove selected",
+        name: "Select all",
+        icon: SelectAllIcon,
         execute: dispatch => {
-            dispatch(openMultipleFilesRemoveDialog());
+            dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES());
         }
     },
+    {
+        name: "Unselect all",
+        icon: SelectNoneIcon,
+        execute: dispatch => {
+            dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES());
+        }
+    },
+];
+
+const removeAction: ContextMenuAction = {
+    name: "Remove selected",
+    icon: RemoveIcon,
+    execute: dispatch => {
+        dispatch(openMultipleFilesRemoveDialog());
+    }
+};
+
+// These action sets are used on the multi-select actions button.
+export const readOnlyCollectionFilesActionSet: ContextMenuActionSet = [
+    selectActions,
+    copyActions,
+];
+
+export const readOnlyCollectionFilesMultipleActionSet: ContextMenuActionSet = [
+    selectActions,
+    copyActionsMultiple,
+];
+
+export const collectionFilesActionSet: ContextMenuActionSet = readOnlyCollectionFilesActionSet.concat([[
+    removeAction,
+    ...moveActions
+]]);
+
+export const collectionFilesMultipleActionSet: ContextMenuActionSet = readOnlyCollectionFilesMultipleActionSet.concat([[
+    removeAction,
+    ...moveActionsMultiple
 ]]);