aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/ContextMenuItem.tsx
diff options
context:
space:
mode:
authorEleanor Eng <eleanor_eng@brown.edu>2019-03-11 17:32:49 -0400
committerEleanor Eng <eleanor_eng@brown.edu>2019-03-11 17:32:49 -0400
commit1f038048612e01d0ada6deb9ff2a056cb8d13702 (patch)
tree6565b3ddb702b453c2423bcb0dc9deb58b9b9086 /src/client/views/ContextMenuItem.tsx
parent6d456bbe4a2de50abe1a4b338d1f446d3123b321 (diff)
some changes
Diffstat (limited to 'src/client/views/ContextMenuItem.tsx')
-rw-r--r--src/client/views/ContextMenuItem.tsx42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/client/views/ContextMenuItem.tsx b/src/client/views/ContextMenuItem.tsx
index 723606dcf..3319b62db 100644
--- a/src/client/views/ContextMenuItem.tsx
+++ b/src/client/views/ContextMenuItem.tsx
@@ -1,26 +1,46 @@
import React = require("react");
-import { ContextMenu } from "./ContextMenu";
+import { observable, action } from "mobx";
-export interface ContextMenuProps {
+export interface OriginalMenuProps {
description: string;
event: (e: React.MouseEvent<HTMLDivElement>) => void;
}
export interface SubmenuProps {
description: string;
- subitems: ContextMenuProps[];
+ subitems: OriginalMenuProps[];
}
-export interface ContextMenuItemProps {
- type: ContextMenuProps | SubmenuProps
-}
+export type ContextMenuProps = OriginalMenuProps | SubmenuProps;
export class ContextMenuItem extends React.Component<ContextMenuProps> {
+ @observable private _items: Array<ContextMenuProps> = [{ description: "test", event: (e: React.MouseEvent) => e.preventDefault() }];
+ @observable private _pageX: number = 0;
+ @observable private _pageY: number = 0;
+ @observable private _display: string = "none";
+ @observable private overItem = false;
+
render() {
- return (
- <div className="contextMenu-item" onClick={this.props.event}>
- <div className="contextMenu-description">{this.props.description}</div>
- </div>
- )
+ if ("event" in this.props) {
+ return (
+ <div className="contextMenu-item" onClick={this.props.event}>
+ <div className="contextMenu-description"> {this.props.description}</div>
+ </div>)
+ }
+ else {
+ let submenu = null;
+ if (this.overItem) {
+ submenu = (<div className="subMenu-cont" style={{ left: this._pageX, marginLeft: "100%", top: this._pageY, display: this._display }}>
+ {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-description"> {this.props.description}</div>
+ {submenu}
+ </div>)
+ }
}
} \ No newline at end of file