dumi-theme-antd-style
Version:
dumi-theme-antd-style 是为 dumi2 打造的一款文档站主题包,提供了更加美观、易用的研发与阅读体验
96 lines • 3.05 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { Drawer, Menu } from 'antd';
import { Link } from 'dumi';
import isEqual from 'fast-deep-equal';
import { uniq } from 'lodash';
import { useState } from 'react';
import { Center } from 'react-layout-kit';
import { activePathSel, useSiteStore } from "../../store";
import { useStyles } from "./style";
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var Burger = function Burger() {
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
opened = _useState2[0],
setOpened = _useState2[1];
var _useStyles = useStyles(),
styles = _useStyles.styles,
cx = _useStyles.cx;
var nav = useSiteStore(function (s) {
return s.navData;
}, isEqual);
var sidebar = useSiteStore(function (s) {
return s.sidebar;
}, isEqual);
var activePath = useSiteStore(activePathSel);
var pathname = useSiteStore(function (s) {
return s.location.pathname;
});
return /*#__PURE__*/_jsxs(Center, {
className: styles.container,
onClick: function onClick() {
setOpened(!opened);
},
children: [/*#__PURE__*/_jsx("div", {
className: cx(styles.icon, opened ? styles.active : '')
}), /*#__PURE__*/_jsxs(Drawer, {
open: opened,
placement: 'left',
closeIcon: null,
rootClassName: styles.drawerRoot,
className: styles.drawer,
width: '100vw',
headerStyle: {
display: 'none'
},
bodyStyle: {
padding: 0
},
children: [/*#__PURE__*/_jsx("div", {
style: {
height: 24
},
className: styles.rect
}), /*#__PURE__*/_jsx(Menu, {
mode: 'inline',
selectedKeys: uniq([activePath, "s-".concat(pathname)]),
openKeys: [activePath],
className: styles.menu,
items: nav.map(function (item) {
return {
label: /*#__PURE__*/_jsx(Link, {
to: item.link,
children: item.title
}),
key: item.activePath || item.link,
children: (item.activePath || item.link) === activePath && (sidebar === null || sidebar === void 0 ? void 0 : sidebar.map(function (group) {
return !group.link && {
label: group.title,
type: 'group',
children: group.children.map(function (item) {
return {
label: /*#__PURE__*/_jsx(Link, {
to: item.link,
onClick: function onClick() {
setOpened(false);
},
children: item.title
}),
key: "s-".concat(item.link)
};
})
};
}))
};
})
}), /*#__PURE__*/_jsx("div", {
style: {
flex: 1
},
className: styles.rect
})]
})]
});
};
export default Burger;