import * as React from 'react'; import LoadingOutlined from '@ant-design/icons/LoadingOutlined'; import CheckOutlined from '@ant-design/icons/CheckOutlined'; import CopyOutlined from '@ant-design/icons/CopyOutlined'; import classNames from 'classnames'; import type { CopyConfig } from '.'; import TransButton from '../../_util/transButton'; import { type Locale } from '../../locale'; import Tooltip from '../../tooltip'; import { getNode, toList } from './util'; export interface CopyBtnProps extends Omit { prefixCls: string; copied: boolean; locale: Locale['Text']; onCopy: React.MouseEventHandler; iconOnly: boolean; loading: boolean; } export default function CopyBtn(props: CopyBtnProps) { const { prefixCls, copied, locale = {}, onCopy, iconOnly, tooltips, icon, loading } = props; const tooltipNodes = toList(tooltips); const iconNodes = toList(icon); const { copied: copiedText, copy: copyText } = locale; const copyTitle = copied ? getNode(tooltipNodes[1], copiedText) : getNode(tooltipNodes[0], copyText); const systemStr = copied ? copiedText : copyText; const ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr; return ( {copied ? getNode(iconNodes[1], , true) : getNode(iconNodes[0], loading ? : , true)} ); }