diff options
author | bob <bcz@cs.brown.edu> | 2019-04-16 12:38:42 -0400 |
---|---|---|
committer | bob <bcz@cs.brown.edu> | 2019-04-16 12:38:42 -0400 |
commit | feae8f4d314ef389cc544fd3ad0792a6bb04832c (patch) | |
tree | b3d6d1fd3675557fc60c3b34f4d939d8fe153ff9 /src | |
parent | bb935a1af68c3684640cf93e04b55324142b05ea (diff) |
fixed some text focus issues. fixed contextmenu a bit. removed upload files.
Diffstat (limited to 'src')
29 files changed, 47 insertions, 42 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts index c56f6a4ff..320553952 100644 --- a/src/client/util/SelectionManager.ts +++ b/src/client/util/SelectionManager.ts @@ -28,6 +28,16 @@ export namespace SelectionManager { manager.SelectedDocuments = []; MainOverlayTextBox.Instance.SetTextDoc(); } + @action + ReselectAll() { + let sdocs = manager.SelectedDocuments.map(d => d); + manager.SelectedDocuments = []; + return sdocs; + } + @action + ReselectAll2(sdocs: DocumentView[]) { + sdocs.map(s => SelectionManager.SelectDoc(s, false)); + } } const manager = new Manager(); @@ -52,6 +62,10 @@ export namespace SelectionManager { if (found) manager.SelectDoc(found, false); } + export function ReselectAll() { + let sdocs = manager.ReselectAll(); + manager.ReselectAll2(sdocs); + } export function SelectedDocuments(): Array<DocumentView> { return manager.SelectedDocuments; } diff --git a/src/client/views/MainOverlayTextBox.tsx b/src/client/views/MainOverlayTextBox.tsx index 422a45d59..141b3ad74 100644 --- a/src/client/views/MainOverlayTextBox.tsx +++ b/src/client/views/MainOverlayTextBox.tsx @@ -40,7 +40,6 @@ export class MainOverlayTextBox extends React.Component<MainOverlayTextBoxProps> this._textTargetDiv.style.color = this._textColor; } - this.TextDoc = undefined; this.TextDoc = textDoc; this._textFieldKey = textFieldKey!; this._textXf = tx ? tx : Transform.Identity(); diff --git a/src/client/views/_global_variables.ts b/src/client/views/_global_variables.ts deleted file mode 100644 index 10482bc8d..000000000 --- a/src/client/views/_global_variables.ts +++ /dev/null @@ -1,8 +0,0 @@ -import * as globalStyleVariables from "../views/globalCssVariables.scss" - -export interface I_globalScss { - contextMenuZindex: string; // context menu shows up over everything -} -let globalStyles = globalStyleVariables as any as I_globalScss; - -export default globalStyles;
\ No newline at end of file diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index fa3017258..50f0a6164 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -81,7 +81,6 @@ export class CollectionFreeFormView extends CollectionSubView { de.data.droppedDocuments.map(d => { d.SetNumber(KeyStore.X, x + (d.GetNumber(KeyStore.X, 0) - dropX)); d.SetNumber(KeyStore.Y, y + (d.GetNumber(KeyStore.Y, 0) - dropY)); - console.log("x = " + d.GetNumber(KeyStore.X, 0) + " y = " + d.GetNumber(KeyStore.X, 0)); if (!d.GetNumber(KeyStore.Width, 0)) { d.SetNumber(KeyStore.Width, 300); } @@ -90,6 +89,7 @@ export class CollectionFreeFormView extends CollectionSubView { } this.bringToFront(d); }); + SelectionManager.ReselectAll(); } return true; } diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index 0d974c97e..1cbb24223 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -277,11 +277,12 @@ export class DocumentView extends React.Component<DocumentViewProps> { @action onContextMenu = (e: React.MouseEvent): void => { e.stopPropagation(); - e.preventDefault(); if (Math.abs(this._downX - e.clientX) > 3 || Math.abs(this._downY - e.clientY) > 3 || e.isDefaultPrevented()) { + e.preventDefault(); return; } + e.preventDefault(); !this.isMinimized() && ContextMenu.Instance.addItem({ description: "Minimize", event: this.minimize }); ContextMenu.Instance.addItem({ description: "Full Screen", event: this.fullScreenClicked }); diff --git a/src/client/views/nodes/FormattedTextBox.scss b/src/client/views/nodes/FormattedTextBox.scss index 3978c3d38..5eb2bf7ce 100644 --- a/src/client/views/nodes/FormattedTextBox.scss +++ b/src/client/views/nodes/FormattedTextBox.scss @@ -10,7 +10,7 @@ outline: none !important; } -.formattedTextBox-cont { +.formattedTextBox-cont-scroll, .formattedTextBox-cont-hidden { background: $light-color-secondary; padding: 0.9em; border-width: 0px; @@ -24,6 +24,10 @@ height: 100%; pointer-events: all; } +.formattedTextBox-cont-hidden { + overflow: hidden; + pointer-events: none; +} .menuicon { display: inline-block; diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx index c380ef650..bff8ca7a4 100644 --- a/src/client/views/nodes/FormattedTextBox.tsx +++ b/src/client/views/nodes/FormattedTextBox.tsx @@ -1,27 +1,24 @@ -import { action, IReactionDisposer, reaction, trace, computed } from "mobx"; +import { action, IReactionDisposer, reaction } from "mobx"; import { baseKeymap } from "prosemirror-commands"; -import { history, redo, undo } from "prosemirror-history"; +import { history } from "prosemirror-history"; import { keymap } from "prosemirror-keymap"; import { EditorState, Plugin, Transaction } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; import { FieldWaiting, Opt } from "../../../fields/Field"; +import { KeyStore } from "../../../fields/KeyStore"; import { RichTextField } from "../../../fields/RichTextField"; +import { TextField } from "../../../fields/TextField"; +import { Document } from "../../../fields/Document"; +import buildKeymap from "../../util/ProsemirrorKeymap"; import { inpRules } from "../../util/RichTextRules"; -import { Schema } from "prosemirror-model"; import { schema } from "../../util/RichTextSchema"; +import { TooltipLinkingMenu } from "../../util/TooltipLinkingMenu"; import { TooltipTextMenu } from "../../util/TooltipTextMenu"; import { ContextMenu } from "../../views/ContextMenu"; -import { Main } from "../Main"; +import { MainOverlayTextBox } from "../MainOverlayTextBox"; import { FieldView, FieldViewProps } from "./FieldView"; import "./FormattedTextBox.scss"; import React = require("react"); -import { undoItem } from "prosemirror-menu"; -import buildKeymap from "../../util/ProsemirrorKeymap"; -import { TextField } from "../../../fields/TextField"; -import { KeyStore } from "../../../fields/KeyStore"; -import { TooltipLinkingMenu } from "../../util/TooltipLinkingMenu"; -import { MainOverlayTextBox } from "../MainOverlayTextBox"; -import { observer } from "mobx-react"; const { buildMenuItems } = require("prosemirror-example-setup"); const { menuBar } = require("prosemirror-menu"); @@ -52,6 +49,7 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte } private _ref: React.RefObject<HTMLDivElement>; private _editorView: Opt<EditorView>; + private _gotDown: boolean = false; private _reactionDisposer: Opt<IReactionDisposer>; private _inputReactionDisposer: Opt<IReactionDisposer>; private _proxyReactionDisposer: Opt<IReactionDisposer>; @@ -109,8 +107,7 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte if (this._editorView) { this._editorView.destroy(); } - - this.setupEditor(config); + this.setupEditor(config, MainOverlayTextBox.Instance.TextDoc); // bcz: not sure why, but the order of events is such that this.props.Document hasn't updated yet, so without forcing the editor to the MainOverlayTextBox, it will display the previously focused textbox } ); } else { @@ -131,20 +128,18 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte } } ); - this.setupEditor(config); + this.setupEditor(config, this.props.Document); } - private setupEditor(config: any) { - let state: EditorState; - let field = this.props.Document ? this.props.Document.GetT(this.props.fieldKey, RichTextField) : undefined; - if (field && field !== FieldWaiting && field.Data) { - state = EditorState.fromJSON(config, JSON.parse(field.Data)); - } else { - state = EditorState.create(config); - } + shouldComponentUpdate() { + return false; + } + + private setupEditor(config: any, doc?: Document) { + let field = doc ? doc.GetT(this.props.fieldKey, RichTextField) : undefined; if (this._ref.current) { this._editorView = new EditorView(this._ref.current, { - state, + state: field && field.Data ? EditorState.fromJSON(config, JSON.parse(field.Data)) : EditorState.create(config), dispatchTransaction: this.dispatchTransaction }); } @@ -170,10 +165,6 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte } } - shouldComponentUpdate() { - return false; - } - @action onChange(e: React.ChangeEvent<HTMLInputElement>) { const { fieldKey, Document } = this.props; @@ -186,6 +177,7 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte e.stopPropagation(); } if (e.button === 2) { + this._gotDown = true; console.log("second"); e.preventDefault(); } @@ -211,6 +203,10 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte textCapability = (e: React.MouseEvent): void => { }; specificContextMenu = (e: React.MouseEvent): void => { + if (!this._gotDown) { + e.preventDefault(); + return; + } ContextMenu.Instance.addItem({ description: "Text Capability", event: this.textCapability @@ -262,10 +258,9 @@ export class FormattedTextBox extends React.Component<(FieldViewProps & Formatte // (e.nativeEvent as any).DASHFormattedTextBoxHandled = true; } render() { + let style = this.props.isSelected() || this.props.isOverlay ? "scroll" : "hidden"; return ( - <div - style={{ overflowY: this.props.isSelected() || this.props.isOverlay ? "scroll" : "hidden" }} - className={`formattedTextBox-cont`} + <div className={`formattedTextBox-cont-${style}`} onKeyDown={this.onKeyPress} onKeyPress={this.onKeyPress} onFocus={this.onFocused} diff --git a/src/server/public/files/upload_1b4818f39ea324b5a687bb1ade3dca6c.jpg b/src/server/public/files/upload_1b4818f39ea324b5a687bb1ade3dca6c.jpg Binary files differdeleted file mode 100644 index aeb10c4b0..000000000 --- a/src/server/public/files/upload_1b4818f39ea324b5a687bb1ade3dca6c.jpg +++ /dev/null diff --git a/src/server/public/files/upload_1f1c6cfef33e5992fa860802e8c466a7.jpg b/src/server/public/files/upload_1f1c6cfef33e5992fa860802e8c466a7.jpg Binary files differdeleted file mode 100644 index a2c1d8a46..000000000 --- a/src/server/public/files/upload_1f1c6cfef33e5992fa860802e8c466a7.jpg +++ /dev/null diff --git a/src/server/public/files/upload_2045f363aa9cf281407703ca242aad1a.jpg b/src/server/public/files/upload_2045f363aa9cf281407703ca242aad1a.jpg Binary files differdeleted file mode 100644 index c19b31a38..000000000 --- a/src/server/public/files/upload_2045f363aa9cf281407703ca242aad1a.jpg +++ /dev/null diff --git a/src/server/public/files/upload_25bffd90c080c27f5ac822984406b958.jpg b/src/server/public/files/upload_25bffd90c080c27f5ac822984406b958.jpg Binary files differdeleted file mode 100644 index 3614b42eb..000000000 --- a/src/server/public/files/upload_25bffd90c080c27f5ac822984406b958.jpg +++ /dev/null diff --git a/src/server/public/files/upload_261f11dc39ad568212b5c7e39d1e6d13.jpg b/src/server/public/files/upload_261f11dc39ad568212b5c7e39d1e6d13.jpg Binary files differdeleted file mode 100644 index ecd12d9cb..000000000 --- a/src/server/public/files/upload_261f11dc39ad568212b5c7e39d1e6d13.jpg +++ /dev/null diff --git a/src/server/public/files/upload_26bcc62639141ba64e603daebb5bf5d3.png b/src/server/public/files/upload_26bcc62639141ba64e603daebb5bf5d3.png Binary files differdeleted file mode 100644 index e2297cb3c..000000000 --- a/src/server/public/files/upload_26bcc62639141ba64e603daebb5bf5d3.png +++ /dev/null diff --git a/src/server/public/files/upload_2d77d0773612e4723b78118ac50a2929.jpg b/src/server/public/files/upload_2d77d0773612e4723b78118ac50a2929.jpg Binary files differdeleted file mode 100644 index 261a0ceff..000000000 --- a/src/server/public/files/upload_2d77d0773612e4723b78118ac50a2929.jpg +++ /dev/null diff --git a/src/server/public/files/upload_2de9ad4dc687c53760c39f724c9a08a5.jpg b/src/server/public/files/upload_2de9ad4dc687c53760c39f724c9a08a5.jpg Binary files differdeleted file mode 100644 index 6b6ec3c3f..000000000 --- a/src/server/public/files/upload_2de9ad4dc687c53760c39f724c9a08a5.jpg +++ /dev/null diff --git a/src/server/public/files/upload_4abb568aa7cce9d291532c3d0da97102.jpg b/src/server/public/files/upload_4abb568aa7cce9d291532c3d0da97102.jpg Binary files differdeleted file mode 100644 index f6332670c..000000000 --- a/src/server/public/files/upload_4abb568aa7cce9d291532c3d0da97102.jpg +++ /dev/null diff --git a/src/server/public/files/upload_54c34aaca5a7bf510cebad461ec39512.png b/src/server/public/files/upload_54c34aaca5a7bf510cebad461ec39512.png Binary files differdeleted file mode 100644 index e2297cb3c..000000000 --- a/src/server/public/files/upload_54c34aaca5a7bf510cebad461ec39512.png +++ /dev/null diff --git a/src/server/public/files/upload_562b1e527300df8b350eeab094b3e1f1.jpg b/src/server/public/files/upload_562b1e527300df8b350eeab094b3e1f1.jpg Binary files differdeleted file mode 100644 index db40705dd..000000000 --- a/src/server/public/files/upload_562b1e527300df8b350eeab094b3e1f1.jpg +++ /dev/null diff --git a/src/server/public/files/upload_6a26d3f7008a8c79ee5fc8054ba69996.jpg b/src/server/public/files/upload_6a26d3f7008a8c79ee5fc8054ba69996.jpg Binary files differdeleted file mode 100644 index f0417a752..000000000 --- a/src/server/public/files/upload_6a26d3f7008a8c79ee5fc8054ba69996.jpg +++ /dev/null diff --git a/src/server/public/files/upload_70fa5e0c3f393504349d5865e28f4cac.jpg b/src/server/public/files/upload_70fa5e0c3f393504349d5865e28f4cac.jpg Binary files differdeleted file mode 100644 index 395f8ec21..000000000 --- a/src/server/public/files/upload_70fa5e0c3f393504349d5865e28f4cac.jpg +++ /dev/null diff --git a/src/server/public/files/upload_8155b5b0f57da107bb07083c04e78943.jpg b/src/server/public/files/upload_8155b5b0f57da107bb07083c04e78943.jpg Binary files differdeleted file mode 100644 index 53d9315a9..000000000 --- a/src/server/public/files/upload_8155b5b0f57da107bb07083c04e78943.jpg +++ /dev/null diff --git a/src/server/public/files/upload_88f588574e0efc415186af935114af9a.jpg b/src/server/public/files/upload_88f588574e0efc415186af935114af9a.jpg Binary files differdeleted file mode 100644 index b72dbc482..000000000 --- a/src/server/public/files/upload_88f588574e0efc415186af935114af9a.jpg +++ /dev/null diff --git a/src/server/public/files/upload_8d1c253f93f77c69c0c04ae3efb7d714.png b/src/server/public/files/upload_8d1c253f93f77c69c0c04ae3efb7d714.png Binary files differdeleted file mode 100644 index e2297cb3c..000000000 --- a/src/server/public/files/upload_8d1c253f93f77c69c0c04ae3efb7d714.png +++ /dev/null diff --git a/src/server/public/files/upload_9ef80158609f5ff739087aecad367b9d.jpg b/src/server/public/files/upload_9ef80158609f5ff739087aecad367b9d.jpg Binary files differdeleted file mode 100644 index 84423538c..000000000 --- a/src/server/public/files/upload_9ef80158609f5ff739087aecad367b9d.jpg +++ /dev/null diff --git a/src/server/public/files/upload_c39a7e0d7e8d35bb18461a5a0aa063bf.jpg b/src/server/public/files/upload_c39a7e0d7e8d35bb18461a5a0aa063bf.jpg Binary files differdeleted file mode 100644 index dc7ec2f33..000000000 --- a/src/server/public/files/upload_c39a7e0d7e8d35bb18461a5a0aa063bf.jpg +++ /dev/null diff --git a/src/server/public/files/upload_c6b81ab4eb70465a7e9b45d5c8f3ecaa.jpg b/src/server/public/files/upload_c6b81ab4eb70465a7e9b45d5c8f3ecaa.jpg Binary files differdeleted file mode 100644 index 4422124a1..000000000 --- a/src/server/public/files/upload_c6b81ab4eb70465a7e9b45d5c8f3ecaa.jpg +++ /dev/null diff --git a/src/server/public/files/upload_c99ec7a8a2df0b2f90479fde7d70c2eb.jpg b/src/server/public/files/upload_c99ec7a8a2df0b2f90479fde7d70c2eb.jpg Binary files differdeleted file mode 100644 index 3747ca985..000000000 --- a/src/server/public/files/upload_c99ec7a8a2df0b2f90479fde7d70c2eb.jpg +++ /dev/null diff --git a/src/server/public/files/upload_cec1cfcc67cfe5889de4098a49fec45e.jpg b/src/server/public/files/upload_cec1cfcc67cfe5889de4098a49fec45e.jpg Binary files differdeleted file mode 100644 index 95053d772..000000000 --- a/src/server/public/files/upload_cec1cfcc67cfe5889de4098a49fec45e.jpg +++ /dev/null diff --git a/src/server/public/files/upload_f27688fe92dc7de398e957e5d96e1a22.jpg b/src/server/public/files/upload_f27688fe92dc7de398e957e5d96e1a22.jpg Binary files differdeleted file mode 100644 index 9841bad3f..000000000 --- a/src/server/public/files/upload_f27688fe92dc7de398e957e5d96e1a22.jpg +++ /dev/null |