WNomunomu 2 лет назад
Родитель
Сommit
afcfdccfbc

+ 5 - 6
apps/app/src/components/Sidebar/PageTree/PageTreeItem.tsx

@@ -16,8 +16,7 @@ import { ValidationTarget } from '~/client/util/input-validator';
 import { toastWarning, toastError, toastSuccess } from '~/client/util/toastr';
 import { NotAvailableForGuest } from '~/components/NotAvailableForGuest';
 import {
-  IPageHasId,
-  IPageInfoAll, IPageToDeleteWithMeta,
+  IPageHasId, IPageInfoAll, IPageToDeleteWithMeta, IPageForItem,
 } from '~/interfaces/page';
 import { useSWRMUTxCurrentUserBookmarks } from '~/stores/bookmark';
 import { useSWRMUTxPageInfo } from '~/stores/page';
@@ -36,9 +35,9 @@ type PageTreeItemPropsOptional = 'itemRef' | 'itemClass' | 'mainClassName';
 type PageTreeItemProps = Omit<SimpleItemProps, PageTreeItemPropsOptional> & {key};
 
 type EllipsisPropsOptional = 'itemNode' | 'targetPathOrId' | 'isOpen' | 'itemRef' | 'itemClass' | 'mainClassName';
-type EllipsisProps = Omit<SimpleItemProps, EllipsisPropsOptional> & {page};
+type EllipsisProps = Omit<SimpleItemProps, EllipsisPropsOptional> & {page: IPageForItem};
 
-const Ellipsis: FC<EllipsisProps> = (props: EllipsisProps) => {
+const Ellipsis: FC<EllipsisProps> = (props) => {
   const [isRenameInputShown, setRenameInputShown] = useState(false);
   const { t } = useTranslation();
 
@@ -152,7 +151,7 @@ const Ellipsis: FC<EllipsisProps> = (props: EllipsisProps) => {
           </NotDraggableForClosableTextInput>
         </div>
       ) : (
-        <SimpleItemTool page={page}/>
+        <SimpleItemTool page={page} isEnableActions={false} isReadOnlyUser={false}/>
       )}
       <NotAvailableForGuest>
         <div className="grw-pagetree-control d-flex">
@@ -180,7 +179,7 @@ const Ellipsis: FC<EllipsisProps> = (props: EllipsisProps) => {
   );
 };
 
-export const PageTreeItem: FC<PageTreeItemProps> = (props: PageTreeItemProps) => {
+export const PageTreeItem: FC<PageTreeItemProps> = (props) => {
   const getNewPathAfterMoved = (droppedPagePath: string, newParentPagePath: string): string => {
     const pageTitle = nodePath.basename(droppedPagePath);
     return nodePath.join(newParentPagePath, pageTitle);

+ 6 - 7
apps/app/src/components/Sidebar/PageTree/SimpleItem.tsx

@@ -17,7 +17,7 @@ import { toastWarning, toastError, toastSuccess } from '~/client/util/toastr';
 import { TriangleIcon } from '~/components/Icons/TriangleIcon';
 import { NotAvailableForGuest } from '~/components/NotAvailableForGuest';
 import { NotAvailableForReadOnlyUser } from '~/components/NotAvailableForReadOnlyUser';
-import { IPageToDeleteWithMeta } from '~/interfaces/page';
+import { IPageToDeleteWithMeta, IPageForItem } from '~/interfaces/page';
 import { IPageForPageDuplicateModal } from '~/stores/modal';
 import { useSWRxPageChildren } from '~/stores/page-listing';
 import { usePageTreeDescCountMap } from '~/stores/ui';
@@ -41,7 +41,7 @@ export type SimpleItemProps = {
   itemRef?
   itemClass?: React.FunctionComponent<SimpleItemProps>
   mainClassName?: string
-  customComponent?
+  customComponent?: React.FunctionComponent<SimpleItemToolProps>
 };
 
 // Utility to mark target
@@ -85,11 +85,10 @@ export const NotDraggableForClosableTextInput = (props: NotDraggableProps): JSX.
   return <div draggable onDragStart={e => e.preventDefault()}>{props.children}</div>;
 };
 
-type SimpleItemToolProps = {
-  page,
-};
+type SimpleItemToolPropsOptional = 'itemNode' | 'targetPathOrId' | 'isOpen' | 'itemRef' | 'itemClass' | 'mainClassName';
+type SimpleItemToolProps = Omit<SimpleItemProps, SimpleItemToolPropsOptional> & {page: IPageForItem};
 
-export const SimpleItemTool: FC<SimpleItemToolProps> = (props: SimpleItemToolProps) => {
+export const SimpleItemTool: FC<SimpleItemToolProps> = (props) => {
   const { t } = useTranslation();
   const router = useRouter();
   const { getDescCount } = usePageTreeDescCountMap();
@@ -138,7 +137,7 @@ export const SimpleItemTool: FC<SimpleItemToolProps> = (props: SimpleItemToolPro
   );
 };
 
-const SimpleItem: FC<SimpleItemProps> = (props: SimpleItemProps) => {
+const SimpleItem: FC<SimpleItemProps> = (props) => {
   const { t } = useTranslation();
 
   const {