import Icon, { SizeProp, ThickProp } from "../Icon/Icon"; import Tooltip from "../Tooltip/Tooltip"; import IconProp from "../../../Types/Icon/IconProp"; import React, { FunctionComponent, ReactElement, useState } from "react"; export interface ComponentProps { textToBeCopied: string; } const CopyableButton: FunctionComponent = ( props: ComponentProps, ): ReactElement => { const [copiedToClipboard, setCopyToClipboard] = useState(false); const refreshCopyToClipboardState: VoidFunction = (): void => { setCopyToClipboard(true); setTimeout(() => { setCopyToClipboard(false); }, 2000); }; const handleCopy: () => Promise = async (): Promise => { refreshCopyToClipboardState(); await navigator.clipboard?.writeText(props.textToBeCopied); }; const handleKeyDown: (event: React.KeyboardEvent) => Promise = async ( event: React.KeyboardEvent, ): Promise => { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); await handleCopy(); } }; return (
{" "} {copiedToClipboard ? ( "Copied to Clipboard" ) : ( )}{" "}
); }; export default CopyableButton;