@@ -10,13 +10,14 @@ import { useTranslation } from 'react-i18next';
1010import { css } from 'styled-components' ;
1111
1212import { Box , BoxButton , Icon } from '@/components' ;
13-
1413import {
1514 Doc ,
1615 ModalRemoveDoc ,
1716 Role ,
1817 useCopyDocLink ,
19- } from '../../doc-management' ;
18+ useDuplicateDoc ,
19+ } from '@/docs/doc-management' ;
20+
2021import { useCreateChildrenDoc } from '../api/useCreateChildren' ;
2122import { useDetachDoc } from '../api/useDetach' ;
2223import MoveDocIcon from '../assets/doc-extract-bold.svg' ;
@@ -45,6 +46,11 @@ export const DocTreeItemActions = ({
4546 const { isCurrentParent } = useTreeUtils ( doc ) ;
4647 const { mutate : detachDoc } = useDetachDoc ( ) ;
4748 const treeContext = useTreeContext < Doc > ( ) ;
49+ const { mutate : duplicateDoc } = useDuplicateDoc ( {
50+ onSuccess : ( data ) => {
51+ void router . push ( `/docs/${ data . id } ` ) ;
52+ } ,
53+ } ) ;
4854
4955 const handleDetachDoc = ( ) => {
5056 if ( ! treeContext ?. root ) {
@@ -89,6 +95,18 @@ export const DocTreeItemActions = ({
8995 } ,
9096 ]
9197 : [ ] ) ,
98+ {
99+ label : t ( 'Duplicate' ) ,
100+ icon : < Icon $variation = "600" iconName = "content_copy" /> ,
101+ isDisabled : ! doc . abilities . duplicate ,
102+ callback : ( ) => {
103+ duplicateDoc ( {
104+ docId : doc . id ,
105+ with_accesses : false ,
106+ canSave : doc . abilities . partial_update ,
107+ } ) ;
108+ } ,
109+ } ,
92110 {
93111 label : t ( 'Delete' ) ,
94112 isDisabled : ! doc . abilities . destroy ,
0 commit comments