UNPKG

antd

Version:

An enterprise-class UI design language and React-based implementation

154 lines (126 loc) 5.64 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var React = _interopRequireWildcard(_react); var _propTypes = require('prop-types'); var PropTypes = _interopRequireWildcard(_propTypes); var _warning = require('../_util/warning'); var _warning2 = _interopRequireDefault(_warning); var _BreadcrumbItem = require('./BreadcrumbItem'); var _BreadcrumbItem2 = _interopRequireDefault(_BreadcrumbItem); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function getBreadcrumbName(route, params) { if (!route.breadcrumbName) { return null; } var paramsKeys = Object.keys(params).join('|'); var name = route.breadcrumbName.replace(new RegExp(':(' + paramsKeys + ')', 'g'), function (replacement, key) { return params[key] || replacement; }); return name; } function defaultItemRender(route, params, routes, paths) { var isLastItem = routes.indexOf(route) === routes.length - 1; var name = getBreadcrumbName(route, params); return isLastItem ? React.createElement( 'span', null, name ) : React.createElement( 'a', { href: '#/' + paths.join('/') }, name ); } var Breadcrumb = function (_React$Component) { (0, _inherits3['default'])(Breadcrumb, _React$Component); function Breadcrumb() { (0, _classCallCheck3['default'])(this, Breadcrumb); return (0, _possibleConstructorReturn3['default'])(this, (Breadcrumb.__proto__ || Object.getPrototypeOf(Breadcrumb)).apply(this, arguments)); } (0, _createClass3['default'])(Breadcrumb, [{ key: 'componentDidMount', value: function componentDidMount() { var props = this.props; (0, _warning2['default'])(!('linkRender' in props || 'nameRender' in props), '`linkRender` and `nameRender` are removed, please use `itemRender` instead, ' + 'see: https://u.ant.design/item-render.'); } }, { key: 'render', value: function render() { var crumbs = void 0; var _props = this.props, separator = _props.separator, prefixCls = _props.prefixCls, style = _props.style, className = _props.className, routes = _props.routes, _props$params = _props.params, params = _props$params === undefined ? {} : _props$params, children = _props.children, _props$itemRender = _props.itemRender, itemRender = _props$itemRender === undefined ? defaultItemRender : _props$itemRender; if (routes && routes.length > 0) { var paths = []; crumbs = routes.map(function (route) { route.path = route.path || ''; var path = route.path.replace(/^\//, ''); Object.keys(params).forEach(function (key) { path = path.replace(':' + key, params[key]); }); if (path) { paths.push(path); } return React.createElement( _BreadcrumbItem2['default'], { separator: separator, key: route.breadcrumbName || path }, itemRender(route, params, routes, paths) ); }); } else if (children) { crumbs = React.Children.map(children, function (element, index) { if (!element) { return element; } (0, _warning2['default'])(element.type && element.type.__ANT_BREADCRUMB_ITEM, 'Breadcrumb only accepts Breadcrumb.Item as it\'s children'); return (0, _react.cloneElement)(element, { separator: separator, key: index }); }); } return React.createElement( 'div', { className: (0, _classnames2['default'])(className, prefixCls), style: style }, crumbs ); } }]); return Breadcrumb; }(React.Component); exports['default'] = Breadcrumb; Breadcrumb.defaultProps = { prefixCls: 'ant-breadcrumb', separator: '/' }; Breadcrumb.propTypes = { prefixCls: PropTypes.string, separator: PropTypes.node, routes: PropTypes.array, params: PropTypes.object, linkRender: PropTypes.func, nameRender: PropTypes.func }; module.exports = exports['default'];