| Server IP : 170.10.161.225 / Your IP : 216.73.217.54 Web Server : Apache System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : calvet ( 273824) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : ON Directory : /home/www/calvetrealty.com/wp-content/plugins/code-snippets/js/common/ |
Upload File : |
import React, { HTMLAttributes, MouseEventHandler, useState } from 'react'
const TIMEOUT = 3000
export interface CopyToClipboardButtonProps extends HTMLAttributes<HTMLAnchorElement> {
text: string
copyIcon?: string
successIcon?: string
timeout?: number
}
export const CopyToClipboardButton: React.FC<CopyToClipboardButtonProps> = ({
text,
copyIcon = 'clipboard',
successIcon = 'yes',
...props
}) => {
const [isSuccess, setIsSuccess] = useState(false)
const clickHandler: MouseEventHandler<HTMLAnchorElement> = event => {
event.preventDefault()
window.navigator.clipboard?.writeText(text)
.then(() => {
setIsSuccess(true)
setTimeout(() => setIsSuccess(false), TIMEOUT)
})
.catch(error => console.error(error))
}
return window.navigator.clipboard ?
<a
href="#"
className={`code-snippets-copy-text dashicons dashicons-${isSuccess ? successIcon : copyIcon}`}
onClick={clickHandler}
{...props}
></a> :
null
}