Feature #13784
Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>
export interface ContextMenuProps {
anchorEl?: HTMLElement;
items: ContextMenuItemGroup[];
export interface ContextMenuProps {
anchorEl?: HTMLElement;
items: ContextMenuItemGroup[];
onItemClick: (action: ContextMenuItem) => void;
onClose: () => void;
}
export class ContextMenu extends React.PureComponent<ContextMenuProps> {
render() {
onItemClick: (action: ContextMenuItem) => void;
onClose: () => void;
}
export class ContextMenu extends React.PureComponent<ContextMenuProps> {
render() {
- const { anchorEl, items, onClose, onItemClick } = this.props;
+ const { anchorEl, items, open, onClose, onItemClick } = this.props;
return <Popover
anchorEl={anchorEl}
return <Popover
anchorEl={anchorEl}
onClose={onClose}
transformOrigin={DefaultTransformOrigin}
anchorOrigin={DefaultTransformOrigin}
onClose={onClose}
transformOrigin={DefaultTransformOrigin}
anchorOrigin={DefaultTransformOrigin}
import { contextMenuActions, ContextMenuAction } from "./context-menu-actions";
export interface ContextMenuState {
import { contextMenuActions, ContextMenuAction } from "./context-menu-actions";
export interface ContextMenuState {
position: ContextMenuPosition;
resource?: ContextMenuResource;
}
position: ContextMenuPosition;
resource?: ContextMenuResource;
}
position: { x: 0, y: 0 }
};
export const contextMenuReducer = (state: ContextMenuState = initialState, action: ContextMenuAction) =>
contextMenuActions.match(action, {
default: () => state,
position: { x: 0, y: 0 }
};
export const contextMenuReducer = (state: ContextMenuState = initialState, action: ContextMenuAction) =>
contextMenuActions.match(action, {
default: () => state,
- OPEN_CONTEXT_MENU: ({resource, position}) => ({ resource, position }),
- CLOSE_CONTEXT_MENU: () => ({ position: state.position })
+ OPEN_CONTEXT_MENU: ({ resource, position }) => ({ open: true, resource, position }),
+ CLOSE_CONTEXT_MENU: () => ({ ...state, open: false })
import { ContextMenuActionSet, ContextMenuAction } from "./context-menu-action-set";
import { Dispatch } from "redux";
import { ContextMenuActionSet, ContextMenuAction } from "./context-menu-action-set";
import { Dispatch } from "redux";
-type DataProps = Pick<ContextMenuProps, "anchorEl" | "items"> & { resource?: ContextMenuResource };
+type DataProps = Pick<ContextMenuProps, "anchorEl" | "items" | "open"> & { resource?: ContextMenuResource };
const mapStateToProps = (state: RootState): DataProps => {
const mapStateToProps = (state: RootState): DataProps => {
- const { position, resource } = state.contextMenu;
+ const { open, position, resource } = state.contextMenu;
return {
anchorEl: resource ? createAnchorAt(position) : undefined,
items: getMenuActionSet(resource),
return {
anchorEl: resource ? createAnchorAt(position) : undefined,
items: getMenuActionSet(resource),