diff options
Diffstat (limited to 'src/views/nodes')
| -rw-r--r-- | src/views/nodes/DocumentView.tsx | 35 | ||||
| -rw-r--r-- | src/views/nodes/FieldTextBox.tsx | 49 |
2 files changed, 49 insertions, 35 deletions
diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx index 6e874c5a8..3ee70213f 100644 --- a/src/views/nodes/DocumentView.tsx +++ b/src/views/nodes/DocumentView.tsx @@ -4,11 +4,11 @@ import { computed, observable, action } from "mobx"; import { KeyStore, Key } from "../../fields/Key"; import { NumberField } from "../../fields/NumberField"; import { TextField } from "../../fields/TextField"; -import { DocumentViewModel } from "../../viewmodels/DocumentViewModel"; import { ListField } from "../../fields/ListField"; import { FieldTextBox } from "../nodes/FieldTextBox" import { Document } from "../../fields/Document"; -import { CollectionFreeFormView } from "../freeformcanvas/CollectionFreeFormView" +import { CollectionFreeFormView } from "../collections/CollectionFreeFormView" +import { CollectionDockingView } from "../collections/CollectionDockingView" import "./NodeView.scss" import { SelectionManager } from "../../util/SelectionManager"; import { DocumentDecorations } from "../../DocumentDecorations"; @@ -17,14 +17,35 @@ import { Opt } from "../../fields/Field"; import { DragManager } from "../../util/DragManager"; const JsxParser = require('react-jsx-parser').default;//TODO Why does this need to be imported like this? -interface IProps { +interface DocumentViewProps { Document: Document; - ContainingCollectionView: Opt<CollectionFreeFormView>; + ContainingCollectionView: Opt<CollectionView>; ContainingDocumentView: Opt<DocumentView> } +export interface CollectionViewProps { + fieldKey: Key; + Document: Document; + ContainingDocumentView: Opt<DocumentView>; +} + +// these properties are set via the render() method of the DocumentView when it creates this node. +// However, these properties are set below in the LayoutString() static method +export interface DocumentFieldViewProps { + fieldKey: Key; + doc: Document; + containingDocumentView: DocumentView +} + +interface CollectionView { + addDocument: (doc: Document) => void; + removeDocument: (doc: Document) => void; + active: boolean; + props: CollectionViewProps; +} + @observer -class DocumentContents extends React.Component<IProps> { +class DocumentContents extends React.Component<DocumentViewProps> { @computed get layout(): string { @@ -53,7 +74,7 @@ class DocumentContents extends React.Component<IProps> { } } return <JsxParser - components={{ FieldTextBox, CollectionFreeFormView }} + components={{ FieldTextBox, CollectionFreeFormView, CollectionDockingView }} bindings={bindings} jsx={this.layout} showWarnings={true} @@ -66,7 +87,7 @@ class DocumentContents extends React.Component<IProps> { } @observer -export class DocumentView extends React.Component<IProps> { +export class DocumentView extends React.Component<DocumentViewProps> { private _mainCont = React.createRef<HTMLDivElement>(); private _contextMenuCanOpen = false; private _downX: number = 0; diff --git a/src/views/nodes/FieldTextBox.tsx b/src/views/nodes/FieldTextBox.tsx index 8568d04c5..20dfde1d2 100644 --- a/src/views/nodes/FieldTextBox.tsx +++ b/src/views/nodes/FieldTextBox.tsx @@ -1,30 +1,23 @@ -import {Key, KeyStore} from "../../fields/Key"; -import {Document} from "../../fields/Document"; -import {observer} from "mobx-react"; -import {TextField} from "../../fields/TextField"; +import { Key, KeyStore } from "../../fields/Key"; +import { Document } from "../../fields/Document"; +import { observer } from "mobx-react"; +import { TextField } from "../../fields/TextField"; import React = require("react") -import {action, observable, reaction, IReactionDisposer} from "mobx"; +import { action, observable, reaction, IReactionDisposer } from "mobx"; -import {schema} from "prosemirror-schema-basic"; -import {EditorState, Transaction} from "prosemirror-state" -import {EditorView} from "prosemirror-view" -import {keymap} from "prosemirror-keymap" -import {baseKeymap} from "prosemirror-commands" -import {undo, redo, history} from "prosemirror-history" -import {Opt} from "../../fields/Field"; +import { schema } from "prosemirror-schema-basic"; +import { EditorState, Transaction } from "prosemirror-state" +import { EditorView } from "prosemirror-view" +import { keymap } from "prosemirror-keymap" +import { baseKeymap } from "prosemirror-commands" +import { undo, redo, history } from "prosemirror-history" +import { Opt } from "../../fields/Field"; import "./FieldTextBox.scss" -import {DocumentView} from "./DocumentView"; -import {SelectionManager} from "../../util/SelectionManager"; +import { DocumentFieldViewProps } from "./DocumentView"; +import { SelectionManager } from "../../util/SelectionManager"; -// these properties are set via the render() method of the DocumentView when it creates this node. -// However, these properties are set below in the LayoutString() static method -interface IProps { - fieldKey: Key; - doc: Document; - containingDocumentView: DocumentView -} // FieldTextBox: Displays an editable plain text node that maps to a specified Key of a Document // @@ -42,14 +35,14 @@ interface IProps { // specified Key and assigns it to an HTML input node. When changes are made tot his node, // this will edit the document and assign the new value to that field. // -export class FieldTextBox extends React.Component<IProps> { +export class FieldTextBox extends React.Component<DocumentFieldViewProps> { - public static LayoutString() {return "<FieldTextBox doc={Document} containingDocumentView={ContainingDocumentView} fieldKey={DataKey} />";} + public static LayoutString() { return "<FieldTextBox doc={Document} containingDocumentView={ContainingDocumentView} fieldKey={DataKey} />"; } private _ref: React.RefObject<HTMLDivElement>; private _editorView: Opt<EditorView>; private _reactionDisposer: Opt<IReactionDisposer>; - constructor(props: IProps) { + constructor(props: DocumentFieldViewProps) { super(props); this._ref = React.createRef(); @@ -61,19 +54,19 @@ export class FieldTextBox extends React.Component<IProps> { if (this._editorView) { const state = this._editorView.state.apply(tx); this._editorView.updateState(state); - const {doc, fieldKey} = this.props; + const { doc, fieldKey } = this.props; doc.SetFieldValue(fieldKey, JSON.stringify(state.toJSON()), TextField); } } componentDidMount() { let state: EditorState; - const {doc, fieldKey} = this.props; + const { doc, fieldKey } = this.props; const config = { schema, plugins: [ history(), - keymap({"Mod-z": undo, "Mod-y": redo}), + keymap({ "Mod-z": undo, "Mod-y": redo }), keymap(baseKeymap) ] }; @@ -116,7 +109,7 @@ export class FieldTextBox extends React.Component<IProps> { @action onChange(e: React.ChangeEvent<HTMLInputElement>) { - const {fieldKey, doc} = this.props; + const { fieldKey, doc } = this.props; doc.SetFieldValue(fieldKey, e.target.value, TextField); } onPointerDown = (e: React.PointerEvent): void => { |
