feat: duplicate a document as draft (#6782)

* feat: duplicate a document as draft

* review

* Default `publish` toggle to match current document

Ensures duplicating a draft does not publish it.

---------

Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
Hemachandar
2024-04-13 06:17:59 +05:30
committed by GitHub
parent 0b99a88cd7
commit 581944e754
5 changed files with 63 additions and 11 deletions

View File

@@ -19,9 +19,17 @@ function DuplicateDialog({ document, onSubmit }: Props) {
const defaultTitle = t(`Copy of {{ documentName }}`, {
documentName: document.title,
});
const [publish, setPublish] = React.useState<boolean>(!!document.publishedAt);
const [recursive, setRecursive] = React.useState<boolean>(true);
const [title, setTitle] = React.useState<string>(defaultTitle);
const handlePublishChange = React.useCallback(
(ev: React.ChangeEvent<HTMLInputElement>) => {
setPublish(ev.target.checked);
},
[]
);
const handleRecursiveChange = React.useCallback(
(ev: React.ChangeEvent<HTMLInputElement>) => {
setRecursive(ev.target.checked);
@@ -38,6 +46,7 @@ function DuplicateDialog({ document, onSubmit }: Props) {
const handleSubmit = async () => {
const result = await document.duplicate({
publish,
recursive,
title,
});
@@ -56,15 +65,26 @@ function DuplicateDialog({ document, onSubmit }: Props) {
defaultValue={defaultTitle}
/>
{document.publishedAt && !document.isTemplate && (
<Text size="small">
<Switch
name="recursive"
label={t("Include nested documents")}
labelPosition="right"
checked={recursive}
onChange={handleRecursiveChange}
/>
</Text>
<>
<Text size="small">
<Switch
name="publish"
label={t("Published")}
labelPosition="right"
checked={publish}
onChange={handlePublishChange}
/>
</Text>
<Text size="small">
<Switch
name="recursive"
label={t("Include nested documents")}
labelPosition="right"
checked={recursive}
onChange={handleRecursiveChange}
/>
</Text>
</>
)}
</ConfirmationDialog>
);