bmp-layout 0.0.25-beta.1 → 0.0.25-beta.10

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/bmp-layout.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { openBlock, createBlock, unref, normalizeClass, ref, computed, watch, withCtx, createElementBlock, createElementVNode, normalizeStyle, nextTick, createVNode, Fragment, resolveComponent, defineComponent, isVNode, renderList, createCommentVNode, createTextVNode, toDisplayString, renderSlot, onBeforeMount, withModifiers, onMounted, onUnmounted, Teleport, Transition, provide, KeepAlive, resolveDynamicComponent, TransitionGroup, mergeProps, isRef, withDirectives, resolveDirective, watchEffect, vShow, useSlots, useAttrs, createSlots, inject, onBeforeUnmount, reactive, onUpdated, render, useCssVars } from "vue";
1
+ import { openBlock, createBlock, unref, normalizeClass, ref, computed, watch, withCtx, createElementBlock, createElementVNode, normalizeStyle, nextTick, createVNode, Fragment, resolveComponent, defineComponent, isVNode, renderList, createCommentVNode, createTextVNode, toDisplayString, renderSlot, onBeforeMount, onMounted, withModifiers, onUnmounted, Teleport, Transition, provide, KeepAlive, resolveDynamicComponent, TransitionGroup, mergeProps, isRef, withDirectives, resolveDirective, watchEffect, vShow, useSlots, useAttrs, createSlots, inject, onBeforeUnmount, reactive, onUpdated, render, useCssVars } from "vue";
2
2
  import { createPinia, setActivePinia, defineStore } from "pinia";
3
3
  import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
4
4
  import { cloneDeep, omit } from "lodash-es";
@@ -417,7 +417,18 @@ const whiteLight = {
417
417
  topHeaderCompanyIconColor: "#88a0c3",
418
418
  topHeaderCompanyBgColor: "rgba(246,248,255,1)",
419
419
  // 菜单触发器背景颜色
420
- menuTriggerBgColor: "#2468F2"
420
+ menuTriggerBgColor: "#2468F2",
421
+ // 多页签
422
+ tagsViewTextColor: "#7b7e90",
423
+ tagsViewTextActiveColor: "#fff",
424
+ tagsViewBgColor: "transparent",
425
+ tagsViewBgHoverColor: "#dce4f5",
426
+ tagsViewBgActiveColor: "#3d65ff",
427
+ tagsViewArrowColor: "#a4aec4",
428
+ tagsViewArrowHoverColor: "#7d8595",
429
+ tagsViewArrowBgColor: "transparent",
430
+ tagsViewArrowBgHoverColor: "#e5eaf0",
431
+ tagsViewArrowBgDisabledColor: "#e5eaf080"
421
432
  };
422
433
  const blueLight = {
423
434
  ...baseLight,
@@ -474,7 +485,18 @@ const blueLight = {
474
485
  topHeaderCompanyIconColor: "#fff",
475
486
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
476
487
  // 菜单触发器背景颜色
477
- menuTriggerBgColor: "transparent"
488
+ menuTriggerBgColor: "transparent",
489
+ // 多页签
490
+ tagsViewTextColor: "#fff",
491
+ tagsViewTextActiveColor: "#fff",
492
+ tagsViewBgColor: "transparent",
493
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
494
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
495
+ tagsViewArrowColor: "#fff",
496
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
497
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
498
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
499
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
478
500
  };
479
501
  const redLight = {
480
502
  ...baseLight,
@@ -530,7 +552,18 @@ const redLight = {
530
552
  topHeaderCompanyIconColor: "#fff",
531
553
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
532
554
  // 菜单触发器背景颜色
533
- menuTriggerBgColor: "transparent"
555
+ menuTriggerBgColor: "transparent",
556
+ // 多页签
557
+ tagsViewTextColor: "#fff",
558
+ tagsViewTextActiveColor: "#fff",
559
+ tagsViewBgColor: "transparent",
560
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
561
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
562
+ tagsViewArrowColor: "#fff",
563
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
564
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
565
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
566
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
534
567
  };
535
568
  const greenLight = {
536
569
  ...baseLight,
@@ -586,7 +619,18 @@ const greenLight = {
586
619
  topHeaderCompanyIconColor: "#fff",
587
620
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
588
621
  // 菜单触发器背景颜色
589
- menuTriggerBgColor: "transparent"
622
+ menuTriggerBgColor: "transparent",
623
+ // 多页签
624
+ tagsViewTextColor: "#fff",
625
+ tagsViewTextActiveColor: "#fff",
626
+ tagsViewBgColor: "transparent",
627
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
628
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
629
+ tagsViewArrowColor: "#fff",
630
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
631
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
632
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
633
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
590
634
  };
591
635
  const springFestival = {
592
636
  ...baseLight,
@@ -642,7 +686,18 @@ const springFestival = {
642
686
  topHeaderCompanyIconColor: "#fff",
643
687
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
644
688
  // 菜单触发器背景颜色
645
- menuTriggerBgColor: "transparent"
689
+ menuTriggerBgColor: "transparent",
690
+ // 多页签
691
+ tagsViewTextColor: "#fff",
692
+ tagsViewTextActiveColor: "#fff",
693
+ tagsViewBgColor: "transparent",
694
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
695
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
696
+ tagsViewArrowColor: "#fff",
697
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
698
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
699
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
700
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
646
701
  };
647
702
  const dragonBoatFestival = {
648
703
  ...baseLight,
@@ -698,7 +753,18 @@ const dragonBoatFestival = {
698
753
  topHeaderCompanyIconColor: "#fff",
699
754
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
700
755
  // 菜单触发器背景颜色
701
- menuTriggerBgColor: "transparent"
756
+ menuTriggerBgColor: "transparent",
757
+ // 多页签
758
+ tagsViewTextColor: "#fff",
759
+ tagsViewTextActiveColor: "#fff",
760
+ tagsViewBgColor: "transparent",
761
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
762
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
763
+ tagsViewArrowColor: "#fff",
764
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
765
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
766
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
767
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
702
768
  };
703
769
  const midAutumnFestival = {
704
770
  ...baseLight,
@@ -754,7 +820,18 @@ const midAutumnFestival = {
754
820
  topHeaderCompanyIconColor: "#fff",
755
821
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
756
822
  // 菜单触发器背景颜色
757
- menuTriggerBgColor: "transparent"
823
+ menuTriggerBgColor: "transparent",
824
+ // 多页签
825
+ tagsViewTextColor: "#fff",
826
+ tagsViewTextActiveColor: "#fff",
827
+ tagsViewBgColor: "transparent",
828
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
829
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
830
+ tagsViewArrowColor: "#fff",
831
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
832
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
833
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
834
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
758
835
  };
759
836
  const newYearsDay = {
760
837
  ...baseLight,
@@ -810,7 +887,18 @@ const newYearsDay = {
810
887
  topHeaderCompanyIconColor: "#fff",
811
888
  topHeaderCompanyBgColor: "rgba(246,248,255,.3)",
812
889
  // 菜单触发器背景颜色
813
- menuTriggerBgColor: "transparent"
890
+ menuTriggerBgColor: "transparent",
891
+ // 多页签
892
+ tagsViewTextColor: "#fff",
893
+ tagsViewTextActiveColor: "#fff",
894
+ tagsViewBgColor: "transparent",
895
+ tagsViewBgHoverColor: "rgba(255,255,255,.3)",
896
+ tagsViewBgActiveColor: "rgba(255,255,255,.2)",
897
+ tagsViewArrowColor: "#fff",
898
+ tagsViewArrowHoverColor: "rgba(255,255,255,.8)",
899
+ tagsViewArrowBgColor: "rgba(255,255,255,.2)",
900
+ tagsViewArrowBgHoverColor: "rgba(255,255,255,.3)",
901
+ tagsViewArrowBgDisabledColor: "rgba(255,255,255,.5)"
814
902
  };
815
903
  const systemTheme = {
816
904
  whiteLight,
@@ -845,7 +933,7 @@ const useAppStore = defineStore("layout-app", {
845
933
  // 折叠图标
846
934
  search: false,
847
935
  // 搜索图标
848
- locale: false,
936
+ locale: true,
849
937
  // 多语言图标
850
938
  setting: true,
851
939
  // 偏好设置
@@ -1126,9 +1214,55 @@ function buildChildPaths(router) {
1126
1214
  const parentPath = router.path ? router.path.startsWith("/") ? router.path : `/${router.path}` : "";
1127
1215
  return (router.children || []).map((child) => {
1128
1216
  const childPath = child.path ? parentPath.endsWith("/") ? child.path.startsWith("/") ? child.path.substring(1) : child.path : child.path.startsWith("/") ? child.path : `/${child.path}` : "";
1129
- return { ...child, path: `${parentPath}${childPath}` };
1217
+ let fullPath = `${parentPath}${childPath}`;
1218
+ if (fullPath.length > 1 && fullPath.endsWith("/")) {
1219
+ fullPath = fullPath.slice(0, -1);
1220
+ }
1221
+ return { ...child, path: fullPath };
1222
+ });
1223
+ }
1224
+ function prependPathToRoutes(routes, parentPath) {
1225
+ if (!parentPath || !routes)
1226
+ return routes;
1227
+ const base = parentPath === "/" ? "" : parentPath.replace(/\/$/, "");
1228
+ return routes.map((route) => {
1229
+ let newPath;
1230
+ if (!route.path) {
1231
+ newPath = base || "/";
1232
+ } else {
1233
+ newPath = base + (route.path.startsWith("/") ? route.path : `/${route.path}`);
1234
+ }
1235
+ if (newPath.length > 1 && newPath.endsWith("/")) {
1236
+ newPath = newPath.slice(0, -1);
1237
+ }
1238
+ return {
1239
+ ...route,
1240
+ path: newPath
1241
+ };
1130
1242
  });
1131
1243
  }
1244
+ function mergeExampleRoutes(targetModule, exampleRoutes, position = "start") {
1245
+ if (!exampleRoutes || exampleRoutes.length === 0)
1246
+ return;
1247
+ const convertRouteToMenu = (route) => {
1248
+ var _a2, _b, _c, _d, _e, _f;
1249
+ return {
1250
+ name: ((_a2 = route.meta) == null ? void 0 : _a2.title) || route.name || "",
1251
+ path: route.path,
1252
+ icon: ((_b = route.meta) == null ? void 0 : _b.icon) || "",
1253
+ visible: ((_c = route.meta) == null ? void 0 : _c.hidden) !== true,
1254
+ redirect: route.redirect || "",
1255
+ meta: {
1256
+ title: ((_d = route.meta) == null ? void 0 : _d.title) || route.name || "",
1257
+ icon: ((_e = route.meta) == null ? void 0 : _e.icon) || "",
1258
+ hidden: ((_f = route.meta) == null ? void 0 : _f.hidden) === true
1259
+ },
1260
+ children: (route.children || []).map(convertRouteToMenu)
1261
+ };
1262
+ };
1263
+ const converted = exampleRoutes.map(convertRouteToMenu);
1264
+ targetModule.children = position === "start" ? converted.concat(targetModule.children || []) : (targetModule.children || []).concat(converted);
1265
+ }
1132
1266
  const usePermissionStore = defineStore("layout-permission", {
1133
1267
  state: () => ({
1134
1268
  routers: [],
@@ -1193,13 +1327,19 @@ const usePermissionStore = defineStore("layout-permission", {
1193
1327
  this.leftMenuRouters = routers;
1194
1328
  },
1195
1329
  // 处理模块对应菜单
1196
- setModuleRouters(menuId) {
1330
+ // 返回修改后的 exampleRoutes(已拼接模块路径前缀),供路由注册使用
1331
+ setModuleRouters(menuId, exampleRoutes = [], examplePosition = "start") {
1197
1332
  const findRouter = findRouterBy(this.getRoleRouters, "id", menuId);
1198
1333
  if (findRouter) {
1199
1334
  this.moduleId = findRouter.id;
1200
1335
  this.moduleName = findRouter.name;
1201
1336
  this.moduleRouters = buildChildPaths(findRouter);
1337
+ const parentPath = findRouter.path || "";
1338
+ const prefixedExampleRoutes = prependPathToRoutes(exampleRoutes, parentPath);
1339
+ mergeExampleRoutes(findRouter, prefixedExampleRoutes, examplePosition);
1340
+ return prefixedExampleRoutes;
1202
1341
  }
1342
+ return exampleRoutes;
1203
1343
  },
1204
1344
  resetState() {
1205
1345
  this.routers = [];
@@ -1212,13 +1352,19 @@ const usePermissionStore = defineStore("layout-permission", {
1212
1352
  this.roleRouters = [];
1213
1353
  },
1214
1354
  // 处理模块对应菜单(通过模块code)
1215
- setModuleRoutersByCode(moduleCode) {
1355
+ // 返回修改后的 exampleRoutes(已拼接模块路径前缀),供路由注册使用
1356
+ setModuleRoutersByCode(moduleCode, exampleRoutes = [], examplePosition = "start") {
1216
1357
  const findRouter = findRouterBy(this.getRoleRouters, "moduleCode", moduleCode);
1217
1358
  if (findRouter) {
1218
1359
  this.moduleId = findRouter.id;
1219
1360
  this.moduleName = findRouter.name;
1220
1361
  this.moduleRouters = buildChildPaths(findRouter);
1362
+ const parentPath = findRouter.path || "";
1363
+ const prefixedExampleRoutes = prependPathToRoutes(exampleRoutes, parentPath);
1364
+ mergeExampleRoutes(findRouter, prefixedExampleRoutes, examplePosition);
1365
+ return prefixedExampleRoutes;
1221
1366
  }
1367
+ return exampleRoutes;
1222
1368
  }
1223
1369
  },
1224
1370
  persist: false
@@ -8221,14 +8367,53 @@ const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "TagsView" }, {
8221
8367
  };
8222
8368
  const scrollbarRef = ref();
8223
8369
  const scrollLeftNumber = ref(0);
8370
+ const showArrows = ref(false);
8371
+ const disabledLeftArrow = ref(false);
8372
+ const disabledRightArrow = ref(false);
8224
8373
  let scrollStopFn = null;
8225
- const scroll = ({ scrollLeft }) => {
8374
+ const checkArrows = () => {
8375
+ var _a2;
8376
+ const wrap$ = (_a2 = unref(scrollbarRef)) == null ? void 0 : _a2.wrapRef;
8377
+ if (!wrap$)
8378
+ return;
8379
+ const { scrollLeft, scrollWidth, offsetWidth } = wrap$;
8380
+ showArrows.value = scrollWidth > offsetWidth;
8381
+ disabledLeftArrow.value = scrollLeft <= 0;
8382
+ disabledRightArrow.value = scrollLeft >= scrollWidth - offsetWidth - 1;
8383
+ };
8384
+ const handleScroll = ({ scrollLeft }) => {
8226
8385
  scrollLeftNumber.value = scrollLeft;
8386
+ checkArrows();
8387
+ };
8388
+ const handleScrollLeft = () => {
8389
+ var _a2;
8390
+ const wrap$ = (_a2 = unref(scrollbarRef)) == null ? void 0 : _a2.wrapRef;
8391
+ if (wrap$) {
8392
+ wrap$.scrollTo({
8393
+ left: Math.max(0, wrap$.scrollLeft - 300),
8394
+ behavior: "smooth"
8395
+ });
8396
+ }
8397
+ };
8398
+ const handleScrollRight = () => {
8399
+ var _a2;
8400
+ const wrap$ = (_a2 = unref(scrollbarRef)) == null ? void 0 : _a2.wrapRef;
8401
+ if (wrap$) {
8402
+ wrap$.scrollTo({
8403
+ left: wrap$.scrollLeft + 300,
8404
+ behavior: "smooth"
8405
+ });
8406
+ }
8227
8407
  };
8228
8408
  onBeforeMount(() => {
8229
8409
  initTags();
8230
8410
  addTags();
8231
8411
  });
8412
+ onMounted(() => {
8413
+ nextTick(() => {
8414
+ checkArrows();
8415
+ });
8416
+ });
8232
8417
  watch(
8233
8418
  () => currentRoute.value,
8234
8419
  () => {
@@ -8241,14 +8426,14 @@ const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "TagsView" }, {
8241
8426
  const _component_router_link = resolveComponent("router-link");
8242
8427
  return openBlock(), createElementBlock("div", {
8243
8428
  id: unref(prefixCls2),
8244
- class: normalizeClass([unref(prefixCls2), "relative flex"])
8429
+ class: normalizeClass([unref(prefixCls2), "relative flex items-center"])
8245
8430
  }, [
8246
8431
  createElementVNode("div", _hoisted_2$a, [
8247
8432
  createVNode(unref(ElScrollbar), {
8248
8433
  ref_key: "scrollbarRef",
8249
8434
  ref: scrollbarRef,
8250
8435
  class: "h-full",
8251
- onScroll: scroll
8436
+ onScroll: handleScroll
8252
8437
  }, {
8253
8438
  default: withCtx(() => [
8254
8439
  createElementVNode("div", _hoisted_3$9, [
@@ -8319,7 +8504,6 @@ const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "TagsView" }, {
8319
8504
  createVNode(_component_Icon, {
8320
8505
  class: normalizeClass(`${unref(prefixCls2)}__item--close`),
8321
8506
  size: 8,
8322
- color: "#7b7e904ff",
8323
8507
  icon: "svg-icon:tag-close",
8324
8508
  onClick: withModifiers(($event) => closeSelectedTag(item), ["prevent", "stop"])
8325
8509
  }, null, 8, ["class", "onClick"]),
@@ -8341,12 +8525,32 @@ const _sfc_main$t = /* @__PURE__ */ Object.assign({ name: "TagsView" }, {
8341
8525
  ]),
8342
8526
  _: 1
8343
8527
  }, 512)
8344
- ])
8528
+ ]),
8529
+ unref(showArrows) ? (openBlock(), createElementBlock("div", {
8530
+ key: 0,
8531
+ class: normalizeClass(`${unref(prefixCls2)}__arrow ${unref(prefixCls2)}__arrow--left ${unref(disabledLeftArrow) ? "is-disabled" : ""}`),
8532
+ onClick: handleScrollLeft
8533
+ }, [
8534
+ createVNode(_component_Icon, {
8535
+ icon: "svg-icon:chevron-left",
8536
+ size: 10
8537
+ })
8538
+ ], 2)) : createCommentVNode("", true),
8539
+ unref(showArrows) ? (openBlock(), createElementBlock("div", {
8540
+ key: 1,
8541
+ class: normalizeClass(`${unref(prefixCls2)}__arrow ${unref(prefixCls2)}__arrow--right ${unref(disabledRightArrow) ? "is-disabled" : ""}`),
8542
+ onClick: handleScrollRight
8543
+ }, [
8544
+ createVNode(_component_Icon, {
8545
+ icon: "svg-icon:chevron-right",
8546
+ size: 10
8547
+ })
8548
+ ], 2)) : createCommentVNode("", true)
8345
8549
  ], 10, _hoisted_1$c);
8346
8550
  };
8347
8551
  }
8348
8552
  });
8349
- const TagsView = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-3ab01e0b"]]);
8553
+ const TagsView = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-3fbf2f73"]]);
8350
8554
  const _sfc_main$s = /* @__PURE__ */ Object.assign({ name: "MenuTrigger" }, {
8351
8555
  __name: "MenuTrigger",
8352
8556
  props: {
@@ -8362,7 +8566,7 @@ const _sfc_main$s = /* @__PURE__ */ Object.assign({ name: "MenuTrigger" }, {
8362
8566
  const prefixCls2 = getPrefixCls2("menu-trigger");
8363
8567
  const props = __props;
8364
8568
  const theme = computed(() => appStore.getTheme);
8365
- const triggerIcon = computed(() => props.active ? "ant-design:close-outlined" : theme.value === "whiteLight" ? "svg-icon:menu-trigger-filled" : "svg-icon:menu-trigger");
8569
+ const triggerIcon = computed(() => props.active ? "svg-icon:close-square" : theme.value === "whiteLight" ? "svg-icon:menu-trigger-filled" : "svg-icon:menu-trigger");
8366
8570
  const emit = __emit;
8367
8571
  const handleClick = () => {
8368
8572
  emit("click");
@@ -8376,14 +8580,14 @@ const _sfc_main$s = /* @__PURE__ */ Object.assign({ name: "MenuTrigger" }, {
8376
8580
  }, [
8377
8581
  createVNode(_component_Icon, {
8378
8582
  icon: unref(triggerIcon),
8379
- svgClass: "!w-full !h-full",
8380
- class: normalizeClass(["!w-18px", "!h-18px", "icon-color"])
8583
+ class: normalizeClass(["icon-color"]),
8584
+ size: 18
8381
8585
  }, null, 8, ["icon"])
8382
8586
  ], 2);
8383
8587
  };
8384
8588
  }
8385
8589
  });
8386
- const MenuTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-aedf94f7"]]);
8590
+ const MenuTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-df837f35"]]);
8387
8591
  const _hoisted_1$b = { class: "sidebar-inner" };
8388
8592
  const _hoisted_2$9 = ["onClick"];
8389
8593
  const _hoisted_3$8 = ["onClick"];
@@ -8429,6 +8633,7 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8429
8633
  }, 300);
8430
8634
  }
8431
8635
  });
8636
+ const expandedCardIndex = ref(null);
8432
8637
  const activeProductIndex = ref(0);
8433
8638
  const activeModuleIndex = ref(0);
8434
8639
  const routers = computed(() => permissionStore.getRoleRouters);
@@ -8504,9 +8709,10 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8504
8709
  return paths.filter(Boolean).reduce((result, path) => {
8505
8710
  if (!result)
8506
8711
  return path;
8712
+ if (path.startsWith("/"))
8713
+ return path;
8507
8714
  const normalizedBase = result.endsWith("/") ? result.slice(0, -1) : result;
8508
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
8509
- return `${normalizedBase}/${normalizedPath}`;
8715
+ return `${normalizedBase}/${path}`;
8510
8716
  }, "");
8511
8717
  };
8512
8718
  const getAccessiblePath = (item, parentPath = "") => {
@@ -8528,18 +8734,21 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8528
8734
  activeModuleIndex.value = 0;
8529
8735
  };
8530
8736
  const handleSelect = (item, parentPath = "") => {
8531
- var _a2, _b, _c;
8737
+ var _a2, _b, _c, _d;
8532
8738
  const fullPath = getAccessiblePath(item, parentPath);
8533
8739
  if (fullPath) {
8740
+ const normalizedPath = fullPath.startsWith("/") ? fullPath : `/${fullPath}`;
8534
8741
  const currentModuleId = permissionStore.getModuleId;
8535
8742
  const selectedModuleId = (_b = (_a2 = productList.value[activeProductIndex.value]) == null ? void 0 : _a2.children[activeModuleIndex.value]) == null ? void 0 : _b.id;
8536
8743
  if (selectedModuleId === currentModuleId) {
8537
- router.push(fullPath.startsWith("/") ? fullPath : `/${fullPath}`);
8744
+ router.push(normalizedPath);
8538
8745
  } else {
8539
8746
  const currentOrigin = window.location.origin;
8540
- const modulePath = ((_c = productList.value[activeProductIndex.value]) == null ? void 0 : _c.modulePath) || "";
8541
- const moduleFullPath = joinPath(modulePath, fullPath);
8542
- const targetUrl = `${currentOrigin}${moduleFullPath.startsWith("/") ? moduleFullPath : `/${moduleFullPath}`}`;
8747
+ const rawModulePath = ((_d = (_c = productList.value[activeProductIndex.value]) == null ? void 0 : _c.children[activeModuleIndex.value]) == null ? void 0 : _d.modulePath) || "";
8748
+ const modulePath = rawModulePath === "/" ? "" : rawModulePath;
8749
+ const hasModulePrefix = modulePath && (fullPath === modulePath || fullPath.startsWith(modulePath + "/"));
8750
+ const finalPath = hasModulePrefix ? normalizedPath : `${modulePath}${normalizedPath}`;
8751
+ const targetUrl = `${currentOrigin}${finalPath.startsWith("/") ? finalPath : `/${finalPath}`}`;
8543
8752
  window.location.href = targetUrl;
8544
8753
  }
8545
8754
  closePanel();
@@ -8596,6 +8805,7 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8596
8805
  activeProductIndex.value = 0;
8597
8806
  activeModuleIndex.value = 0;
8598
8807
  }
8808
+ expandedCardIndex.value = activeProductIndex.value;
8599
8809
  nextTick(() => {
8600
8810
  var _a2;
8601
8811
  (_a2 = searchInputRef.value) == null ? void 0 : _a2.focus();
@@ -8624,7 +8834,7 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8624
8834
  __props.visible ? (openBlock(), createElementBlock("div", {
8625
8835
  key: 0,
8626
8836
  class: normalizeClass([unref(prefixCls2)]),
8627
- onClick: _cache[1] || (_cache[1] = withModifiers(() => {
8837
+ onClick: _cache[2] || (_cache[2] = withModifiers(() => {
8628
8838
  }, ["stop"]))
8629
8839
  }, [
8630
8840
  createElementVNode("div", {
@@ -8646,18 +8856,37 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8646
8856
  key: product.id || pIndex,
8647
8857
  class: normalizeClass([
8648
8858
  unref(prefixCls2) + "__product-card",
8649
- { "is-active": activeProductIndex.value === pIndex }
8859
+ { "is-active": activeProductIndex.value === pIndex },
8860
+ { "is-expanded": expandedCardIndex.value === pIndex }
8650
8861
  ]),
8651
- onClick: ($event) => handleProductSelect(pIndex)
8862
+ onClick: ($event) => {
8863
+ handleProductSelect(pIndex);
8864
+ expandedCardIndex.value = expandedCardIndex.value === pIndex ? null : pIndex;
8865
+ }
8652
8866
  }, [
8653
8867
  createElementVNode("div", {
8654
8868
  class: normalizeClass([unref(prefixCls2) + "__product-name"])
8655
8869
  }, [
8656
- createElementVNode("span", null, toDisplayString(product.title), 1)
8870
+ createVNode(unref(_sfc_main$x), {
8871
+ icon: product.icon ? product.icon : "svg-icon:clipboard",
8872
+ size: 16
8873
+ }, null, 8, ["icon"]),
8874
+ createElementVNode("span", null, toDisplayString(product.title), 1),
8875
+ product.children.length > 0 ? (openBlock(), createElementBlock("div", {
8876
+ key: 0,
8877
+ class: normalizeClass([unref(prefixCls2) + "__card-toggle"])
8878
+ }, [
8879
+ createVNode(unref(_sfc_main$x), {
8880
+ icon: expandedCardIndex.value === pIndex ? "lucide:chevron-up" : "lucide:chevron-down",
8881
+ size: 14
8882
+ }, null, 8, ["icon"])
8883
+ ], 2)) : createCommentVNode("", true)
8657
8884
  ], 2),
8658
- product.children.length > 0 ? (openBlock(), createElementBlock("div", {
8885
+ product.children.length > 0 && expandedCardIndex.value === pIndex ? (openBlock(), createElementBlock("div", {
8659
8886
  key: 0,
8660
- class: normalizeClass([unref(prefixCls2) + "__product-modules"])
8887
+ class: normalizeClass([unref(prefixCls2) + "__product-modules"]),
8888
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
8889
+ }, ["stop"]))
8661
8890
  }, [
8662
8891
  (openBlock(true), createElementBlock(Fragment, null, renderList(product.children, (mod, mIndex) => {
8663
8892
  return openBlock(), createElementBlock("span", {
@@ -8689,7 +8918,7 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8689
8918
  ref_key: "searchInputRef",
8690
8919
  ref: searchInputRef,
8691
8920
  modelValue: searchKeyword.value,
8692
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchKeyword.value = $event),
8921
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => searchKeyword.value = $event),
8693
8922
  placeholder: unref(t2)("layout.common.searchMenu"),
8694
8923
  clearable: "",
8695
8924
  size: "default"
@@ -8775,7 +9004,7 @@ const _sfc_main$r = /* @__PURE__ */ Object.assign({ name: "ProductServicePanel"
8775
9004
  };
8776
9005
  }
8777
9006
  });
8778
- const ProductServicePanel = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-130420a1"]]);
9007
+ const ProductServicePanel = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-f9a0a896"]]);
8779
9008
  const _sfc_main$q = /* @__PURE__ */ Object.assign({ name: "Logo" }, {
8780
9009
  __name: "Logo",
8781
9010
  emits: ["logo-click"],
@@ -8831,7 +9060,7 @@ const _sfc_main$q = /* @__PURE__ */ Object.assign({ name: "Logo" }, {
8831
9060
  };
8832
9061
  }
8833
9062
  });
8834
- const _hoisted_1$a = { class: "w-full min-w-1000px" };
9063
+ const _hoisted_1$a = { class: "w-full min-w-1000px h-full" };
8835
9064
  const _sfc_main$p = /* @__PURE__ */ Object.assign({ name: "AppView" }, {
8836
9065
  __name: "AppView",
8837
9066
  setup(__props) {
@@ -8943,10 +9172,10 @@ const _sfc_main$o = /* @__PURE__ */ Object.assign({ name: "Message" }, {
8943
9172
  const Message = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-fdaeb8e4"]]);
8944
9173
  const avatarImg = "data:image/gif;base64,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";
8945
9174
  const _hoisted_1$9 = { class: "flex items-center px-10px py-8px text-[var(--top-header-text-color)] hover:text-[var(--top-header-hover-color)] rounded-6px bg-[var(--top-header-company-bg-color)]" };
8946
- const _hoisted_2$8 = { class: "pl-6px text-12px <lg:hidden" };
9175
+ const _hoisted_2$8 = { class: "pl-6px text-12px <lg:hidden truncate max-w-120px" };
8947
9176
  const _hoisted_3$7 = { class: "ml-6px" };
8948
- const _hoisted_4$6 = { class: "flex items-center text-[var(--top-header-text-color)] hover:text-[var(--top-header-hover-color)] mr-18px" };
8949
- const _hoisted_5$5 = { class: "pl-5px text-12px <lg:hidden" };
9177
+ const _hoisted_4$6 = { class: "flex items-center text-[var(--top-header-text-color)] hover:text-[var(--top-header-hover-color)]" };
9178
+ const _hoisted_5$5 = { class: "pl-5px text-12px <lg:hidden truncate max-w-100px" };
8950
9179
  const _hoisted_6$4 = { class: "ml-6px" };
8951
9180
  const _hoisted_7$2 = { class: "flex items-center text-#e0e0e0" };
8952
9181
  const _hoisted_8$1 = { class: "flex flex-col gap-3px pl-5px text-12px <lg:hidden" };
@@ -9146,7 +9375,7 @@ const _sfc_main$n = /* @__PURE__ */ Object.assign({ name: "UserInfo" }, {
9146
9375
  };
9147
9376
  }
9148
9377
  });
9149
- const UserInfo = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-31268ba6"]]);
9378
+ const UserInfo = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-d68b68d5"]]);
9150
9379
  const filterBreadcrumb = (routes, parentPath = "") => {
9151
9380
  var _a2;
9152
9381
  const res = [];
@@ -9602,10 +9831,189 @@ var English = {
9602
9831
  }
9603
9832
  }
9604
9833
  };
9834
+ var zhTw = {
9835
+ name: "zh-tw",
9836
+ el: {
9837
+ breadcrumb: {
9838
+ label: "面包屑"
9839
+ },
9840
+ colorpicker: {
9841
+ confirm: "確認",
9842
+ clear: "清空",
9843
+ defaultLabel: "色彩選擇器",
9844
+ description: "目前色彩為 {color}。按一下 Enter 以選擇新色彩。",
9845
+ alphaLabel: "選擇透明度的值"
9846
+ },
9847
+ datepicker: {
9848
+ now: "現在",
9849
+ today: "今天",
9850
+ cancel: "取消",
9851
+ clear: "清空",
9852
+ confirm: "確認",
9853
+ dateTablePrompt: "使用方向鍵與 Enter 鍵以選擇日期",
9854
+ monthTablePrompt: "使用方向鍵與 Enter 鍵以選擇月份",
9855
+ yearTablePrompt: "使用方向鍵與 Enter 鍵以選擇年份",
9856
+ selectedDate: "已選日期",
9857
+ selectDate: "選擇日期",
9858
+ selectTime: "選擇時間",
9859
+ startDate: "開始日期",
9860
+ startTime: "開始時間",
9861
+ endDate: "結束日期",
9862
+ endTime: "結束時間",
9863
+ prevYear: "前一年",
9864
+ nextYear: "後一年",
9865
+ prevMonth: "上個月",
9866
+ nextMonth: "下個月",
9867
+ year: "年",
9868
+ month1: "1 月",
9869
+ month2: "2 月",
9870
+ month3: "3 月",
9871
+ month4: "4 月",
9872
+ month5: "5 月",
9873
+ month6: "6 月",
9874
+ month7: "7 月",
9875
+ month8: "8 月",
9876
+ month9: "9 月",
9877
+ month10: "10 月",
9878
+ month11: "11 月",
9879
+ month12: "12 月",
9880
+ weeks: {
9881
+ sun: "日",
9882
+ mon: "一",
9883
+ tue: "二",
9884
+ wed: "三",
9885
+ thu: "四",
9886
+ fri: "五",
9887
+ sat: "六"
9888
+ },
9889
+ weeksFull: {
9890
+ sun: "星期日",
9891
+ mon: "星期一",
9892
+ tue: "星期二",
9893
+ wed: "星期三",
9894
+ thu: "星期四",
9895
+ fri: "星期五",
9896
+ sat: "星期六"
9897
+ },
9898
+ months: {
9899
+ jan: "一月",
9900
+ feb: "二月",
9901
+ mar: "三月",
9902
+ apr: "四月",
9903
+ may: "五月",
9904
+ jun: "六月",
9905
+ jul: "七月",
9906
+ aug: "八月",
9907
+ sep: "九月",
9908
+ oct: "十月",
9909
+ nov: "十一月",
9910
+ dec: "十二月"
9911
+ }
9912
+ },
9913
+ inputNumber: {
9914
+ decrease: "減少數值",
9915
+ increase: "增加數值"
9916
+ },
9917
+ select: {
9918
+ loading: "載入中",
9919
+ noMatch: "無相符資料",
9920
+ noData: "無資料",
9921
+ placeholder: "請選擇"
9922
+ },
9923
+ mention: {
9924
+ loading: "載入中"
9925
+ },
9926
+ dropdown: {
9927
+ toggleDropdown: "切換下拉選單"
9928
+ },
9929
+ cascader: {
9930
+ noMatch: "無相符資料",
9931
+ loading: "載入中",
9932
+ placeholder: "請選擇",
9933
+ noData: "無資料"
9934
+ },
9935
+ pagination: {
9936
+ goto: "前往",
9937
+ pagesize: "項/頁",
9938
+ total: "共 {total} 項",
9939
+ pageClassifier: "頁",
9940
+ page: "頁",
9941
+ prev: "上一頁",
9942
+ next: "下一頁",
9943
+ currentPage: "第 {pager} 頁",
9944
+ prevPages: "向前 {pager} 頁",
9945
+ nextPages: "向後 {pager} 頁",
9946
+ deprecationWarning: "偵測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊"
9947
+ },
9948
+ dialog: {
9949
+ close: "關閉此對話框"
9950
+ },
9951
+ drawer: {
9952
+ close: "關閉此對話框"
9953
+ },
9954
+ messagebox: {
9955
+ title: "提示",
9956
+ confirm: "確定",
9957
+ cancel: "取消",
9958
+ error: "輸入的資料不符合規定!",
9959
+ close: "關閉此對話框"
9960
+ },
9961
+ upload: {
9962
+ deleteTip: "按 Delete 鍵以刪除",
9963
+ delete: "刪除",
9964
+ preview: "查看圖片",
9965
+ continue: "繼續上傳"
9966
+ },
9967
+ slider: {
9968
+ defaultLabel: "滑桿介於 {min} 至 {max}",
9969
+ defaultRangeStartLabel: "選擇起始值",
9970
+ defaultRangeEndLabel: "選擇結束值"
9971
+ },
9972
+ table: {
9973
+ emptyText: "暫無資料",
9974
+ confirmFilter: "篩選",
9975
+ resetFilter: "重置",
9976
+ clearFilter: "全部",
9977
+ sumText: "合計"
9978
+ },
9979
+ tour: {
9980
+ next: "下一步",
9981
+ previous: "上一步",
9982
+ finish: "結束導覽"
9983
+ },
9984
+ tree: {
9985
+ emptyText: "暫無資料"
9986
+ },
9987
+ transfer: {
9988
+ noMatch: "無相符資料",
9989
+ noData: "無資料",
9990
+ titles: ["列表 1", "列表 2"],
9991
+ filterPlaceholder: "請輸入搜尋內容",
9992
+ noCheckedFormat: "共 {total} 項",
9993
+ hasCheckedFormat: "已選 {checked}/{total} 項"
9994
+ },
9995
+ image: {
9996
+ error: "載入失敗"
9997
+ },
9998
+ pageHeader: {
9999
+ title: "返回"
10000
+ },
10001
+ popconfirm: {
10002
+ confirmButtonText: "確認",
10003
+ cancelButtonText: "取消"
10004
+ },
10005
+ carousel: {
10006
+ leftArrow: "上一張投影片",
10007
+ rightArrow: "下一張投影片",
10008
+ indicator: "投影片切換至索引 {index}"
10009
+ }
10010
+ }
10011
+ };
9605
10012
  const { wsCache } = useCache();
9606
10013
  const elLocaleMap = {
9607
10014
  "zh-CN": zhCn,
9608
- en: English
10015
+ en: English,
10016
+ "zh-TW": zhTw
9609
10017
  };
9610
10018
  const useLocaleStore = defineStore("layout-locales", {
9611
10019
  state: () => {
@@ -9620,6 +10028,10 @@ const useLocaleStore = defineStore("layout-locales", {
9620
10028
  lang: "zh-CN",
9621
10029
  name: "简体中文"
9622
10030
  },
10031
+ {
10032
+ lang: "zh-TW",
10033
+ name: "繁體中文"
10034
+ },
9623
10035
  {
9624
10036
  lang: "en",
9625
10037
  name: "English"
@@ -9675,7 +10087,7 @@ const setI18nLanguage = (locale) => {
9675
10087
  const useLocale = () => {
9676
10088
  const changeLocale = async (locale) => {
9677
10089
  const globalI18n = i18n.global;
9678
- const langModule = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../../locales/en.js": () => import("./en-BLMsUBCM.mjs"), "../../locales/zh-CN.js": () => import("./zh-CN-i4M-o5m6.mjs") }), `../../locales/${locale}.js`);
10090
+ const langModule = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../../locales/en.js": () => import("./en-BLMsUBCM.mjs"), "../../locales/zh-CN.js": () => import("./zh-CN-i4M-o5m6.mjs"), "../../locales/zh-TW.js": () => import("./zh-TW-DYC8NCr4.mjs") }), `../../locales/${locale}.js`);
9679
10091
  globalI18n.setLocaleMessage(locale, langModule.default);
9680
10092
  setI18nLanguage(locale);
9681
10093
  };
@@ -9683,7 +10095,7 @@ const useLocale = () => {
9683
10095
  changeLocale
9684
10096
  };
9685
10097
  };
9686
- const _sfc_main$l = /* @__PURE__ */ Object.assign({ name: "LocaleDropdown" }, {
10098
+ const _sfc_main$l = /* @__PURE__ */ Object.assign({ name: "LocaleDropdown", inheritAttrs: false }, {
9687
10099
  __name: "LocaleDropdown",
9688
10100
  props: {
9689
10101
  color: {
@@ -9733,12 +10145,16 @@ const _sfc_main$l = /* @__PURE__ */ Object.assign({ name: "LocaleDropdown" }, {
9733
10145
  })
9734
10146
  ]),
9735
10147
  default: withCtx(() => [
9736
- createVNode(_component_Icon, {
9737
- class: normalizeClass([_ctx.$attrs.class, "cursor-pointer !p-0"]),
9738
- color: __props.color,
9739
- size: 18,
9740
- icon: "ion:language-sharp"
9741
- }, null, 8, ["class", "color"])
10148
+ createElementVNode("div", {
10149
+ class: normalizeClass(_ctx.$attrs.class)
10150
+ }, [
10151
+ createVNode(_component_Icon, {
10152
+ color: __props.color,
10153
+ size: 18,
10154
+ class: "!p-0",
10155
+ icon: "svg-icon:language"
10156
+ }, null, 8, ["color"])
10157
+ ], 2)
9742
10158
  ]),
9743
10159
  _: 1
9744
10160
  }, 8, ["class"]);
@@ -10256,7 +10672,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10256
10672
  "color": iconColor.value,
10257
10673
  "onClearCacheLogoutClick": props.onClearCacheLogoutClick
10258
10674
  }, null) : void 0, locale.value ? createVNode(_sfc_main$l, {
10259
- "class": "custom-hover",
10675
+ "class": "custom-hover cursor-pointer",
10260
10676
  "color": "var(--top-header-text-color)"
10261
10677
  }, null) : void 0, createVNode("div", {
10262
10678
  "class": `h-12px mx-10px`,
@@ -10274,13 +10690,19 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10274
10690
  };
10275
10691
  }
10276
10692
  });
10277
- const ToolHeader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-c654093f"]]);
10693
+ const ToolHeader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-caca6e2e"]]);
10278
10694
  const {
10279
10695
  getPrefixCls: getPrefixCls$1
10280
10696
  } = useDesign();
10281
10697
  const prefixCls$1 = getPrefixCls$1("layout");
10282
10698
  const scrollRef = ref();
10283
- const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick, onSwitchCompanyClick) => {
10699
+ const useRenderLayout = (props, {
10700
+ onLogoClick,
10701
+ onMessageClick,
10702
+ onLogoutClick,
10703
+ onClearCacheLogoutClick,
10704
+ onSwitchCompanyClick
10705
+ }) => {
10284
10706
  const appStore = useAppStore();
10285
10707
  const permissionStore = usePermissionStore();
10286
10708
  const pageLoading = computed(() => appStore.getPageLoading);
@@ -10378,27 +10800,28 @@ const useRenderLayout = (onLogoClick, onMessageClick, onLogoutClick, onClearCach
10378
10800
  };
10379
10801
  const renderTop = () => {
10380
10802
  return createVNode(Fragment, null, [createVNode("div", {
10381
- "class": ["relative flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))] shadow-[0px_2px_6px_0px_rgba(197,206,225,0.35)] z-100", {
10803
+ "class": ["relative w-full flex items-center justify-between bg-[linear-gradient(var(--top-header-bg-color))] shadow-[0px_2px_6px_0px_rgba(197,206,225,0.35)] z-100", {
10382
10804
  "layout-border__bottom": !tagsView.value
10383
10805
  }, festivalTopClass.value]
10384
10806
  }, [logo.value ? createVNode(_sfc_main$q, {
10385
- "class": ["w-[var(--left-menu-max-width)]"],
10807
+ "class": ["shrink-0 w-[var(--left-menu-max-width)]"],
10386
10808
  "onLogoClick": onLogoClick
10387
10809
  }, null) : void 0, tagsView.value && createVNode(TagsView, {
10388
- "class": ["layout-border__bottom flex-1"]
10810
+ "class": ["layout-border__bottom flex-1 min-w-0"]
10389
10811
  }, null), createVNode(ToolHeader, {
10812
+ "class": "shrink-0 pl-20px",
10390
10813
  "onMessageClick": onMessageClick,
10391
10814
  "onLogoutClick": onLogoutClick,
10392
10815
  "onClearCacheLogoutClick": onClearCacheLogoutClick,
10393
10816
  "onSwitchCompanyClick": onSwitchCompanyClick
10394
10817
  }, null)]), createVNode("div", {
10395
10818
  "class": [`${prefixCls$1}-content`, "w-full h-[calc(100%-var(--top-tool-height))]"]
10396
- }, [withDirectives(createVNode(ElScrollbar, {
10819
+ }, [props.scroll ? withDirectives(createVNode(ElScrollbar, {
10397
10820
  "class": [`${prefixCls$1}-content-scrollbar`],
10398
10821
  "ref": scrollRef
10399
10822
  }, {
10400
10823
  default: () => [createVNode(_sfc_main$p, null, null)]
10401
- }), [[resolveDirective("loading"), pageLoading.value]])])]);
10824
+ }), [[resolveDirective("loading"), pageLoading.value]]) : createVNode(_sfc_main$p, null, null)])]);
10402
10825
  };
10403
10826
  const renderTopLeft = () => {
10404
10827
  return createVNode(Fragment, null, [createVNode("div", {
@@ -10463,13 +10886,25 @@ const {
10463
10886
  } = useDesign();
10464
10887
  const prefixCls = getPrefixCls("layout");
10465
10888
  const layoutScrollRef = ref();
10466
- const renderLayout = (layout, onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick, onSwitchCompanyClick) => {
10889
+ const renderLayout = (layout, props, {
10890
+ handleLogoClick,
10891
+ handleMessageClick,
10892
+ handleLogoutClick,
10893
+ handleClearCacheLogoutClick,
10894
+ handleSwitchCompanyClick
10895
+ }) => {
10467
10896
  const {
10468
10897
  renderLeft,
10469
10898
  renderTop,
10470
10899
  renderTopLeft,
10471
10900
  scrollRef: scrollRef2
10472
- } = useRenderLayout(onLogoClick, onMessageClick, onLogoutClick, onClearCacheLogoutClick, onSwitchCompanyClick);
10901
+ } = useRenderLayout(props, {
10902
+ onLogoClick: handleLogoClick,
10903
+ onMessageClick: handleMessageClick,
10904
+ onLogoutClick: handleLogoutClick,
10905
+ onClearCacheLogoutClick: handleClearCacheLogoutClick,
10906
+ onSwitchCompanyClick: handleSwitchCompanyClick
10907
+ });
10473
10908
  layoutScrollRef.value = scrollRef2.value;
10474
10909
  switch (unref(layout)) {
10475
10910
  case "left":
@@ -10482,6 +10917,12 @@ const renderLayout = (layout, onLogoClick, onMessageClick, onLogoutClick, onClea
10482
10917
  };
10483
10918
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
10484
10919
  name: "Layout",
10920
+ props: {
10921
+ scroll: {
10922
+ type: Boolean,
10923
+ default: true
10924
+ }
10925
+ },
10485
10926
  emits: ["logo-click", "message-click", "logout-click", "clear-cache-logout-click", "switch-company-click"],
10486
10927
  setup(props, {
10487
10928
  emit
@@ -10507,10 +10948,16 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
10507
10948
  };
10508
10949
  return () => createVNode("section", {
10509
10950
  "class": [prefixCls, `${prefixCls}__${layout.value}`, "w-[100%] h-[100%] relative", `${prefixCls}__${theme.value}`]
10510
- }, [renderLayout(layout, handleLogoClick, handleMessageClick, handleLogoutClick, handleClearCacheLogoutClick, handleSwitchCompanyClick), createVNode(_sfc_main$y, null, null)]);
10951
+ }, [renderLayout(layout, props, {
10952
+ handleLogoClick,
10953
+ handleMessageClick,
10954
+ handleLogoutClick,
10955
+ handleClearCacheLogoutClick,
10956
+ handleSwitchCompanyClick
10957
+ }), props.scroll && createVNode(_sfc_main$y, null, null)]);
10511
10958
  }
10512
10959
  });
10513
- const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-6f98299c"]]);
10960
+ const Layout = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-0945fd78"]]);
10514
10961
  const _sfc_main$d = {
10515
10962
  __name: "ConfigGlobal",
10516
10963
  props: {
@@ -10582,6 +11029,22 @@ const _sfc_main$c = /* @__PURE__ */ Object.assign({ name: "PageCard" }, {
10582
11029
  padding: "16px"
10583
11030
  };
10584
11031
  }
11032
+ },
11033
+ customClass: {
11034
+ type: String,
11035
+ default: ""
11036
+ },
11037
+ scroll: {
11038
+ type: Boolean,
11039
+ default: false
11040
+ },
11041
+ scrollHeight: {
11042
+ type: String,
11043
+ default: void 0
11044
+ },
11045
+ scrollMaxHeight: {
11046
+ type: String,
11047
+ default: void 0
10585
11048
  }
10586
11049
  },
10587
11050
  setup(__props) {
@@ -10591,17 +11054,27 @@ const _sfc_main$c = /* @__PURE__ */ Object.assign({ name: "PageCard" }, {
10591
11054
  return openBlock(), createBlock(unref(ElCard), {
10592
11055
  "body-style": __props.bodyStyle,
10593
11056
  header: __props.title,
10594
- class: normalizeClass([unref(prefixCls2), "mx-16px my-16px"])
11057
+ class: normalizeClass([unref(prefixCls2), __props.customClass, "mx-16px my-16px"])
10595
11058
  }, {
10596
11059
  default: withCtx(() => [
10597
- renderSlot(_ctx.$slots, "default", {}, void 0, true)
11060
+ __props.scroll ? (openBlock(), createBlock(unref(ElScrollbar), {
11061
+ key: 0,
11062
+ height: __props.scrollHeight,
11063
+ "max-height": __props.scrollMaxHeight,
11064
+ always: ""
11065
+ }, {
11066
+ default: withCtx(() => [
11067
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
11068
+ ]),
11069
+ _: 3
11070
+ }, 8, ["height", "max-height"])) : renderSlot(_ctx.$slots, "default", { key: 1 }, void 0, true)
10598
11071
  ]),
10599
11072
  _: 3
10600
11073
  }, 8, ["body-style", "header", "class"]);
10601
11074
  };
10602
11075
  }
10603
11076
  });
10604
- const PageCard = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-f55a8642"]]);
11077
+ const PageCard = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-8351baee"]]);
10605
11078
  const _hoisted_1$5 = { class: "ml-2px" };
10606
11079
  const _hoisted_2$5 = { class: "flex items-center" };
10607
11080
  const _sfc_main$b = /* @__PURE__ */ Object.assign({ name: "PageNavBar" }, {
@@ -12687,6 +13160,8 @@ export {
12687
13160
  useAppStore as BmpUseAppStore,
12688
13161
  useAppStoreWithOut as BmpUseAppStoreWithOut,
12689
13162
  useLayout as BmpUseLayout,
13163
+ useLocaleStore as BmpUseLocaleStore,
13164
+ useLocaleStoreWithOut as BmpUseLocaleStoreWithOut,
12690
13165
  usePermissionStore as BmpUsePermissionStore,
12691
13166
  usePermissionStoreWithOut as BmpUsePermissionStoreWithOut,
12692
13167
  useTagsViewStore as BmpUseTagsViewStore,