21128: created proper ms action menu type Arvados-DCO-1.1-Signed-off-by: Lisa Knox...
authorLisa Knox <lisaknox83@gmail.com>
Wed, 15 Nov 2023 16:30:26 +0000 (11:30 -0500)
committerLisa Knox <lisaknox83@gmail.com>
Wed, 15 Nov 2023 16:30:26 +0000 (11:30 -0500)
src/components/multiselect-toolbar/MultiselectToolbar.tsx
src/views-components/multiselect-toolbar/ms-collection-action-set.ts
src/views-components/multiselect-toolbar/ms-menu-action-set.ts

index 8112746555296fd9e3d84447118a6e0e67329629..1256c5416e82026775fd392d82ebb14b0cb9e0de 100644 (file)
@@ -20,6 +20,7 @@ import { kindToActionSet, findActionByName } from "./ms-kind-action-differentiat
 import { msToggleTrashAction } from "views-components/multiselect-toolbar/ms-project-action-set";
 import { copyToClipboardAction } from "store/open-in-new-tab/open-in-new-tab.actions";
 import { ContainerRequestResource } from "models/container-request";
+import { FavoritesState } from "store/favorites/favorites-reducer";
 
 type CssRules = "root" | "button";
 
@@ -44,7 +45,7 @@ export type MultiselectToolbarProps = {
     selectedUuid: string | null
     resources: ResourcesState;
     executeMulti: (action: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState) => void;
-    favorites: any
+    favorites: FavoritesState
 };
 
 export const MultiselectToolbar = connect(
@@ -78,7 +79,7 @@ export const MultiselectToolbar = connect(
                                     disableFocusListener
                                 >
                                     <IconButton onClick={() => props.executeMulti(action, checkedList, resources)}>
-                                        {action.isDefault(selectedUuid, resources, favorites) ? action.icon && action.icon({}) : action.altIcon && action.altIcon({})}
+                                        {action.isDefault(selectedUuid, resources, favorites) ? action.icon({}) : action.altIcon && action.altIcon({})}
                                     </IconButton>
                                 </Tooltip>
                             ) : (
@@ -88,7 +89,7 @@ export const MultiselectToolbar = connect(
                                     key={i}
                                     disableFocusListener
                                 >
-                                    <IconButton onClick={() => props.executeMulti(action, checkedList, resources)}>{action.icon ? action.icon({}) : <></>}</IconButton>
+                                    <IconButton onClick={() => props.executeMulti(action, checkedList, resources)}>{action.icon({})}</IconButton>
                                 </Tooltip>
                             )
                         )
index b17a17e7df93fc73d5bb635dba3141dcea42a291..338c18ef42dd4f2995a46443ac06a8c4a9401676 100644 (file)
@@ -5,10 +5,10 @@
 import { MoveToIcon, CopyIcon } from "components/icon/icon";
 import { openMoveCollectionDialog } from "store/collections/collection-move-actions";
 import { openCollectionCopyDialog, openMultiCollectionCopyDialog } from "store/collections/collection-copy-actions";
-import { ToggleTrashAction } from "views-components/context-menu/actions/trash-action";
 import { toggleCollectionTrashed } from "store/trash/trash-actions";
 import { ContextMenuResource } from "store/context-menu/context-menu-actions";
 import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-action-set";
+import { TrashIcon } from "components/icon/icon";
 
 export const msCollectionActionSet: MultiSelectMenuActionSet = [
     [
@@ -28,8 +28,8 @@ export const msCollectionActionSet: MultiSelectMenuActionSet = [
             execute: (dispatch, resources) => dispatch<any>(openMoveCollectionDialog(resources[0])),
         },
         {
-            component: ToggleTrashAction,
             name: MultiSelectMenuActionNames.ADD_TO_TRASH,
+            icon: TrashIcon,
             isForMulti: true,
             execute: (dispatch, resources: ContextMenuResource[]) => {
                 for (const resource of [...resources]) {
index b31bea40dc898eb15f9fbb81b099e6f2b6674dd9..44a5e51f6f84a602e217d727af7d1800312cc8a2 100644 (file)
@@ -2,9 +2,11 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
+import { Dispatch } from "redux";
 import { IconType } from "components/icon/icon";
-import { ContextMenuAction } from "../context-menu/context-menu-action-set";
 import { ResourcesState } from "store/resources/resources";
+import { FavoritesState } from "store/favorites/favorites-reducer";
+import { ContextMenuResource } from "store/context-menu/context-menu-actions";
 
 export const MultiSelectMenuActionNames = {
   MAKE_A_COPY: "Make a copy",
@@ -16,12 +18,15 @@ export const MultiSelectMenuActionNames = {
   REMOVE: "Remove",
 };
 
-export interface MultiSelectMenuAction extends ContextMenuAction {
-    defaultText?: string;
+export type MultiSelectMenuAction = {
+    name: string;
+    icon: IconType;
     altText?: string;
     altIcon?: IconType;
-    isDefault?: (uuid: string | null, resources: ResourcesState, favorites) => boolean;
     isForMulti: boolean;
-}
+    isDefault?: (uuid: string | null, resources: ResourcesState, favorites: FavoritesState) => boolean;
+    execute(dispatch: Dispatch, resources: ContextMenuResource[], state?: any): void;
+    adminOnly?: boolean;
+};
 
 export type MultiSelectMenuActionSet = MultiSelectMenuAction[][];