--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import React from 'react';
+import { ContextMenuAction } from '../context-menu-action-set';
+import { Divider as DividerComponent, StyleRulesCallback, withStyles } from '@material-ui/core';
+import { WithStyles } from '@material-ui/core/styles';
+
+type CssRules = 'root';
+
+const styles:StyleRulesCallback<CssRules> = () => ({
+ root: {
+ backgroundColor: 'black',
+ },
+});
+
+type DividerProps = {
+ orthogonality: 'vertical' | 'horizontal';
+};
+
+export const Divider = withStyles(styles)((props: DividerProps & WithStyles<CssRules>) => {
+ return <DividerComponent variant='middle' className={props.classes.root} />;
+});
+
+export const menuDivider: ContextMenuAction = {
+ name: 'divider',
+ component: Divider,
+ execute: () => null,
+};
\ No newline at end of file
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 { sortByProperty } from 'common/array-utils';
+import { menuDivider } from './actions/context-menu-divider';
export enum ContextMenuKind {
API_CLIENT_AUTHORIZATION = "ApiClientAuthorization",
SEARCH_RESULTS = "SearchResults",
}
+
+
const processOrder = [
ContextMenuActionNames.VIEW_DETAILS,
ContextMenuActionNames.OPEN_IN_NEW_TAB,
ContextMenuActionNames.OUTPUTS,
ContextMenuActionNames.API_DETAILS,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.EDIT_PROCESS,
ContextMenuActionNames.COPY_AND_RERUN_PROCESS,
ContextMenuActionNames.MOVE_TO,
ContextMenuActionNames.COPY_TO_CLIPBOARD,
ContextMenuActionNames.OPEN_WITH_3RD_PARTY_CLIENT,
ContextMenuActionNames.API_DETAILS,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.NEW_PROJECT,
ContextMenuActionNames.EDIT_PROJECT,
ContextMenuActionNames.SHARE,
ContextMenuActionNames.MOVE_TO,
ContextMenuActionNames.REMOVE,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.FREEZE_PROJECT,
ContextMenuActionNames.ADD_TO_FAVORITES,
ContextMenuActionNames.ADD_TO_PUBLIC_FAVORITES,
ContextMenuActionNames.COPY_TO_CLIPBOARD,
ContextMenuActionNames.OPEN_WITH_3RD_PARTY_CLIENT,
ContextMenuActionNames.API_DETAILS,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.NEW_COLLECTION,
ContextMenuActionNames.EDIT_COLLECTION,
ContextMenuActionNames.SHARE,
ContextMenuActionNames.MOVE_TO,
ContextMenuActionNames.MAKE_A_COPY,
ContextMenuActionNames.MOVE_TO_TRASH,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.ADD_TO_FAVORITES,
ContextMenuActionNames.ADD_TO_PUBLIC_FAVORITES,
];
ContextMenuActionNames.OPEN_IN_NEW_TAB,
ContextMenuActionNames.COPY_TO_CLIPBOARD,
ContextMenuActionNames.API_DETAILS,
+ ContextMenuActionNames.DIVIDER,
ContextMenuActionNames.RUN_WORKFLOW,
ContextMenuActionNames.REMOVE,
]
const bucketMap = new Map();
const leftovers: ContextMenuAction[] = [];
- preferredOrder.forEach((name) => bucketMap.set(name, null));
- menuItems.forEach((item) => {
+ // if we have multiple dividers, we need each of them to have a different key
+ let count = 0;
+
+ preferredOrder.forEach((name) => {
+ if (name === ContextMenuActionNames.DIVIDER) {
+ count++;
+ bucketMap.set(`${name}-${count}`, menuDivider)
+ } else {
+ bucketMap.set(name, null)
+ }
+ });
+ [...menuItems].forEach((item) => {
if (bucketMap.has(item.name)) bucketMap.set(item.name, item);
else leftovers.push(item);
});