1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { unionize, ofType, UnionOf } from '~/common/unionize';
6 import { ContextMenuPosition, ContextMenuResource } from "./context-menu-reducer";
7 import { ContextMenuKind } from '~/views-components/context-menu/context-menu';
8 import { Dispatch } from 'redux';
10 export const contextMenuActions = unionize({
11 OPEN_CONTEXT_MENU: ofType<{ position: ContextMenuPosition, resource: ContextMenuResource }>(),
12 CLOSE_CONTEXT_MENU: ofType<{}>()
15 export type ContextMenuAction = UnionOf<typeof contextMenuActions>;
17 export const openContextMenu = (event: React.MouseEvent<HTMLElement>, resource: { name: string; uuid: string; description?: string; kind: ContextMenuKind; }) =>
18 (dispatch: Dispatch) => {
19 event.preventDefault();
21 contextMenuActions.OPEN_CONTEXT_MENU({
22 position: { x: event.clientX, y: event.clientY },