UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

120 lines (117 loc) 3.73 kB
import { defineComponent, computed, createVNode, isVNode } from 'vue'; import * as icons from 'song-ui-pro-icon'; import '../../button/index.mjs'; import '../../buttonGroup/index.mjs'; import { XIcon } from '../../icon/index.mjs'; import '../../input/index.mjs'; import '../../textarea/index.mjs'; import '../../row/index.mjs'; import '../../col/index.mjs'; import '../../container/index.mjs'; import '../../checkbox/index.mjs'; import '../../switch/index.mjs'; import '../../form/index.mjs'; import '../../message/index.mjs'; import '../../mask/src/mask.mjs'; import '../../modal/index.mjs'; import '../../messageBox/index.mjs'; import '../../drawer/index.mjs'; import '../../badge/index.mjs'; import '../../space/index.mjs'; import '../../image/index.mjs'; import '../../radio/index.mjs'; import '../../divider/index.mjs'; import '../../chat/index.mjs'; import '../../progress/index.mjs'; import '../../upload/index.mjs'; import '../../vTree/index.mjs'; import '../../table/index.mjs'; import '../../tabs/index.mjs'; import '../../menu/index.mjs'; import '../../steps/index.mjs'; import '../index.mjs'; import '../../breadcrumble/index.mjs'; import '../../datePicker/index.mjs'; import '../../tooltip/index.mjs'; import '../../popover/index.mjs'; import '../../timePicker/index.mjs'; import '../../select/index.mjs'; import '../../collapse/index.mjs'; import '../../card/index.mjs'; import '../../timeline/index.mjs'; import '../../tag/index.mjs'; import '../../result/index.mjs'; import '../../sender/index.mjs'; function _isSlot(s) { return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s); } var header = /* @__PURE__ */ 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 = computed(() => !!slots.extra); const hasContent = 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[props.icon].render(); }; return () => { let _slot; return createVNode("div", { "class": "x-page-header" }, [slots.breadcrumb?.() && createVNode("div", { "class": "x-page-header__breadcrumb" }, [slots.breadcrumb()]), createVNode("div", { "class": "x-page-header__main" }, [props.showBack && createVNode("div", { "class": "x-page-header__back", "onClick": handleBack }, [createVNode(XIcon, { "size": "20" }, _isSlot(_slot = // 动态组件渲染 renderIcon()) ? _slot : { default: () => [_slot] }), createVNode("span", { "class": "x-page-header__text" }, [props.backText])]), createVNode("div", { "class": "x-page-header__title" }, [slots.title?.() || props.title]), createVNode("div", { "class": "x-page-header__divider" }, null), hasContent.value && createVNode("div", { "class": "x-page-header__content" }, [slots.content?.() || props.content])]), hasExtra.value && createVNode("div", { "class": "x-page-header__extra" }, [slots.extra()]), slots.default?.()]); }; } }); export { header as default }; //# sourceMappingURL=header.mjs.map