@6thquake/react-material
Version:
React components that implement Google's Material Design.
179 lines (149 loc) • 5.53 kB
JavaScript
"use strict";
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
var _BreadcrumbItem = _interopRequireDefault(require("../BreadcrumbItem"));
var _colorManipulator = require("../styles/colorManipulator");
var _classnames = _interopRequireDefault(require("classnames"));
var styles = function styles(theme) {
return {
root: (0, _extends2.default)({
'@global a': (0, _extends2.default)({
textDecoration: 'none',
'&:hover': {
color: theme.palette.primary.main
}
}, theme.typography.subheading),
'@global span': {
color: (0, _colorManipulator.fade)(theme.typography.subheading.color, 0.6)
}
}, theme.typography.subheading),
black: {
'@global a': {
'&:hover': {
color: theme.palette.primary.main
},
color: theme.palette.common.black
},
'@global span': {
color: (0, _colorManipulator.fade)(theme.palette.common.black, 0.6)
},
color: theme.palette.common.black
},
white: {
'@global a': {
'&:hover': {
color: theme.palette.common.white
},
color: (0, _colorManipulator.fade)(theme.palette.common.white, 0.8)
},
'@global span': {
color: (0, _colorManipulator.fade)(theme.palette.common.white, 0.6)
},
color: (0, _colorManipulator.fade)(theme.palette.common.white, 0.8)
},
separator: {
padding: '0 0.5em',
fontStyle: 'normal'
}
};
};
var Breadcrumb =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(Breadcrumb, _React$Component);
function Breadcrumb(props) {
var _this;
(0, _classCallCheck2.default)(this, Breadcrumb);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Breadcrumb).call(this, props));
_this.state = {
items: _react.default.Children.toArray(_this.props.children).filter(function (i) {
return i;
})
};
return _this;
}
(0, _createClass2.default)(Breadcrumb, [{
key: "render",
value: function render() {
var _classNames;
var _this$props = this.props,
routes = _this$props.routes,
itemRender = _this$props.itemRender,
separator = _this$props.separator,
params = _this$props.params,
color = _this$props.color,
classes = _this$props.classes;
var items = this.state.items;
var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.white, color === 'white'), (0, _defineProperty2.default)(_classNames, classes.black, color === 'black'), _classNames));
var sep = _react.default.createElement("i", {
className: classes.separator
}, separator);
var extraBreadcrumbItems = routes && routes.length > 0 ? routes.map(function (route, index) {
var path = route.path,
icon = route.icon,
name = route.name;
var last = routes.length === index + 1;
var paths = [route.path];
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_BreadcrumbItem.default, {
key: path,
path: path,
icon: icon,
name: name,
notLink: last,
classes: classes
}, itemRender ? itemRender(route, params, routes, paths) : ''), !last ? sep : '');
}) : items.map(function (child, index) {
var last = items.length === index + 1;
return _react.default.createElement(_react.default.Fragment, null, child, !last ? sep : '');
});
return _react.default.createElement("div", {
className: className
}, extraBreadcrumbItems);
}
}]);
return Breadcrumb;
}(_react.default.Component);
Breadcrumb.propTypes = {
/**
* Custom color of each items
*/
color: _propTypes.default.oneOf(['default', 'black', 'white']),
/**
* Custom item renderer, itemRender(route, params, routes, paths) => ReactNode
*/
itemRender: _propTypes.default.func,
/**
* Routing parameters
*/
params: _propTypes.default.object,
/**
* The routing stack information of router
*/
routes: _propTypes.default.array,
/**
* Custom separator
*/
separator: _propTypes.default.string
};
Breadcrumb.defaultProps = {
separator: '/',
color: 'default'
};
var _default = (0, _withStyles.default)(styles, {
name: 'RMBreadcrumb',
withTheme: true
})(Breadcrumb);
exports.default = _default;