PageTree.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React, { FC, memo, useState } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { useSWRxV5MigrationStatus } from '~/stores/page-listing';
  4. import { useCurrentPagePath, useCurrentPageId, useTargetAndAncestors } from '~/stores/context';
  5. import ItemsTree from './PageTree/ItemsTree';
  6. import PrivateLegacyPages from './PageTree/PrivateLegacyPages';
  7. import { IPageForPageDeleteModal } from '../PageDeleteModal';
  8. const PageTree: FC = memo(() => {
  9. const { t } = useTranslation();
  10. const { data: currentPath } = useCurrentPagePath();
  11. const { data: targetId } = useCurrentPageId();
  12. const { data: targetAndAncestorsData } = useTargetAndAncestors();
  13. const { data: migrationStatus } = useSWRxV5MigrationStatus();
  14. // for delete modal
  15. const [isDeleteModalOpen, setDeleteModalOpen] = useState(false);
  16. const [pagesToDelete, setPagesToDelete] = useState<IPageForPageDeleteModal[]>([]);
  17. const onClickDeleteByPage = (page: IPageForPageDeleteModal) => {
  18. setDeleteModalOpen(true);
  19. setPagesToDelete([page]);
  20. };
  21. const onCloseDelete = () => {
  22. setDeleteModalOpen(false);
  23. };
  24. const path = currentPath || '/';
  25. return (
  26. <>
  27. <div className="grw-sidebar-content-header p-3">
  28. <h3 className="mb-0">{t('Page Tree')}</h3>
  29. </div>
  30. <div className="grw-sidebar-content-body">
  31. <ItemsTree
  32. targetPath={path}
  33. targetId={targetId}
  34. targetAndAncestorsData={targetAndAncestorsData}
  35. isDeleteModalOpen={isDeleteModalOpen}
  36. pagesToDelete={pagesToDelete}
  37. isAbleToDeleteCompletely={false} // TODO: pass isAbleToDeleteCompletely
  38. isDeleteCompletelyModal={false} // TODO: pass isDeleteCompletelyModal
  39. onCloseDelete={onCloseDelete}
  40. onClickDeleteByPage={onClickDeleteByPage}
  41. />
  42. </div>
  43. <div className="grw-sidebar-content-footer">
  44. {
  45. migrationStatus?.migratablePagesCount != null && migrationStatus.migratablePagesCount !== 0 && (
  46. <PrivateLegacyPages />
  47. )
  48. }
  49. </div>
  50. </>
  51. );
  52. });
  53. export default PageTree;