aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/ContextMenuItem.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/ContextMenuItem.tsx')
-rw-r--r--src/client/views/ContextMenuItem.tsx20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/client/views/ContextMenuItem.tsx b/src/client/views/ContextMenuItem.tsx
index 3319b62db..67bbc3082 100644
--- a/src/client/views/ContextMenuItem.tsx
+++ b/src/client/views/ContextMenuItem.tsx
@@ -1,5 +1,6 @@
import React = require("react");
import { observable, action } from "mobx";
+import { observer } from "mobx-react";
export interface OriginalMenuProps {
description: string;
@@ -8,18 +9,25 @@ export interface OriginalMenuProps {
export interface SubmenuProps {
description: string;
- subitems: OriginalMenuProps[];
+ subitems: ContextMenuProps[];
}
export type ContextMenuProps = OriginalMenuProps | SubmenuProps;
+@observer
export class ContextMenuItem extends React.Component<ContextMenuProps> {
- @observable private _items: Array<ContextMenuProps> = [{ description: "test", event: (e: React.MouseEvent) => e.preventDefault() }];
+ @observable private _items: Array<ContextMenuProps> = [];
@observable private _pageX: number = 0;
@observable private _pageY: number = 0;
- @observable private _display: string = "none";
@observable private overItem = false;
+ constructor(props: ContextMenuProps) {
+ super(props);
+ if ("subitems" in this.props) {
+ this.props.subitems.forEach(i => this._items.push(i));
+ }
+ }
+
render() {
if ("event" in this.props) {
return (
@@ -30,14 +38,16 @@ export class ContextMenuItem extends React.Component<ContextMenuProps> {
else {
let submenu = null;
if (this.overItem) {
- submenu = (<div className="subMenu-cont" style={{ left: this._pageX, marginLeft: "100%", top: this._pageY, display: this._display }}>
+ submenu = (<div className="subMenu-cont" style={{ left: this._pageX, top: this._pageY, marginLeft: "47.5%" }}>
{this._items.map(prop => {
return <ContextMenuItem {...prop} key={prop.description} />
})}
</div>)
}
return (
- <div className="contextMenu-item" onMouseEnter={action(() => this.overItem = true)} onMouseLeave={action(() => this.overItem = false)}>
+ <div className="contextMenu-item" onMouseEnter={action(() => {
+ this.overItem = true
+ })} onMouseLeave={action(() => this.overItem = false)}>
<div className="contextMenu-description"> {this.props.description}</div>
{submenu}
</div>)