'use strict'; import React from 'react'; import ReactAddons from 'react/addons'; import CollapsibleMixin from 'react-bootstrap/lib/CollapsibleMixin'; import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger'; import Tooltip from 'react-bootstrap/lib/Tooltip'; import classNames from 'classnames'; let PropertyCollapsile = React.createClass({ propTypes: { children: React.PropTypes.arrayOf(React.PropTypes.element), checkboxLabel: React.PropTypes.string, tooltip: React.PropTypes.string }, mixins: [CollapsibleMixin], getInitialState() { return { show: false }; }, getCollapsibleDOMNode(){ return React.findDOMNode(this.refs.panel); }, getCollapsibleDimensionValue(){ return React.findDOMNode(this.refs.panel).scrollHeight; }, handleFocus() { this.refs.checkboxCollapsible.getDOMNode().checked = !this.refs.checkboxCollapsible.getDOMNode().checked; this.setState({ show: this.refs.checkboxCollapsible.getDOMNode().checked }); }, handleChange(event) { this.setState({value: event.target.value}); }, renderChildren() { if(this.state.show) { return ReactAddons.Children.map(this.props.children, (child) => { return ReactAddons.addons.cloneWithProps(child, { onChange: this.handleChange }); }); } }, render() { let tooltip = ; if (this.props.tooltip){ tooltip = ( {this.props.tooltip} ); } let style = this.state.show ? {} : {paddingBottom: 0}; return (
{/* PLEASE LEAVE THE SPACE BETWEEN LABEL and this.props.label */} {this.props.checkboxLabel}
{this.renderChildren()}
); } }); export default PropertyCollapsile;