commit
f7bb3cdcfe
@ -0,0 +1,61 @@ |
||||
const Component = require('react').Component |
||||
const h = require('react-hyperscript') |
||||
const inherits = require('util').inherits |
||||
const copyToClipboard = require('copy-to-clipboard') |
||||
|
||||
const Tooltip = require('./tooltip') |
||||
|
||||
module.exports = CopyButton |
||||
|
||||
inherits(CopyButton, Component) |
||||
function CopyButton () { |
||||
Component.call(this) |
||||
} |
||||
|
||||
// As parameters, accepts:
|
||||
// "value", which is the value to copy (mandatory)
|
||||
// "title", which is the text to show on hover (optional, defaults to 'Copy')
|
||||
CopyButton.prototype.render = function () { |
||||
const props = this.props |
||||
const state = this.state || {} |
||||
|
||||
const value = props.value |
||||
const copied = state.copied |
||||
|
||||
const message = copied ? 'Copied' : props.title || ' Copy ' |
||||
|
||||
return h('.copy-button', { |
||||
style: { |
||||
display: 'flex', |
||||
alignItems: 'center', |
||||
}, |
||||
}, [ |
||||
|
||||
h(Tooltip, { |
||||
title: message, |
||||
}, [ |
||||
h('i.fa.fa-clipboard.cursor-pointer.color-orange', { |
||||
style: { |
||||
margin: '5px', |
||||
}, |
||||
onClick: (event) => { |
||||
event.preventDefault() |
||||
event.stopPropagation() |
||||
copyToClipboard(value) |
||||
this.debounceRestore() |
||||
}, |
||||
}), |
||||
]), |
||||
|
||||
]) |
||||
} |
||||
|
||||
CopyButton.prototype.debounceRestore = function() { |
||||
|
||||
this.setState({ copied: true }) |
||||
clearTimeout(this.timeout) |
||||
this.timeout = setTimeout(() => { |
||||
this.setState({ copied: false }) |
||||
}, 850) |
||||
|
||||
} |
@ -0,0 +1,22 @@ |
||||
const Component = require('react').Component |
||||
const h = require('react-hyperscript') |
||||
const inherits = require('util').inherits |
||||
const ReactTooltip = require('react-tooltip-component') |
||||
|
||||
module.exports = Tooltip |
||||
|
||||
inherits(Tooltip, Component) |
||||
function Tooltip () { |
||||
Component.call(this) |
||||
} |
||||
|
||||
Tooltip.prototype.render = function () { |
||||
const props = this.props |
||||
|
||||
return h(ReactTooltip, { |
||||
position: 'left', |
||||
title: props.title, |
||||
fixed: false, |
||||
}, props.children) |
||||
|
||||
} |
Loading…
Reference in new issue