GrowiNavbarBottom.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import React from 'react';
  2. import { useCurrentPagePath, useIsSearchPage } from '~/stores/context';
  3. import { usePageCreateModal } from '~/stores/modal';
  4. import { useIsDeviceSmallerThanMd, useDrawerOpened } from '~/stores/ui';
  5. import { GlobalSearch } from './GlobalSearch';
  6. import styles from './GrowiNavbarBottom.module.scss';
  7. export const GrowiNavbarBottom = (): JSX.Element => {
  8. const { data: isDrawerOpened, mutate: mutateDrawerOpened } = useDrawerOpened();
  9. const { data: isDeviceSmallerThanMd } = useIsDeviceSmallerThanMd();
  10. const { open: openCreateModal } = usePageCreateModal();
  11. const { data: currentPagePath } = useCurrentPagePath();
  12. const { data: isSearchPage } = useIsSearchPage();
  13. const additionalClasses = ['grw-navbar-bottom', styles['grw-navbar-bottom']];
  14. if (isDrawerOpened) {
  15. additionalClasses.push('grw-navbar-bottom-drawer-opened');
  16. }
  17. return (
  18. <div className="d-md-none d-edit-none fixed-bottom">
  19. { isDeviceSmallerThanMd && !isSearchPage && (
  20. <div id="grw-global-search-collapse" className="grw-global-search collapse bg-dark">
  21. <div className="p-3">
  22. <GlobalSearch dropup />
  23. </div>
  24. </div>
  25. ) }
  26. <div className={`navbar navbar-expand navbar-dark bg-primary px-0 ${additionalClasses.join(' ')}`}>
  27. <ul className="navbar-nav w-100">
  28. <li className="nav-item mr-auto">
  29. <a
  30. role="button"
  31. className="nav-link btn-lg"
  32. onClick={() => mutateDrawerOpened(true)}
  33. >
  34. <i className="icon-menu"></i>
  35. </a>
  36. </li>
  37. {
  38. !isSearchPage && (
  39. <li className="nav-item">
  40. <a
  41. role="button"
  42. className="nav-link btn-lg"
  43. data-target="#grw-global-search-collapse"
  44. data-toggle="collapse"
  45. >
  46. <i className="icon-magnifier"></i>
  47. </a>
  48. </li>
  49. )
  50. }
  51. <li className="nav-item ml-auto">
  52. <a
  53. role="button"
  54. className="nav-link btn-lg"
  55. onClick={() => openCreateModal(currentPagePath || '')}
  56. >
  57. <i className="icon-pencil"></i>
  58. </a>
  59. </li>
  60. </ul>
  61. </div>
  62. </div>
  63. );
  64. };