UNPKG

cyber-web-ui

Version:
124 lines (123 loc) 4.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _icon = _interopRequireDefault(require("../icon")); var _history = require("../_utils/history.js"); var _config = require("../_utils/config.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PageLabel = (0, _vue.defineComponent)({ name: 'CPageLabel', props: { // 标题 title: { type: String, default: "标题" }, // 提示 tips: { type: String, default: "" }, // 图标 icon: { type: String, default: "" }, // 显示顶部导航栏 showHeader: { type: Boolean, default: false }, // 默认返回路径 back: { type: String, default: '' }, // 文档链接 documentLink: String, // 文档提示文本 documentText: { type: String, default: '了解更多' } }, setup: function setup(props, _ref) { var attrs = _ref.attrs, slots = _ref.slots, emit = _ref.emit, expose = _ref.expose; var documentLink = (0, _vue.computed)(function () { if (!props.documentLink) return; if (/^http(s?):\/\//.test(props.documentLink)) return props.documentLink; return _config.DOCUMENT_ADDRESS + props.documentLink; }); function backHandler() { // 若有自定义返回方法,则调用该方法 if (props.onBack) { props.onBack(); return; } // 默认返回方法,若无可返回路径,则跳转到指定返回路径 (0, _history.historyBack)(props.back); } expose({ back: backHandler }); return function () { var _slots$right; function breadcrumbSlot() { var _slots$breadcrumb; return slots.header ? slots.header() : props.showHeader ? (0, _vue.createVNode)("div", { "class": "cyber-page-label-header" }, [(0, _vue.createVNode)(_icon.default, { "icon": "cyber-fanhui", "isSvg": true, "size": "21", "class": "cyber-back-icon", "onClick": backHandler }, null), (_slots$breadcrumb = slots.breadcrumb) === null || _slots$breadcrumb === void 0 ? void 0 : _slots$breadcrumb.call(slots)]) : undefined; } function iconSlot() { var _slots$icon; return slots.icon ? (_slots$icon = slots.icon) === null || _slots$icon === void 0 ? void 0 : _slots$icon.call(slots) : (0, _vue.createVNode)(_icon.default, { "isSvg": true, "icon": props.icon, "size": "64" }, null); } function titleSlot() { var _slots$title; return (0, _vue.createVNode)("div", { "class": "cyber-page-label-title" }, [slots.title ? (_slots$title = slots.title) === null || _slots$title === void 0 ? void 0 : _slots$title.call(slots) : props.title]); } function tipsSlot() { return slots.tips || props.tips ? (0, _vue.createVNode)("div", { "class": "cyber-page-label-tips" }, [slots.tips ? slots.tips() : props.tips, documentLink.value ? (0, _vue.createVNode)("a", { "href": documentLink.value, "target": "_blank", "class": "document_link" }, [props.documentText]) : undefined]) : undefined; } return (0, _vue.createVNode)("div", { "class": "cyber-page-label" }, [breadcrumbSlot(), (0, _vue.createVNode)("div", { "class": "cyber-page-label-body" }, [(0, _vue.createVNode)("div", { "class": "cyber-page-label-body-left" }, [(0, _vue.createVNode)("div", { "class": "title-icon" }, [iconSlot()]), (0, _vue.createVNode)("div", { "class": "cyber-page-label-content" }, [titleSlot(), tipsSlot()])]), (_slots$right = slots.right) === null || _slots$right === void 0 ? void 0 : _slots$right.call(slots)])]); }; } }); PageLabel.install = function (app) { app.component(PageLabel.name, PageLabel); }; var _default = exports.default = PageLabel;