21037: fixed timers in auto-logout spec Arvados-DCO-1.1-Signed-off-by: Lisa Knox...
[arvados.git] / services / workbench2 / src / views-components / context-menu / menu-item-sort.ts
index d11866f121a9fa9b81115531b8699bcca1795be1..f331c602479ba15d59ad65bd166afb5935e2f611 100644 (file)
@@ -6,6 +6,7 @@ import { ContextMenuAction } from './context-menu-action-set';
 import { ContextMenuActionNames } from 'views-components/context-menu/context-menu-action-set';
 import { sortByProperty } from 'common/array-utils';
 import { horizontalMenuDivider, verticalMenuDivider } from './actions/context-menu-divider';
+import { MultiSelectMenuAction } from 'views-components/multiselect-toolbar/ms-menu-actions';
 
 export enum ContextMenuKind {
     API_CLIENT_AUTHORIZATION = "ApiClientAuthorization",
@@ -53,6 +54,7 @@ export enum ContextMenuKind {
     WORKFLOW = "Workflow",
     READONLY_WORKFLOW = "ReadOnlyWorkflow",
     SEARCH_RESULTS = "SearchResults",
+    MULTI = "Multi",
 }
 
 
@@ -66,7 +68,6 @@ const processOrder = [
     ContextMenuActionNames.EDIT_PROCESS,
     ContextMenuActionNames.COPY_AND_RERUN_PROCESS,
     ContextMenuActionNames.CANCEL,
-    ContextMenuActionNames.MOVE_TO,
     ContextMenuActionNames.REMOVE,
     ContextMenuActionNames.DIVIDER,
     ContextMenuActionNames.ADD_TO_FAVORITES,
@@ -80,9 +81,9 @@ const projectOrder = [
     ContextMenuActionNames.OPEN_WITH_3RD_PARTY_CLIENT,
     ContextMenuActionNames.API_DETAILS,
     ContextMenuActionNames.DIVIDER,
+    ContextMenuActionNames.SHARE,
     ContextMenuActionNames.NEW_PROJECT,
     ContextMenuActionNames.EDIT_PROJECT,
-    ContextMenuActionNames.SHARE,
     ContextMenuActionNames.MOVE_TO,
     ContextMenuActionNames.MOVE_TO_TRASH,
     ContextMenuActionNames.DIVIDER,
@@ -98,8 +99,8 @@ const collectionOrder = [
     ContextMenuActionNames.OPEN_WITH_3RD_PARTY_CLIENT,
     ContextMenuActionNames.API_DETAILS,
     ContextMenuActionNames.DIVIDER,
-    ContextMenuActionNames.EDIT_COLLECTION,
     ContextMenuActionNames.SHARE,
+    ContextMenuActionNames.EDIT_COLLECTION,
     ContextMenuActionNames.MOVE_TO,
     ContextMenuActionNames.MAKE_A_COPY,
     ContextMenuActionNames.MOVE_TO_TRASH,
@@ -118,7 +119,15 @@ const workflowOrder = [
     ContextMenuActionNames.DELETE_WORKFLOW,
 ]
 
+const defaultMultiOrder = [
+    ContextMenuActionNames.MOVE_TO,
+    ContextMenuActionNames.MAKE_A_COPY,
+    ContextMenuActionNames.MOVE_TO_TRASH,
+];
+
 const kindToOrder: Record<string, ContextMenuActionNames[]> = {
+    [ContextMenuKind.MULTI]: defaultMultiOrder,
+
     [ContextMenuKind.PROCESS]: processOrder,
     [ContextMenuKind.PROCESS_ADMIN]: processOrder,
     [ContextMenuKind.PROCESS_RESOURCE]: processOrder,
@@ -144,7 +153,7 @@ export const menuDirection = {
     HORIZONTAL: 'horizontal'
 }
 
-export const sortMenuItems = (menuKind: ContextMenuKind, menuItems: ContextMenuAction[], orthagonality: string) => {
+export const sortMenuItems = (menuKind: ContextMenuKind, menuItems: ContextMenuAction[], orthagonality: string): ContextMenuAction[] | MultiSelectMenuAction[] => {
 
     const preferredOrder = kindToOrder[menuKind];
     //if no specified order, sort by name
@@ -153,7 +162,7 @@ export const sortMenuItems = (menuKind: ContextMenuKind, menuItems: ContextMenuA
     const bucketMap = new Map();
     const leftovers: ContextMenuAction[] = [];
 
-    // if we have multiple dividers, we need each of them to have a different key
+    // if we have multiple dividers, we need each of them to have a different "name" property
     let count = 0;
 
     preferredOrder.forEach((name) => {