aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/CollectionBaseView.tsx
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-04-03 01:38:29 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-04-03 01:38:29 -0400
commit5889bf159ee0a0f6567683b2bb8c2475feccf9ec (patch)
tree0b420df1f73c65e24789638814ea8ab6777c6588 /src/client/views/collections/CollectionBaseView.tsx
parentadecb4a47cac3c2f92d11d8f500d4decf70a06d1 (diff)
Almost compiles
Diffstat (limited to 'src/client/views/collections/CollectionBaseView.tsx')
-rw-r--r--src/client/views/collections/CollectionBaseView.tsx28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/client/views/collections/CollectionBaseView.tsx b/src/client/views/collections/CollectionBaseView.tsx
index c8c840085..c9f640c4a 100644
--- a/src/client/views/collections/CollectionBaseView.tsx
+++ b/src/client/views/collections/CollectionBaseView.tsx
@@ -19,16 +19,21 @@ export enum CollectionViewType {
}
export interface CollectionRenderProps {
- addDocument: (document: Document, allowDuplicates: boolean) => void;
+ addDocument: (document: Document, allowDuplicates?: boolean) => boolean;
removeDocument: (document: Document) => boolean;
+ moveDocument: (document: Document, targetCollection: Document, addDocument: (document: Document) => void) => boolean;
active: () => boolean;
}
export interface CollectionViewProps extends FieldViewProps {
onContextMenu?: (e: React.MouseEvent) => void;
- children: (type: CollectionViewType, props: CollectionRenderProps) => JSX.Element | null;
+ children: (type: CollectionViewType, props: CollectionRenderProps) => JSX.Element | JSX.Element[] | null;
+ className?: string;
+ contentRef?: React.Ref<HTMLDivElement>;
}
+export const COLLECTION_BORDER_WIDTH = 1;
+
export class CollectionBaseView extends React.Component<CollectionViewProps> {
get collectionViewType(): CollectionViewType {
let Document = this.props.Document;
@@ -44,7 +49,7 @@ export class CollectionBaseView extends React.Component<CollectionViewProps> {
active = (): boolean => {
var isSelected = this.props.isSelected();
- var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == self);
+ var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
var topMost = this.props.isTopMost;
return isSelected || childSelected || topMost;
}
@@ -68,7 +73,7 @@ export class CollectionBaseView extends React.Component<CollectionViewProps> {
}
@action.bound
- addDocument(doc: Document, allowDuplicates: boolean): boolean {
+ addDocument(doc: Document, allowDuplicates: boolean = false): boolean {
let props = this.props;
var curPage = props.Document.GetNumber(KeyStore.CurPage, -1);
doc.SetOnPrototype(KeyStore.Page, new NumberField(curPage));
@@ -123,14 +128,27 @@ export class CollectionBaseView extends React.Component<CollectionViewProps> {
return false
}
+ @action.bound
+ moveDocument(doc: Document, targetCollection: Document, addDocument: (doc: Document) => void): boolean {
+ if (this.props.Document === targetCollection) {
+ return false;
+ }
+ if (this.removeDocument(doc)) {
+ addDocument(doc);
+ return true;
+ }
+ return false;
+ }
+
render() {
const props: CollectionRenderProps = {
addDocument: this.addDocument,
removeDocument: this.removeDocument,
+ moveDocument: this.moveDocument,
active: this.active
}
return (
- <div className="collectionView-cont" onContextMenu={this.props.onContextMenu}>
+ <div className={this.props.className || "collectionView-cont"} onContextMenu={this.props.onContextMenu} ref={this.props.contentRef}>
{this.props.children(this.collectionViewType, props)}
</div>
)