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) => { 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 } : {}

View File

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