@pubinfo/core 2.1.10 → 2.1.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.
Files changed (92) hide show
  1. package/dist/AppSetting-BBCop_0D.js +107 -0
  2. package/dist/{HButton-Dt6qGhhR.js → HButton-pEqyd918.js} +13 -11
  3. package/dist/HCheckList-cef4jGrw.js +35 -0
  4. package/dist/HDivider-BSj2DiEY.js +13 -0
  5. package/dist/HInput-DfpH43DV.js +36 -0
  6. package/dist/HSlideover-B6gEDfA5.js +3223 -0
  7. package/dist/HToggle-BTft_PNT.js +32 -0
  8. package/dist/HTooltip-B8aoK5uN.js +19 -0
  9. package/dist/PreferencesContent-CuNffqV_.js +703 -0
  10. package/dist/SettingBreadcrumb-CMn0gojs.js +47 -0
  11. package/dist/SettingCopyright-DKwdXYr3.js +47 -0
  12. package/dist/SettingEnableTransition-Bn37z29E.js +70 -0
  13. package/dist/SettingHome-HttuaN-N.js +33 -0
  14. package/dist/SettingMenu-CEvBV2Wj.js +113 -0
  15. package/dist/SettingMode-DpAUEZUv.js +62 -0
  16. package/dist/SettingNavSearch-Cem0LL54.js +33 -0
  17. package/dist/SettingOther-DcrlPnMd.js +50 -0
  18. package/dist/SettingPage-UhL5e6_m.js +24 -0
  19. package/dist/SettingTabbar-Ct3S8jS2.js +144 -0
  20. package/dist/SettingThemes-DaRKZ2Q3.js +123 -0
  21. package/dist/SettingToolbar-Cx_Mz_EP.js +52 -0
  22. package/dist/SettingTopbar-Ckg-OGSj.js +51 -0
  23. package/dist/SettingWidthMode-CZ2i-kzC.js +58 -0
  24. package/dist/_plugin-vue_export-helper-CsLplWgU.js +8 -0
  25. package/dist/auth-BVTDpkDr.js +4635 -0
  26. package/dist/built-in/layout-component/composables/useContext.d.ts +1 -0
  27. package/dist/{change-organization-hsqeSzDu.js → change-organization-EdR25ifs.js} +51 -48
  28. package/dist/{change-password-EtccCDRX.js → change-password-D-ZqBAmY.js} +85 -81
  29. package/dist/chunk-BdsCSvBP.js +20 -0
  30. package/dist/{components-DFNyaAb9.js → components-CKVAXENc.js} +681 -674
  31. package/dist/{core-DJIGzMMM.js → core-Dg8YES9i.js} +1003 -938
  32. package/dist/dist-HLiWAOC7.js +472 -0
  33. package/dist/{engine-oniguruma-CaNXwGSv.js → engine-oniguruma-DCGL4yXX.js} +58 -56
  34. package/dist/form-CGzMvzKZ.js +2968 -0
  35. package/dist/index.js +5001 -4872
  36. package/dist/json-BFBcpML_.js +3 -0
  37. package/dist/{modal-Bl5xHbxa.js → modal-ybprgEqf.js} +12543 -9070
  38. package/dist/not-found-CuHR6H_g.js +44 -0
  39. package/dist/not-permission-BcQAkzxI.js +41 -0
  40. package/dist/profile-Bsc6FIbI.js +19533 -0
  41. package/dist/{question-line-BG__Ycfv.js → question-line-BzrfPWnG.js} +9 -7
  42. package/dist/reload-BClJy4MY.js +15 -0
  43. package/dist/{right-BxBlFUwj.js → right-CCqcGubr.js} +15 -13
  44. package/dist/style.css +1 -1
  45. package/dist/{tree-select-B8cTcGLa.js → tree-select-gPCwtMia.js} +2906 -2659
  46. package/dist/useContext-Dlqfap_7.js +11 -0
  47. package/dist/vitesse-dark-DrB9-RFK.js +4 -0
  48. package/dist/vitesse-light-CmcnEl2T.js +4 -0
  49. package/dist/wasm-C92aTsEJ.js +4 -0
  50. package/dist/watchDiff-DJP3s9bb.js +883 -0
  51. package/package.json +8 -8
  52. package/src/built-in/layout-component/components/Menu/item.vue +2 -2
  53. package/src/built-in/layout-component/components/Menu/sub.vue +20 -1
  54. package/src/built-in/layout-component/composables/useContext.ts +1 -0
  55. package/src/built-in/layout-component/provider.ts +5 -0
  56. package/dist/AppSetting-7jlhUzze.js +0 -105
  57. package/dist/HCheckList-cPBgATmv.js +0 -33
  58. package/dist/HDivider-BwvBr5OE.js +0 -11
  59. package/dist/HInput-KJ5nFBpF.js +0 -34
  60. package/dist/HSlideover-DVQDc9q6.js +0 -3151
  61. package/dist/HToggle-Ce_2-yhZ.js +0 -30
  62. package/dist/HTooltip-DjAU-Evn.js +0 -16
  63. package/dist/PreferencesContent-BAIH81yS.js +0 -701
  64. package/dist/SettingBreadcrumb-O9-PhAFT.js +0 -45
  65. package/dist/SettingCopyright-DIKsWTuf.js +0 -45
  66. package/dist/SettingEnableTransition-61O7W00b.js +0 -68
  67. package/dist/SettingHome-Sv65TPH8.js +0 -31
  68. package/dist/SettingMenu-BvwJOUZV.js +0 -111
  69. package/dist/SettingMode-B8H_eQc8.js +0 -60
  70. package/dist/SettingNavSearch-BHsmYBA7.js +0 -31
  71. package/dist/SettingOther-CyyNnaDX.js +0 -48
  72. package/dist/SettingPage-B82lW41P.js +0 -22
  73. package/dist/SettingTabbar-Bky2xvH-.js +0 -142
  74. package/dist/SettingThemes-CkdzS1xt.js +0 -121
  75. package/dist/SettingToolbar-CD4qns1J.js +0 -50
  76. package/dist/SettingTopbar-1shjoe3s.js +0 -49
  77. package/dist/SettingWidthMode-DlG6lXjA.js +0 -56
  78. package/dist/_plugin-vue_export-helper-sUTDUeGO.js +0 -6
  79. package/dist/auth-BLGKOyc5.js +0 -4432
  80. package/dist/chunk-CD4vhpVs.js +0 -18
  81. package/dist/dist-7OjQvlya.js +0 -468
  82. package/dist/form-C3VHofnN.js +0 -2768
  83. package/dist/json-Bu_Zprin.js +0 -2
  84. package/dist/not-found-BCjngLzt.js +0 -42
  85. package/dist/not-permission-C26vTMvf.js +0 -39
  86. package/dist/profile-BVXIFuBG.js +0 -19269
  87. package/dist/reload-DHx5Vwus.js +0 -12
  88. package/dist/useContext-DLtu9F7E.js +0 -9
  89. package/dist/vitesse-dark-CTe40QT_.js +0 -2
  90. package/dist/vitesse-light-BWXC_WeB.js +0 -2
  91. package/dist/wasm-2zDVqo-C.js +0 -2
  92. package/dist/watchDiff-CPZFtaOC.js +0 -655
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pubinfo/core",
3
3
  "type": "module",
4
- "version": "2.1.10",
4
+ "version": "2.1.12",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -31,9 +31,9 @@
31
31
  "pinia": "^3.0.4",
32
32
  "vue": "^3.5.28",
33
33
  "vue-router": "^5.0.2",
34
- "@pubinfo/config": "2.1.10",
35
- "@pubinfo/devtools": "2.1.10",
36
- "@pubinfo/vite": "2.1.10"
34
+ "@pubinfo/config": "2.1.12",
35
+ "@pubinfo/devtools": "2.1.12",
36
+ "@pubinfo/vite": "2.1.12"
37
37
  },
38
38
  "dependencies": {
39
39
  "@alova/adapter-axios": "^2.0.17",
@@ -63,7 +63,7 @@
63
63
  "unctx": "^2.5.0",
64
64
  "vue-m-message": "^4.0.2",
65
65
  "zxcvbn": "^4.4.2",
66
- "@pubinfo/shared": "2.1.10"
66
+ "@pubinfo/shared": "2.1.12"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@alova/mock": "^2.0.18",
@@ -89,12 +89,12 @@
89
89
  "unplugin-auto-import": "^21.0.0",
90
90
  "unplugin-icons": "^23.0.1",
91
91
  "unplugin-vue-components": "^31.0.0",
92
- "vite": "^8.0.0-beta.13",
92
+ "vite": "^8.0.0",
93
93
  "vite-plugin-dts": "^4.5.4",
94
94
  "vue": "^3.5.28",
95
95
  "vue-router": "^5.0.2",
96
- "@pubinfo/config": "2.1.10",
97
- "@pubinfo/vite": "2.1.10"
96
+ "@pubinfo/config": "2.1.12",
97
+ "@pubinfo/vite": "2.1.12"
98
98
  },
99
99
  "scripts": {
100
100
  "dev": "vite build -w -m watch",
@@ -18,7 +18,7 @@ const props = withDefaults(
18
18
  );
19
19
 
20
20
  const rootMenu = inject(rootMenuInjectionKey)!;
21
- const { generateTitle } = useContext();
21
+ const { generateTitle, indentSize } = useContext();
22
22
 
23
23
  const itemRef = ref<HTMLElement>();
24
24
 
@@ -70,7 +70,7 @@ const safeIconColor = computed<string | undefined>(() => iconOptions.value?.icon
70
70
  // 缩进样式
71
71
  const indentStyle = computed(() => {
72
72
  return !rootMenu.isMenuPopup
73
- ? `padding-left: ${32 * (props.level ?? 0)}px`
73
+ ? `padding-left: ${indentSize * (props.level ?? 0)}px`
74
74
  : '';
75
75
  });
76
76
 
@@ -193,8 +193,9 @@ function handleMouseleave() {
193
193
  />
194
194
  <Teleport v-if="hasChildren" to="body" :disabled="!rootMenu.isMenuPopup">
195
195
  <Transition v-bind="transitionClass" v-on="transitionEvent">
196
+ <!-- Popup submenu: use OverlayScrollbars so it can scroll independently -->
196
197
  <OverlayScrollbarsComponent
197
- v-if="opened"
198
+ v-if="opened && rootMenu.isMenuPopup"
198
199
  ref="subMenuRef"
199
200
  :options="{ scrollbars: { visibility: 'hidden' } }"
200
201
  defer
@@ -215,6 +216,24 @@ function handleMouseleave() {
215
216
  />
216
217
  </template>
217
218
  </OverlayScrollbarsComponent>
219
+
220
+ <!-- Inline submenu (non-popup): render as plain container to allow parent scroll -->
221
+ <div
222
+ v-else-if="opened"
223
+ class="sub-menu"
224
+ :class="{
225
+ 'rounded-2 py-1': rootMenu.props.rounded && !rootMenu.isMenuPopup,
226
+ }"
227
+ >
228
+ <template v-for="item in menu.children" :key="item.path ?? JSON.stringify(item)">
229
+ <SubMenu
230
+ v-if="item.meta?.sidebar !== false"
231
+ :unique-key="[...uniqueKey, item.path ?? JSON.stringify(item)]"
232
+ :menu="item"
233
+ :level="level + 1"
234
+ />
235
+ </template>
236
+ </div>
218
237
  </Transition>
219
238
  </Teleport>
220
239
  </template>
@@ -22,6 +22,7 @@ interface LayoutContext {
22
22
 
23
23
  appTitle: string
24
24
  isDev: boolean
25
+ indentSize: number
25
26
  generateTitle: (titile?: string | (() => any)) => string
26
27
  }
27
28
 
@@ -24,6 +24,10 @@ export const Provider = defineComponent({
24
24
  type: Boolean,
25
25
  default: false,
26
26
  },
27
+ indentSize: {
28
+ type: Number,
29
+ default: 32,
30
+ },
27
31
  },
28
32
  setup(props, { slots }) {
29
33
  const settingsStore = useSettingsStore();
@@ -49,6 +53,7 @@ export const Provider = defineComponent({
49
53
 
50
54
  appTitle: props.appTitle,
51
55
  isDev: props.isDev,
56
+ indentSize: props.indentSize,
52
57
  generateTitle,
53
58
  });
54
59
 
@@ -1,105 +0,0 @@
1
- import { n as useClipboard } from "./dist-7OjQvlya.js";
2
- import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-sUTDUeGO.js";
3
- import { n as useContext } from "./useContext-DLtu9F7E.js";
4
- import { t as HButton_default } from "./HButton-Dt6qGhhR.js";
5
- import { t as HSlideover_default } from "./HSlideover-DVQDc9q6.js";
6
- import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, markRaw, openBlock, renderList, resolveComponent, resolveDynamicComponent, unref, useModel, watch, withCtx } from "vue";
7
- import { useRoute } from "vue-router";
8
- import Message from "vue-m-message";
9
- var _hoisted_1$1 = {
10
- viewBox: "0 0 1024 1024",
11
- width: "1.2em",
12
- height: "1.2em"
13
- };
14
- function render$1(e, t) {
15
- return openBlock(), createElementBlock("svg", _hoisted_1$1, [...t[0] ||= [createElementVNode("path", {
16
- fill: "currentColor",
17
- d: "M128 320v576h576V320zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32M960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32M256 672h320v64H256zm0-192h320v64H256z"
18
- }, null, -1)]]);
19
- }
20
- var document_copy_default = markRaw({
21
- name: "ep-document-copy",
22
- render: render$1
23
- }), _hoisted_1 = { class: "settong-warp" }, AppSetting_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
24
- name: "AppSetting",
25
- components: {
26
- SettingThemes: defineAsyncComponent(() => import("./SettingThemes-CkdzS1xt.js")),
27
- SettingsMode: defineAsyncComponent(() => import("./SettingMode-B8H_eQc8.js")),
28
- SettingWidthMode: defineAsyncComponent(() => import("./SettingWidthMode-DlG6lXjA.js")),
29
- SettingEnableTransition: defineAsyncComponent(() => import("./SettingEnableTransition-61O7W00b.js")),
30
- SettingMenu: defineAsyncComponent(() => import("./SettingMenu-BvwJOUZV.js")),
31
- SettingTopbar: defineAsyncComponent(() => import("./SettingTopbar-1shjoe3s.js")),
32
- SettingTabbar: defineAsyncComponent(() => import("./SettingTabbar-Bky2xvH-.js")),
33
- SettingToolbar: defineAsyncComponent(() => import("./SettingToolbar-CD4qns1J.js")),
34
- SettingBreadcrumb: defineAsyncComponent(() => import("./SettingBreadcrumb-O9-PhAFT.js")),
35
- SettingPage: defineAsyncComponent(() => import("./SettingPage-B82lW41P.js")),
36
- SettingNavSearch: defineAsyncComponent(() => import("./SettingNavSearch-BHsmYBA7.js")),
37
- SettingCopyright: defineAsyncComponent(() => import("./SettingCopyright-DIKsWTuf.js")),
38
- SettingHome: defineAsyncComponent(() => import("./SettingHome-Sv65TPH8.js")),
39
- SettingOther: defineAsyncComponent(() => import("./SettingOther-CyyNnaDX.js"))
40
- },
41
- __name: "AppSetting",
42
- props: {
43
- open: { default: !1 },
44
- openModifiers: {}
45
- },
46
- emits: ["update:open"],
47
- setup(t) {
48
- let i = useModel(t, "open"), a = useRoute(), { settingsStore: o, menuStore: s } = useContext(), c = computed(() => o.mode !== "pc"), l = computed(() => m([
49
- "SettingThemes",
50
- "SettingsMode",
51
- "SettingWidthMode",
52
- "SettingEnableTransition",
53
- "SettingMenu",
54
- "SettingTopbar",
55
- "SettingTabbar",
56
- "SettingToolbar",
57
- "SettingBreadcrumb",
58
- "SettingPage",
59
- "SettingNavSearch",
60
- "SettingHome",
61
- "SettingCopyright",
62
- "SettingOther"
63
- ], [
64
- "SettingsMode",
65
- "SettingWidthMode",
66
- "SettingEnableTransition",
67
- "SettingBreadcrumb"
68
- ]));
69
- watch(() => o.settings.menu.menuMode, (e) => {
70
- e === "single" ? s.setActived(0) : s.setActived(a.fullPath);
71
- });
72
- let { copy: u, copied: d, isSupported: f } = useClipboard();
73
- watch(d, (e) => {
74
- e && Message.success("复制成功,请粘贴到 src/settings.ts 文件中!", { zIndex: 2e3 });
75
- });
76
- function p() {
77
- u(JSON.stringify(o.settings, null, 2));
78
- }
79
- function m(e, t) {
80
- return e.filter((e) => c.value ? !t.includes(e) : e);
81
- }
82
- return (e, t) => {
83
- let n = HButton_default, r = HSlideover_default;
84
- return openBlock(), createBlock(r, {
85
- modelValue: i.value,
86
- "onUpdate:modelValue": t[0] ||= (e) => i.value = e,
87
- title: "应用配置"
88
- }, createSlots({
89
- default: withCtx(() => [createElementVNode("div", _hoisted_1, [t[1] ||= createElementVNode("div", { class: "rounded-2 bg-rose/20 px-4 py-2 text-sm/6 c-rose" }, [createElementVNode("p", { class: "my-1" }, " 应用配置可实时预览效果,但只是临时生效,要想真正应用于项目,可以点击下方的「复制配置」按钮,并将配置粘贴到 src/settings.ts 文件中。 "), createElementVNode("p", { class: "my-1" }, " 注意:在生产环境中应关闭该模块。 ")], -1), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(l), (e) => (openBlock(), createBlock(resolveDynamicComponent(e), { key: e }))), 128))])]),
90
- _: 2
91
- }, [unref(f) ? {
92
- name: "footer",
93
- fn: withCtx(() => [createVNode(n, {
94
- block: "",
95
- onClick: p
96
- }, {
97
- default: withCtx(() => [createVNode(unref(document_copy_default)), t[2] ||= createTextVNode(" 复制配置 ", -1)]),
98
- _: 1
99
- })]),
100
- key: "0"
101
- } : void 0]), 1032, ["modelValue"]);
102
- };
103
- }
104
- }), [["__scopeId", "data-v-10c15033"]]);
105
- export { AppSetting_default as default };
@@ -1,33 +0,0 @@
1
- import { a as PubinfoIcon_default } from "./components-DFNyaAb9.js";
2
- import { Fragment, createBlock, createElementBlock, createTextVNode, defineComponent, normalizeClass, openBlock, renderList, toDisplayString, unref, watch } from "vue";
3
- var _hoisted_1 = { class: "inline-flex select-none items-center justify-center of-hidden rounded-md bg-stone-3 dark:bg-stone-7" }, _hoisted_2 = ["disabled", "onClick"], HCheckList_default = /* @__PURE__ */ defineComponent({
4
- __name: "HCheckList",
5
- props: {
6
- modelValue: {},
7
- options: {},
8
- disabled: {
9
- type: Boolean,
10
- default: !1
11
- }
12
- },
13
- emits: ["update:modelValue", "change"],
14
- setup(t, { emit: i }) {
15
- let a = t, o = i;
16
- watch(() => a.modelValue, (e) => {
17
- o("change", e);
18
- });
19
- function s(e) {
20
- o("update:modelValue", e);
21
- }
22
- return (r, i) => (openBlock(), createElementBlock("div", _hoisted_1, [(openBlock(!0), createElementBlock(Fragment, null, renderList(t.options, (n) => (openBlock(), createElementBlock("button", {
23
- key: n.value,
24
- disabled: t.disabled || n.disabled,
25
- class: normalizeClass(["flex cursor-pointer items-center truncate border-size-0 bg-inherit px-2 py-1.5 text-sm disabled:cursor-not-allowed disabled:opacity-50 hover:not-disabled:(bg-ui-primary text-ui-text)", { "text-ui-text bg-ui-primary": t.modelValue === n.value }]),
26
- onClick: (e) => s(n.value)
27
- }, [n.icon ? (openBlock(), createBlock(unref(PubinfoIcon_default), {
28
- key: 0,
29
- name: n.icon
30
- }, null, 8, ["name"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(n.label), 1)], 64))], 10, _hoisted_2))), 128))]));
31
- }
32
- });
33
- export { HCheckList_default as t };
@@ -1,11 +0,0 @@
1
- import { createElementBlock, createElementVNode, defineComponent, openBlock, renderSlot, toDisplayString } from "vue";
2
- var _hoisted_1 = { "w-full": "" }, _hoisted_2 = { class: "flex items-center justify-between gap-4 my-4 whitespace-nowrap text-sm font-500 before:content-empty before:w-full before:h-1px before:bg-stone-2 dark:before:bg-stone-6 after:content-empty after:w-full after:h-1px after:bg-stone-2 dark:after:bg-stone-6" }, _hoisted_3 = { class: "px-2.5 py-[5px]" }, HDivider_default = /* @__PURE__ */ defineComponent({
3
- name: "HDivider",
4
- __name: "HDivider",
5
- props: { title: {} },
6
- setup(e) {
7
- let t = e;
8
- return (e, n) => (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, toDisplayString(t.title), 1)]), renderSlot(e.$slots, "default")]));
9
- }
10
- });
11
- export { HDivider_default as t };
@@ -1,34 +0,0 @@
1
- import { createElementBlock, createElementVNode, defineComponent, openBlock, ref } from "vue";
2
- var _hoisted_1 = { class: "relative w-full lg:w-48" }, _hoisted_2 = [
3
- "value",
4
- "placeholder",
5
- "disabled"
6
- ], HInput_default = /* @__PURE__ */ defineComponent({
7
- __name: "HInput",
8
- props: {
9
- modelValue: {},
10
- placeholder: {},
11
- disabled: {
12
- type: Boolean,
13
- default: !1
14
- }
15
- },
16
- emits: ["update:modelValue"],
17
- setup(t, { expose: r, emit: i }) {
18
- let a = i, o = ref();
19
- function s(e) {
20
- a("update:modelValue", e.target.value);
21
- }
22
- return r({ ref: o }), (n, r) => (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("input", {
23
- ref_key: "inputRef",
24
- ref: o,
25
- type: "text",
26
- value: t.modelValue,
27
- placeholder: t.placeholder,
28
- disabled: t.disabled,
29
- class: "relative block w-full border-0 rounded-md bg-white px-2.5 py-1.5 text-sm shadow-sm ring-1 ring-stone-2 ring-inset disabled:cursor-not-allowed dark:bg-dark disabled:opacity-50 focus:outline-none focus:ring-2 dark:ring-stone-8 focus:ring-ui-primary placeholder-stone-4 dark:placeholder-stone-5",
30
- onInput: s
31
- }, null, 40, _hoisted_2)]));
32
- }
33
- });
34
- export { HInput_default as t };