import { observer } from "mobx-react"; import { DocumentIcon } from "outline-icons"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { MenuButton, useMenuState } from "reakit/Menu"; import styled from "styled-components"; import Document from "~/models/Document"; import Button from "~/components/Button"; import ContextMenu from "~/components/ContextMenu"; import MenuItem from "~/components/ContextMenu/MenuItem"; import Separator from "~/components/ContextMenu/Separator"; import useStores from "~/hooks/useStores"; type Props = { document: Document; onSelectTemplate: (template: Document) => void; }; function TemplatesMenu({ onSelectTemplate, document }: Props) { const menu = useMenuState({ modal: true, }); const { documents } = useStores(); const { t } = useTranslation(); const templates = documents.templates; if (!templates.length) { return null; } const templatesInCollection = templates.filter( (t) => t.collectionId === document.collectionId ); const otherTemplates = templates.filter( (t) => t.collectionId !== document.collectionId ); const renderTemplate = (template: Document) => ( onSelectTemplate(template)} icon={} {...menu} > {template.titleWithDefault}
{t("By {{ author }}", { author: template.createdBy.name, })}
); return ( <> {(props) => ( )} {templatesInCollection.map(renderTemplate)} {otherTemplates.length && templatesInCollection.length ? ( ) : undefined} {otherTemplates.map(renderTemplate)} ); } const TemplateItem = styled.div` text-align: left; `; const Author = styled.div` font-size: 13px; `; export default observer(TemplatesMenu);