diff --git a/src/js/components/CopyToClipboard.js b/src/js/components/CopyToClipboard.js index 2608e38..75951b5 100644 --- a/src/js/components/CopyToClipboard.js +++ b/src/js/components/CopyToClipboard.js @@ -37,7 +37,7 @@ export default class extends React.PureComponent { handleCopy = () => { const { clickCallback, src, namespace } = this.props - const textToCopy = JSON.stringify(this.clipboardValue(src), null, ' ') + const textToCopy = this.clipboardText(src) if (navigator.clipboard) { navigator.clipboard.writeText(textToCopy).catch(() => { @@ -94,6 +94,16 @@ export default class extends React.PureComponent { } } + clipboardText = value => { + const clipboardValue = this.clipboardValue(value) + + if (typeof clipboardValue === 'string') { + return clipboardValue + } + + return JSON.stringify(clipboardValue, null, ' ') + } + render () { const { theme, hidden, rowHovered } = this.props const style = Theme(theme, 'copy-to-clipboard').style diff --git a/test/tests/js/components/CopyToClipboard-test.js b/test/tests/js/components/CopyToClipboard-test.js index 5e1f125..2332fb1 100644 --- a/test/tests/js/components/CopyToClipboard-test.js +++ b/test/tests/js/components/CopyToClipboard-test.js @@ -4,6 +4,36 @@ import { expect } from 'chai' import CopyToClipboard from './../../../../src/js/components/CopyToClipboard' +function copyToClipboard (src) { + const copied = [] + const { clipboard } = global.navigator + + global.navigator.clipboard = { + writeText: textToCopy => { + copied.push(textToCopy) + return Promise.resolve() + } + } + + const wrapper = shallow( +