Use polyfill instead of navigator.clipboard because it doesn't work in safari

This commit is contained in:
Mikhail Mikheev 2019-11-15 18:29:55 +04:00
parent 0214b05d69
commit a15a8bf3c3
2 changed files with 12 additions and 12 deletions

View File

@ -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 } : {}

View File

@ -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()
}