PageSelectModal.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react';
  2. import {
  3. Modal, ModalHeader, ModalBody, ModalFooter, Button,
  4. } from 'reactstrap';
  5. import { useTargetAndAncestors, useIsGuestUser, useIsReadOnlyUser } from '~/stores/context';
  6. import { usePageSelectModal } from '~/stores/modal';
  7. import { useCurrentPagePath, useCurrentPageId } from '~/stores/page';
  8. import { ItemsTree } from '../ItemsTree';
  9. import { TreeItemForModal } from './TreeItemForModal';
  10. export const PageSelectModal = () => {
  11. const {
  12. data: PageSelectModalData,
  13. close: closeModal,
  14. } = usePageSelectModal();
  15. const isOpened = PageSelectModalData?.isOpened ?? false;
  16. const { data: isGuestUser } = useIsGuestUser();
  17. const { data: isReadOnlyUser } = useIsReadOnlyUser();
  18. const { data: currentPath } = useCurrentPagePath();
  19. const { data: targetId } = useCurrentPageId();
  20. const { data: targetAndAncestorsData } = useTargetAndAncestors();
  21. const targetPathOrId = targetId || currentPath;
  22. if (isGuestUser == null) {
  23. return null;
  24. }
  25. const path = currentPath || '/';
  26. return (
  27. <Modal
  28. isOpen={isOpened}
  29. toggle={() => closeModal()}
  30. centered
  31. >
  32. <ModalHeader toggle={() => closeModal()}>modal</ModalHeader>
  33. <ModalBody>
  34. <ItemsTree
  35. CustomTreeItem={TreeItemForModal}
  36. isEnableActions={!isGuestUser}
  37. isReadOnlyUser={!!isReadOnlyUser}
  38. targetPath={path}
  39. targetPathOrId={targetPathOrId}
  40. targetAndAncestorsData={targetAndAncestorsData}
  41. />
  42. </ModalBody>
  43. <ModalFooter>
  44. <Button color="primary">
  45. Do Something
  46. </Button>{' '}
  47. <Button color="secondary">
  48. Cancel
  49. </Button>
  50. </ModalFooter>
  51. </Modal>
  52. );
  53. };