@logicflow/dumi-theme-simple
Version:
Simple website theme based on dumi2.
85 lines (84 loc) • 3.88 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import React from 'react';
import cx from 'classnames';
import { map, size } from 'lodash-es';
import { Link, useLocale } from 'dumi';
import { Dropdown } from 'antd';
import { DownOutlined, LinkOutlined } from '@ant-design/icons';
import { getNavCategory } from "./utils";
import styles from "./index.module.less";
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
/**
* Header 中的导航菜单
*/
export var Navs = function Navs(_ref) {
var navs = _ref.navs,
path = _ref.path;
var locale = useLocale();
return /*#__PURE__*/_jsx(_Fragment, {
children: navs.map(function (nav) {
var title = nav.title[locale.id];
var href = '';
var className = '';
if (nav.slug) {
href = nav.slug.startsWith('http') ? nav.slug : "/".concat(nav.slug);
// 去除 docs 防止新页面 404 和 本页重新刷新。
href = href.replace(/^\/docs(?=\/)/, '');
if (locale.id === 'en' && !href.startsWith('http')) {
href = "/en".concat(href);
}
className = cx('header-menu-item-active', _defineProperty({}, styles.activeItem, getNavCategory(path) === getNavCategory(href)));
}
return size(nav.dropdownItems) ? /*#__PURE__*/_jsx("li", {
className: className,
children: /*#__PURE__*/_jsx(Dropdown, {
className: styles.ecoSystems,
placement: "bottom",
menu: {
items: map(nav.dropdownItems, function (_ref2) {
var name = _ref2.name,
url = _ref2.url,
target = _ref2.target;
var displayName = name[locale.id];
return {
key: url,
label: target === '_blank' || url.startsWith('http') ? /*#__PURE__*/_jsxs("a", {
href: url,
target: "_blank",
rel: "noreferrer",
children: [displayName, /*#__PURE__*/_jsx(LinkOutlined, {})]
}) : /*#__PURE__*/_jsx(Link, {
to: url,
children: displayName
})
};
})
},
children: /*#__PURE__*/_jsxs("span", {
children: [title, /*#__PURE__*/_jsx(DownOutlined, {
style: {
marginLeft: '6px'
}
})]
})
})
}, title) : /*#__PURE__*/_jsx("li", {
className: className,
children: nav.target === '_blank' || href.startsWith('http') ? /*#__PURE__*/_jsxs("a", {
href: href,
target: "_blank",
rel: "noreferrer",
children: [title, /*#__PURE__*/_jsx(LinkOutlined, {})]
}) : /*#__PURE__*/_jsx(Link, {
to: href,
children: title
})
}, title);
})
});
};