UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

189 lines (161 loc) 5.26 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); 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 _reactDom = _interopRequireDefault(require("react-dom")); var _styles = require("../../styles"); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var styles = function styles(theme) { return { root: { float: 'left' }, title: { textAlign: 'center', display: 'inline-block', lineHeight: '60px', height: '100%', padding: '0 16px', color: '#fff', cursor: 'pointer', fontSize: '14px', '&:hover': { color: theme.palette.primary.main } }, dropDown: { padding: '20px', display: 'none' }, dropDownList: { margin: 0, padding: 0, listStyle: 'none', overflow: 'hidden' }, lightTitle: { color: '#333' }, titleActive: { color: theme.palette.primary.main } }; }; var SubNavBar = /*#__PURE__*/ function (_Component) { (0, _inherits2.default)(SubNavBar, _Component); function SubNavBar() { (0, _classCallCheck2.default)(this, SubNavBar); return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SubNavBar).apply(this, arguments)); } (0, _createClass2.default)(SubNavBar, [{ key: "renderNavItem", value: function renderNavItem(child, i) { var eventKey = this.props.eventKey; var props = { index: i, eventKey: child.key || "".concat(eventKey, "-group-").concat(i), keyPath: [eventKey] }; return _react.default.cloneElement(child, props); } }, { key: "getAnimation", value: function getAnimation() { var hover = this.props.hover; return { display: hover && 'block' }; } }, { key: "componentDidMount", value: function componentDidMount() { var _this = this; var topNav = this.props.topNav; if (!this.topNav) { this.setState({}, function () { _this.topNav = _reactDom.default.findDOMNode(topNav); }); } } }, { key: "renderDropDown", value: function renderDropDown() { var _this2 = this; var _this$props = this.props, classes = _this$props.classes, children = _this$props.children, topNav = _this$props.topNav; return _reactDom.default.createPortal(_react.default.createElement("div", { ref: function ref(e) { return _this2.dropDown = e; }, className: classes.dropDown, style: this.getAnimation() }, _react.default.createElement("ul", { className: classes.dropDownList }, _react.default.Children.map(children, function (c, i) { return _this2.renderNavItem(c, i); }))), topNav.subContainer); } }, { key: "render", value: function render() { var _classNames; var _this$props2 = this.props, title = _this$props2.title, classes = _this$props2.classes, children = _this$props2.children, eventKey = _this$props2.eventKey, active = _this$props2.active, onClick = _this$props2.onClick; var theme = this.context.theme; var classTitle = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.lightTitle, theme === 'light'), (0, _defineProperty2.default)(_classNames, classes.titleActive, theme === 'light' && active), _classNames), classes.title); return _react.default.createElement("li", { className: classes.root }, _react.default.createElement("span", { className: classTitle, onClick: onClick, "top-nav-title": "true", "event-key": eventKey }, title), this.topNav && children && this.renderDropDown()); } }]); return SubNavBar; }(_react.Component); SubNavBar.propTypes = { /** * 唯一标志 */ key: _propTypes.default.string, /** * 点击标题的回掉函数 */ onClick: _propTypes.default.func, /** * @ignore */ selectedKeys: _propTypes.default.array, /** * 标题 */ title: _propTypes.default.node }; SubNavBar.contextTypes = { subNavOpen: _propTypes.default.bool, theme: _propTypes.default.string }; var _default = (0, _styles.withStyles)(styles)(SubNavBar); exports.default = _default;