EVOLUTION-MANAGER
Edit File: InviteeRow.tsx
import React, { createRef, PureComponent } from 'react'; import { connect } from 'react-redux'; import { Invitee } from 'app/types'; import { revokeInvite } from './state/actions'; export interface Props { invitee: Invitee; revokeInvite: typeof revokeInvite; } class InviteeRow extends PureComponent<Props> { private copyUrlRef = createRef<HTMLTextAreaElement>(); copyToClipboard = () => { const node = this.copyUrlRef.current; if (node) { node.select(); document.execCommand('copy'); } }; render() { const { invitee, revokeInvite } = this.props; return ( <tr> <td>{invitee.email}</td> <td>{invitee.name}</td> <td className="text-right"> <button className="btn btn-inverse btn-small" onClick={this.copyToClipboard}> <textarea readOnly={true} value={invitee.url} style={{ position: 'absolute', bottom: 0, right: 0, opacity: 0, zIndex: -10 }} ref={this.copyUrlRef} /> Copy Invite </button> </td> <td> <button className="btn btn-danger btn-small" onClick={() => revokeInvite(invitee.code)}> <i className="fa fa-remove" /> </button> </td> </tr> ); } } const mapDispatchToProps = { revokeInvite, }; export default connect(() => { return {}; }, mapDispatchToProps)(InviteeRow);