Use polyfill instead of navigator.clipboard because it doesn't work in safari
This commit is contained in:
parent
0214b05d69
commit
a15a8bf3c3
|
@ -31,10 +31,6 @@ type CopyBtnProps = {
|
|||
}
|
||||
|
||||
const CopyBtn = ({ content, increaseZindex = false }: CopyBtnProps) => {
|
||||
if (!navigator.clipboard) {
|
||||
return null
|
||||
}
|
||||
|
||||
const [clicked, setClicked] = useState<boolean>(false)
|
||||
const classes = useStyles()
|
||||
const customClasses = increaseZindex ? { popper: classes.inreasedPopperZindex } : {}
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
// @flow
|
||||
|
||||
export const copyToClipboard = (text: string) => {
|
||||
if (!navigator.clipboard) {
|
||||
return
|
||||
}
|
||||
export const copyToClipboard = (text: string): void => {
|
||||
const range = document.createRange()
|
||||
range.selectNodeContents(document.body)
|
||||
document.getSelection().addRange(range)
|
||||
|
||||
try {
|
||||
navigator.clipboard.writeText(text)
|
||||
} catch (err) {
|
||||
console.error(err.message)
|
||||
function listener(e: ClipboardEvent) {
|
||||
e.clipboardData.setData('text/plain', text)
|
||||
e.preventDefault()
|
||||
}
|
||||
document.addEventListener('copy', listener)
|
||||
document.execCommand('copy')
|
||||
document.removeEventListener('copy', listener)
|
||||
|
||||
document.getSelection().removeAllRanges()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue