'use strict'; import React from 'react'; import classnames from 'classnames'; let ActionPanel = React.createClass({ propTypes: { title: React.PropTypes.string, content: React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.element ]), buttons: React.PropTypes.element, onClick: React.PropTypes.func, ignoreFocus: React.PropTypes.bool, leftColumnWidth: React.PropTypes.string, rightColumnWidth: React.PropTypes.string }, getInitialState() { return { isFocused: false }; }, handleFocus() { // if ignoreFocus (bool) is defined, then just ignore focusing on // the property and input if(this.props.ignoreFocus) { return; } // if onClick is defined from the outside, // just call it if(this.props.onClick) { this.props.onClick(); } this.refs.input.getDOMNode().focus(); this.setState({ isFocused: true }); }, render() { let { leftColumnWidth, rightColumnWidth } = this.props; return ( <div className={classnames('ascribe-panel-wrapper', {'is-focused': this.state.isFocused})}> <div className="ascribe-panel-table" style={{width: leftColumnWidth}}> <div className="ascribe-panel-content"> {this.props.content} </div> </div> <div className="ascribe-panel-table" style={{width: rightColumnWidth}}> <div className="ascribe-panel-content"> {this.props.buttons} </div> </div> </div> ); } }); export default ActionPanel;