// @flow import * as React from "react"; import { observable } from "mobx"; import { observer, inject } from "mobx-react"; import { Redirect } from "react-router-dom"; import { DocumentIcon } from "outline-icons"; import styled from "styled-components"; import DocumentsStore from "stores/DocumentsStore"; import { newDocumentUrl } from "utils/routeHelpers"; import Document from "models/Document"; import Button from "components/Button"; import { DropdownMenu, DropdownMenuItem } from "components/DropdownMenu"; type Props = { document: Document, documents: DocumentsStore, }; @observer class TemplatesMenu extends React.Component { @observable redirectTo: ?string; componentDidUpdate() { this.redirectTo = undefined; } handleNewDocument = ( collectionId: string, options?: { templateId?: string, parentDocumentId?: string, template?: boolean, } ) => { this.redirectTo = newDocumentUrl(collectionId, options); }; render() { if (this.redirectTo) return ; const { collection, documents, document, label, ...rest } = this.props; const templates = documents.templatesInCollection(document.collectionId); return ( Templates } {...rest} > {templates.map(template => ( this.handleNewDocument(document.collectionId, { templateId: template.id, }) } >
{template.titleWithDefault}
By {template.createdBy.name}
))}
); } } const Author = styled.div` font-size: 13px; `; export default inject("documents")(TemplatesMenu);