From: Lisa Knox Date: Wed, 15 Nov 2023 16:30:26 +0000 (-0500) Subject: 21128: created proper ms action menu type Arvados-DCO-1.1-Signed-off-by: Lisa Knox... X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/953fa9de6f70c1de6e875d86b47d5bf3ac40830c 21128: created proper ms action menu type Arvados-DCO-1.1-Signed-off-by: Lisa Knox --- diff --git a/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/src/components/multiselect-toolbar/MultiselectToolbar.tsx index 81127465..1256c541 100644 --- a/src/components/multiselect-toolbar/MultiselectToolbar.tsx +++ b/src/components/multiselect-toolbar/MultiselectToolbar.tsx @@ -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 > 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({})} ) : ( @@ -88,7 +89,7 @@ export const MultiselectToolbar = connect( key={i} disableFocusListener > - props.executeMulti(action, checkedList, resources)}>{action.icon ? action.icon({}) : <>} + props.executeMulti(action, checkedList, resources)}>{action.icon({})} ) ) diff --git a/src/views-components/multiselect-toolbar/ms-collection-action-set.ts b/src/views-components/multiselect-toolbar/ms-collection-action-set.ts index b17a17e7..338c18ef 100644 --- a/src/views-components/multiselect-toolbar/ms-collection-action-set.ts +++ b/src/views-components/multiselect-toolbar/ms-collection-action-set.ts @@ -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(openMoveCollectionDialog(resources[0])), }, { - component: ToggleTrashAction, name: MultiSelectMenuActionNames.ADD_TO_TRASH, + icon: TrashIcon, isForMulti: true, execute: (dispatch, resources: ContextMenuResource[]) => { for (const resource of [...resources]) { diff --git a/src/views-components/multiselect-toolbar/ms-menu-action-set.ts b/src/views-components/multiselect-toolbar/ms-menu-action-set.ts index b31bea40..44a5e51f 100644 --- a/src/views-components/multiselect-toolbar/ms-menu-action-set.ts +++ b/src/views-components/multiselect-toolbar/ms-menu-action-set.ts @@ -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[][];