From bc7515ffe71c7c0becca6e09953cb223d223e715 Mon Sep 17 00:00:00 2001 From: Brett Sun Date: Fri, 15 Jan 2016 11:54:16 +0100 Subject: [PATCH] Allow ModalWrapper triggers to have an onClick handler --- js/components/ascribe_modal/modal_wrapper.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/js/components/ascribe_modal/modal_wrapper.js b/js/components/ascribe_modal/modal_wrapper.js index fd77e5ae..94000942 100644 --- a/js/components/ascribe_modal/modal_wrapper.js +++ b/js/components/ascribe_modal/modal_wrapper.js @@ -1,7 +1,6 @@ 'use strict'; import React from 'react'; -import ReactAddons from 'react/addons'; import Modal from 'react-bootstrap/lib/Modal'; @@ -44,8 +43,8 @@ let ModalWrapper = React.createClass({ }, renderChildren() { - return ReactAddons.Children.map(this.props.children, (child) => { - return ReactAddons.addons.cloneWithProps(child, { + return React.Children.map(this.props.children, (child) => { + return React.cloneElement(child, { handleSuccess: (response) => { if (typeof child.props.handleSuccess === 'function') { child.props.handleSuccess(response); @@ -60,10 +59,19 @@ let ModalWrapper = React.createClass({ render() { const { trigger, title } = this.props; - // If the trigger component exists, we add the ModalWrapper's show() as its onClick method. + // If the trigger component exists, we add the ModalWrapper's show() to its onClick method. // The trigger component should, in most cases, be a button. - const clonedTrigger = React.isValidElement(trigger) ? React.cloneElement(trigger, {onClick: this.show}) - : null; + const clonedTrigger = React.isValidElement(trigger) ? + React.cloneElement(trigger, { + onClick: (...params) => { + if (typeof trigger.props.onClick === 'function') { + trigger.props.onClick(...params); + } + + this.show(); + } + }) : null; + return ( {clonedTrigger}