UNPKG

touchstonejs-ui

Version:

React.js UI components for the TouchstoneJS platform http://touchstonejs.io

77 lines (70 loc) 1.75 kB
'use strict'; var FieldControl = require('./FieldControl'); var FieldLabel = require('./FieldLabel'); var Item = require('./Item'); var ItemInner = require('./ItemInner'); var React = require('react/addons'); module.exports = React.createClass({ displayName: 'LabelSelect', propTypes: { alignTop: React.PropTypes.bool, className: React.PropTypes.string, disabled: React.PropTypes.bool, first: React.PropTypes.bool, label: React.PropTypes.string, options: React.PropTypes.array, value: React.PropTypes.string }, getDefaultProps: function getDefaultProps() { return { className: '' }; }, getInitialState: function getInitialState() { return { value: this.props.value }; }, updateInputValue: function updateInputValue(event) { this.setState({ value: event.target.value }); }, render: function render() { // Map Options var options = this.props.options.map(function (op) { return React.createElement( 'option', { key: 'option-' + op.value, value: op.value }, op.label ); }); return React.createElement( Item, { alignTop: this.props.alignTop, selectable: this.props.disabled, className: this.props.className, component: 'label' }, React.createElement( ItemInner, null, React.createElement( FieldLabel, null, this.props.label ), React.createElement( FieldControl, null, React.createElement( 'select', { value: this.state.value, onChange: this.updateInputValue, className: 'select-field' }, options ), React.createElement( 'div', { className: 'select-field-indicator' }, React.createElement('div', { className: 'select-field-indicator-arrow' }) ) ) ) ); } });