BoardSettingsPopup.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { useEffect, useState } from 'react';
  2. import { PropertiesSvg } from '$app/components/_shared/svg/PropertiesSvg';
  3. import { IPopupItem, PopupSelect } from '$app/components/_shared/PopupSelect';
  4. import { useTranslation } from 'react-i18next';
  5. import { GroupByFieldSvg } from '$app/components/_shared/svg/GroupByFieldSvg';
  6. export const BoardSettingsPopup = ({
  7. hidePopup,
  8. onFieldsClick,
  9. onGroupClick,
  10. }: {
  11. hidePopup: () => void;
  12. onFieldsClick: () => void;
  13. onGroupClick: () => void;
  14. }) => {
  15. const [settingsItems, setSettingsItems] = useState<IPopupItem[]>([]);
  16. const { t } = useTranslation();
  17. useEffect(() => {
  18. setSettingsItems([
  19. {
  20. icon: (
  21. <i className={'h-5 w-5'}>
  22. <PropertiesSvg></PropertiesSvg>
  23. </i>
  24. ),
  25. title: t('grid.settings.Properties'),
  26. onClick: onFieldsClick,
  27. },
  28. {
  29. icon: (
  30. <i className={'h-5 w-5'}>
  31. <GroupByFieldSvg></GroupByFieldSvg>
  32. </i>
  33. ),
  34. title: t('grid.settings.group'),
  35. onClick: onGroupClick,
  36. },
  37. ]);
  38. }, [t]);
  39. return (
  40. <PopupSelect
  41. onOutsideClick={() => hidePopup()}
  42. items={settingsItems}
  43. className={'absolute top-full left-full z-10 text-xs'}
  44. ></PopupSelect>
  45. );
  46. };