shared-layout-components 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -46
- package/dist/index.esm.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/styles.css +9 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,33 +41,54 @@ npm install shared-layout-components
|
|
|
41
41
|
|
|
42
42
|
## 快速开始
|
|
43
43
|
|
|
44
|
-
###
|
|
44
|
+
### 1. 初始化 Pinia 和提供 Router
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
// main.js
|
|
48
|
+
import { createApp } from 'vue';
|
|
49
|
+
import { createPinia } from 'pinia';
|
|
50
|
+
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
|
|
51
|
+
import Antd from 'ant-design-vue';
|
|
52
|
+
import 'ant-design-vue/dist/reset.css';
|
|
53
|
+
import App from './App.vue';
|
|
54
|
+
import router from './router';
|
|
55
|
+
import SharedLayoutComponents from 'shared-layout-components';
|
|
56
|
+
|
|
57
|
+
const app = createApp(App);
|
|
58
|
+
|
|
59
|
+
// 初始化 Pinia(带持久化插件)
|
|
60
|
+
const pinia = createPinia();
|
|
61
|
+
pinia.use(piniaPluginPersistedstate);
|
|
62
|
+
app.use(pinia);
|
|
63
|
+
|
|
64
|
+
app.use(SharedLayoutComponents);
|
|
65
|
+
app.use(Antd);
|
|
66
|
+
app.use(router);
|
|
67
|
+
|
|
68
|
+
// 提供 router 和 route 给组件库使用(实现路由联动)
|
|
69
|
+
app.provide('router', router);
|
|
70
|
+
app.provide('route', router.currentRoute);
|
|
71
|
+
|
|
72
|
+
app.mount('#app');
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 2. 使用 PageLayout 组件
|
|
45
76
|
|
|
46
77
|
```vue
|
|
47
78
|
<template>
|
|
48
79
|
<PageLayout
|
|
49
|
-
ref="pageLayoutRef"
|
|
50
80
|
:menuData="menuData"
|
|
51
81
|
:systemTitle="systemTitle"
|
|
52
|
-
@menu-click="handleMenuClick"
|
|
53
|
-
@tab-change="handleTabChange"
|
|
54
82
|
>
|
|
55
|
-
<!--主内容区域-->
|
|
56
83
|
<template #default="{ activeTab }">
|
|
57
84
|
<router-view></router-view>
|
|
58
85
|
</template>
|
|
59
|
-
<!-- 面包屑右侧区域内容 -->
|
|
60
|
-
<template #breadcrumbExtra></template>
|
|
61
86
|
</PageLayout>
|
|
62
87
|
</template>
|
|
63
88
|
|
|
64
89
|
<script setup>
|
|
65
|
-
import { ref
|
|
66
|
-
import {
|
|
67
|
-
|
|
68
|
-
const router = useRouter();
|
|
69
|
-
const route = useRoute();
|
|
70
|
-
const pageLayoutRef = ref(null);
|
|
90
|
+
import { ref } from 'vue';
|
|
91
|
+
import { PageLayout } from 'shared-layout-components';
|
|
71
92
|
|
|
72
93
|
const systemTitle = ref('管理系统');
|
|
73
94
|
|
|
@@ -88,42 +109,15 @@ const menuData = ref([
|
|
|
88
109
|
]
|
|
89
110
|
}
|
|
90
111
|
]);
|
|
91
|
-
|
|
92
|
-
// 监听路由变化,自动添加标签页
|
|
93
|
-
watchEffect(() => {
|
|
94
|
-
const path = route.path;
|
|
95
|
-
const layout = pageLayoutRef.value;
|
|
96
|
-
|
|
97
|
-
if (layout && path && path !== '/') {
|
|
98
|
-
const menuKey = findMenuKeyByPath(menuData.value, path);
|
|
99
|
-
if (menuKey) {
|
|
100
|
-
layout.addTabByMenuKey(menuKey);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
function findMenuKeyByPath(items, targetPath) {
|
|
106
|
-
for (const item of items) {
|
|
107
|
-
if (item.path === targetPath) return item.key;
|
|
108
|
-
if (item.children) {
|
|
109
|
-
const found = findMenuKeyByPath(item.children, targetPath);
|
|
110
|
-
if (found) return found;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const handleMenuClick = (item) => {
|
|
117
|
-
if (item.path) router.push(item.path);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const handleTabChange = (key) => {
|
|
121
|
-
const tab = pageLayoutRef.value?.tabsList?.find(t => t.key === key);
|
|
122
|
-
if (tab?.path) router.push(tab.path);
|
|
123
|
-
};
|
|
124
112
|
</script>
|
|
125
113
|
```
|
|
126
114
|
|
|
115
|
+
组件会自动处理:
|
|
116
|
+
- 路由变化时自动添加对应标签页
|
|
117
|
+
- 点击菜单时自动跳转路由
|
|
118
|
+
- 切换标签页时自动跳转路由
|
|
119
|
+
- 关闭标签页时自动切换到相邻标签页并跳转
|
|
120
|
+
|
|
127
121
|
## API
|
|
128
122
|
|
|
129
123
|
### PageLayout Props
|
|
@@ -136,6 +130,7 @@ const handleTabChange = (key) => {
|
|
|
136
130
|
| showTabs | 是否显示标签页 | `Boolean` | `true` |
|
|
137
131
|
| showBreadcrumb | 是否显示面包屑 | `Boolean` | `true` |
|
|
138
132
|
| autoAddTab | 是否自动添加标签页 | `Boolean` | `true` |
|
|
133
|
+
| enableRouterSync | 是否启用路由联动 | `Boolean` | `true` |
|
|
139
134
|
| defaultTabs | 默认标签页列表 | `Array` | `[]` |
|
|
140
135
|
| homeBreadcrumb | 首页面包屑配置 | `Object` | `{}` |
|
|
141
136
|
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createPinia as e,defineStore as t}from"pinia";import{default as a}from"pinia-plugin-persistedstate";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as u,createElementBlock as o,createElementVNode as l,createVNode as c,normalizeClass as s,openBlock as f,ref as d,renderList as b,renderSlot as v,resolveComponent as p,toDisplayString as m,toRef as y,unref as h,watch as T,withCtx as g,withModifiers as k}from"vue";import{EnvironmentOutlined as w,LeftOutlined as A,RightOutlined as S}from"@ant-design/icons-vue";var C={262(e,t){t.A=(e,t)=>{const a=e.__vccOpts||e;for(const[e,n]of t)a[e]=n;return a}}},_={};function x(e){var t=_[e];if(void 0!==t)return t.exports;var a=_[e]={exports:{}};return C[e](a,a.exports,x),a.exports}x.d=(e,t)=>{for(var a in t)x.o(t,a)&&!x.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})();const D=x.p+"images/icon-ai.14abd0.png",B=x.p+"images/icon-helper.e4bdca.png";function I(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=O(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,o=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return u=e.done,e},e:function(e){o=!0,i=e},f:function(){try{u||null==a.return||a.return()}finally{if(o)throw i}}}}function O(e,t){if(e){if("string"==typeof e)return K(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?K(e,t):void 0}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var j={class:"system-title"},E={class:"menu-wrapper"};const $={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var a=t.expose,n=t.emit,u=e,b=n,v=(r(function(){return u.systemTitle}),d(u.collapsed)),y=d([]),g=d([]);T(function(){return u.collapsed},function(e){v.value=e}),T(v,function(e){b("update:collapsed",e)}),T(function(){return u.activeKey},function(e){if(e){y.value=[e];var t=function(e,a){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=I(e);try{for(i.s();!(n=i.n()).done;){var u=n.value;if(u.key===a)return r;if(u.children){var o=t(u.children,a,u.key);if(null!==o)return o}}}catch(e){i.e(e)}finally{i.f()}return null},a=u.menuData.length>0?u.menuData:k,n=t(a,e);n&&!g.value.includes(n)&&(g.value=[].concat(function(e){if(Array.isArray(e))return K(e)}(r=g.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||O(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[n]))}var r},{immediate:!0});var k=[],w=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=w(e.children)),t})},C=r(function(){var e=u.menuData.length>0?u.menuData:k;return w(e)}),_=function(){v.value=!v.value},x=function(e){var t=e.key,a=(e.item,function(e,t){var n,r=I(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.key===t)return i;if(i.children){var u=a(i.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),n=u.menuData.length>0?u.menuData:k,r=a(n,t);r&&(b("menu-click",r),b("update:activeKey",t))},D=function(e){g.value=e};return T(y,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),a({toggleCollapse:_,expandMenu:function(e){g.value.includes(e)||g.value.push(e)},collapseMenu:function(e){var t=g.value.indexOf(e);t>-1&&g.value.splice(t,1)}}),function(e,t){var a=p("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",j,[l("h1",null,m(u.systemTitle),1)]),l("div",E,[c(a,{selectedKeys:y.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return y.value=e}),openKeys:g.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return g.value=e}),mode:"inline","inline-collapsed":v.value,items:C.value,onClick:x,onOpenChange:D},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:_},[v.value?(f(),i(h(S),{key:1})):(f(),i(h(A),{key:0}))])],2)}}};var L=x(262);const M=(0,L.A)($,[["__scopeId","data-v-3166c85e"]]);var P={class:"tabs-wrapper"},U={class:"tabs-container"},X=["onClick"],V={class:"tab-title"},N=["onClick"];const R=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var a=t.emit,i=e,c=a,v=d(i.activeTab),p=[],y=r(function(){return i.tabs.length>0?i.tabs:p});return T(function(){return i.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),T(y,function(e){e.length>0&&!v.value&&(v.value=e[0].key,c("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return f(),o("div",P,[l("div",U,[(f(!0),o(n,null,b(y.value,function(e){return f(),o("div",{key:e.key,class:s(["tab-item",{active:v.value===e.key}]),onClick:function(t){return function(e){v.value=e.key,c("update:activeTab",e.key),c("tab-click",e)}(e)}},[l("span",V,m(e.title),1),!1!==e.closable&&y.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:k(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,N)):u("",!0)],10,X)}),128))])])}}}),z=(0,L.A)(R,[["__scopeId","data-v-26cdabbe"]]);var F={class:"breadcrumb-wrapper"},q={class:"breadcrumb-content"},G={key:0,class:"breadcrumb-current"},H=["onClick"],J={class:"breadcrumb-extra"};const Q=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var a=t.emit,u=e,s=a,d=r(function(){return u.items.length>0?u.items:[]});return function(e,t){var a=p("a-breadcrumb-item"),r=p("a-breadcrumb");return f(),o("div",F,[l("div",q,[c(h(w),{class:"breadcrumb-icon"}),c(r,null,{default:g(function(){return[(f(!0),o(n,null,b(d.value,function(e,t){return f(),i(a,{key:t},{default:g(function(){return[t===d.value.length-1?(f(),o("span",G,m(e.title),1)):(f(),o("a",{key:1,onClick:function(a){return function(e,t){s("click",{item:e,index:t})}(e,t)}},m(e.title),9,H))]}),_:2},1024)}),128))]}),_:1})]),l("div",J,[v(e.$slots,"default")])])}}}),W=(0,L.A)(Q,[["__scopeId","data-v-06ed9d84"]]);var Y=t("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var a,n=Math.min(t,this.tabs.length-1);this.currentTab=(null===(a=this.tabs[n])||void 0===a?void 0:a.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function Z(e){return function(e){if(Array.isArray(e))return ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||te(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ee(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=te(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,o=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return u=e.done,e},e:function(e){o=!0,i=e},f:function(){try{u||null==a.return||a.return()}finally{if(o)throw i}}}}function te(e,t){if(e){if("string"==typeof e)return ae(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ae(e,t):void 0}}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var ne={key:1,class:"page-layout--breadcrumb"},re={class:"page-layout--content"};const ie=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var a=t.expose,n=t.emit,s=e,b=n,m=Y(),h=d(!1),k=y(m,"currentTab"),w=y(m,"tabs");T(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return m.addTab(e)})},{immediate:!0,deep:!0});var A=r(function(){return m.currentTabData}),S=function(e,t){var a,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=ee(e);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.key===t)return[].concat(Z(n),[{title:i.title||i.label,path:i.path,key:i.key}]);if(i.children&&i.children.length>0){var u=S(i.children,t,[].concat(Z(n),[{title:i.title||i.label,path:i.path,key:i.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},C=function(e,t){var a,n=ee(e);try{for(n.s();!(a=n.n()).done;){var r=a.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var i=C(r.children,t);if(i)return i}}}catch(e){n.e(e)}finally{n.f()}return null},_=r(function(){if(k.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=S(s.menuData,k.value);if(e)return e}var t=w.value.find(function(e){return e.key===k.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),x=function(e){b("menu-click",e),s.autoAddTab&&(m.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),b("update:activeTab",e.key))},I=function(e){m.setCurrentTab(e),b("update:activeTab",e),b("tab-change",e)},O=function(e){b("tab-click",e)},K=function(e){m.removeTab(e.key),b("update:activeTab",k.value),b("tab-close",e)},j=function(e){b("breadcrumb-click",e)};return a({addTab:function(e){m.addTab(e),b("update:activeTab",e.key)},removeTab:function(e){m.removeTab(e),b("update:activeTab",k.value)},getCurrentTab:function(){return m.currentTabData},addTabByMenuKey:function(e){var t=C(s.menuData,e);t&&s.autoAddTab&&(m.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),b("update:activeTab",e))},findMenuItem:C,tabsList:w,currentTab:k,currentTabData:A,breadcrumbList:_,clearTabs:m.clearTabs}),function(t,a){var n=p("a-layout-sider"),r=p("a-layout");return f(),i(r,{class:"page-layout"},{default:g(function(){return[c(n,{class:"page-layout--sider"},{default:g(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),i(M,{key:0,collapsed:h.value,"onUpdate:collapsed":a[0]||(a[0]=function(e){return h.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:k.value,onMenuClick:x},null,8,["collapsed","menuData","systemTitle","activeKey"])):u("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:w.value,activeTab:k.value},function(){return[c(z,{tabs:w.value,activeTab:k.value,"onUpdate:activeTab":I,onTabClick:O,onTabClose:K},null,8,["tabs","activeTab"])]}):u("",!0),e.showBreadcrumb?(f(),o("div",ne,[c(W,{items:_.value,onClick:j},{default:g(function(){return[v(t.$slots,"breadcrumbExtra",{},function(){return[a[1]||(a[1]=l("div",{class:"breadcrumb-extra"},[l("div",{class:"extra-item"},[l("img",{src:D,alt:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("img",{src:B,alt:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):u("",!0),l("div",re,[v(t.$slots,"default",{activeTab:k.value,tabData:A.value})])]}),_:3})]}),_:3})}}}),ue=(0,L.A)(ie,[["__scopeId","data-v-59d80916"]]);var oe=[ue,M,W,z],le=function(t){if(!le.installed){if(le.installed=!0,!t.config.globalProperties.$pinia){var n=function(){var t=e();return t.use(a),t}();t.use(n)}oe.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&le(window.Vue);const ce={install:le,PageLayout:ue,SidebarLayout:M,BreadCrumb:W,Tabs:z};export{W as BreadCrumb,ue as PageLayout,M as SidebarLayout,z as Tabs,ce as default,Y as useTabsStore};
|
|
1
|
+
import{createPinia as e,defineStore as t}from"pinia";import{default as a}from"pinia-plugin-persistedstate";import{Fragment as n,computed as r,createBlock as u,createCommentVNode as i,createElementBlock as l,createElementVNode as o,createVNode as c,inject as s,normalizeClass as f,openBlock as d,ref as b,renderList as v,renderSlot as p,resolveComponent as y,toDisplayString as m,toRef as h,unref as k,watch as T,withCtx as g,withModifiers as w}from"vue";import{EnvironmentOutlined as A,LeftOutlined as S,RightOutlined as C}from"@ant-design/icons-vue";var _={262(e,t){t.A=(e,t)=>{const a=e.__vccOpts||e;for(const[e,n]of t)a[e]=n;return a}}},D={};function x(e){var t=D[e];if(void 0!==t)return t.exports;var a=D[e]={exports:{}};return _[e](a,a.exports,x),a.exports}x.d=(e,t)=>{for(var a in t)x.o(t,a)&&!x.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})();const B=x.p+"images/icon-ai.14abd0.png",I=x.p+"images/icon-helper.e4bdca.png";function K(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=O(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,i=!0,l=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return i=e.done,e},e:function(e){l=!0,u=e},f:function(){try{i||null==a.return||a.return()}finally{if(l)throw u}}}}function O(e,t){if(e){if("string"==typeof e)return j(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?j(e,t):void 0}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E={class:"system-title"},$={class:"menu-wrapper"};const L={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var a=t.expose,n=t.emit,i=e,s=n,v=(r(function(){return i.systemTitle}),b(i.collapsed)),p=b([]),h=b([]);T(function(){return i.collapsed},function(e){v.value=e}),T(v,function(e){s("update:collapsed",e)}),T(function(){return i.activeKey},function(e){if(e){p.value=[e];var t=function(e,a){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=K(e);try{for(u.s();!(n=u.n()).done;){var i=n.value;if(i.key===a)return r;if(i.children){var l=t(i.children,a,i.key);if(null!==l)return l}}}catch(e){u.e(e)}finally{u.f()}return null},a=i.menuData.length>0?i.menuData:g,n=t(a,e);n&&!h.value.includes(n)&&(h.value=[].concat(function(e){if(Array.isArray(e))return j(e)}(r=h.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||O(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[n]))}var r},{immediate:!0});var g=[],w=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=w(e.children)),t})},A=r(function(){var e=i.menuData.length>0?i.menuData:g;return w(e)}),_=function(){v.value=!v.value},D=function(e){var t=e.key,a=(e.item,function(e,t){var n,r=K(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if(u.key===t)return u;if(u.children){var i=a(u.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),n=i.menuData.length>0?i.menuData:g,r=a(n,t);r&&(s("menu-click",r),s("update:activeKey",t))},x=function(e){h.value=e};return T(p,function(e){if(e.length>0){var t=e[0];s("update:activeKey",t)}},{immediate:!1}),a({toggleCollapse:_,expandMenu:function(e){h.value.includes(e)||h.value.push(e)},collapseMenu:function(e){var t=h.value.indexOf(e);t>-1&&h.value.splice(t,1)}}),function(e,t){var a=y("a-menu");return d(),l("div",{class:f(["sidebar",{collapsed:v.value}])},[o("div",E,[o("h1",null,m(i.systemTitle),1)]),o("div",$,[c(a,{selectedKeys:p.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return p.value=e}),openKeys:h.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return h.value=e}),mode:"inline","inline-collapsed":v.value,items:A.value,onClick:D,onOpenChange:x},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),o("div",{class:"collapse-btn",onClick:_},[v.value?(d(),u(k(C),{key:1})):(d(),u(k(S),{key:0}))])],2)}}};var M=x(262);const P=(0,M.A)(L,[["__scopeId","data-v-3166c85e"]]);var R={class:"tabs-wrapper"},U={class:"tabs-container"},X=["onClick"],V={class:"tab-title"},N=["onClick"];const z=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var a=t.emit,u=e,c=a,s=b(u.activeTab),p=[],y=r(function(){return u.tabs.length>0?u.tabs:p});return T(function(){return u.activeTab},function(e){e&&e!==s.value&&(s.value=e)},{immediate:!0}),T(y,function(e){e.length>0&&!s.value&&(s.value=e[0].key,c("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return d(),l("div",R,[o("div",U,[(d(!0),l(n,null,v(y.value,function(e){return d(),l("div",{key:e.key,class:f(["tab-item",{active:s.value===e.key}]),onClick:function(t){return function(e){s.value=e.key,c("update:activeTab",e.key),c("tab-click",e)}(e)}},[o("span",V,m(e.title),1),!1!==e.closable&&y.value.length>1?(d(),l("span",{key:0,class:"tab-close",onClick:w(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,N)):i("",!0)],10,X)}),128))])])}}}),F=(0,M.A)(z,[["__scopeId","data-v-26cdabbe"]]);var q={class:"breadcrumb-wrapper"},G={class:"breadcrumb-content"},H={key:0,class:"breadcrumb-current"},J=["onClick"],Q={class:"breadcrumb-extra"};const W=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var a=t.emit,i=e,s=a,f=r(function(){return i.items.length>0?i.items:[]});return function(e,t){var a=y("a-breadcrumb-item"),r=y("a-breadcrumb");return d(),l("div",q,[o("div",G,[c(k(A),{class:"breadcrumb-icon"}),c(r,null,{default:g(function(){return[(d(!0),l(n,null,v(f.value,function(e,t){return d(),u(a,{key:t},{default:g(function(){return[t===f.value.length-1?(d(),l("span",H,m(e.title),1)):(d(),l("a",{key:1,onClick:function(a){return function(e,t){s("click",{item:e,index:t})}(e,t)}},m(e.title),9,J))]}),_:2},1024)}),128))]}),_:1})]),o("div",Q,[p(e.$slots,"default")])])}}}),Y=(0,M.A)(W,[["__scopeId","data-v-06ed9d84"]]);var Z=t("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var a,n=Math.min(t,this.tabs.length-1);this.currentTab=(null===(a=this.tabs[n])||void 0===a?void 0:a.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function ee(e){return function(e){if(Array.isArray(e))return ne(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ae(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function te(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=ae(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,i=!0,l=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return i=e.done,e},e:function(e){l=!0,u=e},f:function(){try{i||null==a.return||a.return()}finally{if(l)throw u}}}}function ae(e,t){if(e){if("string"==typeof e)return ne(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ne(e,t):void 0}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var re={key:1,class:"page-layout--breadcrumb"},ue={class:"page-layout--content"};const ie=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var a=t.expose,n=t.emit,f=e,v=n,m=s("router",null),k=s("route",null),w=Z(),A=b(!1),S=h(w,"currentTab"),C=h(w,"tabs");T(function(){return f.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return w.addTab(e)})},{immediate:!0,deep:!0});var _=r(function(){return w.currentTabData}),D=function(e,t){var a,n=te(e);try{for(n.s();!(a=n.n()).done;){var r=a.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var u=D(r.children,t);if(u)return u}}}catch(e){n.e(e)}finally{n.f()}return null},x=function(e,t){var a,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=te(e);try{for(r.s();!(a=r.n()).done;){var u=a.value;if(u.key===t)return[].concat(ee(n),[{title:u.title||u.label,path:u.path,key:u.key}]);if(u.children&&u.children.length>0){var i=x(u.children,t,[].concat(ee(n),[{title:u.title||u.label,path:u.path,key:u.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},K=function(e,t){var a,n=te(e);try{for(n.s();!(a=n.n()).done;){var r=a.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var u=K(r.children,t);if(u)return u}}}catch(e){n.e(e)}finally{n.f()}return null};T(function(){var e;return null==k||null===(e=k.value)||void 0===e?void 0:e.path},function(e){if(f.enableRouterSync&&e&&"/"!==e){var t=D(f.menuData,e);t&&R(t)}},{immediate:!0});var O=r(function(){if(S.value===f.homeBreadcrumb.key)return[f.homeBreadcrumb];if(f.menuData&&f.menuData.length>0){var e=x(f.menuData,S.value);if(e)return e}var t=C.value.find(function(e){return e.key===S.value});return t?[f.homeBreadcrumb,{title:t.title,key:t.key}]:[f.homeBreadcrumb]}),j=function(e){v("menu-click",e),f.autoAddTab&&(w.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),v("update:activeTab",e.key)),f.enableRouterSync&&m&&e.path&&m.push(e.path)},E=function(e){if(w.setCurrentTab(e),v("update:activeTab",e),v("tab-change",e),f.enableRouterSync&&m){var t=C.value.find(function(t){return t.key===e});null!=t&&t.path&&m.push(t.path)}},$=function(e){v("tab-click",e)},L=function(e){if(w.removeTab(e.key),v("update:activeTab",S.value),v("tab-close",e),f.enableRouterSync&&m){var t=w.currentTabData;null!=t&&t.path&&m.push(t.path)}},M=function(e){v("breadcrumb-click",e)},R=function(e){var t=K(f.menuData,e);t&&f.autoAddTab&&(w.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),v("update:activeTab",e))};return a({addTab:function(e){w.addTab(e),v("update:activeTab",e.key)},removeTab:function(e){w.removeTab(e),v("update:activeTab",S.value)},getCurrentTab:function(){return w.currentTabData},addTabByMenuKey:R,findMenuItem:K,findMenuKeyByPath:D,tabsList:C,currentTab:S,currentTabData:_,breadcrumbList:O,clearTabs:w.clearTabs}),function(t,a){var n=y("a-layout-sider"),r=y("a-layout");return d(),u(r,{class:"page-layout"},{default:g(function(){return[c(n,{class:"page-layout--sider"},{default:g(function(){return[p(t.$slots,"sidebar",{},function(){return[e.showSidebar?(d(),u(P,{key:0,collapsed:A.value,"onUpdate:collapsed":a[0]||(a[0]=function(e){return A.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:S.value,onMenuClick:j},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?p(t.$slots,"tabs",{key:0,tabs:C.value,activeTab:S.value},function(){return[c(F,{tabs:C.value,activeTab:S.value,"onUpdate:activeTab":E,onTabClick:$,onTabClose:L},null,8,["tabs","activeTab"])]}):i("",!0),e.showBreadcrumb?(d(),l("div",re,[c(Y,{items:O.value,onClick:M},{default:g(function(){return[p(t.$slots,"breadcrumbExtra",{},function(){return[a[1]||(a[1]=o("div",{class:"breadcrumb-extra"},[o("div",{class:"extra-item"},[o("img",{src:B,alt:""}),o("p",null,"AI助手")]),o("div",{class:"extra-item"},[o("img",{src:I,alt:""}),o("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):i("",!0),o("div",ue,[p(t.$slots,"default",{activeTab:S.value,tabData:_.value})])]}),_:3})]}),_:3})}}}),le=(0,M.A)(ie,[["__scopeId","data-v-3ae60c08"]]);var oe=[le,P,Y,F],ce=function(t){if(!ce.installed){if(ce.installed=!0,!t.config.globalProperties.$pinia){var n=function(){var t=e();return t.use(a),t}();t.use(n)}oe.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&ce(window.Vue);const se={install:ce,PageLayout:le,SidebarLayout:P,BreadCrumb:Y,Tabs:F};export{Y as BreadCrumb,le as PageLayout,P as SidebarLayout,F as Tabs,se as default,Z as useTabsStore};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue)}(this,(e,t,n,a)=>(()=>{"use strict";var r={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}},166(t){t.exports=e},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=a}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,i),n.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})();var u={};i.d(u,{default:()=>H});var l=i(144),c=i(282),s=i.n(c),d=i(594);const f=i.p+"images/icon-ai.14abd0.png",p=i.p+"images/icon-helper.e4bdca.png";var m=i(166);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=v(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function v(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var h={class:"system-title"},k={class:"menu-wrapper"};const g={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,i=((0,d.computed)(function(){return r.systemTitle}),(0,d.ref)(r.collapsed)),u=(0,d.ref)([]),l=(0,d.ref)([]);(0,d.watch)(function(){return r.collapsed},function(e){i.value=e}),(0,d.watch)(i,function(e){o("update:collapsed",e)}),(0,d.watch)(function(){return r.activeKey},function(e){if(e){u.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=b(e);try{for(o.s();!(a=o.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var u=t(i.children,n,i.key);if(null!==u)return u}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:c,a=t(n,e);a&&!l.value.includes(a)&&(l.value=[].concat(function(e){if(Array.isArray(e))return y(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||v(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var o},{immediate:!0});var c=[],s=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=s(e.children)),t})},f=(0,d.computed)(function(){var e=r.menuData.length>0?r.menuData:c;return s(e)}),p=function(){i.value=!i.value},g=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=b(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var i=n(o.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:c,i=n(a,t);i&&(o("menu-click",i),o("update:activeKey",t))},T=function(e){l.value=e};return(0,d.watch)(u,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:p,expandMenu:function(e){l.value.includes(e)||l.value.push(e)},collapseMenu:function(e){var t=l.value.indexOf(e);t>-1&&l.value.splice(t,1)}}),function(e,t){var n=(0,d.resolveComponent)("a-menu");return(0,d.openBlock)(),(0,d.createElementBlock)("div",{class:(0,d.normalizeClass)(["sidebar",{collapsed:i.value}])},[(0,d.createElementVNode)("div",h,[(0,d.createElementVNode)("h1",null,(0,d.toDisplayString)(r.systemTitle),1)]),(0,d.createElementVNode)("div",k,[(0,d.createVNode)(n,{selectedKeys:u.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return u.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":i.value,items:f.value,onClick:g,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,d.createElementVNode)("div",{class:"collapse-btn",onClick:p},[i.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.RightOutlined),{key:1})):((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.LeftOutlined),{key:0}))])],2)}}};var T=i(262);const w=(0,T.A)(g,[["__scopeId","data-v-3166c85e"]]);var B={class:"tabs-wrapper"},C={class:"tabs-container"},S=["onClick"],E={class:"tab-title"},x=["onClick"];const A=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,d.ref)(a.activeTab),i=[],u=(0,d.computed)(function(){return a.tabs.length>0?a.tabs:i});return(0,d.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,d.watch)(u,function(e){e.length>0&&!o.value&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,d.openBlock)(),(0,d.createElementBlock)("div",B,[(0,d.createElementVNode)("div",C,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(u.value,function(e){return(0,d.openBlock)(),(0,d.createElementBlock)("div",{key:e.key,class:(0,d.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,r("update:activeTab",e.key),r("tab-click",e)}(e)}},[(0,d.createElementVNode)("span",E,(0,d.toDisplayString)(e.title),1),!1!==e.closable&&u.value.length>1?((0,d.openBlock)(),(0,d.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,d.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,x)):(0,d.createCommentVNode)("",!0)],10,S)}),128))])])}}}),V=(0,T.A)(A,[["__scopeId","data-v-26cdabbe"]]);var N={class:"breadcrumb-wrapper"},_={class:"breadcrumb-content"},D={key:0,class:"breadcrumb-current"},I=["onClick"],j={class:"breadcrumb-extra"};const O=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,d.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,d.resolveComponent)("a-breadcrumb-item"),a=(0,d.resolveComponent)("a-breadcrumb");return(0,d.openBlock)(),(0,d.createElementBlock)("div",N,[(0,d.createElementVNode)("div",_,[(0,d.createVNode)((0,d.unref)(m.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,d.createVNode)(a,null,{default:(0,d.withCtx)(function(){return[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(o.value,function(e,t){return(0,d.openBlock)(),(0,d.createBlock)(n,{key:t},{default:(0,d.withCtx)(function(){return[t===o.value.length-1?((0,d.openBlock)(),(0,d.createElementBlock)("span",D,(0,d.toDisplayString)(e.title),1)):((0,d.openBlock)(),(0,d.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,d.toDisplayString)(e.title),9,I))]}),_:2},1024)}),128))]}),_:1})]),(0,d.createElementVNode)("div",j,[(0,d.renderSlot)(e.$slots,"default")])])}}}),K=(0,T.A)(O,[["__scopeId","data-v-06ed9d84"]]);var L=(0,l.defineStore)("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function P(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||M(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=M(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function M(e,t){if(e){if("string"==typeof e)return q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var U={key:1,class:"page-layout--breadcrumb"},X={class:"page-layout--content"};const R=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,i=L(),u=(0,d.ref)(!1),l=(0,d.toRef)(i,"currentTab"),c=(0,d.toRef)(i,"tabs");(0,d.watch)(function(){return r.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return i.addTab(e)})},{immediate:!0,deep:!0});var s=(0,d.computed)(function(){return i.currentTabData}),m=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=$(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var i=m(o.children,t,[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},b=function(e,t){var n,a=$(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=b(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},v=(0,d.computed)(function(){if(l.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(r.menuData&&r.menuData.length>0){var e=m(r.menuData,l.value);if(e)return e}var t=c.value.find(function(e){return e.key===l.value});return t?[r.homeBreadcrumb,{title:t.title,key:t.key}]:[r.homeBreadcrumb]}),y=function(e){o("menu-click",e),r.autoAddTab&&(i.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key))},h=function(e){i.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e)},k=function(e){o("tab-click",e)},g=function(e){i.removeTab(e.key),o("update:activeTab",l.value),o("tab-close",e)},T=function(e){o("breadcrumb-click",e)};return n({addTab:function(e){i.addTab(e),o("update:activeTab",e.key)},removeTab:function(e){i.removeTab(e),o("update:activeTab",l.value)},getCurrentTab:function(){return i.currentTabData},addTabByMenuKey:function(e){var t=b(r.menuData,e);t&&r.autoAddTab&&(i.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))},findMenuItem:b,tabsList:c,currentTab:l,currentTabData:s,breadcrumbList:v,clearTabs:i.clearTabs}),function(t,n){var a=(0,d.resolveComponent)("a-layout-sider"),r=(0,d.resolveComponent)("a-layout");return(0,d.openBlock)(),(0,d.createBlock)(r,{class:"page-layout"},{default:(0,d.withCtx)(function(){return[(0,d.createVNode)(a,{class:"page-layout--sider"},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,d.openBlock)(),(0,d.createBlock)(w,{key:0,collapsed:u.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return u.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:l.value,onMenuClick:y},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,d.createCommentVNode)("",!0)]})]}),_:3}),(0,d.createVNode)(r,{class:"page-layout--main"},{default:(0,d.withCtx)(function(){return[e.showTabs?(0,d.renderSlot)(t.$slots,"tabs",{key:0,tabs:c.value,activeTab:l.value},function(){return[(0,d.createVNode)(V,{tabs:c.value,activeTab:l.value,"onUpdate:activeTab":h,onTabClick:k,onTabClose:g},null,8,["tabs","activeTab"])]}):(0,d.createCommentVNode)("",!0),e.showBreadcrumb?((0,d.openBlock)(),(0,d.createElementBlock)("div",U,[(0,d.createVNode)(K,{items:v.value,onClick:T},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,d.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:f,alt:""}),(0,d.createElementVNode)("p",null,"AI助手")]),(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:p,alt:""}),(0,d.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,d.createCommentVNode)("",!0),(0,d.createElementVNode)("div",X,[(0,d.renderSlot)(t.$slots,"default",{activeTab:l.value,tabData:s.value})])]}),_:3})]}),_:3})}}}),F=(0,T.A)(R,[["__scopeId","data-v-59d80916"]]);var z=[F,w,K,V],G=function(e){if(!G.installed){if(G.installed=!0,!e.config.globalProperties.$pinia){var t=function(){var e=(0,l.createPinia)();return e.use(s()),e}();e.use(t)}z.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&G(window.Vue);const H={install:G,PageLayout:F,SidebarLayout:w,BreadCrumb:K,Tabs:V};return u.default})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue)}(this,(e,t,n,a)=>(()=>{"use strict";var r={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}},166(t){t.exports=e},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=a}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,i),n.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})();var u={};i.d(u,{default:()=>H});var l=i(144),c=i(282),s=i.n(c),d=i(594);const f=i.p+"images/icon-ai.14abd0.png",p=i.p+"images/icon-helper.e4bdca.png";var m=i(166);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=v(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function v(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var h={class:"system-title"},k={class:"menu-wrapper"};const g={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,i=((0,d.computed)(function(){return r.systemTitle}),(0,d.ref)(r.collapsed)),u=(0,d.ref)([]),l=(0,d.ref)([]);(0,d.watch)(function(){return r.collapsed},function(e){i.value=e}),(0,d.watch)(i,function(e){o("update:collapsed",e)}),(0,d.watch)(function(){return r.activeKey},function(e){if(e){u.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=b(e);try{for(o.s();!(a=o.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var u=t(i.children,n,i.key);if(null!==u)return u}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:c,a=t(n,e);a&&!l.value.includes(a)&&(l.value=[].concat(function(e){if(Array.isArray(e))return y(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||v(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var o},{immediate:!0});var c=[],s=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=s(e.children)),t})},f=(0,d.computed)(function(){var e=r.menuData.length>0?r.menuData:c;return s(e)}),p=function(){i.value=!i.value},g=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=b(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var i=n(o.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:c,i=n(a,t);i&&(o("menu-click",i),o("update:activeKey",t))},T=function(e){l.value=e};return(0,d.watch)(u,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:p,expandMenu:function(e){l.value.includes(e)||l.value.push(e)},collapseMenu:function(e){var t=l.value.indexOf(e);t>-1&&l.value.splice(t,1)}}),function(e,t){var n=(0,d.resolveComponent)("a-menu");return(0,d.openBlock)(),(0,d.createElementBlock)("div",{class:(0,d.normalizeClass)(["sidebar",{collapsed:i.value}])},[(0,d.createElementVNode)("div",h,[(0,d.createElementVNode)("h1",null,(0,d.toDisplayString)(r.systemTitle),1)]),(0,d.createElementVNode)("div",k,[(0,d.createVNode)(n,{selectedKeys:u.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return u.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":i.value,items:f.value,onClick:g,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,d.createElementVNode)("div",{class:"collapse-btn",onClick:p},[i.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.RightOutlined),{key:1})):((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.LeftOutlined),{key:0}))])],2)}}};var T=i(262);const w=(0,T.A)(g,[["__scopeId","data-v-3166c85e"]]);var B={class:"tabs-wrapper"},S={class:"tabs-container"},C=["onClick"],E={class:"tab-title"},x=["onClick"];const A=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,d.ref)(a.activeTab),i=[],u=(0,d.computed)(function(){return a.tabs.length>0?a.tabs:i});return(0,d.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,d.watch)(u,function(e){e.length>0&&!o.value&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,d.openBlock)(),(0,d.createElementBlock)("div",B,[(0,d.createElementVNode)("div",S,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(u.value,function(e){return(0,d.openBlock)(),(0,d.createElementBlock)("div",{key:e.key,class:(0,d.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,r("update:activeTab",e.key),r("tab-click",e)}(e)}},[(0,d.createElementVNode)("span",E,(0,d.toDisplayString)(e.title),1),!1!==e.closable&&u.value.length>1?((0,d.openBlock)(),(0,d.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,d.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,x)):(0,d.createCommentVNode)("",!0)],10,C)}),128))])])}}}),V=(0,T.A)(A,[["__scopeId","data-v-26cdabbe"]]);var N={class:"breadcrumb-wrapper"},D={class:"breadcrumb-content"},_={key:0,class:"breadcrumb-current"},j=["onClick"],I={class:"breadcrumb-extra"};const K=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,d.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,d.resolveComponent)("a-breadcrumb-item"),a=(0,d.resolveComponent)("a-breadcrumb");return(0,d.openBlock)(),(0,d.createElementBlock)("div",N,[(0,d.createElementVNode)("div",D,[(0,d.createVNode)((0,d.unref)(m.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,d.createVNode)(a,null,{default:(0,d.withCtx)(function(){return[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(o.value,function(e,t){return(0,d.openBlock)(),(0,d.createBlock)(n,{key:t},{default:(0,d.withCtx)(function(){return[t===o.value.length-1?((0,d.openBlock)(),(0,d.createElementBlock)("span",_,(0,d.toDisplayString)(e.title),1)):((0,d.openBlock)(),(0,d.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,d.toDisplayString)(e.title),9,j))]}),_:2},1024)}),128))]}),_:1})]),(0,d.createElementVNode)("div",I,[(0,d.renderSlot)(e.$slots,"default")])])}}}),O=(0,T.A)(K,[["__scopeId","data-v-06ed9d84"]]);var L=(0,l.defineStore)("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function P(e){return function(e){if(Array.isArray(e))return R(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||$(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=$(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function $(e,t){if(e){if("string"==typeof e)return R(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?R(e,t):void 0}}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var q={key:1,class:"page-layout--breadcrumb"},U={class:"page-layout--content"};const X=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,i=(0,d.inject)("router",null),u=(0,d.inject)("route",null),l=L(),c=(0,d.ref)(!1),s=(0,d.toRef)(l,"currentTab"),m=(0,d.toRef)(l,"tabs");(0,d.watch)(function(){return r.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return l.addTab(e)})},{immediate:!0,deep:!0});var b=(0,d.computed)(function(){return l.currentTabData}),v=function(e,t){var n,a=M(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=v(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},y=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=M(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var i=y(o.children,t,[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},h=function(e,t){var n,a=M(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=h(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null};(0,d.watch)(function(){var e;return null==u||null===(e=u.value)||void 0===e?void 0:e.path},function(e){if(r.enableRouterSync&&e&&"/"!==e){var t=v(r.menuData,e);t&&E(t)}},{immediate:!0});var k=(0,d.computed)(function(){if(s.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(r.menuData&&r.menuData.length>0){var e=y(r.menuData,s.value);if(e)return e}var t=m.value.find(function(e){return e.key===s.value});return t?[r.homeBreadcrumb,{title:t.title,key:t.key}]:[r.homeBreadcrumb]}),g=function(e){o("menu-click",e),r.autoAddTab&&(l.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),r.enableRouterSync&&i&&e.path&&i.push(e.path)},T=function(e){if(l.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),r.enableRouterSync&&i){var t=m.value.find(function(t){return t.key===e});null!=t&&t.path&&i.push(t.path)}},B=function(e){o("tab-click",e)},S=function(e){if(l.removeTab(e.key),o("update:activeTab",s.value),o("tab-close",e),r.enableRouterSync&&i){var t=l.currentTabData;null!=t&&t.path&&i.push(t.path)}},C=function(e){o("breadcrumb-click",e)},E=function(e){var t=h(r.menuData,e);t&&r.autoAddTab&&(l.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){l.addTab(e),o("update:activeTab",e.key)},removeTab:function(e){l.removeTab(e),o("update:activeTab",s.value)},getCurrentTab:function(){return l.currentTabData},addTabByMenuKey:E,findMenuItem:h,findMenuKeyByPath:v,tabsList:m,currentTab:s,currentTabData:b,breadcrumbList:k,clearTabs:l.clearTabs}),function(t,n){var a=(0,d.resolveComponent)("a-layout-sider"),r=(0,d.resolveComponent)("a-layout");return(0,d.openBlock)(),(0,d.createBlock)(r,{class:"page-layout"},{default:(0,d.withCtx)(function(){return[(0,d.createVNode)(a,{class:"page-layout--sider"},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,d.openBlock)(),(0,d.createBlock)(w,{key:0,collapsed:c.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return c.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:s.value,onMenuClick:g},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,d.createCommentVNode)("",!0)]})]}),_:3}),(0,d.createVNode)(r,{class:"page-layout--main"},{default:(0,d.withCtx)(function(){return[e.showTabs?(0,d.renderSlot)(t.$slots,"tabs",{key:0,tabs:m.value,activeTab:s.value},function(){return[(0,d.createVNode)(V,{tabs:m.value,activeTab:s.value,"onUpdate:activeTab":T,onTabClick:B,onTabClose:S},null,8,["tabs","activeTab"])]}):(0,d.createCommentVNode)("",!0),e.showBreadcrumb?((0,d.openBlock)(),(0,d.createElementBlock)("div",q,[(0,d.createVNode)(O,{items:k.value,onClick:C},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,d.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:f,alt:""}),(0,d.createElementVNode)("p",null,"AI助手")]),(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:p,alt:""}),(0,d.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,d.createCommentVNode)("",!0),(0,d.createElementVNode)("div",U,[(0,d.renderSlot)(t.$slots,"default",{activeTab:s.value,tabData:b.value})])]}),_:3})]}),_:3})}}}),F=(0,T.A)(X,[["__scopeId","data-v-3ae60c08"]]);var z=[F,w,O,V],G=function(e){if(!G.installed){if(G.installed=!0,!e.config.globalProperties.$pinia){var t=function(){var e=(0,l.createPinia)();return e.use(s()),e}();e.use(t)}z.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&G(window.Vue);const H={install:G,PageLayout:F,SidebarLayout:w,BreadCrumb:O,Tabs:V};return u.default})());
|
package/dist/styles.css
CHANGED
|
@@ -231,12 +231,12 @@
|
|
|
231
231
|
color: #B3B3B3;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
.page-layout[data-v-
|
|
234
|
+
.page-layout[data-v-3ae60c08] {
|
|
235
235
|
height: 100%;
|
|
236
236
|
background-color: #F5F7FA;
|
|
237
237
|
overflow: hidden;
|
|
238
238
|
}
|
|
239
|
-
.page-layout .page-layout--sider[data-v-
|
|
239
|
+
.page-layout .page-layout--sider[data-v-3ae60c08] {
|
|
240
240
|
width: auto !important;
|
|
241
241
|
max-width: none !important;
|
|
242
242
|
min-width: auto !important;
|
|
@@ -245,23 +245,23 @@
|
|
|
245
245
|
height: 100%;
|
|
246
246
|
overflow-y: auto;
|
|
247
247
|
}
|
|
248
|
-
.page-layout .page-layout--main[data-v-
|
|
248
|
+
.page-layout .page-layout--main[data-v-3ae60c08] {
|
|
249
249
|
display: flex;
|
|
250
250
|
flex-direction: column;
|
|
251
251
|
height: 100%;
|
|
252
252
|
background: #FFFFFF;
|
|
253
253
|
overflow: hidden;
|
|
254
254
|
}
|
|
255
|
-
.page-layout .page-layout--breadcrumb[data-v-
|
|
255
|
+
.page-layout .page-layout--breadcrumb[data-v-3ae60c08] {
|
|
256
256
|
flex-shrink: 0;
|
|
257
257
|
padding: 0 24px;
|
|
258
258
|
background: #fff;
|
|
259
259
|
}
|
|
260
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-
|
|
260
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-3ae60c08] {
|
|
261
261
|
display: flex;
|
|
262
262
|
align-items: center;
|
|
263
263
|
}
|
|
264
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-
|
|
264
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-3ae60c08] {
|
|
265
265
|
display: flex;
|
|
266
266
|
align-items: center;
|
|
267
267
|
font-size: 12px;
|
|
@@ -270,15 +270,15 @@
|
|
|
270
270
|
margin-left: 10px;
|
|
271
271
|
cursor: pointer;
|
|
272
272
|
}
|
|
273
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-
|
|
273
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-3ae60c08] {
|
|
274
274
|
width: 12px;
|
|
275
275
|
height: 12px;
|
|
276
276
|
margin-right: 3px;
|
|
277
277
|
}
|
|
278
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-
|
|
278
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-3ae60c08] {
|
|
279
279
|
margin-bottom: 0;
|
|
280
280
|
}
|
|
281
|
-
.page-layout .page-layout--content[data-v-
|
|
281
|
+
.page-layout .page-layout--content[data-v-3ae60c08] {
|
|
282
282
|
flex: 1;
|
|
283
283
|
overflow: auto;
|
|
284
284
|
padding: 0;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"shared-layout-components","version":"1.0.
|
|
1
|
+
{"name":"shared-layout-components","version":"1.0.9","description":"基于 Vue3 和 Ant Design Vue 的公共布局组件库","main":"dist/index.umd.js","module":"dist/index.esm.js","unpkg":"dist/index.umd.js","jsdelivr":"dist/index.umd.js","types":"dist/types/index.d.ts","keywords":["vue3","components","layout","ant-design-vue","sidebar","tabs","breadcrumb","admin"],"author":"","license":"MIT","files":["dist","README.md"],"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","dev":"webpack serve --config webpack.dev.config.js","lint":"eslint src/**/*.{js,vue}","prepublishOnly":"npx rimraf dist && npm run build"},"peerDependencies":{"@ant-design/icons-vue":"^7.0.0","ant-design-vue":"^4.2.6","vue":"^3.3.4","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.0.0"},"devDependencies":{"@ant-design/icons-vue":"^7.0.0","@babel/core":"^7.23.5","@babel/preset-env":"^7.23.5","ant-design-vue":"^4.2.6","babel-loader":"^9.1.3","core-js":"^3.33.3","cross-env":"^7.0.3","css-loader":"^6.8.1","html-webpack-plugin":"^5.6.6","less":"^4.2.0","less-loader":"^11.1.4","mini-css-extract-plugin":"^2.7.6","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.7.1","style-loader":"^3.3.3","vue":"^3.3.4","vue-loader":"^17.3.1","vue-router":"^4.6.4","webpack":"^5.89.0","webpack-cli":"^5.1.4","webpack-dev-server":"^4.15.1"},"repository":{"type":"git","url":""},"bugs":{"url":""},"homepage":""}
|