@gadmin2n/schematics 0.0.139 → 0.0.141

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 (329) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +6 -34
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/approval.prisma +199 -0
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +9 -0
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +191 -14
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +1 -1
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/gitignore +6 -5
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +10 -3
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +6 -4
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -2
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +12 -3
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/gen-jwt.ts +8 -1
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +86 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +710 -121
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +125 -10
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +28 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.spec.ts +61 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.ts +7 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.spec.ts +54 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.ts +86 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +9 -3
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +89 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +68 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +177 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +283 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +10 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +42 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +108 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +101 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +29 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +21 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.registry.ts +30 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.ts +15 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +105 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +96 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +78 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +56 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +111 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.spec.ts +23 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.ts +18 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +240 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +339 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.types.ts +74 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +47 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +41 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +70 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +76 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +12 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +227 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +121 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +160 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +41 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +171 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +245 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +22 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.spec.ts +68 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.ts +126 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule.types.ts +34 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +115 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +45 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +59 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +72 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +144 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +19 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +350 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +774 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +46 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +227 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +14 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +151 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +88 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +43 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +21 -1
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +77 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.dto.ts +98 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +277 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.spec.ts +14 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.ts +59 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integrationConnection.module.ts +10 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/actor-context.util.ts +27 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user-group.provider.ts +208 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user.provider.ts +168 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.spec.ts +157 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.ts +176 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.dto.ts +21 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.errors.ts +78 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.spec.ts +100 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.ts +115 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.types.ts +97 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subjectProvider.module.ts +34 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +89 -1
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +4 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.controller.ts +119 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.dto.ts +91 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.errors.ts +34 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.spec.ts +161 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.ts +390 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/userGroup.module.ts +10 -0
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +17 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +8 -2
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +93 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.spec.ts +34 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.ts +26 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +158 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +155 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +512 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +368 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +43 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +174 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +149 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-dsl-comparison.ts +43 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +1 -1
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +4 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +70 -28
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +128 -0
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +85 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +157 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.spec.ts +59 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +27 -5
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +18 -3
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +493 -21
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +426 -90
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +79 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +62 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/schema.types.ts +10 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +124 -0
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +236 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +49 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +69 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/workflowConfig.module.ts +20 -0
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.spec.ts +15 -0
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.ts +25 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +103 -11
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.dto.ts +98 -0
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +3 -0
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +72 -62
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +148 -11
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -9
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +5 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -5
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/PageHeader.tsx +46 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +26 -18
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +2 -2
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +24 -17
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +7 -18
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +2 -2
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +288 -33
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/themeStyles.ts +97 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +1 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/SettingDrawer.tsx +251 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +47 -19
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +18 -9
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/menuRenderer.tsx +155 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +123 -129
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.test.ts +10 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +18 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +32 -3
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +98 -3
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +101 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +8 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +51 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +1 -1
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -1
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +40 -1
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +5 -5
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +16 -1
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +10 -7
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +4 -2
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +26 -2
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +575 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +26 -2
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +575 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +152 -2
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +9 -15
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +41 -9
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +1 -1
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +10 -8
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +3 -3
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +1 -1
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +1 -1
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +141 -138
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +3 -6
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.css +3 -0
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +45 -13
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasComponentLibrary.tsx +45 -22
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +175 -119
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +248 -74
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +33 -18
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +16 -10
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +1 -1
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +31 -0
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +15 -0
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +16 -11
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +25 -21
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ExportModal.tsx +6 -1
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +9 -10
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartConfigModal.tsx +4 -7
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +23 -9
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +16 -11
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +2 -5
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +16 -11
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableConfigModal.tsx +2 -9
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +23 -12
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +2 -17
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.test.ts +149 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +111 -17
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +1 -0
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.test.ts +83 -0
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.ts +118 -0
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardName.test.ts +26 -0
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +9 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +1 -1
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +10 -8
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +3 -6
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +71 -0
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +209 -0
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +6 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +47 -150
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +21 -20
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +115 -118
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +61 -64
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +1 -1
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +187 -200
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +84 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +141 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +16 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +210 -0
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +154 -0
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +194 -5
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +76 -0
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +1 -1
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +176 -22
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +62 -0
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +94 -5
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +15 -10
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +251 -70
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +18 -24
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +106 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +45 -0
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +43 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +283 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +6 -7
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +335 -0
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +433 -237
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +179 -0
  248. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +18 -16
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +20 -16
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +6 -4
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +68 -0
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +367 -0
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connection.types.ts +21 -0
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +180 -0
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +38 -22
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +41 -0
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +6 -0
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +29 -35
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +8 -11
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +4 -3
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +56 -23
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +21 -6
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +17 -20
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +9 -17
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +311 -0
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +218 -0
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +83 -0
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +135 -0
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema-defaults.ts +36 -0
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema.types.ts +32 -0
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.test.tsx +23 -0
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +52 -0
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +9 -13
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +39 -0
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +20 -0
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +72 -0
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +47 -0
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +185 -0
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.test.tsx +102 -0
  280. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +150 -0
  281. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +103 -0
  282. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +135 -0
  283. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +273 -0
  284. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +303 -0
  285. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +189 -0
  286. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +706 -0
  287. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +86 -0
  288. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +458 -0
  289. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +81 -0
  290. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +281 -0
  291. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.test.tsx +61 -0
  292. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +266 -0
  293. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +104 -0
  294. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +98 -0
  295. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +70 -0
  296. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +138 -0
  297. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +25 -0
  298. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +42 -0
  299. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/subject-provider.api.ts +95 -0
  300. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +15 -11
  301. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.test.tsx +152 -0
  302. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +438 -141
  303. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +49 -0
  304. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +31 -2
  305. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +208 -0
  306. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +246 -0
  307. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +77 -0
  308. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +34 -0
  309. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +18 -0
  310. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +66 -0
  311. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +39 -0
  312. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +48 -0
  313. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +51 -0
  314. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +32 -0
  315. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +1 -1
  316. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +10 -8
  317. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +3 -3
  318. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd-theme-vars.css +93 -0
  319. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +8 -8
  320. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +4 -4
  321. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +40 -5
  322. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +3 -3
  323. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +3 -3
  324. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/theme-styles.css +81 -0
  325. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/test/setup.ts +5 -0
  326. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +1 -7
  327. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vitest.config.ts +12 -0
  328. package/package.json +1 -1
  329. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +0 -154
@@ -0,0 +1,71 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Alert, Form, Input, Modal, Radio } from 'antd';
3
+
4
+ interface Props {
5
+ open: boolean;
6
+ requestLabel?: string;
7
+ submitting?: boolean;
8
+ onCancel(): void;
9
+ onSubmit(input: { decision: 'APPROVE' | 'REJECT'; comment?: string }): void;
10
+ }
11
+
12
+ export function DecisionModal({
13
+ open,
14
+ requestLabel,
15
+ submitting,
16
+ onCancel,
17
+ onSubmit,
18
+ }: Props) {
19
+ const [decision, setDecision] = useState<'APPROVE' | 'REJECT'>('APPROVE');
20
+ const [comment, setComment] = useState('');
21
+ useEffect(() => {
22
+ if (open) {
23
+ setDecision('APPROVE');
24
+ setComment('');
25
+ }
26
+ }, [open]);
27
+
28
+ return (
29
+ <Modal
30
+ open={open}
31
+ title="Confirm approval decision"
32
+ okText={decision === 'APPROVE' ? 'Confirm approval' : 'Confirm rejection'}
33
+ okButtonProps={{ danger: decision === 'REJECT', disabled: submitting }}
34
+ confirmLoading={submitting}
35
+ cancelButtonProps={{ disabled: submitting }}
36
+ onCancel={onCancel}
37
+ onOk={() =>
38
+ onSubmit({
39
+ decision,
40
+ ...(comment.trim() && { comment: comment.trim() }),
41
+ })
42
+ }
43
+ >
44
+ <Alert
45
+ type={decision === 'APPROVE' ? 'info' : 'warning'}
46
+ showIcon
47
+ message={`This decision is final for ${requestLabel ?? 'this request'}.`}
48
+ style={{ marginBottom: 16 }}
49
+ />
50
+ <Form layout="vertical">
51
+ <Form.Item label="Decision">
52
+ <Radio.Group
53
+ value={decision}
54
+ onChange={(event) => setDecision(event.target.value)}
55
+ >
56
+ <Radio.Button value="APPROVE">Approve</Radio.Button>
57
+ <Radio.Button value="REJECT">Reject</Radio.Button>
58
+ </Radio.Group>
59
+ </Form.Item>
60
+ <Form.Item label="Comment">
61
+ <Input.TextArea
62
+ rows={3}
63
+ value={comment}
64
+ onChange={(event) => setComment(event.target.value)}
65
+ placeholder="Optional context for this decision"
66
+ />
67
+ </Form.Item>
68
+ </Form>
69
+ </Modal>
70
+ );
71
+ }
@@ -0,0 +1,209 @@
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
+ import {
3
+ Button,
4
+ Card,
5
+ Empty,
6
+ Space,
7
+ Table,
8
+ Tag,
9
+ Typography,
10
+ message,
11
+ } from 'antd';
12
+ import {
13
+ CheckCircleOutlined,
14
+ ReloadOutlined,
15
+ SyncOutlined,
16
+ } from '@ant-design/icons';
17
+ import { customRequest } from 'helpers/http';
18
+ import { PageHeader } from 'components';
19
+ import { PAGE_WRAPPER_STYLE } from 'constants/layout';
20
+ import { DecisionModal } from './DecisionModal';
21
+
22
+ interface InboxItem {
23
+ id: string;
24
+ eligibilityRevision: number;
25
+ request: {
26
+ id: string;
27
+ workflowInstanceId: string;
28
+ nodeId: string;
29
+ status: string;
30
+ startedAt: string;
31
+ expiresAt: string | null;
32
+ approvalRule: Record<string, unknown>;
33
+ rejectionRule: Record<string, unknown>;
34
+ dispatch?: {
35
+ state: 'DISPATCHING' | 'WAITING_APPROVAL' | 'DISPATCH_FAILED';
36
+ canRetry: boolean;
37
+ error?: string;
38
+ };
39
+ };
40
+ }
41
+
42
+ export default function ApprovalInboxPage() {
43
+ const [items, setItems] = useState<InboxItem[]>([]);
44
+ const [loading, setLoading] = useState(false);
45
+ const [submitting, setSubmitting] = useState(false);
46
+ const [retryingId, setRetryingId] = useState<string>();
47
+ const [selected, setSelected] = useState<InboxItem>();
48
+
49
+ const load = useCallback(async () => {
50
+ setLoading(true);
51
+ try {
52
+ setItems(await customRequest<InboxItem[]>('human-approval/inbox', 'GET'));
53
+ } catch (error: any) {
54
+ message.error(error?.message ?? 'Failed to load approval tasks');
55
+ } finally {
56
+ setLoading(false);
57
+ }
58
+ }, []);
59
+
60
+ useEffect(() => {
61
+ void load();
62
+ }, [load]);
63
+
64
+ async function decide(input: {
65
+ decision: 'APPROVE' | 'REJECT';
66
+ comment?: string;
67
+ }) {
68
+ if (!selected || submitting) return;
69
+ setSubmitting(true);
70
+ try {
71
+ await customRequest(
72
+ `human-approval/${selected.request.id}/decisions`,
73
+ 'POST',
74
+ input,
75
+ );
76
+ message.success(
77
+ input.decision === 'APPROVE' ? 'Request approved' : 'Request rejected',
78
+ );
79
+ setSelected(undefined);
80
+ await load();
81
+ } catch (error: any) {
82
+ message.error(error?.message ?? 'Decision failed');
83
+ } finally {
84
+ setSubmitting(false);
85
+ }
86
+ }
87
+
88
+ async function retryDispatch(item: InboxItem) {
89
+ if (retryingId) return;
90
+ setRetryingId(item.request.id);
91
+ try {
92
+ await customRequest(
93
+ `human-approval/${item.request.id}/retry-dispatch`,
94
+ 'POST',
95
+ );
96
+ message.success('Approval request is being sent again');
97
+ await load();
98
+ } catch (error: any) {
99
+ message.error(error?.message ?? 'Unable to retry approval dispatch');
100
+ } finally {
101
+ setRetryingId(undefined);
102
+ }
103
+ }
104
+
105
+ return (
106
+ <div style={PAGE_WRAPPER_STYLE}>
107
+ <PageHeader
108
+ title="Approval tasks"
109
+ subtitle="Requests waiting for your decision"
110
+ extra={
111
+ <Button icon={<ReloadOutlined />} loading={loading} onClick={load}>
112
+ Refresh
113
+ </Button>
114
+ }
115
+ />
116
+
117
+ {/* Table Card */}
118
+ <Card className="card-table">
119
+ <Table
120
+ rowKey={(item) => String(item.id)}
121
+ loading={loading}
122
+ dataSource={items}
123
+ locale={{
124
+ emptyText: <Empty description="No approval tasks waiting" />,
125
+ }}
126
+ columns={[
127
+ {
128
+ title: 'Request',
129
+ render: (_, item) => (
130
+ <Space direction="vertical" size={0}>
131
+ <Typography.Text strong>
132
+ {item.request.nodeId}
133
+ </Typography.Text>
134
+ <Typography.Text type="secondary">
135
+ Workflow run #{item.request.workflowInstanceId}
136
+ </Typography.Text>
137
+ </Space>
138
+ ),
139
+ },
140
+ {
141
+ title: 'Status',
142
+ render: (_, item) => {
143
+ if (item.request.dispatch?.state === 'DISPATCH_FAILED')
144
+ return (
145
+ <Space direction="vertical" size={0}>
146
+ <Tag color="error">Send failed</Tag>
147
+ {item.request.dispatch.error && (
148
+ <Typography.Text type="danger">
149
+ {item.request.dispatch.error}
150
+ </Typography.Text>
151
+ )}
152
+ </Space>
153
+ );
154
+ if (item.request.dispatch?.state === 'DISPATCHING')
155
+ return <Tag color="processing">Sending</Tag>;
156
+ return <Tag color="gold">{item.request.status}</Tag>;
157
+ },
158
+ },
159
+ {
160
+ title: 'Started',
161
+ render: (_, item) =>
162
+ new Date(item.request.startedAt).toLocaleString(),
163
+ },
164
+ {
165
+ title: 'Deadline',
166
+ render: (_, item) =>
167
+ item.request.expiresAt
168
+ ? new Date(item.request.expiresAt).toLocaleString()
169
+ : 'No timeout',
170
+ },
171
+ {
172
+ title: 'Action',
173
+ width: 140,
174
+ render: (_, item) =>
175
+ item.request.dispatch?.state === 'DISPATCH_FAILED' ? (
176
+ <Button
177
+ icon={<SyncOutlined />}
178
+ loading={retryingId === item.request.id}
179
+ disabled={
180
+ Boolean(retryingId) || !item.request.dispatch.canRetry
181
+ }
182
+ onClick={() => void retryDispatch(item)}
183
+ >
184
+ Retry sending
185
+ </Button>
186
+ ) : (
187
+ <Button
188
+ type="primary"
189
+ icon={<CheckCircleOutlined />}
190
+ disabled={submitting}
191
+ onClick={() => setSelected(item)}
192
+ >
193
+ Decide
194
+ </Button>
195
+ ),
196
+ },
197
+ ]}
198
+ />
199
+ </Card>
200
+ <DecisionModal
201
+ open={Boolean(selected)}
202
+ requestLabel={selected?.request.nodeId}
203
+ submitting={submitting}
204
+ onCancel={() => !submitting && setSelected(undefined)}
205
+ onSubmit={decide}
206
+ />
207
+ </div>
208
+ );
209
+ }
@@ -135,7 +135,12 @@ export const AssignRolesModal: React.FC<AssignRolesModalProps> = ({
135
135
  >
136
136
  <Spin spinning={loading}>
137
137
  {existingRoleIds.length > 0 && (
138
- <div style={{ marginBottom: 12, color: '#666' }}>
138
+ <div
139
+ style={{
140
+ marginBottom: 12,
141
+ color: 'var(--ant-color-text-secondary)',
142
+ }}
143
+ >
139
144
  Currently <strong>{existingRoleIds.length}</strong> role(s) can
140
145
  access this page
141
146
  </div>
@@ -10,6 +10,7 @@ import { useGetIdentity } from '@refinedev/core';
10
10
  import {
11
11
  Table,
12
12
  Button,
13
+ Card,
13
14
  Space,
14
15
  Tooltip,
15
16
  Tag,
@@ -17,7 +18,6 @@ import {
17
18
  Modal,
18
19
  message,
19
20
  Tabs,
20
- Typography,
21
21
  } from 'antd';
22
22
  import {
23
23
  SaveOutlined,
@@ -59,14 +59,13 @@ import { PageDetailDrawer } from './Components/PageDetailDrawer';
59
59
  import type {
60
60
  PageMenuTreeNode,
61
61
  PageResourceAssignment,
62
- PageResourcePermissionSummary,
63
62
  ResourceDefinition,
64
63
  } from './types';
65
64
  import { usePageManagement } from './hooks/usePageManagement';
66
65
  import { useTranslation } from 'react-i18next';
67
66
  import { SqlModal, generatePageSql } from '../../components/SqlModal';
68
-
69
- const RESOURCE_NAME_DISPLAY_TRUNCATION_LIMIT = 40;
67
+ import { PageHeader } from 'components';
68
+ import { PAGE_WRAPPER_STYLE } from 'constants/layout';
70
69
 
71
70
  // Sparse number gap for sortOrder (allows inserting items between existing ones)
72
71
  const SORT_ORDER_GAP = 10000;
@@ -92,7 +91,7 @@ const safelyConvertToNumber = (value: unknown): number | null => {
92
91
 
93
92
  const extractPermissionActionsFromAssociation = (
94
93
  associationRecord: any,
95
- resourceRecord: any,
94
+ _resourceRecord: any,
96
95
  ): string[] => {
97
96
  const aggregatedPermissionActions = new Set<string>();
98
97
 
@@ -295,7 +294,8 @@ export const PageManagementListPage: React.FC = () => {
295
294
  children: removeEmptyChildrenArrays(node.children),
296
295
  };
297
296
  }
298
- const { children, ...nodeWithoutChildren } = node;
297
+ const nodeWithoutChildren = { ...node };
298
+ delete nodeWithoutChildren.children;
299
299
  return nodeWithoutChildren as PageMenuTreeNode;
300
300
  });
301
301
 
@@ -303,69 +303,6 @@ export const PageManagementListPage: React.FC = () => {
303
303
  return removeEmptyChildrenArrays(rootLevelNodes);
304
304
  }, [pageListData]);
305
305
 
306
- const pageResourcePermissionSummaryMap = useMemo<
307
- Record<number, PageResourcePermissionSummary>
308
- >(() => {
309
- const associationsArray: any[] = Array.isArray(
310
- pageResourceAssociationsData?.data,
311
- )
312
- ? pageResourceAssociationsData.data
313
- : [];
314
- const summaryMapByPageId: Record<number, PageResourcePermissionSummary> =
315
- {};
316
-
317
- associationsArray.forEach((association: any) => {
318
- const pageId = safelyConvertToNumber(association?.pageId);
319
- const resourceId = safelyConvertToNumber(association?.resourceId);
320
-
321
- if (pageId === null || resourceId === null) {
322
- return;
323
- }
324
-
325
- if (!summaryMapByPageId[pageId]) {
326
- summaryMapByPageId[pageId] = {
327
- resourceIds: [],
328
- resourceNames: [],
329
- allPermissionActions: [],
330
- };
331
- }
332
-
333
- const pageSummary = summaryMapByPageId[pageId];
334
-
335
- if (!pageSummary.resourceIds.includes(resourceId)) {
336
- pageSummary.resourceIds.push(resourceId);
337
- }
338
-
339
- const resourceRecord =
340
- association?.resource ?? resourceLookupByIdMap[resourceId];
341
- const resourceDisplayName =
342
- resourceRecord?.name ||
343
- resourceRecord?.code ||
344
- `Resource ${resourceId}`;
345
-
346
- if (
347
- resourceDisplayName &&
348
- !pageSummary.resourceNames.includes(resourceDisplayName)
349
- ) {
350
- pageSummary.resourceNames.push(resourceDisplayName);
351
- }
352
-
353
- extractPermissionActionsFromAssociation(
354
- association,
355
- resourceRecord,
356
- ).forEach((permissionAction) => {
357
- if (
358
- permissionAction &&
359
- !pageSummary.allPermissionActions.includes(permissionAction)
360
- ) {
361
- pageSummary.allPermissionActions.push(permissionAction);
362
- }
363
- });
364
- });
365
-
366
- return summaryMapByPageId;
367
- }, [pageResourceAssociationsData, resourceLookupByIdMap]);
368
-
369
306
  const getPageResourceAssignmentsForModal = useCallback(
370
307
  (pageId: number): PageResourceAssignment[] => {
371
308
  console.log(
@@ -541,7 +478,12 @@ export const PageManagementListPage: React.FC = () => {
541
478
  );
542
479
  setSqlModal({ open: true, title: `SQL — Page: ${record.name}`, sql });
543
480
  },
544
- [pageListData, pageResourceAssociationsData, resourceLookupByIdMap],
481
+ [
482
+ pageListData,
483
+ pageResourceAssociationsData,
484
+ resourceLookupByIdMap,
485
+ identity,
486
+ ],
545
487
  );
546
488
 
547
489
  // Ref for expand button click/double-click disambiguation
@@ -1001,46 +943,6 @@ export const PageManagementListPage: React.FC = () => {
1001
943
  setExpandedKeys(new Set());
1002
944
  }, []);
1003
945
 
1004
- // Common column renderers for both tables
1005
- const renderAssignedResourcesColumn = (record: any) => {
1006
- const permissionSummary = pageResourcePermissionSummaryMap[record.id];
1007
-
1008
- if (!permissionSummary?.resourceNames.length) {
1009
- return <span style={{ color: '#999' }}>No resources assigned</span>;
1010
- }
1011
-
1012
- const joinedResourceNames = permissionSummary.resourceNames.join(', ');
1013
- const shouldTruncateDisplay =
1014
- joinedResourceNames.length > RESOURCE_NAME_DISPLAY_TRUNCATION_LIMIT;
1015
- const truncatedDisplayValue = shouldTruncateDisplay
1016
- ? `${joinedResourceNames.slice(0, RESOURCE_NAME_DISPLAY_TRUNCATION_LIMIT)}...`
1017
- : joinedResourceNames;
1018
-
1019
- return (
1020
- <Tooltip title={joinedResourceNames}>
1021
- <span>{truncatedDisplayValue}</span>
1022
- </Tooltip>
1023
- );
1024
- };
1025
-
1026
- const renderPermissionActionsColumn = (record: any) => {
1027
- const permissionSummary = pageResourcePermissionSummaryMap[record.id];
1028
-
1029
- if (!permissionSummary?.allPermissionActions.length) {
1030
- return <span style={{ color: '#999' }}>-</span>;
1031
- }
1032
-
1033
- return (
1034
- <Space size={[4, 4]} wrap>
1035
- {permissionSummary.allPermissionActions.map((permissionAction) => (
1036
- <Tag key={`${record.id}-${permissionAction}`} color="blue">
1037
- {permissionAction}
1038
- </Tag>
1039
- ))}
1040
- </Space>
1041
- );
1042
- };
1043
-
1044
946
  // Handle click on add child page button
1045
947
  const handleAddChildPage = useCallback((parentPage: any) => {
1046
948
  const parentPath = parentPage.path || '';
@@ -1280,48 +1182,43 @@ export const PageManagementListPage: React.FC = () => {
1280
1182
  );
1281
1183
 
1282
1184
  return (
1283
- <div>
1284
- <div
1285
- style={{
1286
- display: 'flex',
1287
- justifyContent: 'space-between',
1288
- alignItems: 'center',
1289
- marginBottom: 16,
1290
- }}
1291
- >
1292
- <Typography.Title level={4} style={{ margin: 0 }}>
1293
- Page mgnts
1294
- </Typography.Title>
1295
- <Button
1296
- type="primary"
1297
- onClick={() =>
1298
- setActiveModalState({
1299
- modalType: 'create',
1300
- targetPageId: null,
1301
- })
1302
- }
1303
- >
1304
- Create Page
1305
- </Button>
1306
- </div>
1307
-
1308
- <Tabs
1309
- activeKey={activeTab}
1310
- onChange={setActiveTab}
1311
- items={[
1312
- {
1313
- key: 'regular',
1314
- label: `Regular Pages (${regularPagesData.length})`,
1315
- children: renderRegularPagesTable(),
1316
- },
1317
- {
1318
- key: 'virtual',
1319
- label: `Virtual Pages (${virtualPagesData.length})`,
1320
- children: renderVirtualPagesTable(),
1321
- },
1322
- ]}
1185
+ <div style={PAGE_WRAPPER_STYLE}>
1186
+ <PageHeader
1187
+ title="Page mgnts"
1188
+ extra={
1189
+ <Button
1190
+ type="primary"
1191
+ onClick={() =>
1192
+ setActiveModalState({
1193
+ modalType: 'create',
1194
+ targetPageId: null,
1195
+ })
1196
+ }
1197
+ >
1198
+ Create Page
1199
+ </Button>
1200
+ }
1323
1201
  />
1324
1202
 
1203
+ <Card className="card-table">
1204
+ <Tabs
1205
+ activeKey={activeTab}
1206
+ onChange={setActiveTab}
1207
+ items={[
1208
+ {
1209
+ key: 'regular',
1210
+ label: `Regular Pages (${regularPagesData.length})`,
1211
+ children: renderRegularPagesTable(),
1212
+ },
1213
+ {
1214
+ key: 'virtual',
1215
+ label: `Virtual Pages (${virtualPagesData.length})`,
1216
+ children: renderVirtualPagesTable(),
1217
+ },
1218
+ ]}
1219
+ />
1220
+ </Card>
1221
+
1325
1222
  {activeModalState.modalType === 'edit' &&
1326
1223
  activeModalState.targetPageId && (
1327
1224
  <EditPageModal
@@ -1,4 +1,6 @@
1
1
  import { Alert, Card, Collapse, Divider, Table, Tabs, Typography } from 'antd';
2
+ import { PageHeader } from 'components';
3
+ import { CARD_GAP_STYLE, PAGE_WRAPPER_STYLE } from 'constants/layout';
2
4
 
3
5
  const { Title, Paragraph, Text } = Typography;
4
6
 
@@ -333,16 +335,14 @@ const comparisonData = [
333
335
 
334
336
  export const PermissionReadmePage = () => {
335
337
  return (
336
- <div>
337
- <Typography>
338
- <Title level={2}>菜单管理说明</Title>
339
- <Paragraph>
340
- 本页面介绍系统的菜单、路由与权限管理机制,帮助管理员理解如何添加和配置不同类型的菜单项。
341
- </Paragraph>
342
- </Typography>
338
+ <div style={PAGE_WRAPPER_STYLE}>
339
+ <PageHeader
340
+ title="菜单管理说明"
341
+ subtitle="本页面介绍系统的菜单、路由与权限管理机制,帮助管理员理解如何添加和配置不同类型的菜单项。"
342
+ />
343
343
 
344
344
  {/* ── 架构概览 ──────────────────────────────────────────────── */}
345
- <Card title="菜单系统架构" style={{ marginBottom: 24 }}>
345
+ <Card title="菜单系统架构" style={CARD_GAP_STYLE}>
346
346
  <Paragraph>
347
347
  系统的菜单管理涉及<Text strong>前端路由注册</Text>和
348
348
  <Text strong>数据库页面配置</Text>两个部分的协作。 未匹配到
@@ -374,7 +374,7 @@ export const PermissionReadmePage = () => {
374
374
  </Card>
375
375
 
376
376
  {/* ── 核心概念 ──────────────────────────────────────────────── */}
377
- <Card title="核心概念" style={{ marginBottom: 24 }}>
377
+ <Card title="核心概念" style={CARD_GAP_STYLE}>
378
378
  <Table
379
379
  columns={coreConceptColumns}
380
380
  dataSource={coreConceptData}
@@ -394,7 +394,7 @@ export const PermissionReadmePage = () => {
394
394
  </Card>
395
395
 
396
396
  {/* ── 四种注册方式 ──────────────────────────────────────────── */}
397
- <Card title="菜单注册方式" style={{ marginBottom: 24 }}>
397
+ <Card title="菜单注册方式" style={CARD_GAP_STYLE}>
398
398
  <Alert
399
399
  type="info"
400
400
  showIcon
@@ -450,7 +450,7 @@ export const PermissionReadmePage = () => {
450
450
  <Title level={5}>routeRegistry 示例</Title>
451
451
  <pre
452
452
  style={{
453
- background: '#f5f5f5',
453
+ background: 'var(--ant-color-fill-quaternary)',
454
454
  padding: 16,
455
455
  borderRadius: 6,
456
456
  overflow: 'auto',
@@ -557,7 +557,7 @@ office: {
557
557
  </ul>
558
558
  <pre
559
559
  style={{
560
- background: '#f5f5f5',
560
+ background: 'var(--ant-color-fill-quaternary)',
561
561
  padding: 16,
562
562
  borderRadius: 6,
563
563
  overflow: 'auto',
@@ -611,7 +611,7 @@ overview: {
611
611
  <Title level={5}>CRUD 模块完整示例</Title>
612
612
  <pre
613
613
  style={{
614
- background: '#f5f5f5',
614
+ background: 'var(--ant-color-fill-quaternary)',
615
615
  padding: 16,
616
616
  borderRadius: 6,
617
617
  overflow: 'auto',
@@ -697,7 +697,7 @@ staff: {
697
697
  <Title level={5}>工作流程</Title>
698
698
  <pre
699
699
  style={{
700
- background: '#f5f5f5',
700
+ background: 'var(--ant-color-fill-quaternary)',
701
701
  padding: 16,
702
702
  borderRadius: 6,
703
703
  overflow: 'auto',
@@ -755,7 +755,8 @@ staff: {
755
755
  目标网站必须允许被 iframe 嵌入(未设置{' '}
756
756
  <Text code>X-Frame-Options: DENY</Text> 或{' '}
757
757
  <Text code>
758
- Content-Security-Policy: frame-ancestors 'none'
758
+ Content-Security-Policy: frame-ancestors
759
+ &apos;none&apos;
759
760
  </Text>
760
761
  )
761
762
  </li>
@@ -791,7 +792,7 @@ staff: {
791
792
  </Paragraph>
792
793
  <pre
793
794
  style={{
794
- background: '#f5f5f5',
795
+ background: 'var(--ant-color-fill-quaternary)',
795
796
  padding: 16,
796
797
  borderRadius: 6,
797
798
  overflow: 'auto',
@@ -876,11 +877,11 @@ interface DynamicMenuGroup {
876
877
  </Card>
877
878
 
878
879
  {/* ── 权限层级关系 ────────────────────────────────────────────── */}
879
- <Card title="权限层级关系" style={{ marginBottom: 24 }}>
880
+ <Card title="权限层级关系" style={CARD_GAP_STYLE}>
880
881
  <Title level={5}>实体关系总览</Title>
881
882
  <pre
882
883
  style={{
883
- background: '#f5f5f5',
884
+ background: 'var(--ant-color-fill-quaternary)',
884
885
  padding: 16,
885
886
  borderRadius: 6,
886
887
  overflow: 'auto',
@@ -953,7 +954,7 @@ Role (t_role)
953
954
  <Title level={5}>权限检查完整流程</Title>
954
955
  <pre
955
956
  style={{
956
- background: '#f5f5f5',
957
+ background: 'var(--ant-color-fill-quaternary)',
957
958
  padding: 16,
958
959
  borderRadius: 6,
959
960
  overflow: 'auto',
@@ -991,7 +992,7 @@ Role (t_role)
991
992
  </Paragraph>
992
993
  <pre
993
994
  style={{
994
- background: '#f5f5f5',
995
+ background: 'var(--ant-color-fill-quaternary)',
995
996
  padding: 16,
996
997
  borderRadius: 6,
997
998
  overflow: 'auto',