GrowiNavbarBottom.jsx 2.3 KB

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