import { observer } from "mobx-react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { DocumentValidation } from "@shared/validations"; import Document from "~/models/Document"; import ConfirmationDialog from "~/components/ConfirmationDialog"; import Input from "./Input"; import Switch from "./Switch"; import Text from "./Text"; type Props = { /** The original document to duplicate */ document: Document; onSubmit: (documents: Document[]) => void; }; function DuplicateDialog({ document, onSubmit }: Props) { const { t } = useTranslation(); const defaultTitle = t(`Copy of {{ documentName }}`, { documentName: document.title, }); const [publish, setPublish] = React.useState(!!document.publishedAt); const [recursive, setRecursive] = React.useState(true); const [title, setTitle] = React.useState(defaultTitle); const handlePublishChange = React.useCallback( (ev: React.ChangeEvent) => { setPublish(ev.target.checked); }, [] ); const handleRecursiveChange = React.useCallback( (ev: React.ChangeEvent) => { setRecursive(ev.target.checked); }, [] ); const handleTitleChange = React.useCallback( (ev: React.ChangeEvent) => { setTitle(ev.target.value); }, [] ); const handleSubmit = async () => { const result = await document.duplicate({ publish, recursive, title, }); onSubmit(result); }; return ( {!document.isTemplate && ( <> {document.collectionId && ( )} {document.publishedAt && ( )} )} ); } export default observer(DuplicateDialog);