X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/18a8117437056f65e3c9d84b0231c5f64b1346d1..31afa127fa9b354c46fd78a2fe28228f958df71f:/src/store/context-menu/context-menu-reducer.ts diff --git a/src/store/context-menu/context-menu-reducer.ts b/src/store/context-menu/context-menu-reducer.ts index 9a825a5f..ac14c355 100644 --- a/src/store/context-menu/context-menu-reducer.ts +++ b/src/store/context-menu/context-menu-reducer.ts @@ -2,31 +2,35 @@ // // SPDX-License-Identifier: AGPL-3.0 -// import actions, { DetailsPanelAction } from "./details-panel-action"; -// import { Resource, ResourceKind } from "../../models/resource"; +import { contextMenuActions, ContextMenuAction } from "./context-menu-actions"; -// export interface ContextMenuState { -// position: { -// x: number; -// y: number; -// }, -// resource: { -// uuid: string; -// kind: ResourceKind. -// } -// } +export interface ContextMenuState { + open: boolean; + position: ContextMenuPosition; + resource?: ContextMenuResource; +} -// const initialState = { -// item: null, -// isOpened: false -// }; +export interface ContextMenuPosition { + x: number; + y: number; +} -// const reducer = (state: DetailsPanelState = initialState, action: DetailsPanelAction) => -// actions.match(action, { -// default: () => state, -// LOAD_DETAILS: () => state, -// LOAD_DETAILS_SUCCESS: ({ item }) => ({ ...state, item }), -// TOGGLE_DETAILS_PANEL: () => ({ ...state, isOpened: !state.isOpened }) -// }); +export interface ContextMenuResource { + uuid: string; + kind: string; + name: string; + description?: string; +} + +const initialState = { + open: false, + position: { x: 0, y: 0 } +}; + +export const contextMenuReducer = (state: ContextMenuState = initialState, action: ContextMenuAction) => + contextMenuActions.match(action, { + default: () => state, + OPEN_CONTEXT_MENU: ({ resource, position }) => ({ open: true, resource, position }), + CLOSE_CONTEXT_MENU: () => ({ ...state, open: false }) + }); -// export default reducer;