@ditari/bsui 1.1.47 → 1.1.49

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.
Files changed (128) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/menu/Menu.cjs +6 -1
  4. package/dist/cjs/menu/Menu.cjs.map +1 -1
  5. package/dist/esm/index.mjs.map +1 -1
  6. package/dist/esm/menu/Menu.mjs +6 -1
  7. package/dist/esm/menu/Menu.mjs.map +1 -1
  8. package/package.json +7 -3
  9. package/example/index.html +0 -13
  10. package/example/node_modules/.vite/deps/@ant-design_icons-vue.js +0 -29406
  11. package/example/node_modules/.vite/deps/@ant-design_icons-vue.js.map +0 -7
  12. package/example/node_modules/.vite/deps/@vueuse_core.js +0 -8255
  13. package/example/node_modules/.vite/deps/@vueuse_core.js.map +0 -7
  14. package/example/node_modules/.vite/deps/_metadata.json +0 -80
  15. package/example/node_modules/.vite/deps/ant-design-vue.js +0 -62756
  16. package/example/node_modules/.vite/deps/ant-design-vue.js.map +0 -7
  17. package/example/node_modules/.vite/deps/axios.js +0 -2126
  18. package/example/node_modules/.vite/deps/axios.js.map +0 -7
  19. package/example/node_modules/.vite/deps/chunk-5WWUZCGV.js +0 -36
  20. package/example/node_modules/.vite/deps/chunk-5WWUZCGV.js.map +0 -7
  21. package/example/node_modules/.vite/deps/chunk-D36HXFYL.js +0 -25
  22. package/example/node_modules/.vite/deps/chunk-D36HXFYL.js.map +0 -7
  23. package/example/node_modules/.vite/deps/chunk-EBDM3ESC.js +0 -161
  24. package/example/node_modules/.vite/deps/chunk-EBDM3ESC.js.map +0 -7
  25. package/example/node_modules/.vite/deps/chunk-EKNPBJBG.js +0 -3600
  26. package/example/node_modules/.vite/deps/chunk-EKNPBJBG.js.map +0 -7
  27. package/example/node_modules/.vite/deps/chunk-GK7Q6YQN.js +0 -10796
  28. package/example/node_modules/.vite/deps/chunk-GK7Q6YQN.js.map +0 -7
  29. package/example/node_modules/.vite/deps/chunk-TDI2FIXO.js +0 -19
  30. package/example/node_modules/.vite/deps/chunk-TDI2FIXO.js.map +0 -7
  31. package/example/node_modules/.vite/deps/package.json +0 -3
  32. package/example/node_modules/.vite/deps/pinia-plugin-persistedstate.js +0 -125
  33. package/example/node_modules/.vite/deps/pinia-plugin-persistedstate.js.map +0 -7
  34. package/example/node_modules/.vite/deps/pinia.js +0 -1519
  35. package/example/node_modules/.vite/deps/pinia.js.map +0 -7
  36. package/example/node_modules/.vite/deps/vue-request.js +0 -1191
  37. package/example/node_modules/.vite/deps/vue-request.js.map +0 -7
  38. package/example/node_modules/.vite/deps/vue-router.js +0 -2667
  39. package/example/node_modules/.vite/deps/vue-router.js.map +0 -7
  40. package/example/node_modules/.vite/deps/vue.js +0 -314
  41. package/example/node_modules/.vite/deps/vue.js.map +0 -7
  42. package/example/package.json +0 -17
  43. package/example/src/App.vue +0 -7
  44. package/example/src/api/list.ts +0 -22
  45. package/example/src/api/user.ts +0 -13
  46. package/example/src/components/AppMain.vue +0 -113
  47. package/example/src/hooks.ts +0 -103
  48. package/example/src/main.ts +0 -22
  49. package/example/src/router/form/index.route.ts +0 -23
  50. package/example/src/router/index.ts +0 -61
  51. package/example/src/router/table/index.route.ts +0 -39
  52. package/example/src/views/Demo.vue +0 -49
  53. package/example/src/views/DemoBk.vue +0 -34
  54. package/example/src/views/Login.vue +0 -79
  55. package/example/src/views/form/List.vue +0 -16
  56. package/example/src/views/form/List2.vue +0 -74
  57. package/example/src/views/form/QueryFormDemo.vue +0 -49
  58. package/example/src/views/form/dyn/List.vue +0 -121
  59. package/example/src/views/table/Add.vue +0 -377
  60. package/example/src/views/table/Demo.vue +0 -15
  61. package/example/src/views/table/Demo2.vue +0 -12
  62. package/example/src/views/table/Edit.vue +0 -10
  63. package/example/src/views/table/List.vue +0 -415
  64. package/example/src/views/table/Test.tsx +0 -42
  65. package/example/src/views/table/TestModal.vue +0 -64
  66. package/example/src/views/table/WorkStatusRound.vue +0 -31
  67. package/example/src/views/table/components/AddForm.vue +0 -44
  68. package/example/src/views/table/hooks.ts +0 -106
  69. package/example/src/views/task/Todo.vue +0 -6
  70. package/example/tsconfig.json +0 -16
  71. package/example/utils/http.ts +0 -107
  72. package/example/vite-env.d.ts +0 -8
  73. package/example/vite.config.ts +0 -10
  74. package/src/_utils/html.ts +0 -17
  75. package/src/_utils/install.ts +0 -12
  76. package/src/components.ts +0 -10
  77. package/src/config/Config.vue +0 -8
  78. package/src/date/RangePicker.tsx +0 -93
  79. package/src/date/index.ts +0 -9
  80. package/src/desensitize/Desensitize.tsx +0 -97
  81. package/src/desensitize/index.ts +0 -9
  82. package/src/desensitize/style/index.scss +0 -8
  83. package/src/dic/DicReplace.tsx +0 -63
  84. package/src/dic/index.ts +0 -8
  85. package/src/dic/replace.worker.ts +0 -25
  86. package/src/form/DQueryForm.tsx +0 -258
  87. package/src/form/index.ts +0 -9
  88. package/src/form/style/index.less +0 -0
  89. package/src/grid/Grid.tsx +0 -83
  90. package/src/grid/GridItem.tsx +0 -15
  91. package/src/grid/index.md +0 -4
  92. package/src/grid/index.ts +0 -16
  93. package/src/grid/style/index.scss +0 -70
  94. package/src/index.scss +0 -19
  95. package/src/index.ts +0 -50
  96. package/src/json-scheme-render/JsonSchemeRender.tsx +0 -101
  97. package/src/json-scheme-render/index.ts +0 -9
  98. package/src/layout/Breadcrumb.vue +0 -39
  99. package/src/layout/FuckMain.vue +0 -90
  100. package/src/layout/List.vue +0 -145
  101. package/src/layout/Main.vue +0 -97
  102. package/src/layout/NavTabs.vue +0 -129
  103. package/src/layout/Show.vue +0 -135
  104. package/src/layout/index.ts +0 -24
  105. package/src/layout/style/breadcrumb.scss +0 -61
  106. package/src/layout/style/fuckmain.scss +0 -21
  107. package/src/layout/style/index.scss +0 -35
  108. package/src/layout/style/list.scss +0 -26
  109. package/src/layout/style/main.scss +0 -74
  110. package/src/layout/style/navtab.scss +0 -146
  111. package/src/layout/style/show.scss +0 -50
  112. package/src/menu/Menu.tsx +0 -181
  113. package/src/menu/style/index.scss +0 -26
  114. package/src/modal/Modal.tsx +0 -83
  115. package/src/modal/index.ts +0 -9
  116. package/src/modal/style/index.scss +0 -74
  117. package/src/select/Select.vue +0 -177
  118. package/src/select/dic.worker.ts +0 -32
  119. package/src/select/index.ts +0 -9
  120. package/src/table/Field.vue +0 -44
  121. package/src/table/Table.tsx +0 -515
  122. package/src/table/index.md +0 -1
  123. package/src/table/index.ts +0 -9
  124. package/src/table/interface/table.ts +0 -64
  125. package/src/table/style/index.scss +0 -10
  126. package/src/theme/index.ts +0 -1
  127. package/src/theme/theme.scss +0 -1
  128. package/src/theme/variable.scss +0 -67
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ditari/bsui
2
2
 
3
+ ## 1.1.49
4
+
5
+ ### Patch Changes
6
+
7
+ - 左侧菜单添加支持打开窗口
8
+
3
9
  ## 1.1.47
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import type { App } from \"vue\";\nimport { createPinia } from \"pinia\";\nimport { createPersistedState } from \"pinia-plugin-persistedstate\";\n\nimport * as components from \"./components\";\nexport * from \"./components\";\n\n\nexport interface MenuIcon {\n componentName: string | \"nativeHtml\";\n type: string;\n}\nexport interface Options {\n menuIcon: MenuIcon;\n prop?: string;\n}\nconst c: any = components;\nexport const install = function (app: App, opts: Options) {\n Object.keys(c).forEach((key) => {\n const component = c[key];\n if (component.install) {\n app.use(component);\n }\n });\n //注册pinia\n const pinia = createPinia();\n //pinia启用持久化\n pinia.use(\n createPersistedState({\n storage: sessionStorage\n })\n );\n app.use(pinia);\n app.provide(\"menuIcon\", opts.menuIcon || {});\n\n // // 创建 Web Worker 连接池实例\n // const workerPool = new WorkerPool(DicWorker, 2); // 这里设置连接池的大小为 5\n // workerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"dicWorkerPool\", workerPool);\n // // 创建 Web Worker 连接池实例\n // const repWorkerPool = new WorkerPool(ReplaceWorker, 2); // 这里设置连接池的大小为 5\n // repWorkerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"repWorkerPool\", repWorkerPool);\n};\n\nexport default {\n install\n};\n"],"names":["pinia","createPinia","createPersistedState"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,CAAS,GAAA,UAAA,CAAA;AACF,MAAA,OAAA,GAAU,SAAU,GAAA,EAAU,IAAe,EAAA;AACxD,EAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC9B,IAAM,MAAA,SAAA,GAAY,EAAE,GAAG,CAAA,CAAA;AACvB,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAMA,UAAQC,iBAAY,EAAA,CAAA;AAE1B,EAAMD,OAAA,CAAA,GAAA;AAAA,IACJE,8CAAqB,CAAA;AAAA,MACnB,OAAS,EAAA,cAAA;AAAA,KACV,CAAA;AAAA,GACH,CAAA;AACA,EAAA,GAAA,CAAI,IAAIF,OAAK,CAAA,CAAA;AACb,EAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,IAAK,CAAA,QAAA,IAAY,EAAE,CAAA,CAAA;AAY7C,EAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import type { App } from \"vue\";\nimport { createPinia } from \"pinia\";\nimport { createPersistedState } from \"pinia-plugin-persistedstate\";\n\nimport * as components from \"./components\";\nexport * from \"./components\";\n\nexport interface MenuIcon {\n componentName: string | \"nativeHtml\";\n type: string;\n}\nexport interface Options {\n menuIcon: MenuIcon;\n prop?: string;\n}\nconst c: any = components;\nexport const install = function (app: App, opts: Options) {\n Object.keys(c).forEach((key) => {\n const component = c[key];\n if (component.install) {\n app.use(component);\n }\n });\n //注册pinia\n const pinia = createPinia();\n //pinia启用持久化\n pinia.use(\n createPersistedState({\n storage: sessionStorage\n })\n );\n app.use(pinia);\n app.provide(\"menuIcon\", opts.menuIcon || {});\n\n // // 创建 Web Worker 连接池实例\n // const workerPool = new WorkerPool(DicWorker, 2); // 这里设置连接池的大小为 5\n // workerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"dicWorkerPool\", workerPool);\n // // 创建 Web Worker 连接池实例\n // const repWorkerPool = new WorkerPool(ReplaceWorker, 2); // 这里设置连接池的大小为 5\n // repWorkerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"repWorkerPool\", repWorkerPool);\n};\n\nexport default {\n install\n};\n"],"names":["pinia","createPinia","createPersistedState"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,CAAS,GAAA,UAAA,CAAA;AACF,MAAA,OAAA,GAAU,SAAU,GAAA,EAAU,IAAe,EAAA;AACxD,EAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC9B,IAAM,MAAA,SAAA,GAAY,EAAE,GAAG,CAAA,CAAA;AACvB,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAMA,UAAQC,iBAAY,EAAA,CAAA;AAE1B,EAAMD,OAAA,CAAA,GAAA;AAAA,IACJE,8CAAqB,CAAA;AAAA,MACnB,OAAS,EAAA,cAAA;AAAA,KACV,CAAA;AAAA,GACH,CAAA;AACA,EAAA,GAAA,CAAI,IAAIF,OAAK,CAAA,CAAA;AACb,EAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,IAAK,CAAA,QAAA,IAAY,EAAE,CAAA,CAAA;AAY7C,EAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;"}
@@ -56,9 +56,14 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
56
56
  key,
57
57
  keyPath
58
58
  }) => {
59
+ var _a;
59
60
  openMenusKeys.value = keyPath;
60
61
  selectedMenuKeys.value = [key];
61
- route.path !== key ? router.push(key).then((r) => r ? console.warn(r) : null) : null;
62
+ if (((_a = route.meta) == null ? void 0 : _a.open) === "_blank") {
63
+ window.open(window.location.origin + route.path, "_blank");
64
+ } else {
65
+ route.path !== key ? router.push(key).then((r) => r ? console.warn(r) : null) : null;
66
+ }
62
67
  };
63
68
  const renderMenu = (menu) => {
64
69
  return vue.createVNode(vue.Fragment, null, [vue.createVNode(vue.resolveComponent("a-menu-item"), {
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n\n // watchEffect(() => {\n // if (getCollapsed.value) {\n // // 如果菜单是收缩的状态,则不匹配激活的菜单\n // // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n // return;\n // }\n // // 会被触发两次\n // // 当前激活的url\n // const activatedUrl =\n // selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n // const parentUrls = getParentUrls(list.value, activatedUrl);\n // openMenusKeys.value = parentUrls || [];\n // });\n\n watch(\n () => selectedMenuKeys.value,\n (newValue: any) => {\n if (getCollapsed.value) {\n // 如果菜单是收缩的状态,则不匹配激活的菜单\n // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n return;\n }\n const activatedUrl = newValue.length > 0 ? newValue[0] : \"\";\n const parentUrls = getParentUrls(list.value, activatedUrl);\n openMenusKeys.value = parentUrls || [];\n },\n {\n deep: true\n }\n );\n\n function getParentUrls(menus: any, url: any) {\n for (let i = 0; i < menus.length; i++) {\n if (menus[i].url === url || url.startsWith(menus[i].url)) {\n // 如果当前菜单项的url与传入的url相等,说明找到了当前菜单项\n return [menus[i].url];\n } else if (menus[i].children && menus[i].children.length > 0) {\n // 如果当前菜单项有子菜单,则递归查找子菜单\n const parentUrls: any = getParentUrls(menus[i].children, url);\n if (parentUrls) {\n // 如果子菜单中存在当前url,则将当前菜单项的url添加到返回结果中\n return [menus[i].url, ...parentUrls];\n }\n }\n }\n return null;\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [key];\n // 判断目标路由和当前路由是否相等\n // 不相等的时候再跳转\n route.path !== key\n ? router.push(key).then((r) => (r ? console.warn(r) : null))\n : null;\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.url}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","watch","value","newValue","activatedUrl","length","parentUrls","getParentUrls","deep","menus","url","i","startsWith","children","onClick","key","keyPath","path","push","then","r","console","warn","renderMenu","menu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","item","renderSubMenu","_slot","$event"],"mappings":";;;;;;;;;AAK+D,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAAA,KAAA,UAAAC,IAAAA,MAAAA,CAAAC,SAAAC,CAAAA,QAAAA,CAAAC,IAAAJ,CAAAA,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,WAAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAE/D,2BAA+BM,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,OAAA;AAAA,EACNC,KAAQ,GAAA;AACN,IAAA,MAAMC,SAASC,mBAAU,EAAA,CAAA;AACzB,IAAA,MAAMC,QAAQC,kBAAS,EAAA,CAAA;AACvB,IAAM,MAAA;AAAA,MAAEC,aAAAA;AAAAA,MAAeC,IAAMC,EAAAA,QAAAA;AAAAA,KAAS,GAAIC,WAAO,UAAU,CAAA,CAAA;AAE3D,IAAA,MAAMC,YAAYC,kBAAa,EAAA,CAAA;AAC/B,IAAM,MAAA;AAAA,MAAEC,IAAAA;AAAAA,MAAMC,aAAAA;AAAAA,MAAeC,gBAAAA;AAAAA,KAAiB,GAAIC,kBAAYL,SAAS,CAAA,CAAA;AAEvE,IAAA,MAAMM,gBAAgBC,sBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA;AAAA,MAAEC,YAAAA;AAAAA,KAAa,GAAIH,kBAAYC,aAAa,CAAA,CAAA;AAgBlDG,IACEA,SAAA,CAAA,MAAML,gBAAiBM,CAAAA,KAAAA,EACtBC,CAAkB,QAAA,KAAA;AACjB,MAAA,IAAIH,aAAaE,KAAO,EAAA;AAGtB,QAAA,OAAA;AAAA,OACF;AACA,MAAA,MAAME,eAAeD,QAASE,CAAAA,MAAAA,GAAS,CAAIF,GAAAA,QAAAA,CAAS,CAAC,CAAI,GAAA,EAAA,CAAA;AACzD,MAAA,MAAMG,UAAaC,GAAAA,aAAAA,CAAcb,IAAKQ,CAAAA,KAAAA,EAAOE,YAAY,CAAA,CAAA;AACzDT,MAAcO,aAAAA,CAAAA,KAAAA,GAAQI,cAAc,EAAE,CAAA;AAAA,KAExC,EAAA;AAAA,MACEE,IAAM,EAAA,IAAA;AAAA,KAEV,CAAA,CAAA;AAEA,IAASD,SAAAA,aAAAA,CAAcE,OAAYC,GAAU,EAAA;AAC3C,MAAA,KAAA,IAASC,CAAI,GAAA,CAAA,EAAGA,CAAIF,GAAAA,KAAAA,CAAMJ,QAAQM,CAAK,EAAA,EAAA;AACrC,QAAIF,IAAAA,KAAAA,CAAME,CAAC,CAAA,CAAED,GAAQA,KAAAA,GAAAA,IAAOA,GAAIE,CAAAA,UAAAA,CAAWH,KAAME,CAAAA,CAAC,CAAED,CAAAA,GAAG,CAAG,EAAA;AAExD,UAAA,OAAO,CAACD,KAAAA,CAAME,CAAC,CAAA,CAAED,GAAG,CAAA,CAAA;AAAA,SACtB,MAAA,IAAWD,KAAME,CAAAA,CAAC,CAAEE,CAAAA,QAAAA,IAAYJ,MAAME,CAAC,CAAA,CAAEE,QAASR,CAAAA,MAAAA,GAAS,CAAG,EAAA;AAE5D,UAAA,MAAMC,aAAkBC,aAAcE,CAAAA,KAAAA,CAAME,CAAC,CAAA,CAAEE,UAAUH,GAAG,CAAA,CAAA;AAC5D,UAAA,IAAIJ,UAAY,EAAA;AAEd,YAAA,OAAO,CAACG,KAAME,CAAAA,CAAC,CAAED,CAAAA,GAAAA,EAAK,GAAGJ,UAAU,CAAA,CAAA;AAAA,WACrC;AAAA,SACF;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAQA,IAAA,MAAMQ,UAAUA,CAAC;AAAA,MAAEC,GAAAA;AAAAA,MAAKC,OAAAA;AAAAA,KAAmB,KAAA;AACzCrB,MAAAA,aAAAA,CAAcO,KAAQc,GAAAA,OAAAA,CAAAA;AACtBpB,MAAiBM,gBAAAA,CAAAA,KAAAA,GAAQ,CAACa,GAAG,CAAA,CAAA;AAG7B7B,MAAAA,KAAAA,CAAM+B,IAASF,KAAAA,GAAAA,GACX/B,MAAOkC,CAAAA,IAAAA,CAAKH,GAAG,CAAEI,CAAAA,IAAAA,CAAMC,CAAOA,CAAAA,KAAAA,CAAAA,GAAIC,OAAQC,CAAAA,IAAAA,CAAKF,CAAC,CAAA,GAAI,IAAK,CACzD,GAAA,IAAA,CAAA;AAAA,KACN,CAAA;AAGA,IAAA,MAAMG,aAAcC,CAAc,IAAA,KAAA;AAChC,MAAA,OAAAC,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,QAAA,OAEsBH,IAAKd,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAEtBkB,IAAAA,EAAMA,MAAMC,UAAAA,CAAWL,IAAI,CAAA;AAAA,QAC3BM,OAAAA,EAASA,MAAMN,IAAKO,CAAAA,KAAAA;AAAAA,OAAK,CAAA,CAAA,CAAA,CAAA;AAAA,KAKnC,CAAA;AAEA,IAAA,MAAMC,SAAY,GAAA,CAAC,SAAW,EAAA,cAAA,EAAgB,oBAAoB,CAAA,CAAA;AAElE,IAAA,MAAMH,aAAcL,CAAc,IAAA,KAAA;AAChC,MAAAC,OAAAA,eAAAA,CAAAC,cAEK,IAAA,EAAA,CAAA,CAACF,IAAKI,CAAAA,IAAAA,GAAIK,kBAAAR,CAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAC+BO,EAAAA,SAAAA;AAAAA,OAAS,EAC9CR,CAAAA,IAAKO,CAAAA,KAAAA,CAAMG,UAAU,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA,EAAA,CAAA,CAAAC,SADhBnC,EAAAA,YAAAA,CAAaE,KAAK,CAAA,CAAA,IAI/BkC,gBAAiBZ,CAAAA,IAAAA,CAAKI,IAAI,CAC3B,CAAA,CAAA,CAAA;AAAA,KAGP,CAAA;AAEA,IAAA,MAAMQ,mBAAoBR,CAAc,IAAA,KAAA;AACtC,MAAA,IAAIxC,kBAAkB,YAAc,EAAA;AAClC,QAAA,OAAAqC,gBAAA,MAAA,EAAA;AAAA,UAAA,WAAqBG,EAAAA,IAAAA;AAAAA,WAAI,IAAA,CAAA,CAAA;AAAA,OACpB,MAAA;AACL,QAAOS,OAAAA,KAAAA,CAAEC,oBAAiBlD,CAAAA,aAAa,CAAG,EAAA;AAAA,UACxC,CAAE,CAAA,EAAEE,QAAS,CAAA,CAAC,GAAGsC,IAAAA;AAAAA,SAClB,CAAA,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAGA,IAAA,MAAMW,YAAaf,CAAc,IAAA,KAAA;AAC/B,MAAA,OAAAC,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,YAAA,CAAA,EAAA;AAAA,QAAA,OAEqBH,IAAKd,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAErBqB,KAAAA,EAAOA,MAAMP,IAAKO,CAAAA,KAAAA;AAAAA,QAClBH,IAAAA,EAAMA,MAAMC,UAAAA,CAAWL,IAAI,CAAA;AAAA,QAC3BM,SAASA,MAAM;AACb,UAAA,OAAON,KAAKX,QAAS2B,CAAAA,GAAAA;AAAAA,YAClBC,CACC,IAAA,KAAA,CAACA,IAAK5B,CAAAA,QAAAA,IAAY4B,IAAK5B,CAAAA,QAAAA,CAASR,MAAW,KAAA,CAAA,GACvCqC,aAAcD,CAAAA,IAAI,CAClBF,GAAAA,SAAAA,CAAUE,IAAI,CAAA;AAAA;AAAA,WACtB,CAAA;AAAA,SACF;AAAA,OAAC,CAAA,CAAA,CAAA,CAAA;AAAA,KAKX,CAAA;AAGA,IAAA,MAAMC,gBAAiBlB,CAAc,IAAA,KAAA;AACnC,MAAA,OAAAC,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,QAAA,OAEsBH,IAAKd,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAEtBoB,OAAAA,EAASA,MAAMN,IAAKO,CAAAA,KAAAA;AAAAA,OAAK,CAAA,CAAA,CAAA,CAAA;AAAA,KAKnC,CAAA;AAEA,IAAA,OAAO,MAAA;AAAA,MAAAY,IAAAA,KAAAA,CAAAA;AAAA,MAAA,OAAAlB,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,QAAA,CAAA,EAAA;AAAA,QAAA,MAAA,EAAA,QAAA;AAAA,QAAA,OAAA,EAAA,MAAA;AAAA,QAAA,YAKiBhC,aAAcO,CAAAA,KAAAA;AAAAA,QAAK,mBAAA,EAAA0C,CAAnBjD,MAAAA,KAAAA,aAAAA,CAAcO,KAAK0C,GAAAA,MAAAA;AAAAA,QAAA,gBACfhD,gBAAiBM,CAAAA,KAAAA;AAAAA,QAAK,uBAAA,EAAA0C,CAAtBhD,MAAAA,KAAAA,gBAAAA,CAAiBM,KAAK0C,GAAAA,MAAAA;AAAAA,QAAA,SACnC9B,EAAAA,OAAAA;AAAAA,SAAOxC,OAAAqE,CAAAA,KAAAA,GAEfjD,IAAKQ,CAAAA,KAAAA,CAAMsC,IAAKhB,CAAc,IAAA,KAAA;;AAC7B,QAAA,IAAI,CAACA,IAAKX,CAAAA,QAAAA,IAAAA,CAAAA,CAAYW,UAAKX,QAALW,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAenB,YAAW,CAAG,EAAA;AAEjD,UAAA,OAAOkB,WAAWC,IAAI,CAAA,CAAA;AAAA,SACjB,MAAA;AACL,UAAA,OAAOe,UAAUf,IAAI,CAAA,CAAA;AAAA,SACvB;AAAA,OACD,CAAC,CAAA,GAAAmB,KAAA,GAAA;AAAA,QAAAb,OAAAA,EAAAA,MAAA,CAAAa,KAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAIV;AACF,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n\n // watchEffect(() => {\n // if (getCollapsed.value) {\n // // 如果菜单是收缩的状态,则不匹配激活的菜单\n // // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n // return;\n // }\n // // 会被触发两次\n // // 当前激活的url\n // const activatedUrl =\n // selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n // const parentUrls = getParentUrls(list.value, activatedUrl);\n // openMenusKeys.value = parentUrls || [];\n // });\n\n watch(\n () => selectedMenuKeys.value,\n (newValue: any) => {\n if (getCollapsed.value) {\n // 如果菜单是收缩的状态,则不匹配激活的菜单\n // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n return;\n }\n const activatedUrl = newValue.length > 0 ? newValue[0] : \"\";\n const parentUrls = getParentUrls(list.value, activatedUrl);\n openMenusKeys.value = parentUrls || [];\n },\n {\n deep: true\n }\n );\n\n function getParentUrls(menus: any, url: any) {\n for (let i = 0; i < menus.length; i++) {\n if (menus[i].url === url || url.startsWith(menus[i].url)) {\n // 如果当前菜单项的url与传入的url相等,说明找到了当前菜单项\n return [menus[i].url];\n } else if (menus[i].children && menus[i].children.length > 0) {\n // 如果当前菜单项有子菜单,则递归查找子菜单\n const parentUrls: any = getParentUrls(menus[i].children, url);\n if (parentUrls) {\n // 如果子菜单中存在当前url,则将当前菜单项的url添加到返回结果中\n return [menus[i].url, ...parentUrls];\n }\n }\n }\n return null;\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [key];\n // 判断目标路由和当前路由是否相等\n // 不相等的时候再跳转\n if (route.meta?.open === \"_blank\") {\n window.open(window.location.origin + route.path, \"_blank\");\n } else {\n route.path !== key\n ? router.push(key).then((r) => (r ? console.warn(r) : null))\n : null;\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.url}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","watch","value","newValue","activatedUrl","length","parentUrls","getParentUrls","deep","menus","url","i","startsWith","children","onClick","key","keyPath","meta","open","window","location","origin","path","push","then","r","console","warn","renderMenu","menu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","item","renderSubMenu","_slot","$event"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import type { App } from \"vue\";\nimport { createPinia } from \"pinia\";\nimport { createPersistedState } from \"pinia-plugin-persistedstate\";\n\nimport * as components from \"./components\";\nexport * from \"./components\";\n\n\nexport interface MenuIcon {\n componentName: string | \"nativeHtml\";\n type: string;\n}\nexport interface Options {\n menuIcon: MenuIcon;\n prop?: string;\n}\nconst c: any = components;\nexport const install = function (app: App, opts: Options) {\n Object.keys(c).forEach((key) => {\n const component = c[key];\n if (component.install) {\n app.use(component);\n }\n });\n //注册pinia\n const pinia = createPinia();\n //pinia启用持久化\n pinia.use(\n createPersistedState({\n storage: sessionStorage\n })\n );\n app.use(pinia);\n app.provide(\"menuIcon\", opts.menuIcon || {});\n\n // // 创建 Web Worker 连接池实例\n // const workerPool = new WorkerPool(DicWorker, 2); // 这里设置连接池的大小为 5\n // workerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"dicWorkerPool\", workerPool);\n // // 创建 Web Worker 连接池实例\n // const repWorkerPool = new WorkerPool(ReplaceWorker, 2); // 这里设置连接池的大小为 5\n // repWorkerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"repWorkerPool\", repWorkerPool);\n};\n\nexport default {\n install\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAgBA,MAAM,CAAS,GAAA,UAAA,CAAA;AACF,MAAA,OAAA,GAAU,SAAU,GAAA,EAAU,IAAe,EAAA;AACxD,EAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC9B,IAAM,MAAA,SAAA,GAAY,EAAE,GAAG,CAAA,CAAA;AACvB,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,WAAY,EAAA,CAAA;AAE1B,EAAM,KAAA,CAAA,GAAA;AAAA,IACJ,oBAAqB,CAAA;AAAA,MACnB,OAAS,EAAA,cAAA;AAAA,KACV,CAAA;AAAA,GACH,CAAA;AACA,EAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,EAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,IAAK,CAAA,QAAA,IAAY,EAAE,CAAA,CAAA;AAY7C,EAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import type { App } from \"vue\";\nimport { createPinia } from \"pinia\";\nimport { createPersistedState } from \"pinia-plugin-persistedstate\";\n\nimport * as components from \"./components\";\nexport * from \"./components\";\n\nexport interface MenuIcon {\n componentName: string | \"nativeHtml\";\n type: string;\n}\nexport interface Options {\n menuIcon: MenuIcon;\n prop?: string;\n}\nconst c: any = components;\nexport const install = function (app: App, opts: Options) {\n Object.keys(c).forEach((key) => {\n const component = c[key];\n if (component.install) {\n app.use(component);\n }\n });\n //注册pinia\n const pinia = createPinia();\n //pinia启用持久化\n pinia.use(\n createPersistedState({\n storage: sessionStorage\n })\n );\n app.use(pinia);\n app.provide(\"menuIcon\", opts.menuIcon || {});\n\n // // 创建 Web Worker 连接池实例\n // const workerPool = new WorkerPool(DicWorker, 2); // 这里设置连接池的大小为 5\n // workerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"dicWorkerPool\", workerPool);\n // // 创建 Web Worker 连接池实例\n // const repWorkerPool = new WorkerPool(ReplaceWorker, 2); // 这里设置连接池的大小为 5\n // repWorkerPool.initialize();\n // // 注入连接池实例\n // app.provide(\"repWorkerPool\", repWorkerPool);\n};\n\nexport default {\n install\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAeA,MAAM,CAAS,GAAA,UAAA,CAAA;AACF,MAAA,OAAA,GAAU,SAAU,GAAA,EAAU,IAAe,EAAA;AACxD,EAAA,MAAA,CAAO,IAAK,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC9B,IAAM,MAAA,SAAA,GAAY,EAAE,GAAG,CAAA,CAAA;AACvB,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,WAAY,EAAA,CAAA;AAE1B,EAAM,KAAA,CAAA,GAAA;AAAA,IACJ,oBAAqB,CAAA;AAAA,MACnB,OAAS,EAAA,cAAA;AAAA,KACV,CAAA;AAAA,GACH,CAAA;AACA,EAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,EAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,IAAK,CAAA,QAAA,IAAY,EAAE,CAAA,CAAA;AAY7C,EAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;"}
@@ -52,9 +52,14 @@ var Menu = /* @__PURE__ */ defineComponent({
52
52
  key,
53
53
  keyPath
54
54
  }) => {
55
+ var _a;
55
56
  openMenusKeys.value = keyPath;
56
57
  selectedMenuKeys.value = [key];
57
- route.path !== key ? router.push(key).then((r) => r ? console.warn(r) : null) : null;
58
+ if (((_a = route.meta) == null ? void 0 : _a.open) === "_blank") {
59
+ window.open(window.location.origin + route.path, "_blank");
60
+ } else {
61
+ route.path !== key ? router.push(key).then((r) => r ? console.warn(r) : null) : null;
62
+ }
58
63
  };
59
64
  const renderMenu = (menu) => {
60
65
  return createVNode(Fragment, null, [createVNode(resolveComponent("a-menu-item"), {
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.mjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n\n // watchEffect(() => {\n // if (getCollapsed.value) {\n // // 如果菜单是收缩的状态,则不匹配激活的菜单\n // // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n // return;\n // }\n // // 会被触发两次\n // // 当前激活的url\n // const activatedUrl =\n // selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n // const parentUrls = getParentUrls(list.value, activatedUrl);\n // openMenusKeys.value = parentUrls || [];\n // });\n\n watch(\n () => selectedMenuKeys.value,\n (newValue: any) => {\n if (getCollapsed.value) {\n // 如果菜单是收缩的状态,则不匹配激活的菜单\n // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n return;\n }\n const activatedUrl = newValue.length > 0 ? newValue[0] : \"\";\n const parentUrls = getParentUrls(list.value, activatedUrl);\n openMenusKeys.value = parentUrls || [];\n },\n {\n deep: true\n }\n );\n\n function getParentUrls(menus: any, url: any) {\n for (let i = 0; i < menus.length; i++) {\n if (menus[i].url === url || url.startsWith(menus[i].url)) {\n // 如果当前菜单项的url与传入的url相等,说明找到了当前菜单项\n return [menus[i].url];\n } else if (menus[i].children && menus[i].children.length > 0) {\n // 如果当前菜单项有子菜单,则递归查找子菜单\n const parentUrls: any = getParentUrls(menus[i].children, url);\n if (parentUrls) {\n // 如果子菜单中存在当前url,则将当前菜单项的url添加到返回结果中\n return [menus[i].url, ...parentUrls];\n }\n }\n }\n return null;\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [key];\n // 判断目标路由和当前路由是否相等\n // 不相等的时候再跳转\n route.path !== key\n ? router.push(key).then((r) => (r ? console.warn(r) : null))\n : null;\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.url}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","watch","value","newValue","activatedUrl","length","parentUrls","getParentUrls","deep","menus","url","i","startsWith","children","onClick","key","keyPath","path","push","then","r","console","warn","renderMenu","menu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","item","renderSubMenu","_slot","$event"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.mjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n\n // watchEffect(() => {\n // if (getCollapsed.value) {\n // // 如果菜单是收缩的状态,则不匹配激活的菜单\n // // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n // return;\n // }\n // // 会被触发两次\n // // 当前激活的url\n // const activatedUrl =\n // selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n // const parentUrls = getParentUrls(list.value, activatedUrl);\n // openMenusKeys.value = parentUrls || [];\n // });\n\n watch(\n () => selectedMenuKeys.value,\n (newValue: any) => {\n if (getCollapsed.value) {\n // 如果菜单是收缩的状态,则不匹配激活的菜单\n // 否则 在切换标签的时候,收缩菜单会自动激活悬浮的动作\n return;\n }\n const activatedUrl = newValue.length > 0 ? newValue[0] : \"\";\n const parentUrls = getParentUrls(list.value, activatedUrl);\n openMenusKeys.value = parentUrls || [];\n },\n {\n deep: true\n }\n );\n\n function getParentUrls(menus: any, url: any) {\n for (let i = 0; i < menus.length; i++) {\n if (menus[i].url === url || url.startsWith(menus[i].url)) {\n // 如果当前菜单项的url与传入的url相等,说明找到了当前菜单项\n return [menus[i].url];\n } else if (menus[i].children && menus[i].children.length > 0) {\n // 如果当前菜单项有子菜单,则递归查找子菜单\n const parentUrls: any = getParentUrls(menus[i].children, url);\n if (parentUrls) {\n // 如果子菜单中存在当前url,则将当前菜单项的url添加到返回结果中\n return [menus[i].url, ...parentUrls];\n }\n }\n }\n return null;\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [key];\n // 判断目标路由和当前路由是否相等\n // 不相等的时候再跳转\n if (route.meta?.open === \"_blank\") {\n window.open(window.location.origin + route.path, \"_blank\");\n } else {\n route.path !== key\n ? router.push(key).then((r) => (r ? console.warn(r) : null))\n : null;\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.url}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.url}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","watch","value","newValue","activatedUrl","length","parentUrls","getParentUrls","deep","menus","url","i","startsWith","children","onClick","key","keyPath","meta","open","window","location","origin","path","push","then","r","console","warn","renderMenu","menu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","item","renderSubMenu","_slot","$event"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/bsui",
3
- "version": "1.1.47",
3
+ "version": "1.1.49",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",
@@ -8,6 +8,10 @@
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
11
+ "files": [
12
+ "CHANGELOG.md",
13
+ "dist"
14
+ ],
11
15
  "main": "dist/cjs/index.cjs",
12
16
  "module": "dist/esm/index.mjs",
13
17
  "types": "dist/esm/index.d.ts",
@@ -29,8 +33,8 @@
29
33
  "./theme/*": "./dist/style/*"
30
34
  },
31
35
  "dependencies": {
32
- "@ditari/hooks": "^1.0.10",
33
- "@ditari/store": "^1.0.8"
36
+ "@ditari/store": "^1.0.8",
37
+ "@ditari/hooks": "^1.0.10"
34
38
  },
35
39
  "peerDependencies": {
36
40
  "vue": "^3.3.4",
@@ -1,13 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Document</title>
8
- </head>
9
- <body>
10
- <div id="app"></div>
11
- <script src="./src/main.ts" type="module"></script>
12
- </body>
13
- </html>