cabloy 5.1.61 → 5.1.63

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 (230) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
  2. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
  3. package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
  4. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
  5. package/CHANGELOG.md +55 -0
  6. package/CLAUDE.md +1 -0
  7. package/cabloy-docs/.vitepress/config.mjs +158 -12
  8. package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
  9. package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
  10. package/cabloy-docs/ai/skills.md +1 -0
  11. package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
  12. package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
  13. package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
  14. package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
  15. package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
  16. package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
  17. package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
  18. package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
  19. package/cabloy-docs/backend/broadcast-guide.md +3 -3
  20. package/cabloy-docs/backend/cli.md +20 -11
  21. package/cabloy-docs/backend/config-guide.md +4 -4
  22. package/cabloy-docs/backend/controller-aop-guide.md +10 -10
  23. package/cabloy-docs/backend/controller-guide.md +12 -2
  24. package/cabloy-docs/backend/crud-workflow.md +7 -3
  25. package/cabloy-docs/backend/dto-guide.md +12 -2
  26. package/cabloy-docs/backend/dto-infer-generation.md +201 -25
  27. package/cabloy-docs/backend/election-guide.md +2 -2
  28. package/cabloy-docs/backend/entity-guide.md +12 -3
  29. package/cabloy-docs/backend/error-guide.md +3 -3
  30. package/cabloy-docs/backend/event-guide.md +4 -4
  31. package/cabloy-docs/backend/external-aop-guide.md +2 -2
  32. package/cabloy-docs/backend/field-indexes.md +9 -3
  33. package/cabloy-docs/backend/foundation.md +8 -8
  34. package/cabloy-docs/backend/i18n-guide.md +6 -6
  35. package/cabloy-docs/backend/internal-aop-guide.md +2 -2
  36. package/cabloy-docs/backend/introduction.md +13 -0
  37. package/cabloy-docs/backend/migration-and-changes.md +3 -3
  38. package/cabloy-docs/backend/model-guide.md +16 -6
  39. package/cabloy-docs/backend/openapi-guide.md +3 -0
  40. package/cabloy-docs/backend/queue-guide.md +3 -3
  41. package/cabloy-docs/backend/redlock-guide.md +2 -2
  42. package/cabloy-docs/backend/schedule-guide.md +2 -2
  43. package/cabloy-docs/backend/scripts.md +8 -0
  44. package/cabloy-docs/backend/serialization-guide.md +2 -2
  45. package/cabloy-docs/backend/service-guide.md +18 -9
  46. package/cabloy-docs/backend/startup-guide.md +5 -5
  47. package/cabloy-docs/backend/status-guide.md +7 -7
  48. package/cabloy-docs/backend/unit-testing.md +3 -3
  49. package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
  50. package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
  51. package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
  52. package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
  53. package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
  54. package/cabloy-docs/frontend/a-router-guide.md +307 -0
  55. package/cabloy-docs/frontend/api-guide.md +4 -4
  56. package/cabloy-docs/frontend/api-schema-guide.md +1 -0
  57. package/cabloy-docs/frontend/app-startup-guide.md +7 -4
  58. package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
  59. package/cabloy-docs/frontend/behavior-guide.md +16 -16
  60. package/cabloy-docs/frontend/cli.md +5 -5
  61. package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
  62. package/cabloy-docs/frontend/component-guide.md +5 -5
  63. package/cabloy-docs/frontend/component-props-guide.md +1 -1
  64. package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
  65. package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
  66. package/cabloy-docs/frontend/form-guide.md +27 -30
  67. package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
  68. package/cabloy-docs/frontend/foundation.md +10 -6
  69. package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
  70. package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
  71. package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
  72. package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
  73. package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
  74. package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
  75. package/cabloy-docs/frontend/generic-component-guide.md +1 -1
  76. package/cabloy-docs/frontend/introduction.md +29 -7
  77. package/cabloy-docs/frontend/model-architecture.md +38 -2
  78. package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
  79. package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
  80. package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
  81. package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
  82. package/cabloy-docs/frontend/model-state-guide.md +12 -9
  83. package/cabloy-docs/frontend/module-scope.md +8 -8
  84. package/cabloy-docs/frontend/modules-and-suites.md +2 -1
  85. package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
  86. package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
  87. package/cabloy-docs/frontend/page-guide.md +9 -9
  88. package/cabloy-docs/frontend/page-meta-guide.md +466 -0
  89. package/cabloy-docs/frontend/page-params-guide.md +3 -3
  90. package/cabloy-docs/frontend/page-query-guide.md +2 -2
  91. package/cabloy-docs/frontend/page-route-guide.md +6 -0
  92. package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
  93. package/cabloy-docs/frontend/quickstart.md +14 -2
  94. package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
  95. package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
  96. package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
  97. package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
  98. package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
  99. package/cabloy-docs/frontend/route-alias-guide.md +6 -0
  100. package/cabloy-docs/frontend/router-stack-guide.md +229 -0
  101. package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
  102. package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
  103. package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
  104. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
  105. package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
  106. package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
  107. package/cabloy-docs/frontend/server-data.md +2 -1
  108. package/cabloy-docs/frontend/system-startup-guide.md +2 -2
  109. package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
  110. package/cabloy-docs/frontend/table-cell-cookbook.md +571 -0
  111. package/cabloy-docs/frontend/table-guide.md +373 -0
  112. package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
  113. package/cabloy-docs/frontend/zova-app-guide.md +251 -0
  114. package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
  115. package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
  116. package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
  117. package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
  118. package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
  119. package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
  120. package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
  121. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
  122. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
  123. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
  124. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
  125. package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
  126. package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
  127. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
  128. package/cabloy-docs/fullstack/introduction.md +3 -0
  129. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
  130. package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
  131. package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
  132. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
  133. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
  134. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
  135. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
  136. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
  137. package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
  138. package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
  139. package/cabloy-docs/reference/package-map.md +4 -3
  140. package/package.json +1 -1
  141. package/vona/pnpm-lock.yaml +22 -258
  142. package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
  143. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
  144. package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
  145. package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  146. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
  147. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
  148. package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
  149. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
  150. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
  151. package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
  152. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
  153. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
  154. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
  155. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
  156. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
  157. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
  158. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
  159. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
  160. package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  161. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
  162. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
  163. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
  164. package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
  165. package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
  166. package/vona/src/suite/a-training/package.json +12 -0
  167. package/vona/src/suite/a-training/tsconfig.base.json +4 -0
  168. package/vona/src/suite/a-training/tsconfig.json +10 -0
  169. package/zova/packages-zova/zova/package.json +2 -2
  170. package/zova/pnpm-lock.yaml +423 -682
  171. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/render.tsx +5 -3
  172. package/zova/src/suite/a-home/modules/home-login/src/page/login/render.tsx +5 -3
  173. package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
  174. package/zova/src/suite/a-training/modules/training-student/package.json +57 -0
  175. package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
  176. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
  177. package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
  178. package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  179. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
  180. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
  181. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
  182. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
  183. package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
  184. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
  185. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +53 -0
  186. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
  187. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
  188. package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
  189. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
  190. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
  191. package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  192. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
  193. package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
  194. package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
  195. package/zova/src/suite/a-training/package.json +12 -0
  196. package/zova/src/suite/a-training/tsconfig.base.json +4 -0
  197. package/zova/src/suite/a-training/tsconfig.json +4 -0
  198. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +60 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/index.ts +137 -0
  200. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/locales.ts +7 -0
  201. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/this.ts +2 -0
  202. package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +260 -0
  203. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +39 -0
  204. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/en-us.ts +7 -0
  205. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/zh-cn.ts +7 -0
  206. package/zova/src/suite/cabloy-basic/modules/basic-app/src/index.ts +4 -0
  207. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/appModalItem.ts +16 -0
  208. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/index.ts +1 -0
  209. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +38 -0
  210. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkeySys.ts +14 -0
  211. package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +89 -0
  212. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +52 -0
  213. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/index.ts +1 -0
  214. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.build.json +13 -0
  215. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.json +5 -0
  216. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +6 -1
  217. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/.metadata/index.ts +16 -0
  218. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.alert.tsx +8 -14
  219. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.confirm.tsx +10 -7
  220. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.prompt.tsx +30 -0
  221. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +5 -3
  222. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
  223. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
  224. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +6 -1
  225. package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionDelete.tsx +4 -2
  226. package/zova/src/suite/cabloy-basic/package.json +1 -0
  227. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  228. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
  229. package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
  230. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist",
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "emitDeclarationOnly": true,
9
+ "allowImportingTsExtensions": true,
10
+ "noEmit": false
11
+ },
12
+ "include": ["src", "src/.metadata/**/*"]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {},
4
+ "include": ["src", "src/.metadata/**/*"]
5
+ }
@@ -48,5 +48,10 @@
48
48
  "exports.\\..import"
49
49
  ]
50
50
  },
51
- "title": "basic-commands"
51
+ "title": "basic-commands",
52
+ "zovaModule": {
53
+ "dependencies": {
54
+ "basic-app": "5.0.0"
55
+ }
56
+ }
52
57
  }
@@ -6,6 +6,7 @@ export * from '../bean/command.copy.jsx';
6
6
  export * from '../bean/command.create.jsx';
7
7
  export * from '../bean/command.delete.jsx';
8
8
  export * from '../bean/command.edit.jsx';
9
+ export * from '../bean/command.prompt.jsx';
9
10
  export * from '../bean/command.setValue.jsx';
10
11
  export * from '../bean/command.view.jsx';
11
12
  import { ICommandOptionsAlert } from '../bean/command.alert.jsx';
@@ -14,6 +15,7 @@ import { ICommandOptionsCopy } from '../bean/command.copy.jsx';
14
15
  import { ICommandOptionsCreate } from '../bean/command.create.jsx';
15
16
  import { ICommandOptionsDelete } from '../bean/command.delete.jsx';
16
17
  import { ICommandOptionsEdit } from '../bean/command.edit.jsx';
18
+ import { ICommandOptionsPrompt } from '../bean/command.prompt.jsx';
17
19
  import { ICommandOptionsSetValue } from '../bean/command.setValue.jsx';
18
20
  import { ICommandOptionsView } from '../bean/command.view.jsx';
19
21
  import 'zova-module-a-command';
@@ -26,6 +28,7 @@ declare module 'zova-module-a-command' {
26
28
  'basic-commands:create': ICommandOptionsCreate;
27
29
  'basic-commands:delete': ICommandOptionsDelete;
28
30
  'basic-commands:edit': ICommandOptionsEdit;
31
+ 'basic-commands:prompt': ICommandOptionsPrompt;
29
32
  'basic-commands:setValue': ICommandOptionsSetValue;
30
33
  'basic-commands:view': ICommandOptionsView;
31
34
  }
@@ -100,6 +103,17 @@ declare module 'zova-module-basic-commands' {
100
103
  get $onionOptions(): ICommandOptionsEdit;
101
104
  }
102
105
 
106
+ export interface CommandPrompt {
107
+ /** @internal */
108
+ get scope(): ScopeModuleBasicCommands;
109
+ }
110
+
111
+ export interface CommandPrompt {
112
+ get $beanFullName(): 'basic-commands.command.prompt';
113
+ get $onionName(): 'basic-commands:prompt';
114
+ get $onionOptions(): ICommandOptionsPrompt;
115
+ }
116
+
103
117
  export interface CommandSetValue {
104
118
  /** @internal */
105
119
  get scope(): ScopeModuleBasicCommands;
@@ -130,6 +144,7 @@ import { CommandCopy } from '../bean/command.copy.jsx';
130
144
  import { CommandCreate } from '../bean/command.create.jsx';
131
145
  import { CommandDelete } from '../bean/command.delete.jsx';
132
146
  import { CommandEdit } from '../bean/command.edit.jsx';
147
+ import { CommandPrompt } from '../bean/command.prompt.jsx';
133
148
  import { CommandSetValue } from '../bean/command.setValue.jsx';
134
149
  import { CommandView } from '../bean/command.view.jsx';
135
150
  import 'zova';
@@ -141,6 +156,7 @@ declare module 'zova' {
141
156
  'basic-commands.command.create': CommandCreate;
142
157
  'basic-commands.command.delete': CommandDelete;
143
158
  'basic-commands.command.edit': CommandEdit;
159
+ 'basic-commands.command.prompt': CommandPrompt;
144
160
  'basic-commands.command.setValue': CommandSetValue;
145
161
  'basic-commands.command.view': CommandView;
146
162
  }
@@ -1,33 +1,27 @@
1
1
  import type { ICommandExecute, ICommandOptionsBase } from 'zova-module-a-command';
2
2
  import type { NextCommandExecute } from 'zova-module-a-command';
3
3
  import type { IJsxRenderContextBase } from 'zova-module-a-openapi';
4
+ import type { IModalAlertOptions, IModalDialogOptions } from 'zova-module-basic-app';
4
5
 
5
6
  import { BeanBase } from 'zova';
6
7
  import { Command } from 'zova-module-a-command';
7
8
 
8
9
  export type TypeCommandAlertResult = unknown;
9
10
 
10
- export interface ICommandOptionsAlert extends ICommandOptionsBase<TypeCommandAlertResult> {
11
- message: string;
12
- wait?: boolean;
11
+ export interface ICommandOptionsAlert
12
+ extends ICommandOptionsBase<TypeCommandAlertResult>, IModalAlertOptions {
13
+ dialogOptions?: IModalDialogOptions;
13
14
  }
14
15
 
15
- @Command<ICommandOptionsAlert>({ wait: true })
16
+ @Command<ICommandOptionsAlert>()
16
17
  export class CommandAlert extends BeanBase implements ICommandExecute {
17
18
  execute(
18
19
  options: ICommandOptionsAlert,
19
- _renderContext: IJsxRenderContextBase,
20
+ renderContext: IJsxRenderContextBase,
20
21
  next: NextCommandExecute,
21
22
  ) {
22
- if (options.wait) {
23
- // eslint-disable-next-line no-alert
24
- window.alert(options.message);
25
- } else {
26
- setTimeout(() => {
27
- // eslint-disable-next-line no-alert
28
- window.alert(options.message);
29
- }, 0);
30
- }
23
+ const { $host } = renderContext;
24
+ $host.$appModal.alert(options, options.dialogOptions);
31
25
  return next();
32
26
  }
33
27
  }
@@ -1,3 +1,5 @@
1
+ import type { IModalConfirmOptions, IModalDialogOptions } from 'zova-module-basic-app';
2
+
1
3
  import { BeanBase } from 'zova';
2
4
  import {
3
5
  Command,
@@ -7,21 +9,22 @@ import {
7
9
  } from 'zova-module-a-command';
8
10
  import { IJsxRenderContextBase } from 'zova-module-a-openapi';
9
11
 
10
- export type TypeCommandConfirmResult = boolean;
12
+ export type TypeCommandConfirmResult = Promise<boolean>;
11
13
 
12
- export interface ICommandOptionsConfirm extends ICommandOptionsBase<TypeCommandConfirmResult> {
13
- message: string;
14
+ export interface ICommandOptionsConfirm
15
+ extends ICommandOptionsBase<TypeCommandConfirmResult>, IModalConfirmOptions {
16
+ dialogOptions?: IModalDialogOptions;
14
17
  }
15
18
 
16
19
  @Command<ICommandOptionsConfirm>()
17
20
  export class CommandConfirm extends BeanBase implements ICommandExecute {
18
- execute(
21
+ async execute(
19
22
  options: ICommandOptionsConfirm,
20
- _renderContext: IJsxRenderContextBase,
23
+ renderContext: IJsxRenderContextBase,
21
24
  next: NextCommandExecute,
22
25
  ) {
23
- // eslint-disable-next-line no-alert
24
- const res = window.confirm(options.message);
26
+ const { $host } = renderContext;
27
+ const res = await $host.$appModal.confirm(options, options.dialogOptions);
25
28
  return next(res);
26
29
  }
27
30
  }
@@ -0,0 +1,30 @@
1
+ import type {
2
+ ICommandExecute,
3
+ ICommandOptionsBase,
4
+ NextCommandExecute,
5
+ } from 'zova-module-a-command';
6
+ import type { IJsxRenderContextBase } from 'zova-module-a-openapi';
7
+ import type { IModalDialogOptions, IModalPromptOptions } from 'zova-module-basic-app';
8
+
9
+ import { BeanBase } from 'zova';
10
+ import { Command } from 'zova-module-a-command';
11
+
12
+ export type TypeCommandPromptResult = unknown;
13
+
14
+ export interface ICommandOptionsPrompt
15
+ extends ICommandOptionsBase<TypeCommandPromptResult>, IModalPromptOptions {
16
+ dialogOptions?: IModalDialogOptions;
17
+ }
18
+
19
+ @Command<ICommandOptionsPrompt>()
20
+ export class CommandPrompt extends BeanBase implements ICommandExecute {
21
+ async execute(
22
+ options: ICommandOptionsPrompt,
23
+ renderContext: IJsxRenderContextBase,
24
+ next: NextCommandExecute,
25
+ ) {
26
+ const { $host } = renderContext;
27
+ const res = await $host.$appModal.prompt(options, options.dialogOptions);
28
+ return next(res);
29
+ }
30
+ }
@@ -42,9 +42,11 @@ export class ControllerBlockForm extends BeanControllerBase {
42
42
  formProvider={$$pageEntry.formProvider}
43
43
  formScope={$$pageEntry.jsxCelScope}
44
44
  onSubmitData={data => $$pageEntry.submitData(data)}
45
- onShowError={({ error }) => {
46
- // eslint-disable-next-line no-alert
47
- window.alert(error.message);
45
+ onShowError={async ({ error }) => {
46
+ await this.$performCommand('basic-commands:alert', {
47
+ type: 'error',
48
+ text: error.message,
49
+ });
48
50
  }}
49
51
  onChanged={data => {
50
52
  $$pageEntry.setPageMeta(data, true);
@@ -49,8 +49,12 @@ export class ControllerFormFieldSelect extends BeanControllerBase {
49
49
  <ZFormField
50
50
  {...this.$props}
51
51
  slotDefault={({ propsBucket, props }, $$formField) => {
52
- const className = !propsBucket.needHandleBorder
53
- ? classes(props.class, 'select select-ghost')
52
+ const needClearableEmptyOption = !propsBucket.needHandleBorder;
53
+ const className = needClearableEmptyOption
54
+ ? classes(
55
+ props.class,
56
+ 'grow w-full h-full min-h-0 border-0 rounded-none bg-transparent pl-0 pr-8 py-0 shadow-none outline-none focus:outline-none focus:shadow-none focus:border-0',
57
+ )
54
58
  : classes(
55
59
  props.class,
56
60
  'select',
@@ -61,23 +65,41 @@ export class ControllerFormFieldSelect extends BeanControllerBase {
61
65
  'onUpdate:modelValue': (value: any) => {
62
66
  $$formField.setValue(value, propsBucket.disableNotifyChanged);
63
67
  },
68
+ 'onBlur': () => {
69
+ $$formField.handleBlur();
70
+ },
64
71
  ...propsBucket.options,
65
72
  ...props,
66
73
  'class': className,
67
74
  };
68
- propsNew.items = this._ensureEmptyItemFallback(propsNew.items, propsNew.placeholder);
75
+ if (needClearableEmptyOption) {
76
+ propsNew.items = this._ensureEmptyItemFallback(
77
+ propsNew.items,
78
+ propsNew.placeholder,
79
+ true,
80
+ );
81
+ propsNew.placeholder = undefined;
82
+ } else if (!propsNew.placeholder) {
83
+ propsNew.items = this._ensureEmptyItemFallback(propsNew.items, undefined);
84
+ }
69
85
  return <ZSelect {...propsNew}></ZSelect>;
70
86
  }}
71
87
  ></ZFormField>
72
88
  );
73
89
  }
74
90
 
75
- private _ensureEmptyItemFallback(items: any[] | undefined, placeholder: unknown): any[] | undefined {
76
- if (!!placeholder || !items?.length) return items;
91
+ private _ensureEmptyItemFallback(
92
+ items: any[] | undefined,
93
+ placeholder: unknown,
94
+ force = false,
95
+ ): any[] | undefined {
96
+ if (!items?.length) return items;
77
97
  const valueKey = String(this.$props.options.itemValue);
78
98
  const titleKey = String(this.$props.options.itemTitle);
79
- if (items[0]?.[valueKey] === undefined) return items;
80
- return [{ [valueKey]: undefined, [titleKey]: '' }, ...items];
99
+ const emptyValue = '';
100
+ if (items[0]?.[valueKey] === emptyValue) return items;
101
+ if (!force && !!placeholder) return items;
102
+ return [{ [valueKey]: emptyValue, [titleKey]: placeholder ?? '' }, ...items];
81
103
  }
82
104
 
83
105
  private _getValueByItems() {
@@ -8,6 +8,8 @@ export interface ControllerSelectProps {
8
8
  items?: any[] | undefined;
9
9
  itemTitle?: string;
10
10
  itemValue?: string;
11
+ onChange?: (e: Event) => void;
12
+ onBlur?: (e: Event) => void;
11
13
  }
12
14
 
13
15
  export interface ControllerSelectModels {
@@ -28,13 +30,27 @@ export class ControllerSelect extends BeanControllerBase {
28
30
  }
29
31
 
30
32
  protected render() {
33
+ const {
34
+ items,
35
+ itemTitle,
36
+ itemValue,
37
+ placeholder,
38
+ modelValue,
39
+ controllerRef,
40
+ onChange,
41
+ onBlur,
42
+ 'onUpdate:modelValue': _onUpdateModelValue,
43
+ ...props
44
+ } = this.$props as any;
31
45
  const domOptions: VNode[] = [];
32
- if (this.$props.items) {
33
- for (const item of this.$props.items) {
34
- const title = item[this.$props.itemTitle];
35
- const value = item[this.$props.itemValue];
46
+ const modelValueDom = isNil(this.modelValue) ? '' : String(this.modelValue);
47
+ if (items) {
48
+ for (const item of items) {
49
+ const title = item[itemTitle];
50
+ const value = item[itemValue];
51
+ const valueDom = isNil(value) ? '' : String(value);
36
52
  domOptions.push(
37
- <option key={value} value={value} selected={String(this.modelValue) === String(value)}>
53
+ <option key={valueDom} value={valueDom} selected={modelValueDom === valueDom}>
38
54
  {title}
39
55
  </option>,
40
56
  );
@@ -42,18 +58,25 @@ export class ControllerSelect extends BeanControllerBase {
42
58
  }
43
59
  return (
44
60
  <select
61
+ {...props}
45
62
  onChange={(e: Event) => {
46
63
  const selectedValue = (e.target as HTMLSelectElement).value;
47
- const item = this.$props.items?.find(
48
- item => String(item[this.$props.itemValue]) === selectedValue,
49
- );
50
- const value = item ? item[this.$props.itemValue] : undefined;
64
+ const item = items?.find(item => {
65
+ const value = item[itemValue];
66
+ const valueDom = isNil(value) ? '' : String(value);
67
+ return valueDom === selectedValue;
68
+ });
69
+ const value = selectedValue === '' ? undefined : item?.[itemValue];
51
70
  this.modelValue = value;
71
+ onChange?.(e);
72
+ }}
73
+ onBlur={(e: Event) => {
74
+ onBlur?.(e);
52
75
  }}
53
76
  >
54
- {!!this.$props.placeholder && (
77
+ {!!placeholder && (
55
78
  <option disabled={true} selected={isNil(this.modelValue)}>
56
- {this.$props.placeholder}
79
+ {placeholder}
57
80
  </option>
58
81
  )}
59
82
  {domOptions}
@@ -48,5 +48,10 @@
48
48
  "exports.\\..import"
49
49
  ]
50
50
  },
51
- "title": "basic-table"
51
+ "title": "basic-table",
52
+ "zovaModule": {
53
+ "dependencies": {
54
+ "basic-app": "5.0.0"
55
+ }
56
+ }
52
57
  }
@@ -32,8 +32,10 @@ export class TableCellActionDelete extends BeanBase implements ITableCellRender
32
32
  class={options.class}
33
33
  type="button"
34
34
  onClick={async () => {
35
- // eslint-disable-next-line no-alert
36
- if (!window.confirm(this.scope.locale.DeleteConfirm())) return;
35
+ const confirmed = await $host.$performCommand('basic-commands:confirm', {
36
+ text: this.scope.locale.DeleteConfirm(),
37
+ });
38
+ if (!confirmed) return;
37
39
  await $host.$performCommand('basic-commands:delete', options, renderContext);
38
40
  }}
39
41
  >
@@ -8,6 +8,7 @@
8
8
  "type": "module",
9
9
  "dependencies": {
10
10
  "zova-module-basic-adapter": "^5.0.5",
11
+ "zova-module-basic-app": "^5.0.0",
11
12
  "zova-module-basic-captcha": "^5.0.8",
12
13
  "zova-module-basic-commands": "^5.1.15",
13
14
  "zova-module-basic-commandssync": "^5.0.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-table",
3
- "version": "5.1.31",
3
+ "version": "5.1.32",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -241,7 +241,7 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
241
241
  const promises: Promise<any>[] = renderProviders.map(renderProvider =>
242
242
  (async () => {
243
243
  if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
244
- return await this.sys.bean._getBean(renderProvider as any, true);
244
+ return await this.app.bean._getBean(renderProvider as any, true);
245
245
  }
246
246
  })(),
247
247
  );
@@ -259,7 +259,7 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
259
259
  // beanInstance
260
260
  let beanInstance: ITableCellRender | undefined;
261
261
  if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
262
- beanInstance = await this.sys.bean._getBean(renderProvider as any, true);
262
+ beanInstance = await this.app.bean._getBean(renderProvider as any, true);
263
263
  const beanOptions = appResource.getBean(renderProvider as any);
264
264
  const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;
265
265
  columnProps = deepExtend({}, onionOptions, columnProps);
@@ -300,7 +300,7 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
300
300
  // beanInstance
301
301
  let beanInstance: ITableCellRender | undefined;
302
302
  if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
303
- beanInstance = this.sys.bean._getBeanSyncOnly(renderProvider as any);
303
+ beanInstance = this.app.bean._getBeanSyncOnly(renderProvider as any);
304
304
  const beanOptions = appResource.getBean(renderProvider as any);
305
305
  const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;
306
306
  columnProps = deepExtend({}, onionOptions, columnProps);
@@ -3,5 +3,5 @@ import { createBeanDecorator } from 'zova';
3
3
  import type { IDecoratorTableCellOptions } from '../types/tableCell.js';
4
4
 
5
5
  export function TableCell<T extends IDecoratorTableCellOptions>(options?: T): ClassDecorator {
6
- return createBeanDecorator('tableCell', 'sys', true, options);
6
+ return createBeanDecorator('tableCell', 'app', true, options);
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.102",
3
+ "version": "5.1.103",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "zova-module-a-ssrhmr": "^5.1.19",
31
31
  "zova-module-a-ssrserver": "^5.1.19",
32
32
  "zova-module-a-style": "^5.1.29",
33
- "zova-module-a-table": "^5.1.31",
33
+ "zova-module-a-table": "^5.1.32",
34
34
  "zova-module-a-zod": "^5.1.30",
35
35
  "zova-module-a-zova": "^5.1.70"
36
36
  },