@zl-ui-kit/composables 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +64 -21
- package/package.json +8 -5
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# @zl-ui-kit/composables
|
|
2
2
|
|
|
3
|
+
> **完整使用文档**:[`@zl-ui-kit/components` 的 README(npm 页面)](https://www.npmjs.com/package/@zl-ui-kit/components) 即 UI 组件权威文档 ——
|
|
4
|
+
> 本包的 Hooks / 工具 / 主题 / 国际化用法都在其中,本文只保留本包速查与运行前提。
|
|
5
|
+
|
|
3
6
|
ZL UI 组合式函数库(TypeScript):
|
|
4
7
|
|
|
5
8
|
| 模块 | 说明 |
|
|
@@ -14,8 +17,15 @@ ZL UI 组合式函数库(TypeScript):
|
|
|
14
17
|
|
|
15
18
|
## 运行前提(微前端模块)
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
`@micro-zoe/micro-app` 是**可选 peer**(0.3.2 起)。`useMicroApp` / `useMicroAction` / `usePageTabs` 在缺失时会抛出带安装指引的错误;`useMicroGlobalData` 则**自动降级**为本地存储模式(`$zl_locale` / `$zl_theme` / `$zl_token`),因此 `useLocale`、主题、字典在纯 Web 应用中照常可用。
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 只在用微前端时才需要
|
|
24
|
+
npm i @micro-zoe/micro-app
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`enableGlobalDataMock()` 仍保留用于强制 mock 调试,但**不再是**使用 `useMicroGlobalData` 的必要条件。字典模块(`useDict` 等)本身不依赖微前端。
|
|
18
28
|
|
|
19
29
|
## 本地调试
|
|
20
30
|
|
|
21
|
-
playground alias 直指 `src/`;`pnpm build`(tsup)。详见 `
|
|
31
|
+
playground alias 直指 `src/`;`pnpm build`(tsup)。详见 `@zl-ui-kit/components` README §11;发布见 `docs/发布流程.md`。
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { ComputedRef, InjectionKey, WritableComputedRef, Ref, Component, VNode,
|
|
|
3
3
|
export { ComputedRef } from 'vue';
|
|
4
4
|
import { ElMessageBoxOptions, ElMessage, ElMessageBox, ElNotification } from 'element-plus';
|
|
5
5
|
import { I18nOptions, I18n } from 'vue-i18n';
|
|
6
|
-
import microApp from '@micro-zoe/micro-app';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* 带缓存的 computed 工厂:同一对象的计算结果缓存,作用域销毁时自动清理
|
|
@@ -214,7 +213,7 @@ interface UseMicroAppReturn {
|
|
|
214
213
|
/** 是否子应用(多层嵌套时可同时为主应用) */
|
|
215
214
|
isMicroChild: () => boolean;
|
|
216
215
|
updateApps: () => void;
|
|
217
|
-
startMicroApp: (config?: StartMicroAppConfig) =>
|
|
216
|
+
startMicroApp: (config?: StartMicroAppConfig) => any;
|
|
218
217
|
}
|
|
219
218
|
declare const useMicroApp: () => UseMicroAppReturn;
|
|
220
219
|
|
package/dist/index.js
CHANGED
|
@@ -160,10 +160,41 @@ import { createI18n } from "vue-i18n";
|
|
|
160
160
|
|
|
161
161
|
// src/useMicroGlobalData.ts
|
|
162
162
|
import { isFunction, isPlainObject as isPlainObject2, withResolvers } from "@zl-ui-kit/utils";
|
|
163
|
-
import _microApp from "@micro-zoe/micro-app";
|
|
164
163
|
import { createGlobalState as createGlobalState2, useStorage } from "@vueuse/core";
|
|
165
164
|
import { computed as computed3, customRef, nextTick, readonly, ref as ref2, toValue, watch } from "vue";
|
|
166
|
-
|
|
165
|
+
|
|
166
|
+
// src/internal/microApp.ts
|
|
167
|
+
import _microApp from "@micro-zoe/micro-app";
|
|
168
|
+
function usable(mod) {
|
|
169
|
+
try {
|
|
170
|
+
return mod && typeof mod.getGlobalData === "function" ? mod : void 0;
|
|
171
|
+
} catch {
|
|
172
|
+
return void 0;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function resolveMicroApp() {
|
|
176
|
+
if (typeof window !== "undefined") {
|
|
177
|
+
const injected = window.microApp;
|
|
178
|
+
if (injected)
|
|
179
|
+
return injected;
|
|
180
|
+
}
|
|
181
|
+
return usable(_microApp);
|
|
182
|
+
}
|
|
183
|
+
function isMicroChildRuntime() {
|
|
184
|
+
return typeof window !== "undefined" && !!window.microApp;
|
|
185
|
+
}
|
|
186
|
+
function requireMicroApp(api) {
|
|
187
|
+
const app = resolveMicroApp();
|
|
188
|
+
if (!app) {
|
|
189
|
+
throw new Error(
|
|
190
|
+
`[zl-ui] ${api}() \u4F9D\u8D56 micro-app\uFF0C\u8BF7\u5148\u5B89\u88C5\uFF1Anpm i @micro-zoe/micro-app
|
|
191
|
+
\u82E5\u4E0D\u9700\u8981\u5FAE\u524D\u7AEF\u80FD\u529B\uFF0C\u8BF7\u6539\u7528 @zl-ui-kit/composables \u4E3B\u5165\u53E3\u4E2D\u7684\u5176\u5B83 hook\u3002`
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
return app;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// src/useMicroGlobalData.ts
|
|
167
198
|
var devMockEnabled = false;
|
|
168
199
|
function enableGlobalDataMock(enabled = true) {
|
|
169
200
|
devMockEnabled = enabled;
|
|
@@ -234,7 +265,14 @@ function useDevMockGlobalData() {
|
|
|
234
265
|
}, { getConfig, isConfig, setAndWaitUntil });
|
|
235
266
|
}
|
|
236
267
|
var useMicroGlobalData = createGlobalState2(() => {
|
|
237
|
-
|
|
268
|
+
const microApp = resolveMicroApp();
|
|
269
|
+
if (!microApp) {
|
|
270
|
+
console.warn(
|
|
271
|
+
"[useMicroGlobalData] \u672A\u68C0\u6D4B\u5230 micro-app\uFF0C\u5DF2\u964D\u7EA7\u4E3A\u672C\u5730\u5B58\u50A8\u6A21\u5F0F\uFF08$zl_locale / $zl_theme / $zl_token\uFF09\u3002\u9700\u8981\u8DE8\u5E94\u7528\u540C\u6B65\u8BF7\u5B89\u88C5 @micro-zoe/micro-app\u3002"
|
|
272
|
+
);
|
|
273
|
+
return useDevMockGlobalData();
|
|
274
|
+
}
|
|
275
|
+
if (devMockEnabled && !isMicroChildRuntime()) {
|
|
238
276
|
console.warn("[useMicroGlobalData] \u4F7F\u7528\u5F00\u53D1\u6001 mock \u6570\u636E\uFF08enableGlobalDataMock \u5DF2\u5F00\u542F\uFF09");
|
|
239
277
|
return useDevMockGlobalData();
|
|
240
278
|
}
|
|
@@ -336,7 +374,8 @@ var useMicroGlobalData = createGlobalState2(() => {
|
|
|
336
374
|
});
|
|
337
375
|
});
|
|
338
376
|
function updateBodyAttribute(key, value) {
|
|
339
|
-
|
|
377
|
+
if (typeof document === "undefined")
|
|
378
|
+
return;
|
|
340
379
|
[document.body, ...document.querySelectorAll("micro-app-body")].forEach((el) => {
|
|
341
380
|
el.setAttribute(key, String(value ?? ""));
|
|
342
381
|
});
|
|
@@ -425,27 +464,26 @@ function useZlT() {
|
|
|
425
464
|
}
|
|
426
465
|
|
|
427
466
|
// src/useMicroAction.ts
|
|
428
|
-
import microApp3 from "@micro-zoe/micro-app";
|
|
429
467
|
import { createSharedComposable, tryOnScopeDispose as tryOnScopeDispose2 } from "@vueuse/core";
|
|
430
468
|
import { watch as watch3 } from "vue";
|
|
431
469
|
|
|
432
470
|
// src/useMicroApp.ts
|
|
433
|
-
import microApp2 from "@micro-zoe/micro-app";
|
|
434
471
|
import { createGlobalState as createGlobalState3 } from "@vueuse/core";
|
|
435
472
|
import { ref as ref3 } from "vue";
|
|
436
473
|
var useMicroApp = createGlobalState3(() => {
|
|
437
474
|
const apps = ref3([]);
|
|
438
475
|
function isMicroBase() {
|
|
439
|
-
return !!window.__MICRO_APP_BASE_APPLICATION__;
|
|
476
|
+
return typeof window !== "undefined" && !!window.__MICRO_APP_BASE_APPLICATION__;
|
|
440
477
|
}
|
|
441
478
|
function isMicroChild() {
|
|
442
|
-
return !!window.__MICRO_APP_ENVIRONMENT__;
|
|
479
|
+
return typeof window !== "undefined" && !!window.__MICRO_APP_ENVIRONMENT__;
|
|
443
480
|
}
|
|
444
481
|
function updateApps() {
|
|
445
|
-
apps.value =
|
|
482
|
+
apps.value = requireMicroApp("useMicroApp().updateApps").getActiveApps();
|
|
446
483
|
}
|
|
447
484
|
function startMicroApp(config = {}) {
|
|
448
|
-
|
|
485
|
+
const microApp = requireMicroApp("useMicroApp().startMicroApp");
|
|
486
|
+
microApp.start({
|
|
449
487
|
...config,
|
|
450
488
|
lifeCycles: {
|
|
451
489
|
mounted(data) {
|
|
@@ -459,7 +497,7 @@ var useMicroApp = createGlobalState3(() => {
|
|
|
459
497
|
}
|
|
460
498
|
}
|
|
461
499
|
});
|
|
462
|
-
return
|
|
500
|
+
return microApp;
|
|
463
501
|
}
|
|
464
502
|
return { apps, isMicroBase, isMicroChild, updateApps, startMicroApp };
|
|
465
503
|
});
|
|
@@ -500,17 +538,18 @@ var useMicroListener = createSharedComposable(() => {
|
|
|
500
538
|
});
|
|
501
539
|
}
|
|
502
540
|
if (isMicroBase()) {
|
|
541
|
+
const microApp = requireMicroApp("useMicroAction");
|
|
503
542
|
listeners.push(() => {
|
|
504
543
|
apps.value.forEach((app) => {
|
|
505
|
-
|
|
544
|
+
microApp.removeDataListener(app, handler);
|
|
506
545
|
});
|
|
507
546
|
});
|
|
508
547
|
watch3(apps, (newApps, oldApps) => {
|
|
509
548
|
oldApps.forEach((app) => {
|
|
510
|
-
|
|
549
|
+
microApp.removeDataListener(app, handler);
|
|
511
550
|
});
|
|
512
551
|
newApps.forEach((app) => {
|
|
513
|
-
|
|
552
|
+
microApp.addDataListener(app, handler);
|
|
514
553
|
});
|
|
515
554
|
}, { deep: true });
|
|
516
555
|
}
|
|
@@ -551,8 +590,11 @@ function useMicroAction(action, appName) {
|
|
|
551
590
|
const _actionName = _action(action);
|
|
552
591
|
return (...args) => {
|
|
553
592
|
const _apps = !appName ? apps.value : apps.value.filter((app) => app === appName);
|
|
593
|
+
if (!_apps.length)
|
|
594
|
+
return;
|
|
595
|
+
const microApp = requireMicroApp("useMicroAction");
|
|
554
596
|
_apps.forEach((app) => {
|
|
555
|
-
|
|
597
|
+
microApp.setData(app, { [JSON.stringify(args)]: _actionName });
|
|
556
598
|
});
|
|
557
599
|
};
|
|
558
600
|
}
|
|
@@ -571,7 +613,8 @@ function useMicroActionAsync(action, appName) {
|
|
|
571
613
|
if (isMicroChild()) {
|
|
572
614
|
return (...args) => {
|
|
573
615
|
return new Promise((resolve, reject) => {
|
|
574
|
-
|
|
616
|
+
const microApp = requireMicroApp("useMicroActionAsync");
|
|
617
|
+
microApp.setData(appName, { [JSON.stringify(args)]: _actionName }, (promises) => {
|
|
575
618
|
Promise.all(promises).then(resolve, reject);
|
|
576
619
|
});
|
|
577
620
|
});
|
|
@@ -590,27 +633,27 @@ function useMicroResultListener(action, callback) {
|
|
|
590
633
|
}
|
|
591
634
|
}
|
|
592
635
|
};
|
|
593
|
-
const micro = isMicroBase() ?
|
|
636
|
+
const micro = isMicroBase() ? requireMicroApp("useMicroResultListener") : typeof window !== "undefined" ? window.microApp : void 0;
|
|
594
637
|
micro?.addDataListener(handler);
|
|
595
638
|
}
|
|
596
639
|
function dispatchMicroAction(action, appName, ...data) {
|
|
597
640
|
const _actionName = _action(action);
|
|
598
641
|
return new Promise((resolve) => {
|
|
599
|
-
|
|
642
|
+
requireMicroApp("dispatchMicroAction").setData(appName, { [JSON.stringify(data)]: _actionName }, resolve);
|
|
600
643
|
});
|
|
601
644
|
}
|
|
602
645
|
|
|
603
646
|
// src/usePageTabs.ts
|
|
604
|
-
import microApp4 from "@micro-zoe/micro-app";
|
|
605
647
|
import { createGlobalState as createGlobalState4 } from "@vueuse/core";
|
|
606
648
|
import { computed as computed4, getCurrentInstance, nextTick as nextTick2, reactive, readonly as readonly2, ref as ref4, shallowReactive, watch as watch4 } from "vue";
|
|
607
649
|
function pushMicroRouter({ micro, url }) {
|
|
608
650
|
if (!micro || !url)
|
|
609
651
|
return;
|
|
610
|
-
const
|
|
652
|
+
const microApp = requireMicroApp("usePageTabs");
|
|
653
|
+
const activeApps = microApp.getActiveApps();
|
|
611
654
|
if (!activeApps.includes(micro))
|
|
612
655
|
return;
|
|
613
|
-
return
|
|
656
|
+
return microApp.router.push({ name: micro, path: url });
|
|
614
657
|
}
|
|
615
658
|
var createPageTabsState = createGlobalState4(() => {
|
|
616
659
|
const { on } = useMicroListener();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zl-ui-kit/composables",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "ZL UI 组合式函数库:useRequest 请求体系、微前端通信层、全局消息、字典、国际化等",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
],
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@zl-ui-kit/utils": "0.3.
|
|
22
|
+
"@zl-ui-kit/utils": "0.3.3"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@micro-zoe/micro-app": "1.0.0-rc.
|
|
25
|
+
"@micro-zoe/micro-app": ">=1.0.0-rc.10 <2",
|
|
26
26
|
"@vueuse/core": "^12.3.0",
|
|
27
27
|
"element-plus": "^2.9.2",
|
|
28
28
|
"vue": "^3.5.13",
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
"vue-router": "^4.5.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependenciesMeta": {
|
|
33
|
+
"@micro-zoe/micro-app": {
|
|
34
|
+
"optional": true
|
|
35
|
+
},
|
|
33
36
|
"vue-router": {
|
|
34
37
|
"optional": true
|
|
35
38
|
}
|
|
@@ -41,8 +44,8 @@
|
|
|
41
44
|
"cross-env": "^7.0.3",
|
|
42
45
|
"tsup": "^8.3.5",
|
|
43
46
|
"typescript": "^5.7.3",
|
|
44
|
-
"@jichuang/
|
|
45
|
-
"@jichuang/
|
|
47
|
+
"@jichuang/tsconfig": "1.0.0",
|
|
48
|
+
"@jichuang/eslint-config": "1.0.0"
|
|
46
49
|
},
|
|
47
50
|
"repository": {
|
|
48
51
|
"type": "git",
|