shared-layout-components 1.0.10 → 1.0.12

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 CHANGED
@@ -32,7 +32,6 @@ npm install shared-layout-components
32
32
  ```json
33
33
  {
34
34
  "vue": "^3.3.4",
35
- "vue-router": "^4.0.0",
36
35
  "ant-design-vue": "^4.2.6",
37
36
  "@ant-design/icons-vue": "^7.0.0",
38
37
  "pinia": "^3.0.0",
@@ -42,47 +41,33 @@ npm install shared-layout-components
42
41
 
43
42
  ## 快速开始
44
43
 
45
- ### 1. 定义路由配置
46
-
47
- ```js
48
- // router.js
49
- export const routes = [
50
- {
51
- path: '/',
52
- redirect: '/dashboard'
53
- },
54
- {
55
- path: '/dashboard',
56
- name: 'Dashboard',
57
- component: () => import('./pages/Dashboard.vue'),
58
- meta: { title: '仪表盘' }
59
- },
60
- {
61
- path: '/user/list',
62
- name: 'UserList',
63
- component: () => import('./pages/UserList.vue'),
64
- meta: { title: '用户列表' }
65
- }
66
- ];
67
- ```
68
-
69
- ### 2. 初始化应用
44
+ ### 1. 初始化 Pinia 和提供 Router
70
45
 
71
46
  ```js
72
47
  // main.js
73
48
  import { createApp } from 'vue';
49
+ import { createPinia } from 'pinia';
50
+ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
74
51
  import Antd from 'ant-design-vue';
75
52
  import 'ant-design-vue/dist/reset.css';
76
53
  import App from './App.vue';
77
- import { routes } from './router';
54
+ import router from './router';
78
55
  import SharedLayoutComponents from 'shared-layout-components';
79
56
 
80
57
  const app = createApp(App);
81
58
 
82
- // 使用组件库,传入路由配置
83
- // 组件库会自动创建 router 和 pinia 实例
84
- app.use(SharedLayoutComponents, { routes });
59
+ // 初始化 Pinia(带持久化插件)
60
+ const pinia = createPinia();
61
+ pinia.use(piniaPluginPersistedstate);
62
+ app.use(pinia);
63
+
64
+ app.use(SharedLayoutComponents);
85
65
  app.use(Antd);
66
+ app.use(router);
67
+
68
+ // 提供 router 和 route 给组件库使用(实现路由联动)
69
+ app.provide('router', router);
70
+ app.provide('route', router.currentRoute);
86
71
 
87
72
  app.mount('#app');
88
73
  ```
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{createPinia as e,defineStore as t}from"pinia";import{default as n}from"pinia-plugin-persistedstate";import{Fragment as r,computed as a,createBlock as u,createCommentVNode as i,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 y,toRef as m,unref as h,watch as g,withCtx as k,withModifiers as T}from"vue";import{EnvironmentOutlined as w,LeftOutlined as S,RightOutlined as O}from"@ant-design/icons-vue";import{createRouter as A,createWebHistory as D}from"vue-router";var j={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}}},C={};function _(e){var t=C[e];if(void 0!==t)return t.exports;var n=C[e]={exports:{}};return j[e](n,n.exports,_),n.exports}_.d=(e,t)=>{for(var n in t)_.o(t,n)&&!_.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},_.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(/\/[^\/]+$/,"/"),_.p=e})();const x=_.p+"images/icon-ai.14abd0.png",B=_.p+"images/icon-helper.e4bdca.png";function P(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=I(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function I(e,t){if(e){if("string"==typeof e)return K(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)?K(e,t):void 0}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}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 n=t.expose,r=t.emit,i=e,b=r,v=(a(function(){return i.systemTitle}),d(i.collapsed)),m=d([]),k=d([]);g(function(){return i.collapsed},function(e){v.value=e}),g(v,function(e){b("update:collapsed",e)}),g(function(){return i.activeKey},function(e){if(e){m.value=[e];var t=function(e,n){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=P(e);try{for(u.s();!(r=u.n()).done;){var i=r.value;if(i.key===n)return a;if(i.children){var o=t(i.children,n,i.key);if(null!==o)return o}}}catch(e){u.e(e)}finally{u.f()}return null},n=i.menuData.length>0?i.menuData:T,r=t(n,e);r&&!k.value.includes(r)&&(k.value=[].concat(function(e){if(Array.isArray(e))return K(e)}(a=k.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||I(a)||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.")}(),[r]))}var a},{immediate:!0});var T=[],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=a(function(){var e=i.menuData.length>0?i.menuData:T;return w(e)}),D=function(){v.value=!v.value},j=function(e){var t=e.key,n=(e.item,function(e,t){var r,a=P(e);try{for(a.s();!(r=a.n()).done;){var u=r.value;if(u.key===t)return u;if(u.children){var i=n(u.children,t);if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null}),r=i.menuData.length>0?i.menuData:T,a=n(r,t);a&&(b("menu-click",a),b("update:activeKey",t))},C=function(e){k.value=e};return g(m,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:D,expandMenu:function(e){k.value.includes(e)||k.value.push(e)},collapseMenu:function(e){var t=k.value.indexOf(e);t>-1&&k.value.splice(t,1)}}),function(e,t){var n=p("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",E,[l("h1",null,y(i.systemTitle),1)]),l("div",$,[c(n,{selectedKeys:m.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return m.value=e}),openKeys:k.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return k.value=e}),mode:"inline","inline-collapsed":v.value,items:A.value,onClick:j,onOpenChange:C},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:D},[v.value?(f(),u(h(O),{key:1})):(f(),u(h(S),{key:0}))])],2)}}};var M=_(262);const R=(0,M.A)(L,[["__scopeId","data-v-3166c85e"]]);var U={class:"tabs-wrapper"},X={class:"tabs-container"},V=["onClick"],N={class:"tab-title"},z=["onClick"];const F=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,u=e,c=n,v=d(u.activeTab),p=[],m=a(function(){return u.tabs.length>0?u.tabs:p});return g(function(){return u.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),g(m,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",U,[l("div",X,[(f(!0),o(r,null,b(m.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",N,y(e.title),1),!1!==e.closable&&m.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:T(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,z)):i("",!0)],10,V)}),128))])])}}}),H=(0,M.A)(F,[["__scopeId","data-v-26cdabbe"]]);var W={class:"breadcrumb-wrapper"},q={class:"breadcrumb-content"},G={key:0,class:"breadcrumb-current"},J=["onClick"],Q={class:"breadcrumb-extra"};const Y=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,i=e,s=n,d=a(function(){return i.items.length>0?i.items:[]});return function(e,t){var n=p("a-breadcrumb-item"),a=p("a-breadcrumb");return f(),o("div",W,[l("div",q,[c(h(w),{class:"breadcrumb-icon"}),c(a,null,{default:k(function(){return[(f(!0),o(r,null,b(d.value,function(e,t){return f(),u(n,{key:t},{default:k(function(){return[t===d.value.length-1?(f(),o("span",G,y(e.title),1)):(f(),o("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},y(e.title),9,J))]}),_:2},1024)}),128))]}),_:1})]),l("div",Q,[v(e.$slots,"default")])])}}}),Z=(0,M.A)(Y,[["__scopeId","data-v-06ed9d84"]]);var ee=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 n,r=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[r])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function re(e,t,n){return(t=function(e){var t=function(e){if("object"!=te(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==te(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ae=null,ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ae=A(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach(function(t){re(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:D(t.basePath||""),routes:e},t)),ae},ie=function(){return ae},oe=function(){return ae?ae.currentRoute:null};function le(e){return function(e){if(Array.isArray(e))return fe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||se(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 ce(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=se(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function se(e,t){if(e){if("string"==typeof e)return fe(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)?fe(e,t):void 0}}function fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var de={key:1,class:"page-layout--breadcrumb"},be={class:"page-layout--content"};const ve=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,r=t.emit,s=e,b=r,y=ie(),h=oe(),T=ee(),w=d(!1),S=m(T,"currentTab"),O=m(T,"tabs");g(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return T.addTab(e)})},{immediate:!0,deep:!0});var A=a(function(){return T.currentTabData}),D=function(e,t){var n,r=ce(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.path===t)return a.key;if(a.children&&a.children.length>0){var u=D(a.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},j=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=ce(e);try{for(a.s();!(n=a.n()).done;){var u=n.value;if(u.key===t)return[].concat(le(r),[{title:u.title||u.label,path:u.path,key:u.key}]);if(u.children&&u.children.length>0){var i=j(u.children,t,[].concat(le(r),[{title:u.title||u.label,path:u.path,key:u.key}]));if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null},C=function(e,t){var n,r=ce(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.key===t)return a;if(a.children&&a.children.length>0){var u=C(a.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null};g(function(){var e;return null==h||null===(e=h.value)||void 0===e?void 0:e.path},function(e){if(s.enableRouterSync&&e&&"/"!==e){var t=D(s.menuData,e);t&&L(t)}},{immediate:!0});var _=a(function(){if(S.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=j(s.menuData,S.value);if(e)return e}var t=O.value.find(function(e){return e.key===S.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),P=function(e){b("menu-click",e),s.autoAddTab&&(T.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),b("update:activeTab",e.key)),s.enableRouterSync&&y&&e.path&&y.push(e.path)},I=function(e){if(T.setCurrentTab(e),b("update:activeTab",e),b("tab-change",e),s.enableRouterSync&&y){var t=O.value.find(function(t){return t.key===e});null!=t&&t.path&&y.push(t.path)}},K=function(e){b("tab-click",e)},E=function(e){if(T.removeTab(e.key),b("update:activeTab",S.value),b("tab-close",e),s.enableRouterSync&&y){var t=T.currentTabData;null!=t&&t.path&&y.push(t.path)}},$=function(e){b("breadcrumb-click",e)},L=function(e){var t=C(s.menuData,e);t&&s.autoAddTab&&(T.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),b("update:activeTab",e))};return n({addTab:function(e){T.addTab(e),b("update:activeTab",e.key)},removeTab:function(e){T.removeTab(e),b("update:activeTab",S.value)},getCurrentTab:function(){return T.currentTabData},addTabByMenuKey:L,findMenuItem:C,findMenuKeyByPath:D,tabsList:O,currentTab:S,currentTabData:A,breadcrumbList:_,clearTabs:T.clearTabs}),function(t,n){var r=p("a-layout-sider"),a=p("a-layout");return f(),u(a,{class:"page-layout"},{default:k(function(){return[c(r,{class:"page-layout--sider"},{default:k(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),u(R,{key:0,collapsed:w.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return w.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:S.value,onMenuClick:P},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(a,{class:"page-layout--main"},{default:k(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:O.value,activeTab:S.value},function(){return[c(H,{tabs:O.value,activeTab:S.value,"onUpdate:activeTab":I,onTabClick:K,onTabClose:E},null,8,["tabs","activeTab"])]}):i("",!0),e.showBreadcrumb?(f(),o("div",de,[c(Z,{items:_.value,onClick:$},{default:k(function(){return[v(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=l("div",{class:"breadcrumb-extra"},[l("div",{class:"extra-item"},[l("img",{src:x,alt:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("img",{src:B,alt:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):i("",!0),l("div",be,[v(t.$slots,"default",{activeTab:S.value,tabData:A.value})])]}),_:3})]}),_:3})}}}),pe=(0,M.A)(ve,[["__scopeId","data-v-ad3d51fa"]]);var ye=[pe,R,Z,H],me=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!me.installed){if(me.installed=!0,!t.config.globalProperties.$pinia){var a=function(){var t=e();return t.use(n),t}();t.use(a)}if(r.routes&&r.routes.length>0){var u=ue(r.routes,r.routerOptions||{});t.use(u),t.provide("router",u),t.provide("route",u.currentRoute)}ye.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&me(window.Vue);const he={install:me,PageLayout:pe,SidebarLayout:R,BreadCrumb:Z,Tabs:H};export{Z as BreadCrumb,pe as PageLayout,R as SidebarLayout,H as Tabs,ue as createAppRouter,he as default,oe as useRoute,ie as useRouter,ee as useTabsStore};
1
+ import{createPinia as e,defineStore as t}from"pinia";import{default as n}from"pinia-plugin-persistedstate";import{Fragment as a,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 g,watch as k,withCtx as T,withModifiers as S}from"vue";import{EnvironmentOutlined as w,LeftOutlined as A,RightOutlined as C}from"@ant-design/icons-vue";var _={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},D={};function x(e){var t=D[e];if(void 0!==t)return t.exports;var n=D[e]={exports:{}};return _[e](n,n.exports,x),n.exports}x.d=(e,t)=>{for(var n in t)x.o(t,n)&&!x.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},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 n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=O(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 u,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw u}}}}function O(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}function j(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 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 n=t.expose,a=t.emit,i=e,s=a,v=(r(function(){return i.systemTitle}),b(i.collapsed)),p=b([]),h=b([]);k(function(){return i.collapsed},function(e){v.value=e}),k(v,function(e){s("update:collapsed",e)}),k(function(){return i.activeKey},function(e){if(e){p.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=K(e);try{for(u.s();!(a=u.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var l=t(i.children,n,i.key);if(null!==l)return l}}}catch(e){u.e(e)}finally{u.f()}return null},n=i.menuData.length>0?i.menuData:T,a=t(n,e);a&&!h.value.includes(a)&&(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.")}(),[a]))}var r},{immediate:!0});var T=[],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})},w=r(function(){var e=i.menuData.length>0?i.menuData:T;return S(e)}),_=function(){v.value=!v.value},D=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=K(e);try{for(r.s();!(a=r.n()).done;){var u=a.value;if(u.key===t)return u;if(u.children){var i=n(u.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=i.menuData.length>0?i.menuData:T,r=n(a,t);r&&(s("menu-click",r),s("update:activeKey",t))},x=function(e){h.value=e};return k(p,function(e){if(e.length>0){var t=e[0];s("update:activeKey",t)}},{immediate:!1}),n({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 n=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(n,{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:w.value,onClick:D,onOpenChange:x},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),o("div",{class:"collapse-btn",onClick:_},[v.value?(d(),u(g(C),{key:1})):(d(),u(g(A),{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 n=t.emit,u=e,c=n,s=b(u.activeTab),p=[],y=r(function(){return u.tabs.length>0?u.tabs:p});return k(function(){return u.activeTab},function(e){e&&e!==s.value&&(s.value=e)},{immediate:!0}),k(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(a,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:S(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 n=t.emit,i=e,s=n,f=r(function(){return i.items.length>0?i.items:[]});return function(e,t){var n=y("a-breadcrumb-item"),r=y("a-breadcrumb");return d(),l("div",q,[o("div",G,[c(g(w),{class:"breadcrumb-icon"}),c(r,null,{default:T(function(){return[(d(!0),l(a,null,v(f.value,function(e,t){return d(),u(n,{key:t},{default:T(function(){return[t===f.value.length-1?(d(),l("span",H,m(e.title),1)):(d(),l("a",{key:1,onClick:function(n){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 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 ee(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)||ne(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 n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=ne(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 u,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw u}}}}function ne(e,t){if(e){if("string"==typeof e)return ae(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)?ae(e,t):void 0}}function ae(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 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 n=t.expose,a=t.emit,f=e,v=a,m=s("router",null),g=s("route",null),S=Z(),w=b(!1),A=h(S,"currentTab"),C=h(S,"tabs");k(function(){return f.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return S.addTab(e)})},{immediate:!0,deep:!0});var _=r(function(){return S.currentTabData}),D=function(e,t){var n,a=te(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 u=D(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null},x=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=te(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if(u.key===t)return[].concat(ee(a),[{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(a),[{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 n,a=te(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 u=K(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null};k(function(){var e;return null==g||null===(e=g.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(A.value===f.homeBreadcrumb.key)return[f.homeBreadcrumb];if(f.menuData&&f.menuData.length>0){var e=x(f.menuData,A.value);if(e)return e}var t=C.value.find(function(e){return e.key===A.value});return t?[f.homeBreadcrumb,{title:t.title,key:t.key}]:[f.homeBreadcrumb]}),j=function(e){v("menu-click",e),f.autoAddTab&&(S.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),v("update:activeTab",e.key)),console.log("props.enableRouterSync",f.enableRouterSync),console.log("router",m),console.log("item.path",e.path),f.enableRouterSync&&m&&e.path&&m.push(e.path)},E=function(e){if(S.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(S.removeTab(e.key),v("update:activeTab",A.value),v("tab-close",e),f.enableRouterSync&&m){var t=S.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&&(S.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),v("update:activeTab",e))};return n({addTab:function(e){S.addTab(e),v("update:activeTab",e.key)},removeTab:function(e){S.removeTab(e),v("update:activeTab",A.value)},getCurrentTab:function(){return S.currentTabData},addTabByMenuKey:R,findMenuItem:K,findMenuKeyByPath:D,tabsList:C,currentTab:A,currentTabData:_,breadcrumbList:O,clearTabs:S.clearTabs}),function(t,n){var a=y("a-layout-sider"),r=y("a-layout");return d(),u(r,{class:"page-layout"},{default:T(function(){return[c(a,{class:"page-layout--sider"},{default:T(function(){return[p(t.$slots,"sidebar",{},function(){return[e.showSidebar?(d(),u(P,{key:0,collapsed:w.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return w.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:A.value,onMenuClick:j},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:T(function(){return[e.showTabs?p(t.$slots,"tabs",{key:0,tabs:C.value,activeTab:A.value},function(){return[c(F,{tabs:C.value,activeTab:A.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:T(function(){return[p(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[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:A.value,tabData:_.value})])]}),_:3})]}),_:3})}}}),le=(0,M.A)(ie,[["__scopeId","data-v-a73872fc"]]);var oe=[le,P,Y,F],ce=function(t){if(!ce.installed){if(ce.installed=!0,!t.config.globalProperties.$pinia){var a=function(){var t=e();return t.use(n),t}();t.use(a)}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"),require("vue-router")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue","vue-router"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue"),require("vue-router")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue,e.VueRouter)}(this,(e,t,n,r,a)=>(()=>{"use strict";var o={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},166(t){t.exports=e},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=r},269(e){e.exports=a}},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,u),n.exports}u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;u.g.importScripts&&(e=u.g.location+"");var t=u.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 r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u.p=e})();var l={};u.d(l,{default:()=>re});var c=u(144),s=u(282),d=u.n(s),f=u(594);const p=u.p+"images/icon-ai.14abd0.png",b=u.p+"images/icon-helper.e4bdca.png";var v=u(166);function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=y(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 y(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var g={class:"system-title"},k={class:"menu-wrapper"};const T={__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,r=t.emit,a=e,o=r,i=((0,f.computed)(function(){return a.systemTitle}),(0,f.ref)(a.collapsed)),u=(0,f.ref)([]),l=(0,f.ref)([]);(0,f.watch)(function(){return a.collapsed},function(e){i.value=e}),(0,f.watch)(i,function(e){o("update:collapsed",e)}),(0,f.watch)(function(){return a.activeKey},function(e){if(e){u.value=[e];var t=function(e,n){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=m(e);try{for(o.s();!(r=o.n()).done;){var i=r.value;if(i.key===n)return a;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=a.menuData.length>0?a.menuData:c,r=t(n,e);r&&!l.value.includes(r)&&(l.value=[].concat(function(e){if(Array.isArray(e))return h(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||y(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.")}(),[r]))}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})},d=(0,f.computed)(function(){var e=a.menuData.length>0?a.menuData:c;return s(e)}),p=function(){i.value=!i.value},b=function(e){var t=e.key,n=(e.item,function(e,t){var r,a=m(e);try{for(a.s();!(r=a.n()).done;){var o=r.value;if(o.key===t)return o;if(o.children){var i=n(o.children,t);if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null}),r=a.menuData.length>0?a.menuData:c,i=n(r,t);i&&(o("menu-click",i),o("update:activeKey",t))},T=function(e){l.value=e};return(0,f.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,f.resolveComponent)("a-menu");return(0,f.openBlock)(),(0,f.createElementBlock)("div",{class:(0,f.normalizeClass)(["sidebar",{collapsed:i.value}])},[(0,f.createElementVNode)("div",g,[(0,f.createElementVNode)("h1",null,(0,f.toDisplayString)(a.systemTitle),1)]),(0,f.createElementVNode)("div",k,[(0,f.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:d.value,onClick:b,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,f.createElementVNode)("div",{class:"collapse-btn",onClick:p},[i.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(v.RightOutlined),{key:1})):((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(v.LeftOutlined),{key:0}))])],2)}}};var w=u(262);const S=(0,w.A)(T,[["__scopeId","data-v-3166c85e"]]);var B={class:"tabs-wrapper"},C={class:"tabs-container"},E=["onClick"],x={class:"tab-title"},O=["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,r=e,a=n,o=(0,f.ref)(r.activeTab),i=[],u=(0,f.computed)(function(){return r.tabs.length>0?r.tabs:i});return(0,f.watch)(function(){return r.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,f.watch)(u,function(e){e.length>0&&!o.value&&(o.value=e[0].key,a("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,f.openBlock)(),(0,f.createElementBlock)("div",B,[(0,f.createElementVNode)("div",C,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(u.value,function(e){return(0,f.openBlock)(),(0,f.createElementBlock)("div",{key:e.key,class:(0,f.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,a("update:activeTab",e.key),a("tab-click",e)}(e)}},[(0,f.createElementVNode)("span",x,(0,f.toDisplayString)(e.title),1),!1!==e.closable&&u.value.length>1?((0,f.openBlock)(),(0,f.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,f.withModifiers)(function(t){return function(e){a("tab-close",e)}(e)},["stop"])}," × ",8,O)):(0,f.createCommentVNode)("",!0)],10,E)}),128))])])}}}),j=(0,w.A)(A,[["__scopeId","data-v-26cdabbe"]]);var V={class:"breadcrumb-wrapper"},D={class:"breadcrumb-content"},N={key:0,class:"breadcrumb-current"},_=["onClick"],P={class:"breadcrumb-extra"};const I=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,r=e,a=n,o=(0,f.computed)(function(){return r.items.length>0?r.items:[]});return function(e,t){var n=(0,f.resolveComponent)("a-breadcrumb-item"),r=(0,f.resolveComponent)("a-breadcrumb");return(0,f.openBlock)(),(0,f.createElementBlock)("div",V,[(0,f.createElementVNode)("div",D,[(0,f.createVNode)((0,f.unref)(v.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,f.createVNode)(r,null,{default:(0,f.withCtx)(function(){return[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(o.value,function(e,t){return(0,f.openBlock)(),(0,f.createBlock)(n,{key:t},{default:(0,f.withCtx)(function(){return[t===o.value.length-1?((0,f.openBlock)(),(0,f.createElementBlock)("span",N,(0,f.toDisplayString)(e.title),1)):((0,f.openBlock)(),(0,f.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){a("click",{item:e,index:t})}(e,t)}},(0,f.toDisplayString)(e.title),9,_))]}),_:2},1024)}),128))]}),_:1})]),(0,f.createElementVNode)("div",P,[(0,f.renderSlot)(e.$slots,"default")])])}}}),K=(0,w.A)(I,[["__scopeId","data-v-06ed9d84"]]);var L=(0,c.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,r=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[r])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}}),R=u(269);function M(e){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M(e)}function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function q(e,t,n){return(t=function(e){var t=function(e){if("object"!=M(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==M(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var U=null,X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return U=(0,R.createRouter)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach(function(t){q(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:(0,R.createWebHistory)(t.basePath||""),routes:e},t)),U},F=function(){return U},z=function(){return U?U.currentRoute:null};function H(e){return function(e){if(Array.isArray(e))return J(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||G(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 W(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=G(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 G(e,t){if(e){if("string"==typeof e)return J(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)?J(e,t):void 0}}function J(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Q={key:1,class:"page-layout--breadcrumb"},Y={class:"page-layout--content"};const Z=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,r=t.emit,a=e,o=r,i=F(),u=z(),l=L(),c=(0,f.ref)(!1),s=(0,f.toRef)(l,"currentTab"),d=(0,f.toRef)(l,"tabs");(0,f.watch)(function(){return a.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return l.addTab(e)})},{immediate:!0,deep:!0});var v=(0,f.computed)(function(){return l.currentTabData}),m=function(e,t){var n,r=W(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.path===t)return a.key;if(a.children&&a.children.length>0){var o=m(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null},y=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=W(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;if(o.key===t)return[].concat(H(r),[{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(H(r),[{title:o.title||o.label,path:o.path,key:o.key}]));if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null},h=function(e,t){var n,r=W(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.key===t)return a;if(a.children&&a.children.length>0){var o=h(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null};(0,f.watch)(function(){var e;return null==u||null===(e=u.value)||void 0===e?void 0:e.path},function(e){if(a.enableRouterSync&&e&&"/"!==e){var t=m(a.menuData,e);t&&E(t)}},{immediate:!0});var g=(0,f.computed)(function(){if(s.value===a.homeBreadcrumb.key)return[a.homeBreadcrumb];if(a.menuData&&a.menuData.length>0){var e=y(a.menuData,s.value);if(e)return e}var t=d.value.find(function(e){return e.key===s.value});return t?[a.homeBreadcrumb,{title:t.title,key:t.key}]:[a.homeBreadcrumb]}),k=function(e){o("menu-click",e),a.autoAddTab&&(l.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),a.enableRouterSync&&i&&e.path&&i.push(e.path)},T=function(e){if(l.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),a.enableRouterSync&&i){var t=d.value.find(function(t){return t.key===e});null!=t&&t.path&&i.push(t.path)}},w=function(e){o("tab-click",e)},B=function(e){if(l.removeTab(e.key),o("update:activeTab",s.value),o("tab-close",e),a.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(a.menuData,e);t&&a.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:m,tabsList:d,currentTab:s,currentTabData:v,breadcrumbList:g,clearTabs:l.clearTabs}),function(t,n){var r=(0,f.resolveComponent)("a-layout-sider"),a=(0,f.resolveComponent)("a-layout");return(0,f.openBlock)(),(0,f.createBlock)(a,{class:"page-layout"},{default:(0,f.withCtx)(function(){return[(0,f.createVNode)(r,{class:"page-layout--sider"},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,f.openBlock)(),(0,f.createBlock)(S,{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:k},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,f.createCommentVNode)("",!0)]})]}),_:3}),(0,f.createVNode)(a,{class:"page-layout--main"},{default:(0,f.withCtx)(function(){return[e.showTabs?(0,f.renderSlot)(t.$slots,"tabs",{key:0,tabs:d.value,activeTab:s.value},function(){return[(0,f.createVNode)(j,{tabs:d.value,activeTab:s.value,"onUpdate:activeTab":T,onTabClick:w,onTabClose:B},null,8,["tabs","activeTab"])]}):(0,f.createCommentVNode)("",!0),e.showBreadcrumb?((0,f.openBlock)(),(0,f.createElementBlock)("div",Q,[(0,f.createVNode)(K,{items:g.value,onClick:C},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,f.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.createElementVNode)("img",{src:p,alt:""}),(0,f.createElementVNode)("p",null,"AI助手")]),(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.createElementVNode)("img",{src:b,alt:""}),(0,f.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,f.createCommentVNode)("",!0),(0,f.createElementVNode)("div",Y,[(0,f.renderSlot)(t.$slots,"default",{activeTab:s.value,tabData:v.value})])]}),_:3})]}),_:3})}}}),ee=(0,w.A)(Z,[["__scopeId","data-v-ad3d51fa"]]);var te=[ee,S,K,j],ne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ne.installed){if(ne.installed=!0,!e.config.globalProperties.$pinia){var n=function(){var e=(0,c.createPinia)();return e.use(d()),e}();e.use(n)}if(t.routes&&t.routes.length>0){var r=X(t.routes,t.routerOptions||{});e.use(r),e.provide("router",r),e.provide("route",r.currentRoute)}te.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&ne(window.Vue);const re={install:ne,PageLayout:ee,SidebarLayout:S,BreadCrumb:K,Tabs:j};return l.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 $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(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=R(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 R(e,t){if(e){if("string"==typeof e)return $(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)?$(e,t):void 0}}function $(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)),console.log("props.enableRouterSync",r.enableRouterSync),console.log("router",i),console.log("item.path",e.path),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-a73872fc"]]);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-ad3d51fa] {
234
+ .page-layout[data-v-a73872fc] {
235
235
  height: 100%;
236
236
  background-color: #F5F7FA;
237
237
  overflow: hidden;
238
238
  }
239
- .page-layout .page-layout--sider[data-v-ad3d51fa] {
239
+ .page-layout .page-layout--sider[data-v-a73872fc] {
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-ad3d51fa] {
248
+ .page-layout .page-layout--main[data-v-a73872fc] {
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-ad3d51fa] {
255
+ .page-layout .page-layout--breadcrumb[data-v-a73872fc] {
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-ad3d51fa] {
260
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-a73872fc] {
261
261
  display: flex;
262
262
  align-items: center;
263
263
  }
264
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-ad3d51fa] {
264
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-a73872fc] {
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-ad3d51fa] {
273
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-a73872fc] {
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-ad3d51fa] {
278
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-a73872fc] {
279
279
  margin-bottom: 0;
280
280
  }
281
- .page-layout .page-layout--content[data-v-ad3d51fa] {
281
+ .page-layout .page-layout--content[data-v-a73872fc] {
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.10","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","vue-router":"^4.0.0","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":""}
1
+ {"name":"shared-layout-components","version":"1.0.12","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":""}