CustomCopyToClipBoard.tsx 1.1 KB

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