UNPKG

ldx-widgets

Version:

widgets

104 lines (94 loc) 3.05 kB
(function() { var PropTypes, React, ReactDOM, ToggleButton, ToggleButtonArray, button, createClass, div, ref1; React = require('react'); createClass = require('create-react-class'); PropTypes = require('prop-types'); ReactDOM = require('react-dom'); ToggleButton = React.createFactory(require('./toggle_button')); ref1 = require('react-dom-factories'), div = ref1.div, button = ref1.button; ToggleButtonArray = createClass({ displayName: 'ToggleButtonArray', propTypes: { options: PropTypes.array.isRequired, positionClass: PropTypes.string, useTabs: PropTypes.bool, compact: PropTypes.bool, isInPopover: PropTypes.bool }, contextTypes: { setTabErrorAnchors: PropTypes.func }, getInitialState: function() { return { activeTab: this.props.value, isInPopover: false }; }, componentDidMount: function() { var anchors, ref, ref2, refName; anchors = {}; ref2 = this.refs; for (refName in ref2) { ref = ref2[refName]; anchors[refName] = ReactDOM.findDOMNode(ref.refs.errorAnchor); } return this.context.setTabErrorAnchors({ anchors: anchors, add: true }); }, componentWillUnmount: function() { var anchors, ref, ref2, refName; anchors = {}; ref2 = this.refs; for (refName in ref2) { ref = ref2[refName]; anchors[refName] = ReactDOM.findDOMNode(ref.refs.errorAnchor); } return this.context.setTabErrorAnchors({ anchors: anchors, add: false }); }, render: function() { var buttons, className, compact, i, index, isInPopover, len, option, options, positionClass, ref2, useTabs, value; ref2 = this.props, options = ref2.options, value = ref2.value, compact = ref2.compact, positionClass = ref2.positionClass, useTabs = ref2.useTabs, isInPopover = ref2.isInPopover; className = 'toggle-array'; if (compact) { className += ' compact'; } if (positionClass != null) { className += " " + positionClass; } buttons = []; for (index = i = 0, len = options.length; i < len; index = ++i) { option = options[index]; buttons.push(ToggleButton({ key: index, ref: option.tabId, useTabs: useTabs, setFormData: this.setFormData, option: option, options: options, selected: option.tabId === value, isInPopover: isInPopover || false })); } return div({ className: className }, buttons); }, setFormData: function(activeTab) { return this.setState({ activeTab: activeTab }, function() { var base; return typeof (base = this.props).onChange === "function" ? base.onChange(activeTab, this.props.detail) : void 0; }); }, getValue: function() { return this.state.activeTab; } }); module.exports = ToggleButtonArray; }).call(this);