diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index 80b53d1a7e413..0b69ef24d4553 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -29,16 +29,29 @@ export const CopyButton: React.FC = ({ try { await window.navigator.clipboard.writeText(text) setIsCopied(true) - window.setTimeout(() => { setIsCopied(false) }, 1000) } catch (err) { - const wrappedErr = new Error("copyToClipboard: failed to copy text to clipboard") - if (err instanceof Error) { - wrappedErr.stack = err.stack + const input = document.createElement("input") + input.value = text + document.body.appendChild(input) + input.focus() + input.select() + const result = document.execCommand("copy") + document.body.removeChild(input) + if (result) { + setIsCopied(true) + window.setTimeout(() => { + setIsCopied(false) + }, 1000) + } else { + const wrappedErr = new Error("copyToClipboard: failed to copy text to clipboard") + if (err instanceof Error) { + wrappedErr.stack = err.stack + } + console.error(wrappedErr) } - console.error(wrappedErr) } }