DropendMenu.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { LabelType } from '~/interfaces/template';
  4. type DropendMenuProps = {
  5. todaysPath: string,
  6. onClickCreateNewPageButtonHandler: () => Promise<void>
  7. onClickCreateTodaysButtonHandler: () => Promise<void>
  8. onClickTemplateButtonHandler: (label: LabelType) => Promise<void>
  9. }
  10. export const DropendMenu = React.memo((props: DropendMenuProps): JSX.Element => {
  11. const {
  12. todaysPath,
  13. onClickCreateNewPageButtonHandler,
  14. onClickCreateTodaysButtonHandler,
  15. onClickTemplateButtonHandler,
  16. } = props;
  17. const { t } = useTranslation('commons');
  18. return (
  19. <ul className="dropdown-menu">
  20. <li>
  21. <button
  22. className="dropdown-item"
  23. onClick={onClickCreateNewPageButtonHandler}
  24. type="button"
  25. >
  26. {t('create_page_dropdown.new_page')}
  27. </button>
  28. </li>
  29. <li><hr className="dropdown-divider" /></li>
  30. <li><span className="text-muted px-3">{t('create_page_dropdown.todays.desc')}</span></li>
  31. <li>
  32. <button
  33. className="dropdown-item"
  34. onClick={onClickCreateTodaysButtonHandler}
  35. type="button"
  36. >
  37. {todaysPath}
  38. </button>
  39. </li>
  40. <li><hr className="dropdown-divider" /></li>
  41. <li><span className="text-muted text-nowrap px-3">{t('create_page_dropdown.template.desc')}</span></li>
  42. <li>
  43. <button
  44. className="dropdown-item"
  45. onClick={() => onClickTemplateButtonHandler('_template')}
  46. type="button"
  47. >
  48. {t('create_page_dropdown.template.children')}
  49. </button>
  50. </li>
  51. <li>
  52. <button
  53. className="dropdown-item"
  54. onClick={() => onClickTemplateButtonHandler('__template')}
  55. type="button"
  56. >
  57. {t('create_page_dropdown.template.descendants')}
  58. </button>
  59. </li>
  60. </ul>
  61. );
  62. });
  63. DropendMenu.displayName = 'DropendMenu';