import { Resource, extractUuidKind } from "models/resource";
import { getResource } from "store/resources/resources";
import { ResourcesState } from "store/resources/resources";
+import { MultiSelectMenuAction, MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-action-set";
import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
-import { RestoreFromTrashIcon, TrashIcon } from "components/icon/icon";
-import { multiselectActionsFilters, TMultiselectActionsFilters, contextMenuActionConsts } from "./ms-toolbar-action-filters";
+import { multiselectActionsFilters, TMultiselectActionsFilters } from "./ms-toolbar-action-filters";
import { kindToActionSet, findActionByName } from "./ms-kind-action-differentiator";
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";
type CssRules = "root" | "button";
transition: "width 150ms",
},
button: {
- width: "1rem",
- margin: "auto 5px",
+ width: "2.5rem",
+ height: "2.5rem ",
},
});
<React.Fragment>
<Toolbar
className={classes.root}
- style={{ width: `${buttons.length * 2.12}rem` }}>
+ style={{ width: `${buttons.length * 2.5}rem` }}
+ >
{buttons.length ? (
buttons.map((btn, i) =>
- btn.name === "ToggleTrashAction" ? (
+ btn.defaultText ? (
<Tooltip
className={classes.button}
- title={currentPathIsTrash ? "Restore selected" : "Move to trash"}
+ title={!currentPathIsTrash ? btn.defaultText : btn.altText}
key={i}
- disableFocusListener>
+ disableFocusListener
+ >
<IconButton onClick={() => props.executeMulti(btn, checkedList, props.resources)}>
- {currentPathIsTrash ? <RestoreFromTrashIcon /> : <TrashIcon />}
+ {!currentPathIsTrash ? btn.icon({}) : btn.altIcon({})}
</IconButton>
</Tooltip>
) : (
className={classes.button}
title={btn.name}
key={i}
- disableFocusListener>
- <IconButton onClick={() => props.executeMulti(btn, checkedList, props.resources)}>
- {btn.icon ? btn.icon({}) : <></>}
- </IconButton>
+ disableFocusListener
+ >
+ <IconButton onClick={() => props.executeMulti(btn, checkedList, props.resources)}>{btn.icon ? btn.icon({}) : <></>}</IconButton>
</Tooltip>
)
)
)}
</Toolbar>
</React.Fragment>
- );
+ )
})
);
function groupByKind(checkedList: TCheckedList, resources: ResourcesState): Record<string, ContextMenuResource[]> {
const result = {};
selectedToArray(checkedList).forEach(uuid => {
- const resource = getResource(uuid)(resources) as Resource;
+ const resource = getResource(uuid)(resources) as ContainerRequestResource | Resource;
if (!result[resource.kind]) result[resource.kind] = [];
result[resource.kind].push(resource);
});
}
function selectActionsByKind(currentResourceKinds: Array<string>, filterSet: TMultiselectActionsFilters) {
- const rawResult: Set<ContextMenuAction> = new Set();
+ const rawResult: Set<MultiSelectMenuAction> = new Set();
const resultNames = new Set();
- const allFiltersArray: ContextMenuAction[][] = [];
+ const allFiltersArray: MultiSelectMenuAction[][] = []
currentResourceKinds.forEach(kind => {
if (filterSet[kind]) {
const actions = filterActions(...filterSet[kind]);
executeMulti: (selectedAction: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState): void => {
const kindGroups = groupByKind(checkedList, resources);
switch (selectedAction.name) {
- case contextMenuActionConsts.MOVE_TO:
- case contextMenuActionConsts.REMOVE:
- const firstResource = getResource(selectedToArray(checkedList)[0])(resources) as Resource;
+ case MultiSelectMenuActionNames.MOVE_TO:
+ case MultiSelectMenuActionNames.REMOVE:
+ const firstResource = getResource(selectedToArray(checkedList)[0])(resources) as ContainerRequestResource | Resource;
const action = findActionByName(selectedAction.name as string, kindToActionSet[firstResource.kind]);
if (action) action.execute(dispatch, kindGroups[firstResource.kind]);
break;
- case contextMenuActionConsts.COPY_TO_CLIPBOARD:
+ case MultiSelectMenuActionNames.COPY_TO_CLIPBOARD:
const selectedResources = selectedToArray(checkedList).map(uuid => getResource(uuid)(resources));
dispatch<any>(copyToClipboardAction(selectedResources));
break;