NavItemOptionsPopup.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { IPopupItem, PopupSelect } from '../../_shared/PopupSelect';
  2. import { EditSvg } from '../../_shared/svg/EditSvg';
  3. import { TrashSvg } from '../../_shared/svg/TrashSvg';
  4. import { CopySvg } from '../../_shared/svg/CopySvg';
  5. export const NavItemOptionsPopup = ({
  6. onRenameClick,
  7. onDeleteClick,
  8. onDuplicateClick,
  9. onClose,
  10. top,
  11. }: {
  12. onRenameClick: () => void;
  13. onDeleteClick: () => void;
  14. onDuplicateClick: () => void;
  15. onClose?: () => void;
  16. top: number;
  17. }) => {
  18. const items: IPopupItem[] = [
  19. {
  20. icon: (
  21. <i className={'h-[16px] w-[16px] text-black'}>
  22. <EditSvg></EditSvg>
  23. </i>
  24. ),
  25. onClick: onRenameClick,
  26. title: 'Rename',
  27. },
  28. {
  29. icon: (
  30. <i className={'h-[16px] w-[16px] text-black'}>
  31. <TrashSvg></TrashSvg>
  32. </i>
  33. ),
  34. onClick: onDeleteClick,
  35. title: 'Delete',
  36. },
  37. {
  38. icon: (
  39. <i className={'h-[16px] w-[16px] text-black'}>
  40. <CopySvg></CopySvg>
  41. </i>
  42. ),
  43. onClick: onDuplicateClick,
  44. title: 'Duplicate',
  45. },
  46. ];
  47. return (
  48. <PopupSelect
  49. onOutsideClick={() => onClose && onClose()}
  50. items={items}
  51. className={`absolute right-0`}
  52. style={{ top: `${top}px` }}
  53. ></PopupSelect>
  54. );
  55. };