UNPKG

generator-bingo-dig-h5

Version:

Bingo-dig-h5 generator by BINGO.DIG

134 lines (109 loc) 3.21 kB
var React = require('react'); var Classable = require('../../mixins/classable'); var FontIcon = require('../font-icon'); var Toggle = require('../toggle'); var TouchRipple = require('../ripples/touch-ripple'); var Types = { LINK: 'LINK', SUBHEADER: 'SUBHEADER', NESTED: 'NESTED' }; var MenuItem = React.createClass({ mixins: [Classable], propTypes: { index: React.PropTypes.number.isRequired, iconClassName: React.PropTypes.string, iconRightClassName: React.PropTypes.string, attribute: React.PropTypes.string, number: React.PropTypes.string, data: React.PropTypes.string, toggle: React.PropTypes.bool, disabled: React.PropTypes.bool, onTouchTap: React.PropTypes.func, onClick: React.PropTypes.func, onToggle: React.PropTypes.func, selected: React.PropTypes.bool }, statics: { Types: Types }, getDefaultProps: function() { return { toggle: false, disabled: false }; }, render: function() { var classes = this.getClasses('dig-menu-item', { 'dig-is-selected': this.props.selected, 'dig-is-disabled': this.props.disabled }); var icon; var data; var iconRight; var attribute; var number; var toggle; if (this.props.iconClassName) { icon = <FontIcon className={'dig-menu-item-icon ' + this.props.iconClassName} />; }; if (this.props.iconRightClassName) { iconRight = <FontIcon className={'dig-menu-item-icon-right ' + this.props.iconRightClassName} />; }; if (this.props.data) { data = <span className="dig-menu-item-data">{this.props.data}</span>; }; if (this.props.number !== undefined) { number = <span className="dig-menu-item-number">{this.props.number}</span>; }; if (this.props.attribute !== undefined) { attribute = <span className="dig-menu-item-attribute">{this.props.attribute}</span>; }; if (this.props.toggle) { var { toggle, onClick, onToggle, children, label, disabled, ...other } = this.props; toggle = <Toggle {...other} onToggle={this._handleToggle}/>; }; var touchRipple = ( <TouchRipple ref="touchRipple" key="touchRipple" centerRipple={true}> {this.props.children} </TouchRipple> ); var menuItemChildren = disabled ? this.props.children : touchRipple return ( <div key={this.props.index} className={classes} onTouchTap={this._handleTouchTap} onClick={this._handleOnClick}> {icon} {this.props.children} {data} {attribute} {number} {toggle} {iconRight} </div> ); }, _handleTouchTap: function(e) { if (!this.props.disabled && this.props.onTouchTap) this.props.onTouchTap(e, this.props.index); }, _handleOnClick: function(e) { if (!this.props.disabled && this.props.onClick) this.props.onClick(e, this.props.index); }, _handleToggle: function(e, toggled) { if (!this.props.disabled && this.props.onToggle) this.props.onToggle(e, this.props.index, toggled); } }); module.exports = MenuItem;