UNPKG

plus-pro-components

Version:

Page level components developed based on Element Plus.

216 lines (211 loc) 8.68 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var iconsVue = require('@element-plus/icons-vue'); var elementPlus = require('element-plus'); require('../../../hooks/index.js'); require('../../utils/index.js'); var useLocale = require('../../../hooks/useLocale.js'); var is = require('../../utils/is.js'); const _hoisted_1 = { class: "plus-header__left" }; const _hoisted_2 = ["src"]; const _hoisted_3 = { key: 1, class: "plus-header__title" }; const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode( "div", { class: "plus-header__placeholder" }, null, -1 /* HOISTED */ ); const _hoisted_5 = { class: "plus-header__right" }; const _hoisted_6 = { class: "plus-header__dropdown-area" }; const _hoisted_7 = ["src"]; const _hoisted_8 = { class: "plus-header__username" }; const _hoisted_9 = { key: 0, class: "plus-header-placeholder" }; var _sfc_main = /* @__PURE__ */ vue.defineComponent({ ...{ name: "PlusHeader" }, __name: "index", props: { logo: { default: "https://plus-pro-components.com/logo.png" }, fixed: { type: Boolean, default: false }, title: { default: "PlusProComponents" }, logoutText: { default: "" }, trigger: { default: "click" }, userInfo: { default: () => ({}) }, hasUserInfo: { type: Boolean, default: true }, dropdownList: { default: () => [] }, renderHeaderLeft: {}, renderHeaderRight: {} }, emits: ["clickDropdownItem"], setup(__props, { emit: __emit }) { const props = __props; const emit = __emit; const { t } = useLocale.useLocale(); const logoutItem = { label: props.logoutText || t("plus.header.logout"), value: "logout" }; const handleClickItem = (item) => { emit("clickDropdownItem", item); }; return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock( vue.Fragment, null, [ vue.createVNode(vue.unref(elementPlus.ElHeader), { class: vue.normalizeClass(["plus-header", { "is-fixed": _ctx.fixed }]) }, { default: vue.withCtx(() => [ vue.createElementVNode("div", _hoisted_1, [ _ctx.renderHeaderLeft && vue.unref(is.isFunction)(_ctx.renderHeaderLeft) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.renderHeaderLeft), { key: 0, logo: _ctx.logo, title: _ctx.title }, null, 8, ["logo", "title"])) : _ctx.$slots["header-left"] ? vue.renderSlot(_ctx.$slots, "header-left", { key: 1, logo: _ctx.logo, title: _ctx.title }) : (vue.openBlock(), vue.createElementBlock( vue.Fragment, { key: 2 }, [ _ctx.logo ? (vue.openBlock(), vue.createElementBlock("img", { key: 0, src: _ctx.logo, alt: "", class: "plus-header__logo" }, null, 8, _hoisted_2)) : vue.createCommentVNode("v-if", true), _ctx.title ? (vue.openBlock(), vue.createElementBlock( "h2", _hoisted_3, vue.toDisplayString(_ctx.title), 1 /* TEXT */ )) : vue.createCommentVNode("v-if", true) ], 64 /* STABLE_FRAGMENT */ )) ]), _hoisted_4, vue.createElementVNode("div", _hoisted_5, [ _ctx.renderHeaderRight && vue.unref(is.isFunction)(_ctx.renderHeaderRight) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.renderHeaderRight), { key: 0, "user-info": _ctx.userInfo, title: _ctx.title }, null, 8, ["user-info", "title"])) : _ctx.$slots["header-right"] ? vue.renderSlot(_ctx.$slots, "header-right", { key: 1, userInfo: _ctx.userInfo, title: _ctx.title }) : vue.createCommentVNode("v-if", true), _ctx.hasUserInfo ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDropdown), { key: 2, placement: "bottom-end", trigger: "click" }, { dropdown: vue.withCtx(() => [ vue.createVNode(vue.unref(elementPlus.ElDropdownMenu), { class: "header-dropdown" }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(elementPlus.ElDropdownItem), { onClick: _cache[0] || (_cache[0] = ($event) => handleClickItem(logoutItem)) }, { default: vue.withCtx(() => [ vue.createTextVNode( vue.toDisplayString(_ctx.logoutText || vue.unref(t)("plus.header.logout")), 1 /* TEXT */ ) ]), _: 1 /* STABLE */ }), (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList(_ctx.dropdownList, (item) => { return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDropdownItem), { key: item.value, onClick: ($event) => handleClickItem(item) }, { default: vue.withCtx(() => [ vue.createTextVNode( vue.toDisplayString(item.label), 1 /* TEXT */ ) ]), _: 2 /* DYNAMIC */ }, 1032, ["onClick"]); }), 128 /* KEYED_FRAGMENT */ )) ]), _: 1 /* STABLE */ }) ]), default: vue.withCtx(() => [ vue.createElementVNode("span", _hoisted_6, [ vue.createCommentVNode(" avatar "), _ctx.userInfo.avatar ? (vue.openBlock(), vue.createElementBlock("img", { key: 0, src: _ctx.userInfo.avatar, alt: "", class: "plus-header__avatar" }, null, 8, _hoisted_7)) : (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElIcon), { key: 1, size: 20, class: "plus-header__avatar" }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(iconsVue.User)) ]), _: 1 /* STABLE */ })), vue.createCommentVNode(" username "), vue.createElementVNode( "p", _hoisted_8, vue.toDisplayString(_ctx.userInfo.username || "admin"), 1 /* TEXT */ ), vue.createVNode(vue.unref(elementPlus.ElIcon), { class: "el-icon-caret-bottom el-icon--right" }, { default: vue.withCtx(() => [ vue.createVNode(vue.unref(iconsVue.ArrowDown)) ]), _: 1 /* STABLE */ }) ]) ]), _: 1 /* STABLE */ })) : vue.createCommentVNode("v-if", true) ]) ]), _: 3 /* FORWARDED */ }, 8, ["class"]), _ctx.fixed ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9)) : vue.createCommentVNode("v-if", true) ], 64 /* STABLE_FRAGMENT */ ); }; } }); exports.default = _sfc_main;