CopyButton.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react';
  2. import ClipboardButton from 'react-clipboard.js';
  3. export default class CopyButton extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.showToolTip = this.showToolTip.bind(this);
  7. }
  8. showToolTip() {
  9. const buttonId = `#${this.props.buttonId}`;
  10. $(buttonId).tooltip('show');
  11. setTimeout(() => {
  12. $(buttonId).tooltip('hide');
  13. }, 1000);
  14. }
  15. render() {
  16. let style = Object.assign({
  17. fontSize: "inherit",
  18. padding: "2px",
  19. border: 'none'
  20. }, this.props.buttonStyle);
  21. return (
  22. <ClipboardButton className={this.props.buttonClassName}
  23. button-id={this.props.buttonId} button-data-toggle="tooltip" button-title="copied!" button-data-placement="bottom" button-data-trigger="manual"
  24. button-style={style}
  25. data-clipboard-text={this.props.text} onSuccess={this.showToolTip}>
  26. <i className={this.props.iconClassName}></i>
  27. </ClipboardButton>
  28. );
  29. }
  30. }
  31. CopyButton.propTypes = {
  32. text: React.PropTypes.string.isRequired,
  33. buttonId: React.PropTypes.string.isRequired,
  34. buttonClassName: React.PropTypes.string.isRequired,
  35. buttonStyle: React.PropTypes.object,
  36. iconClassName: React.PropTypes.string.isRequired,
  37. };
  38. CopyButton.defaultProps = {
  39. buttonId: 'btnCopy',
  40. buttonStyle: {},
  41. };