CustomCopyToClipBoard.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import type { FC } from 'react';
  2. import React, { useState, useCallback } from 'react';
  3. import { CopyToClipboard } from 'react-copy-to-clipboard';
  4. import { useTranslation } from 'react-i18next';
  5. import { Tooltip } from 'reactstrap';
  6. type Props = {
  7. message: string
  8. textToBeCopied?: string
  9. }
  10. // To get different messages for each copy happend, wrapping CopyToClipBoard and Tooltip together
  11. const CustomCopyToClipBoard: FC<Props> = (props: Props) => {
  12. const { t } = useTranslation();
  13. const [tooltipOpen, setTooltipOpen] = useState(false);
  14. const showToolTip = useCallback(() => {
  15. setTooltipOpen(true);
  16. setTimeout(() => {
  17. setTooltipOpen(false);
  18. }, 1000);
  19. }, []);
  20. return (
  21. <>
  22. <CopyToClipboard text={props.textToBeCopied || ''} onCopy={showToolTip}>
  23. <div className="btn input-group-text" id="tooltipTarget">
  24. <span className="material-symbols-outlined mx-1" aria-hidden="true">content_paste</span>
  25. </div>
  26. </CopyToClipboard>
  27. <Tooltip target="tooltipTarget" fade={false} isOpen={tooltipOpen}>
  28. {t(props.message)}
  29. </Tooltip>
  30. </>
  31. );
  32. };
  33. export default CustomCopyToClipBoard;