From 5d44b01f4014960bb46914f295d54f3d6429fb78 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Tue, 1 Sep 2015 10:17:54 -0400 Subject: Reformatted get_link_modal.jsx to meet style guide requirements. --- web/react/components/get_link_modal.jsx | 142 ++++++++++++++++++++++---------- 1 file changed, 98 insertions(+), 44 deletions(-) (limited to 'web') diff --git a/web/react/components/get_link_modal.jsx b/web/react/components/get_link_modal.jsx index 3b10926f5..f0ebe9bce 100644 --- a/web/react/components/get_link_modal.jsx +++ b/web/react/components/get_link_modal.jsx @@ -5,66 +5,120 @@ var UserStore = require('../stores/user_store.jsx'); var ZeroClipboardMixin = require('react-zeroclipboard-mixin'); ZeroClipboardMixin.ZeroClipboard.config({ - swfPath: '../../static/flash/ZeroClipboard.swf' + swfPath: '../../static/flash/ZeroClipboard.swf' }); -module.exports = React.createClass({ - displayName: 'GetLinkModal', - zeroclipboardElementsSelector: '[data-copy-btn]', - mixins: [ZeroClipboardMixin], - componentDidMount: function() { +export default class GetLinkModal extends React.Component { + constructor(props) { + super(props); + + this.zeroclipboardElementsSelector = '[data-copy-btn]'; + this.mixins = [ZeroClipboardMixin]; + + this.handleClick = this.handleClick.bind(this); + + this.state = {copiedLink: false}; + } + componentDidMount() { var self = this; if (this.refs.modal) { - $(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) { - var button = e.relatedTarget; - self.setState({title: $(button).attr('data-title'), value: $(button).attr('data-value')}); - }); - $(this.refs.modal.getDOMNode()).on('hide.bs.modal', function() { - self.setState({copiedLink: false}); - }); + $(this.refs.modal.getDOMNode()).on('show.bs.modal', function show(e) { + var button = e.relatedTarget; + self.setState({title: $(button).attr('data-title'), value: $(button).attr('data-value')}); + }); + $(this.refs.modal.getDOMNode()).on('hide.bs.modal', function hide() { + self.setState({copiedLink: false}); + }); } - }, - getInitialState: function() { - return {copiedLink: false}; - }, - handleClick: function() { - this.setState({copiedLink: true}); - }, - render: function() { + } + handleClick() { + var copyTextarea = $(React.findDOMNode(this.refs.textarea)); + copyTextarea.select(); + + try { + var successful = document.execCommand('copy'); + if (successful) { + this.setState({copiedLink: true}); + } else { + this.setState({copiedLink: false}); + } + } catch (err) { + this.setState({copiedLink: false}); + } + } + render() { var currentUser = UserStore.getCurrentUser(); var copyLinkConfirm = null; if (this.state.copiedLink) { - copyLinkConfirm =

Link copied to clipboard.

; + copyLinkConfirm =

Link copied to clipboard.

; } if (currentUser != null) { return ( -