UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

153 lines (118 loc) 4.49 kB
"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;