UNPKG

material-ui

Version:

Material Design UI components built with React

56 lines (44 loc) 1.47 kB
var React = require('react'), Classable = require('./mixins/classable.js'), ClickAwayable = require('./mixins/click-awayable'), KeyLine = require('./utils/key-line.js'), Paper = require('./paper.jsx'), Icon = require('./icon.jsx'), Menu = require('./menu.jsx'), MenuItem = require('./menu-item.jsx'); var DropDownIcon = React.createClass({ mixins: [Classable, ClickAwayable], propTypes: { onChange: React.PropTypes.func, menuItems: React.PropTypes.array.isRequired }, getInitialState: function() { return { open: false } }, componentClickAway: function() { this.setState({ open: false }); }, render: function() { var classes = this.getClasses('mui-drop-down-icon', { 'mui-open': this.state.open }); return ( <div className={classes}> <div className="mui-menu-control" onClick={this._onControlClick}> <Icon icon={this.props.icon} /> </div> <Menu ref="menuItems" menuItems={this.props.menuItems} hideable={true} visible={this.state.open} onItemClick={this._onMenuItemClick} /> </div> ); }, _onControlClick: function(e) { this.setState({ open: !this.state.open }); }, _onMenuItemClick: function(e, key, payload) { if (this.props.onChange) this.props.onChange(e, key, payload); this.setState({ open: false }); } }); module.exports = DropDownIcon;