GrowiNavbarBottom.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { useIsDeviceSmallerThanMd, useDrawerOpened } from '~/stores/ui';
  4. import { usePageCreateModal } from '~/stores/modal';
  5. import { useCurrentPagePath, useIsSearchPage } from '~/stores/context';
  6. import GlobalSearch from './GlobalSearch';
  7. const GrowiNavbarBottom = (props) => {
  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'];
  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. };
  65. export default GrowiNavbarBottom;