2025-04-02 21:57:33 +08:00

118 lines
4.4 KiB
JavaScript

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import './Header.less';
import 'ant-design-vue/es/layout/style';
import Layout from 'ant-design-vue/es/layout';
import PropTypes from 'ant-design-vue/es/_util/vue-types';
import BaseMenu from './components/RouteMenu/BaseMenu';
import { defaultRenderLogoAntTitle, SiderMenuProps } from './components/SiderMenu/SiderMenu';
import GlobalHeader, { GlobalHeaderProps } from './components/GlobalHeader';
import { VueFragment } from './components';
import { isFun } from './utils/util';
var Header = Layout.Header;
export var HeaderViewProps = _objectSpread({}, GlobalHeaderProps, SiderMenuProps, {
isMobile: PropTypes.bool.def(false),
collapsed: PropTypes.bool,
logo: PropTypes.any,
hasSiderMenu: PropTypes.bool,
autoHideHeader: PropTypes.bool,
menuRender: PropTypes.any,
headerRender: PropTypes.any,
rightContentRender: PropTypes.any,
visible: PropTypes.bool.def(true)
});
var renderContent = function renderContent(h, props) {
var isTop = props.layout === 'topmenu';
var maxWidth = 1200 - 280 - 120;
var contentWidth = props.contentWidth === 'Fixed';
var baseCls = 'ant-pro-top-nav-header';
var logo = props.logo,
title = props.title,
theme = props.theme,
isMobile = props.isMobile,
headerRender = props.headerRender,
rightContentRender = props.rightContentRender,
menuRender = props.menuRender,
menuHeaderRender = props.menuHeaderRender;
var rightContentProps = {
theme: theme,
isTop: isTop,
isMobile: isMobile
};
var defaultDom = h(GlobalHeader, {
props: props
});
if (isTop && !isMobile) {
defaultDom = h("div", {
"class": [baseCls, theme]
}, [h("div", {
"class": ["".concat(baseCls, "-main"), contentWidth ? 'wide' : '']
}, [menuHeaderRender && h("div", {
"class": "".concat(baseCls, "-left")
}, [h("div", {
"class": "".concat(baseCls, "-logo"),
key: "logo",
attrs: {
id: "logo"
}
}, [defaultRenderLogoAntTitle(h, {
logo: logo,
title: title,
menuHeaderRender: menuHeaderRender
})])]), h("div", {
"class": "".concat(baseCls, "-menu"),
style: {
maxWidth: "".concat(maxWidth, "px"),
flex: 1
}
}, [menuRender && (isFun(menuRender) && menuRender(h, props) || menuRender) || h(BaseMenu, {
props: props
})]), isFun(rightContentRender) && rightContentRender(h, rightContentProps) || rightContentRender])]);
}
if (headerRender) {
return headerRender(h, props);
}
return defaultDom;
};
var HeaderView = {
name: 'HeaderView',
props: HeaderViewProps,
render: function render(h) {
var _this$$props = this.$props,
visible = _this$$props.visible,
isMobile = _this$$props.isMobile,
layout = _this$$props.layout,
collapsed = _this$$props.collapsed,
collapsedWidth = _this$$props.collapsedWidth,
siderWidth = _this$$props.siderWidth,
fixedHeader = _this$$props.fixedHeader,
autoHideHeader = _this$$props.autoHideHeader,
hasSiderMenu = _this$$props.hasSiderMenu;
var props = this.$props;
var isTop = layout === 'topmenu';
var needSettingWidth = fixedHeader && hasSiderMenu && !isTop && !isMobile;
var className = {
'ant-pro-fixed-header': fixedHeader,
'ant-pro-top-menu': isTop
};
var calcWidth = collapsed ? collapsedWidth ? collapsedWidth : 80 : siderWidth; // 没有 <></> 暂时代替写法
return visible ? h(VueFragment, [fixedHeader && h(Header), h(Header, {
style: {
padding: 0,
width: needSettingWidth ? "calc(100% - ".concat(calcWidth, "px)") : '100%',
zIndex: 9,
right: fixedHeader ? 0 : undefined
},
"class": className
}, [renderContent(h, props)])]) : null;
}
};
export default HeaderView;