@6thquake/react-material
Version:
React components that implement Google's Material Design.
153 lines (118 loc) • 4.49 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _MenuList = _interopRequireDefault(require("../MenuList"));
var _MenuItem = _interopRequireDefault(require("../MenuItem"));
var _Paper = _interopRequireDefault(require("../Paper"));
var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
var _ListItemIcon = _interopRequireDefault(require("../ListItemIcon"));
var _ListItemText = _interopRequireDefault(require("../ListItemText"));
var _PlayArrow = _interopRequireDefault(require("@material-ui/icons/PlayArrow"));
var styles = function styles(theme) {
return {
menuItem: {
'&:focus': {
backgroundColor: theme.palette.primary.main,
'& $primary, & $icon': {
color: theme.palette.common.white
}
}
},
menuItemSelect: {
backgroundColor: '#eee',
'& $primary, & $icon': {
color: 'blue'
}
},
primary: {},
icon: {}
};
};
/**
* @ignore - internal component.
*/
var CascadeOption =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(CascadeOption, _Component);
function CascadeOption(props) {
var _this;
(0, _classCallCheck2.default)(this, CascadeOption);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CascadeOption).call(this, props));
_this.toMenuItem = function (data, classes) {
var mapper = _this.props.mapper;
var list = data.map(function (item, index) {
var label = item[mapper.label || 'label'];
var value = item[mapper.value || 'value'];
if (typeof mapper.label === 'function') {
label = mapper.label(item, index);
}
if (typeof mapper.value === 'function') {
value = mapper.value(item, index);
}
var hasSub = item.subItems && item.subItems.length > 0;
var checked = _this.props.checkedIndex === index;
return _react.default.createElement(_MenuItem.default, {
key: value,
value: value,
className: checked ? classes.menuItemSelect : '',
onClick: _this.handleItemClick(item, index)
}, _react.default.createElement(_ListItemText.default, {
classes: {
primary: classes.primary
},
inset: true,
primary: label
}), hasSub ? _react.default.createElement(_ListItemIcon.default, {
className: classes.icon
}, _react.default.createElement(_PlayArrow.default, null)) : '');
});
return list;
};
_this.handleItemClick = function (item, index) {
return function (e) {
var info = {
level: _this.props.level,
index: index,
next: _this.props.options[index].subItems || [],
item: _this.props.options
};
_this.props.onChange(info);
};
};
return _this;
}
(0, _createClass2.default)(CascadeOption, [{
key: "render",
value: function render() {
var _this$props = this.props,
classes = _this$props.classes,
options = _this$props.options,
open = _this$props.open;
var t = null;
if (options && options.length > 0 && open) {
t = _react.default.createElement(_Paper.default, null, _react.default.createElement(_MenuList.default, null, this.toMenuItem(options, classes)));
}
return t;
}
}]);
return CascadeOption;
}(_react.Component);
CascadeOption.propTypes = {
classes: _propTypes.default.object.isRequired
};
var _default = (0, _withStyles.default)(styles, {
name: 'RMCascadeOption'
})(CascadeOption);
exports.default = _default;