UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

1 lines 5.97 kB
{"version":3,"file":"header.mjs","sources":["../../../../../packages/components/header/src/header.jsx"],"sourcesContent":["import { defineComponent, ref, useSlots, computed } from \"vue\";\r\nimport * as icons from \"song-ui-pro-icon\";\r\n\r\nimport { XIcon } from \"@ui-library/components\";\r\n\r\nexport default defineComponent({\r\n name: \"x-page-header\",\r\n props: {\r\n title: { type: String },\r\n content: String,\r\n backText: { type: String, default: \"返回\" },\r\n showBack: { type: Boolean, default: true },\r\n disableRoute: Boolean,\r\n icon: {\r\n type: [String],\r\n default: \"ChevronLeft\",\r\n },\r\n },\r\n emits: [\"back\"],\r\n\r\n setup(props, { emit, slots }) {\r\n // 响应式处理\r\n const hasExtra = computed(() => !!slots.extra);\r\n const hasContent = computed(() => !!slots.content || props.content);\r\n\r\n // 返回事件处理\r\n const handleBack = () => {\r\n emit(\"back\");\r\n if (!props.disableRoute) {\r\n window.history.length > 1\r\n ? window.history.back()\r\n : (window.location.href = \"/\");\r\n }\r\n };\r\n\r\n // 动态图标渲染\r\n const renderIcon = () => {\r\n if (slots.icon) return slots.icon();\r\n return icons[props.icon].render();\r\n };\r\n\r\n return () => (\r\n <div class=\"x-page-header\">\r\n {/* 面包屑区域 */}\r\n {slots.breadcrumb?.() && (\r\n <div class=\"x-page-header__breadcrumb\">{slots.breadcrumb()}</div>\r\n )}\r\n\r\n <div class=\"x-page-header__main\">\r\n {/* 返回按钮 */}\r\n {props.showBack && (\r\n <div class=\"x-page-header__back\" onClick={handleBack}>\r\n <XIcon size={\"20\"}>\r\n {\r\n // 动态组件渲染\r\n renderIcon()\r\n }\r\n </XIcon>\r\n <span class=\"x-page-header__text\">{props.backText}</span>\r\n </div>\r\n )}\r\n\r\n {/* 标题区 */}\r\n <div class=\"x-page-header__title\">\r\n {slots.title?.() || props.title}\r\n </div>\r\n\r\n {/* 分隔线 */}\r\n <div class=\"x-page-header__divider\" />\r\n\r\n {/* 内容区 */}\r\n {hasContent.value && (\r\n <div class=\"x-page-header__content\">\r\n {slots.content?.() || props.content}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* 扩展区域 */}\r\n {hasExtra.value && (\r\n <div class=\"x-page-header__extra\">{slots.extra()}</div>\r\n )}\r\n\r\n {/* 默认插槽 */}\r\n {slots.default?.()}\r\n </div>\r\n );\r\n },\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","props","title","type","String","content","backText","default","showBack","Boolean","disableRoute","icon","emits","setup","emit","slots","hasExtra","computed","extra","hasContent","handleBack","window","history","length","back","location","href","renderIcon","icons","render","_slot","_createVNode","breadcrumb","XIcon","value"],"mappings":"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"}