ldx-widgets
Version:
widgets
104 lines (94 loc) • 3.03 kB
JavaScript
(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 = React.DOM, 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);