@6thquake/react-material
Version:
React components that implement Google's Material Design.
189 lines (161 loc) • 5.26 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 _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;