Merge branch '21128-toolbar-context-menu'
[arvados-workbench2.git] / src / views-components / context-menu / action-sets / collection-files-action-set.ts
index 5c4dab30e537f86ad4b079bf71e92339c1da895b..80deb37cade38c6768421f80187ee7ac6f5a0fe7 100644 (file)
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ContextMenuActionSet } from "../context-menu-action-set";
-import { collectionPanelFilesAction, openMultipleFilesRemoveDialog } from "~/store/collection-panel/collection-panel-files/collection-panel-files-actions";
-import { openCollectionPartialCopyDialog } from '~/store/collections/collection-partial-copy-actions';
-
-export const collectionFilesActionSet: ContextMenuActionSet = [[{
-    name: "Select all",
-    execute: (dispatch) => {
-        dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES());
+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 {
+    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";
+
+const copyActions: ContextMenuAction[] = [
+    {
+        name: "Copy selected into new collection",
+        icon: FileCopyIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialCopyMultipleToNewCollectionDialog());
+        }
+    },
+    {
+        name: "Copy selected into existing collection",
+        icon: FileCopyIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialCopyMultipleToExistingCollectionDialog());
+        }
+    },
+];
+
+const copyActionsMultiple: ContextMenuAction[] = [
+    ...copyActions,
+    {
+        name: "Copy selected into separate collections",
+        icon: FileCopyIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialCopyToSeparateCollectionsDialog());
+        }
     }
-}, {
-    name: "Unselect all",
-    execute: (dispatch) => {
-        dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES());
+];
+
+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: "Move selected into separate collections",
+        icon: FileMoveIcon,
+        execute: dispatch => {
+            dispatch<any>(openCollectionPartialMoveToSeparateCollectionsDialog());
+        }
     }
-}, {
+];
+
+const selectActions: ContextMenuAction[] = [
+    {
+        name: "Select all",
+        icon: SelectAllIcon,
+        execute: dispatch => {
+            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",
-    execute: (dispatch) => {
+    icon: RemoveIcon,
+    execute: dispatch => {
         dispatch(openMultipleFilesRemoveDialog());
     }
-}, {
-    name: "Download selected",
-    execute: (dispatch, resource) => {
-        return;
-    }
-}, {
-    name: "Create a new collection with selected",
-    execute: (dispatch) => {
-        dispatch<any>(openCollectionPartialCopyDialog());
-    }
-}]];
+};
+
+// 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
+]]);