UNPKG

touchstonejs-ui

Version:

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

67 lines (59 loc) 1.58 kB
'use strict'; var classnames = require('classnames'); var Item = require('./Item'); var ItemInner = require('./ItemInner'); var ItemNote = require('./ItemNote'); var ItemTitle = require('./ItemTitle'); var React = require('react'); var Tappable = require('react-tappable'); module.exports = React.createClass({ displayName: 'RadioList', propTypes: { options: React.PropTypes.array, value: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.number]), icon: React.PropTypes.string, onChange: React.PropTypes.func }, onChange: function onChange(value) { this.props.onChange(value); }, render: function render() { var self = this; var options = this.props.options.map(function (op, i) { var iconClassname = classnames('item-icon primary', op.icon); var checkMark = op.value === self.props.value ? React.createElement(ItemNote, { type: 'primary', icon: 'ion-checkmark' }) : null; var icon = op.icon ? React.createElement( 'div', { className: 'item-media' }, React.createElement('span', { className: iconClassname }) ) : null; function onChange() { self.onChange(op.value); } return React.createElement( Tappable, { key: 'option-' + i, onTap: onChange }, React.createElement( Item, { key: 'option-' + i, onTap: onChange }, icon, React.createElement( ItemInner, null, React.createElement( ItemTitle, null, op.label ), checkMark ) ) ); }); return React.createElement( 'div', null, options ); } });