@pactor-app/app 1.10.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -83,7 +83,19 @@ const Page = createPactorPage({ loader, services, permissions: ['customer:view']
83
83
  ```
84
84
 
85
85
  - 交互层(confirm / message / overlay)与整应用模式一致;多实例状态互相隔离
86
- - 跳转为自然导航:`Link` 组件渲染原生 `<a href>`,`navigate` 动作退化为 `location.assign`——不注入宿主路由对象
86
+ - 站内导航:`Link` / `Breadcrumb` 渲染原生 `<a href>` 并拦截站内左键点击,`navigate` 动作与链接点击共用同一实现——缺省退化为 `location.assign` 整页跳转,可经工厂选项 `navigate` 注入宿主路由(SPA 导航):
87
+
88
+ ```tsx
89
+ // Next.js(App Router)
90
+ const router = useRouter();
91
+ const Page = createPactorPage({ navigate: (to) => router.push(to) });
92
+
93
+ // React Router
94
+ const navigate = useNavigate();
95
+ const Page = createPactorPage({ navigate: (to) => navigate(to) });
96
+ ```
97
+
98
+ 需要完全自定义链接渲染(prefetch、scroll restoration 等)时,可经 `components` 注册表覆盖同名组件,样式子组件从 `@pactor-app/ui/ui` 导入(`BreadcrumbLink` 支持 `render` prop 换成宿主路由组件)。
87
99
  - `route.params` / `route.query` 经 props 纯数据注入(如 Next.js 的 `searchParams`)
88
100
 
89
101
  ## 文档
package/dist/index.cjs CHANGED
@@ -738,14 +738,14 @@ var import_runtime5 = require("@pactor-app/runtime");
738
738
  var import_react6 = require("react");
739
739
  var import_jsx_runtime5 = require("react/jsx-runtime");
740
740
  function createPactorPage(options = {}) {
741
+ const navigate = options.navigate ?? ((to) => {
742
+ if (typeof window !== "undefined") {
743
+ window.location.assign(to);
744
+ }
745
+ });
741
746
  const assembly = createPactorAssembly({
742
747
  ...options,
743
- // 嵌入模式:navigate 退化为自然跳转(设计决策 D2,不注入宿主路由对象)
744
- navigate: (to) => {
745
- if (typeof window !== "undefined") {
746
- window.location.assign(to);
747
- }
748
- }
748
+ navigate
749
749
  });
750
750
  let permission;
751
751
  if (options.permission !== void 0) {
@@ -769,6 +769,8 @@ function createPactorPage(options = {}) {
769
769
  services: assembly.services,
770
770
  capabilities: assembly.capabilities,
771
771
  permission,
772
+ // route.navigate 与 DSL navigate 动作共用同一实现(宿主注入或缺省整页跳转)
773
+ router: { navigate },
772
774
  http: assembly.httpAdapter,
773
775
  route: { params: route?.params ?? {}, query: route?.query ?? {} },
774
776
  locale: options.locale ?? "zh-CN",
package/dist/index.d.cts CHANGED
@@ -49,7 +49,8 @@ interface PactorAssemblyOptions {
49
49
  httpAdapter?: PactorHttpHooks;
50
50
  /**
51
51
  * DSL `navigate` 动作的跳转实现(两种形态的差异点):
52
- * 整应用模式 = 导航桥 push(react-router);嵌入模式 = location.assign
52
+ * 整应用模式 = 导航桥 push(react-router);嵌入模式 = 宿主注入或
53
+ * 缺省 location.assign(embedded 层兜底)
53
54
  */
54
55
  navigate: (to: string) => void;
55
56
  }
@@ -328,6 +329,13 @@ interface PactorPageProps {
328
329
  * (无路由、无外壳布局);route 上下文经 props 纯数据注入。
329
330
  */
330
331
  interface PactorPageOptions extends Omit<PactorAssemblyOptions, 'navigate'> {
332
+ /**
333
+ * 站内导航实现(D2:可选注入宿主路由,缺省退化)——如 Next.js
334
+ * `router.push` / react-router `navigate`;缺省以 `location.assign`
335
+ * 整页跳转。DSL `navigate` 动作与链接类组件的站内点击(`route.navigate`)
336
+ * 均走此实现。
337
+ */
338
+ navigate?: (to: string) => void;
331
339
  /** 资源加载器(按 pageId 加载页面时需要) */
332
340
  loader?: DslResourceLoader;
333
341
  /** 权限码列表(缺省全部放行;细粒度控制可传 permission 适配器) */
package/dist/index.d.ts CHANGED
@@ -49,7 +49,8 @@ interface PactorAssemblyOptions {
49
49
  httpAdapter?: PactorHttpHooks;
50
50
  /**
51
51
  * DSL `navigate` 动作的跳转实现(两种形态的差异点):
52
- * 整应用模式 = 导航桥 push(react-router);嵌入模式 = location.assign
52
+ * 整应用模式 = 导航桥 push(react-router);嵌入模式 = 宿主注入或
53
+ * 缺省 location.assign(embedded 层兜底)
53
54
  */
54
55
  navigate: (to: string) => void;
55
56
  }
@@ -328,6 +329,13 @@ interface PactorPageProps {
328
329
  * (无路由、无外壳布局);route 上下文经 props 纯数据注入。
329
330
  */
330
331
  interface PactorPageOptions extends Omit<PactorAssemblyOptions, 'navigate'> {
332
+ /**
333
+ * 站内导航实现(D2:可选注入宿主路由,缺省退化)——如 Next.js
334
+ * `router.push` / react-router `navigate`;缺省以 `location.assign`
335
+ * 整页跳转。DSL `navigate` 动作与链接类组件的站内点击(`route.navigate`)
336
+ * 均走此实现。
337
+ */
338
+ navigate?: (to: string) => void;
331
339
  /** 资源加载器(按 pageId 加载页面时需要) */
332
340
  loader?: DslResourceLoader;
333
341
  /** 权限码列表(缺省全部放行;细粒度控制可传 permission 适配器) */
package/dist/index.js CHANGED
@@ -738,14 +738,14 @@ import {
738
738
  } from "react";
739
739
  import { jsx as jsx5 } from "react/jsx-runtime";
740
740
  function createPactorPage(options = {}) {
741
+ const navigate = options.navigate ?? ((to) => {
742
+ if (typeof window !== "undefined") {
743
+ window.location.assign(to);
744
+ }
745
+ });
741
746
  const assembly = createPactorAssembly({
742
747
  ...options,
743
- // 嵌入模式:navigate 退化为自然跳转(设计决策 D2,不注入宿主路由对象)
744
- navigate: (to) => {
745
- if (typeof window !== "undefined") {
746
- window.location.assign(to);
747
- }
748
- }
748
+ navigate
749
749
  });
750
750
  let permission;
751
751
  if (options.permission !== void 0) {
@@ -769,6 +769,8 @@ function createPactorPage(options = {}) {
769
769
  services: assembly.services,
770
770
  capabilities: assembly.capabilities,
771
771
  permission,
772
+ // route.navigate 与 DSL navigate 动作共用同一实现(宿主注入或缺省整页跳转)
773
+ router: { navigate },
772
774
  http: assembly.httpAdapter,
773
775
  route: { params: route?.params ?? {}, query: route?.query ?? {} },
774
776
  locale: options.locale ?? "zh-CN",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pactor-app/app",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "description": "Pactor application: one-stop composition layer (createPactorApplication) wiring loader, bootstrap, registries, router, layout, interaction and page runtimes",
5
5
  "keywords": [
6
6
  "pactor",
@@ -46,14 +46,14 @@
46
46
  "access": "public"
47
47
  },
48
48
  "dependencies": {
49
- "@pactor-app/core": "1.10.0",
50
- "@pactor-app/resource": "1.10.0",
51
- "@pactor-app/permission": "1.10.0",
52
- "@pactor-app/expression": "1.10.0",
53
- "@pactor-app/router": "1.10.0",
54
- "@pactor-app/runtime": "1.10.0",
55
- "@pactor-app/ui": "1.10.0",
56
- "@pactor-app/schema": "1.10.0"
49
+ "@pactor-app/core": "1.12.0",
50
+ "@pactor-app/permission": "1.12.0",
51
+ "@pactor-app/expression": "1.12.0",
52
+ "@pactor-app/resource": "1.12.0",
53
+ "@pactor-app/router": "1.12.0",
54
+ "@pactor-app/schema": "1.12.0",
55
+ "@pactor-app/runtime": "1.12.0",
56
+ "@pactor-app/ui": "1.12.0"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "react": ">=18",