Path: blob/master/src/packages/frontend/components/copy-button.tsx
1503 views
import { Button } from "antd";1import { CSSProperties, useEffect, useState } from "react";2import { CopyToClipboard } from "react-copy-to-clipboard";34import { Icon } from "@cocalc/frontend/components/icon";56interface Props {7style?: CSSProperties;8value?: string;9size?;10noText?: boolean;11block?: true;12}1314export default function CopyButton({15style,16value,17size,18noText = false,19block,20}: Props) {21const [copied, setCopied] = useState<boolean>(false);22useEffect(() => {23setCopied(false);24}, [value]);25return (26<CopyToClipboard text={value} onCopy={() => setCopied(true)}>27<Button28block={block}29size={size}30type="text"31style={style}32onClick={(e) => e.stopPropagation()}33>34<Icon name={copied ? "check" : "copy"} />35{noText ? undefined : copied ? "Copied" : "Copy"}36</Button>37</CopyToClipboard>38);39}404142