song-ui-u
Version:
vue3 + js的PC前端组件库
141 lines (135 loc) • 4.33 kB
JavaScript
;
var vue = require('vue');
var icons = require('song-ui-pro-icon');
require('../../button/index.cjs');
require('../../buttonGroup/index.cjs');
var index = require('../../icon/index.cjs');
require('../../input/index.cjs');
require('../../textarea/index.cjs');
require('../../row/index.cjs');
require('../../col/index.cjs');
require('../../container/index.cjs');
require('../../checkbox/index.cjs');
require('../../switch/index.cjs');
require('../../form/index.cjs');
require('../../message/index.cjs');
require('../../mask/src/mask.cjs');
require('../../modal/index.cjs');
require('../../messageBox/index.cjs');
require('../../drawer/index.cjs');
require('../../badge/index.cjs');
require('../../space/index.cjs');
require('../../image/index.cjs');
require('../../radio/index.cjs');
require('../../divider/index.cjs');
require('../../chat/index.cjs');
require('../../progress/index.cjs');
require('../../upload/index.cjs');
require('../../vTree/index.cjs');
require('../../table/index.cjs');
require('../../tabs/index.cjs');
require('../../menu/index.cjs');
require('../../steps/index.cjs');
require('../index.cjs');
require('../../breadcrumble/index.cjs');
require('../../datePicker/index.cjs');
require('../../tooltip/index.cjs');
require('../../popover/index.cjs');
require('../../timePicker/index.cjs');
require('../../select/index.cjs');
require('../../collapse/index.cjs');
require('../../card/index.cjs');
require('../../timeline/index.cjs');
require('../../tag/index.cjs');
require('../../result/index.cjs');
require('../../sender/index.cjs');
function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var icons__namespace = /*#__PURE__*/_interopNamespaceDefault(icons);
function _isSlot(s) {
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
}
var header = /* @__PURE__ */ vue.defineComponent({
name: "x-page-header",
props: {
title: {
type: String
},
content: String,
backText: {
type: String,
default: "\u8FD4\u56DE"
},
showBack: {
type: Boolean,
default: true
},
disableRoute: Boolean,
icon: {
type: [String],
default: "ChevronLeft"
}
},
emits: ["back"],
setup(props, {
emit,
slots
}) {
const hasExtra = vue.computed(() => !!slots.extra);
const hasContent = vue.computed(() => !!slots.content || props.content);
const handleBack = () => {
emit("back");
if (!props.disableRoute) {
window.history.length > 1 ? window.history.back() : window.location.href = "/";
}
};
const renderIcon = () => {
if (slots.icon) return slots.icon();
return icons__namespace[props.icon].render();
};
return () => {
let _slot;
return vue.createVNode("div", {
"class": "x-page-header"
}, [slots.breadcrumb?.() && vue.createVNode("div", {
"class": "x-page-header__breadcrumb"
}, [slots.breadcrumb()]), vue.createVNode("div", {
"class": "x-page-header__main"
}, [props.showBack && vue.createVNode("div", {
"class": "x-page-header__back",
"onClick": handleBack
}, [vue.createVNode(index.XIcon, {
"size": "20"
}, _isSlot(_slot = // 动态组件渲染
renderIcon()) ? _slot : {
default: () => [_slot]
}), vue.createVNode("span", {
"class": "x-page-header__text"
}, [props.backText])]), vue.createVNode("div", {
"class": "x-page-header__title"
}, [slots.title?.() || props.title]), vue.createVNode("div", {
"class": "x-page-header__divider"
}, null), hasContent.value && vue.createVNode("div", {
"class": "x-page-header__content"
}, [slots.content?.() || props.content])]), hasExtra.value && vue.createVNode("div", {
"class": "x-page-header__extra"
}, [slots.extra()]), slots.default?.()]);
};
}
});
module.exports = header;
//# sourceMappingURL=header.cjs.map