diff options
Diffstat (limited to 'src/client/views/ContextMenuItem.tsx')
-rw-r--r-- | src/client/views/ContextMenuItem.tsx | 20 |
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>) |