UNPKG

@lvxiaowu/antd4

Version:

antd4-components

78 lines (67 loc) 2.78 kB
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)); }