diff options
author | Eleanor Eng <eleanoreng@eleanors-mbp.devices.brown.edu> | 2019-02-19 18:24:41 -0500 |
---|---|---|
committer | Eleanor Eng <eleanoreng@eleanors-mbp.devices.brown.edu> | 2019-02-19 18:24:41 -0500 |
commit | e5a14d6dddccc922bb253323b461ac2500c33b7c (patch) | |
tree | d3078b7edf89659bbf689c1a346e09a14575bfd2 | |
parent | 9596bd5b6505fa6e9d32630ed7d824d263cd1e63 (diff) |
Different options based on selection
-rw-r--r-- | src/client/views/ContextMenu.scss | 7 | ||||
-rw-r--r-- | src/client/views/ContextMenu.tsx | 6 | ||||
-rw-r--r-- | src/client/views/nodes/CollectionFreeFormDocumentView.tsx | 2 | ||||
-rw-r--r-- | src/client/views/nodes/FormattedTextBox.tsx | 12 | ||||
-rw-r--r-- | src/client/views/nodes/ImageBox.tsx | 11 |
5 files changed, 28 insertions, 10 deletions
diff --git a/src/client/views/ContextMenu.scss b/src/client/views/ContextMenu.scss index dc5907f14..2ac5d3b52 100644 --- a/src/client/views/ContextMenu.scss +++ b/src/client/views/ContextMenu.scss @@ -13,7 +13,6 @@ display: flex; justify-content: center; align-items: center; - flex-direction: column; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; @@ -34,6 +33,6 @@ width: 8vw; } -// #mySearch { -// font-size: 1.5vw; -// }
\ No newline at end of file +#mySearch { + font-size: 1.4vw; +}
\ No newline at end of file diff --git a/src/client/views/ContextMenu.tsx b/src/client/views/ContextMenu.tsx index 4a216ca21..2359c673d 100644 --- a/src/client/views/ContextMenu.tsx +++ b/src/client/views/ContextMenu.tsx @@ -1,6 +1,6 @@ import React = require("react"); import { ContextMenuItem, ContextMenuProps } from "./ContextMenuItem"; -import { observable } from "mobx"; +import { observable, action } from "mobx"; import { observer } from "mobx-react"; import "./ContextMenu.scss" @@ -23,11 +23,13 @@ export class ContextMenu extends React.Component { ContextMenu.Instance = this; } + @action clearItems() { this._items = [] this._display = "none" } + @action addItem(item: ContextMenuProps) { if (this._items.indexOf(item) === -1) { this._items.push(item); @@ -58,7 +60,7 @@ export class ContextMenu extends React.Component { render() { return ( - <div className="contextMenu-cont" style={{ left: this._pageX, top: this._pageY, display: this._display }} ref={this.ref}> + <div className="contextMenu-cont" id="options" style={{ left: this._pageX, top: this._pageY, display: this._display }} ref={this.ref}> <input className="contextMenu-item" type="text" id="mySearch" placeholder="Search . . ." onKeyUp={this.search}></input> {this._items.map(prop => { return <ContextMenuItem {...prop} key={prop.description} /> diff --git a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx index 54d3a1b56..f37232c08 100644 --- a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx +++ b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx @@ -203,7 +203,6 @@ export class CollectionFreeFormDocumentView extends DocumentView { } if (this.topMost) { - ContextMenu.Instance.clearItems() ContextMenu.Instance.addItem({ description: "Full Screen", event: this.fullScreenClicked }) ContextMenu.Instance.displayMenu(e.pageX - 15, e.pageY - 15) } @@ -211,7 +210,6 @@ export class CollectionFreeFormDocumentView extends DocumentView { // DocumentViews should stop propogation of this event e.stopPropagation(); - ContextMenu.Instance.clearItems(); ContextMenu.Instance.addItem({ description: "Full Screen", event: this.fullScreenClicked }) ContextMenu.Instance.addItem({ description: "Open Right", event: this.openRight }) ContextMenu.Instance.addItem({ description: "Delete", event: this.deleteClicked }) diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx index 8f959762a..0fe6befda 100644 --- a/src/client/views/nodes/FormattedTextBox.tsx +++ b/src/client/views/nodes/FormattedTextBox.tsx @@ -13,6 +13,7 @@ import { RichTextField } from "../../../fields/RichTextField"; import { FieldViewProps, FieldView } from "./FieldView"; import { CollectionFreeFormDocumentView } from "./CollectionFreeFormDocumentView"; import { observer } from "mobx-react"; +import { ContextMenu } from "../../views/ContextMenu"; // FormattedTextBox: Displays an editable plain text node that maps to a specified Key of a Document @@ -114,6 +115,15 @@ export class FormattedTextBox extends React.Component<FieldViewProps> { e.stopPropagation(); } } + + //REPLACE THIS WITH CAPABILITIES SPECIFC TO THIS TYPE OF NODE + textCapability = (e: React.MouseEvent): void => { + } + + specificContextMenu = (e: React.MouseEvent): void => { + ContextMenu.Instance.addItem({ description: "Text Capability", event: this.textCapability }); + } + render() { return (<div className="formattedTextBox-cont" style={{ @@ -121,6 +131,6 @@ export class FormattedTextBox extends React.Component<FieldViewProps> { whiteSpace: "initial" }} onPointerDown={this.onPointerDown} - ref={this._ref} />) + ref={this._ref} onContextMenu={this.specificContextMenu} />) } }
\ No newline at end of file diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index 60be5f94d..f363487c3 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -11,6 +11,7 @@ import { FieldWaiting } from '../../../fields/Field'; import { observer } from "mobx-react" import { observable, action, spy } from 'mobx'; import { KeyStore } from '../../../fields/Key'; +import { ContextMenu } from "../../views/ContextMenu"; @observer export class ImageBox extends React.Component<FieldViewProps> { @@ -81,13 +82,21 @@ export class ImageBox extends React.Component<FieldViewProps> { } } + //REPLACE THIS WITH CAPABILITIES SPECIFC TO THIS TYPE OF NODE + imageCapability = (e: React.MouseEvent): void => { + } + + specificContextMenu = (e: React.MouseEvent): void => { + ContextMenu.Instance.addItem({ description: "Image Capability", event: this.imageCapability }); + } + render() { let field = this.props.doc.Get(this.props.fieldKey); let path = field == FieldWaiting ? "https://image.flaticon.com/icons/svg/66/66163.svg" : field instanceof ImageField ? field.Data.href : "http://www.cs.brown.edu/~bcz/face.gif"; return ( - <div className="imageBox-cont" onPointerDown={this.onPointerDown} ref={this._ref} > + <div className="imageBox-cont" onPointerDown={this.onPointerDown} ref={this._ref} onContextMenu={this.specificContextMenu}> <img src={path} width="100%" alt="Image not found" /> {this.lightbox(path)} </div>) |