@lvxiaowu/antd4
Version:
antd4-components
78 lines (67 loc) • 2.78 kB
JavaScript
import React from "react";
import { Breadcrumb, Space } from 'antd';
import { useAppLayoutCtx } from '../AppLayout/context';
import { Link, useLocation } from 'react-router-dom';
import cls from 'classnames';
import './style.less';
var Item = Breadcrumb.Item;
function pathEqual(p1, p2) {
if (p1 && p2) {
return p1.split('/').filter(Boolean).join('') === p2.split('/').filter(Boolean).join('');
}
return false;
}
export default function View(_ref) {
var _menuLevel;
var breadcrumb = _ref.breadcrumb,
_ref$showHome = _ref.showHome,
showHome = _ref$showHome === void 0 ? true : _ref$showHome,
children = _ref.children,
extra = _ref.extra,
last = _ref.last,
className = _ref.className,
style = _ref.style,
contentStyle = _ref.contentStyle,
contentClassName = _ref.contentClassName;
var _useAppLayoutCtx = useAppLayoutCtx(),
_useAppLayoutCtx$menu = _useAppLayoutCtx.menuLevel,
menuLevel = _useAppLayoutCtx$menu === void 0 ? [] : _useAppLayoutCtx$menu;
var menuLen = menuLevel.length;
var activeMenuPath = (_menuLevel = menuLevel[menuLen - 1]) === null || _menuLevel === void 0 ? void 0 : _menuLevel.path;
var list = (Array.isArray(breadcrumb) ? breadcrumb : [breadcrumb]).filter(Boolean);
var lastList = (Array.isArray(last) ? last : [last]).filter(Boolean);
var _useLocation = useLocation(),
pathname = _useLocation.pathname;
if (activeMenuPath && !pathEqual(activeMenuPath, pathname) && lastList.length === 0) {
lastList = ['详情'];
}
var defaultBreadcrumb = (menuLen ? menuLevel : ['对应菜单栏未配置']).concat(lastList);
var resBreadcrumb = list.length ? list : defaultBreadcrumb;
return /*#__PURE__*/React.createElement("div", {
style: style,
className: cls('sd-view', className)
}, resBreadcrumb.length > 0 || showHome ? /*#__PURE__*/React.createElement("div", {
className: "breadcrumb"
}, /*#__PURE__*/React.createElement(Breadcrumb, null, showHome && /*#__PURE__*/React.createElement(Item, null, /*#__PURE__*/React.createElement(Link, {
to: "/"
}, "\u4E3B\u9875")), resBreadcrumb.map(function (item, index) {
var _ref2 = item || {},
title = _ref2.title,
path = _ref2.path;
if (typeof item === 'string') {
return /*#__PURE__*/React.createElement(Item, {
key: index
}, item);
}
return /*#__PURE__*/React.createElement(Item, {
key: index
}, path ? /*#__PURE__*/React.createElement(Link, {
to: path
}, title) : title);
})), extra && /*#__PURE__*/React.createElement(Space, {
className: "extra"
}, extra)) : null, /*#__PURE__*/React.createElement("div", {
className: cls('content', contentClassName),
style: contentStyle
}, children));
}