Added collection menu link to import documents

This commit is contained in:
Jori Lallo
2017-10-02 00:24:38 -07:00
parent 12a95725f9
commit 18d774c1cc
3 changed files with 35 additions and 16 deletions

View File

@ -8,11 +8,7 @@ import Document from 'models/Document';
import DocumentsStore from 'stores/DocumentsStore'; import DocumentsStore from 'stores/DocumentsStore';
import LoadingIndicator from 'components/LoadingIndicator'; import LoadingIndicator from 'components/LoadingIndicator';
class DropToImport extends Component { type Props = {
state: {
isImporting: boolean,
};
props: {
children?: React$Element<any>, children?: React$Element<any>,
collectionId: string, collectionId: string,
documentId?: string, documentId?: string,
@ -20,8 +16,15 @@ class DropToImport extends Component {
rejectClassName?: string, rejectClassName?: string,
documents: DocumentsStore, documents: DocumentsStore,
disabled: boolean, disabled: boolean,
dropzoneRef: Function,
history: Object, history: Object,
}; };
class DropToImport extends Component {
state: {
isImporting: boolean,
};
props: Props;
state = { state = {
isImporting: false, isImporting: false,
}; };
@ -98,6 +101,7 @@ class DropToImport extends Component {
disableClick disableClick
disablePreview disablePreview
multiple multiple
ref={this.props.dropzoneRef}
{...props} {...props}
> >
{this.state.isImporting && <LoadingIndicator />} {this.state.isImporting && <LoadingIndicator />}

View File

@ -53,8 +53,14 @@ type Props = {
} }
@observer class CollectionLink extends React.Component { @observer class CollectionLink extends React.Component {
dropzoneRef;
@observable menuOpen = false; @observable menuOpen = false;
handleImport = () => {
this.dropzoneRef.open();
};
render() { render() {
const { history, collection, activeDocument, ui } = this.props; const { history, collection, activeDocument, ui } = this.props;
@ -65,6 +71,7 @@ type Props = {
collectionId={collection.id} collectionId={collection.id}
activeClassName="activeDropZone" activeClassName="activeDropZone"
menuOpen={this.menuOpen} menuOpen={this.menuOpen}
dropzoneRef={ref => (this.dropzoneRef = ref)}
> >
<SidebarLink key={collection.id} to={collection.url}> <SidebarLink key={collection.id} to={collection.url}>
<Flex justify="space-between"> <Flex justify="space-between">
@ -76,6 +83,7 @@ type Props = {
collection={collection} collection={collection}
onShow={() => (this.menuOpen = true)} onShow={() => (this.menuOpen = true)}
onClose={() => (this.menuOpen = false)} onClose={() => (this.menuOpen = false)}
onImport={this.handleImport}
open={this.menuOpen} open={this.menuOpen}
/> />
</CollectionAction> </CollectionAction>

View File

@ -6,6 +6,7 @@ import styled from 'styled-components';
import Collection from 'models/Collection'; import Collection from 'models/Collection';
import UiStore from 'stores/UiStore'; import UiStore from 'stores/UiStore';
import Icon from 'components/Icon'; import Icon from 'components/Icon';
import Flex from 'components/Flex';
import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu'; import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
@observer class CollectionMenu extends Component { @observer class CollectionMenu extends Component {
@ -13,6 +14,7 @@ import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
label?: React$Element<any>, label?: React$Element<any>,
onShow?: () => void, onShow?: () => void,
onClose?: () => void, onClose?: () => void,
onImport?: () => void,
history: Object, history: Object,
ui: UiStore, ui: UiStore,
collection: Collection, collection: Collection,
@ -34,7 +36,7 @@ import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
}; };
render() { render() {
const { collection, label, onShow, onClose } = this.props; const { collection, label, onShow, onClose, onImport } = this.props;
const { allowDelete } = collection; const { allowDelete } = collection;
return ( return (
@ -44,11 +46,16 @@ import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
onClose={onClose} onClose={onClose}
> >
{collection && {collection &&
<Flex column>
<DropdownMenuItem onClick={this.onNewDocument}> <DropdownMenuItem onClick={this.onNewDocument}>
New document New document
</DropdownMenuItem>} </DropdownMenuItem>
{collection && <DropdownMenuItem onClick={onImport}>
<DropdownMenuItem onClick={this.onEdit}>Edit</DropdownMenuItem>} Import document
</DropdownMenuItem>
<DropdownMenuItem onClick={this.onEdit}>Edit</DropdownMenuItem>
</Flex>}
}
{allowDelete && {allowDelete &&
<DropdownMenuItem onClick={this.onDelete}>Delete</DropdownMenuItem>} <DropdownMenuItem onClick={this.onDelete}>Delete</DropdownMenuItem>}
</DropdownMenu> </DropdownMenu>