touchstonejs-ui
Version:
React.js UI components for the TouchstoneJS platform http://touchstonejs.io
67 lines (59 loc) • 1.58 kB
JavaScript
'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
);
}
});