aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/CollectionSchemaMovableTableHOC.tsx
diff options
context:
space:
mode:
authorFawn <fangrui_tong@brown.edu>2019-07-24 17:48:11 -0400
committerFawn <fangrui_tong@brown.edu>2019-07-24 17:48:11 -0400
commit75070c4c2188823ed9a09816861d4f873574c9db (patch)
treef97f83b7cb51c32cd540fbfcc1f75d60c2aae681 /src/client/views/collections/CollectionSchemaMovableTableHOC.tsx
parent07e4ad670134213afc019bf84f765cdfc00a510a (diff)
can move rows within expanded collection
Diffstat (limited to 'src/client/views/collections/CollectionSchemaMovableTableHOC.tsx')
-rw-r--r--src/client/views/collections/CollectionSchemaMovableTableHOC.tsx18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/client/views/collections/CollectionSchemaMovableTableHOC.tsx b/src/client/views/collections/CollectionSchemaMovableTableHOC.tsx
index beae739ec..6d388bb40 100644
--- a/src/client/views/collections/CollectionSchemaMovableTableHOC.tsx
+++ b/src/client/views/collections/CollectionSchemaMovableTableHOC.tsx
@@ -7,6 +7,7 @@ import { DragManager, SetupDrag } from "../../util/DragManager";
import { SelectionManager } from "../../util/SelectionManager";
import { Cast, FieldValue, StrCast } from "../../../new_fields/Types";
import { ContextMenu } from "../ContextMenu";
+import { action } from "mobx";
export interface MovableColumnProps {
@@ -106,7 +107,7 @@ export interface MovableRowProps {
rowInfo: RowInfo;
ScreenToLocalTransform: () => Transform;
addDoc: (doc: Doc, relativeTo?: Doc, before?: boolean) => boolean;
- moveDoc: DragManager.MoveFunction;
+ removeDoc: (doc: Doc) => boolean;
rowFocused: boolean;
textWrapRow: (doc: Doc) => void;
rowWrapped: boolean;
@@ -145,9 +146,6 @@ export class MovableRow extends React.Component<MovableRowProps> {
}
rowDrop = (e: Event, de: DragManager.DropEvent) => {
- // const { children = null, rowInfo } = this.props;
- // if (!rowInfo) return false;
-
const rowDoc = FieldValue(Cast(this.props.rowInfo.original, Doc));
if (!rowDoc) return false;
@@ -160,24 +158,26 @@ export class MovableRow extends React.Component<MovableRowProps> {
e.stopPropagation();
if (de.data.draggedDocuments[0] === rowDoc) return true;
let addDocument = (doc: Doc) => this.props.addDoc(doc, rowDoc, before);
- let movedDocs = de.data.draggedDocuments; //(de.data.options === this.props.treeViewId ? de.data.draggedDocuments : de.data.droppedDocuments);
+ let movedDocs = de.data.draggedDocuments;
return (de.data.dropAction || de.data.userDropAction) ?
de.data.droppedDocuments.reduce((added: boolean, d) => this.props.addDoc(d, rowDoc, before) || added, false)
: (de.data.moveDocument) ?
movedDocs.reduce((added: boolean, d) => de.data.moveDocument(d, rowDoc, addDocument) || added, false)
- // movedDocs.reduce((added: boolean, d) => this.props.moveDoc(d, rowDoc, addDocument) || added, false)
: de.data.droppedDocuments.reduce((added: boolean, d) => this.props.addDoc(d, rowDoc, before), false);
}
return false;
}
onRowContextMenu = (e: React.MouseEvent): void => {
- // const { rowInfo } = this.props;
- // const { textWrapRow, original } = rowInfo;
let description = this.props.rowWrapped ? "Unwrap text on row" : "Text wrap row";
ContextMenu.Instance.addItem({ description: description, event: () => this.props.textWrapRow(this.props.rowInfo.original) });
}
+ @action
+ move: DragManager.MoveFunction = (doc: Doc, target: Doc, addDoc) => {
+ return doc !== target && this.props.removeDoc(doc) && addDoc(doc);
+ }
+
render() {
const { children = null, rowInfo } = this.props;
if (!rowInfo) {
@@ -189,7 +189,7 @@ export class MovableRow extends React.Component<MovableRowProps> {
if (!doc) return <></>;
let reference = React.createRef<HTMLDivElement>();
- let onItemDown = SetupDrag(reference, () => doc, this.props.moveDoc);
+ let onItemDown = SetupDrag(reference, () => doc, this.move);
let className = "collectionSchema-row";
if (this.props.rowFocused) className += " row-focused";