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) => {
|
const CopyBtn = ({ content, increaseZindex = false }: CopyBtnProps) => {
|
||||||
if (!navigator.clipboard) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
const [clicked, setClicked] = useState<boolean>(false)
|
const [clicked, setClicked] = useState<boolean>(false)
|
||||||
const classes = useStyles()
|
const classes = useStyles()
|
||||||
const customClasses = increaseZindex ? { popper: classes.inreasedPopperZindex } : {}
|
const customClasses = increaseZindex ? { popper: classes.inreasedPopperZindex } : {}
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
// @flow
|
// @flow
|
||||||
|
|
||||||
export const copyToClipboard = (text: string) => {
|
export const copyToClipboard = (text: string): void => {
|
||||||
if (!navigator.clipboard) {
|
const range = document.createRange()
|
||||||
return
|
range.selectNodeContents(document.body)
|
||||||
}
|
document.getSelection().addRange(range)
|
||||||
|
|
||||||
try {
|
function listener(e: ClipboardEvent) {
|
||||||
navigator.clipboard.writeText(text)
|
e.clipboardData.setData('text/plain', text)
|
||||||
} catch (err) {
|
e.preventDefault()
|
||||||
console.error(err.message)
|
|
||||||
}
|
}
|
||||||
|
document.addEventListener('copy', listener)
|
||||||
|
document.execCommand('copy')
|
||||||
|
document.removeEventListener('copy', listener)
|
||||||
|
|
||||||
|
document.getSelection().removeAllRanges()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue