BookmarkFolderItemControl.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, { useState } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import {
  4. Dropdown, DropdownItem, DropdownMenu, DropdownToggle,
  5. } from 'reactstrap';
  6. type BookmarkFolderItemControlProps = {
  7. children?: React.ReactNode
  8. onClickRename: () => void
  9. onClickDelete: () => void
  10. }
  11. const BookmarkFolderItemControl = (props: BookmarkFolderItemControlProps): JSX.Element => {
  12. const { t } = useTranslation();
  13. const { children, onClickRename, onClickDelete } = props;
  14. const [isOpen, setIsOpen] = useState(false);
  15. return (
  16. <Dropdown isOpen={isOpen} toggle={() => setIsOpen(!isOpen)}>
  17. { children ?? (
  18. <DropdownToggle color="transparent" className="border-0 rounded btn-page-item-control d-flex align-items-center justify-content-center">
  19. <i className="icon-options"></i>
  20. </DropdownToggle>
  21. ) }
  22. <DropdownMenu
  23. positionFixed
  24. modifiers={{ preventOverflow: { boundariesElement: undefined } }}
  25. right={true}
  26. >
  27. <DropdownItem
  28. onClick={onClickRename}
  29. >
  30. <i className="icon-fw icon-action-redo grw-page-control-dropdown-icon"></i>
  31. {t('Rename')}
  32. </DropdownItem>
  33. <DropdownItem divider/>
  34. <DropdownItem
  35. className='pt-2 grw-page-control-dropdown-item text-danger'
  36. onClick={onClickDelete}
  37. >
  38. <i className="icon-fw icon-trash grw-page-control-dropdown-icon"></i>
  39. {t('Delete')}
  40. </DropdownItem>
  41. </DropdownMenu>
  42. </Dropdown>
  43. );
  44. };
  45. export default BookmarkFolderItemControl;