@gadmin2n/cli 0.0.80 → 0.0.82

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 (282) hide show
  1. package/.yalc/@gadmin2n/schematics/LICENSE +21 -0
  2. package/.yalc/@gadmin2n/schematics/README.md +9 -0
  3. package/.yalc/@gadmin2n/schematics/dist/collection.json +122 -0
  4. package/.yalc/@gadmin2n/schematics/dist/index.d.ts +2 -0
  5. package/.yalc/@gadmin2n/schematics/dist/index.js +18 -0
  6. package/.yalc/@gadmin2n/schematics/dist/lib/application/application.factory.d.ts +3 -0
  7. package/.yalc/@gadmin2n/schematics/dist/lib/application/application.factory.js +92 -0
  8. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/.dockerignore +33 -0
  9. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/Dockerfile +63 -0
  10. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +70 -0
  11. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +143 -0
  12. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/default-schema.prisma +46 -0
  13. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/page.prisma +116 -0
  14. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +49 -0
  15. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.env +31 -0
  16. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.env.local +1 -0
  17. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +1 -0
  18. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/README.md +55 -0
  19. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +17 -0
  20. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +1232 -0
  21. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +141 -0
  22. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +34 -0
  23. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/start-prod.sh +130 -0
  24. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/test/jest-e2e.json +9 -0
  25. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +4 -0
  26. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/README.MD +48 -0
  27. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/index.html +19 -0
  28. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +81 -0
  29. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/postcss.config.cjs +6 -0
  30. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/favicon.ico +0 -0
  31. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/en.svg +1 -0
  32. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/zh_CN.svg +11 -0
  33. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +111 -0
  34. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +236 -0
  35. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +56 -0
  36. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +292 -0
  37. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +294 -0
  38. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.css +10 -0
  39. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.jsx +53 -0
  40. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +201 -0
  41. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +497 -0
  42. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +282 -0
  43. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +62 -0
  44. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +96 -0
  45. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +73 -0
  46. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +104 -0
  47. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -0
  48. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +65 -0
  49. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +58 -0
  50. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +38 -0
  51. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +121 -0
  52. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +32 -0
  53. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +19 -0
  54. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +383 -0
  55. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +61 -0
  56. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +5 -0
  57. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +21 -0
  58. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +44 -0
  59. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +74 -0
  60. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +175 -0
  61. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +421 -0
  62. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +3 -0
  63. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +465 -0
  64. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +182 -0
  65. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +211 -0
  66. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +20 -0
  67. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +128 -0
  68. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +130 -0
  69. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/meta.json +4 -0
  70. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +3 -0
  71. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +134 -0
  72. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +113 -0
  73. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +122 -0
  74. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +6 -0
  75. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +213 -0
  76. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +61 -0
  77. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +168 -0
  78. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +42 -0
  79. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +42 -0
  80. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +101 -0
  81. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +731 -0
  82. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/create.tsx +113 -0
  83. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/edit.tsx +122 -0
  84. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.tsx +6 -0
  85. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +1113 -0
  86. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/show.tsx +61 -0
  87. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/create.tsx +113 -0
  88. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/edit.tsx +122 -0
  89. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/index.tsx +6 -0
  90. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/list.tsx +243 -0
  91. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/show.tsx +61 -0
  92. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permission-readme/index.tsx +1088 -0
  93. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +25 -0
  94. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +28 -0
  95. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +160 -0
  96. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +202 -0
  97. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/create.tsx +113 -0
  98. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/edit.tsx +122 -0
  99. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.tsx +6 -0
  100. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +184 -0
  101. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/show.tsx +61 -0
  102. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +30 -0
  103. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +47 -0
  104. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +56 -0
  105. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +302 -0
  106. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/create.tsx +113 -0
  107. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/edit.tsx +122 -0
  108. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.tsx +6 -0
  109. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +382 -0
  110. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/show.tsx +61 -0
  111. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/create.tsx +113 -0
  112. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/edit.tsx +122 -0
  113. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/index.tsx +6 -0
  114. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/list.tsx +243 -0
  115. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/show.tsx +61 -0
  116. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/create.tsx +113 -0
  117. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/edit.tsx +122 -0
  118. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/index.tsx +6 -0
  119. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/list.tsx +243 -0
  120. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/show.tsx +61 -0
  121. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +17 -0
  122. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +19 -0
  123. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +188 -0
  124. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +48 -0
  125. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +140 -0
  126. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/create.tsx +113 -0
  127. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/edit.tsx +122 -0
  128. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.tsx +6 -0
  129. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +342 -0
  130. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/show.tsx +61 -0
  131. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +132 -0
  132. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +58 -0
  133. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +128 -0
  134. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +18 -0
  135. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +21 -0
  136. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/utils.tsx +5 -0
  137. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +1 -0
  138. package/.yalc/@gadmin2n/schematics/dist/lib/application/schema.json +99 -0
  139. package/.yalc/@gadmin2n/schematics/dist/lib/class/class.factory.d.ts +3 -0
  140. package/.yalc/@gadmin2n/schematics/dist/lib/class/class.factory.js +42 -0
  141. package/.yalc/@gadmin2n/schematics/dist/lib/class/files/js/__name__.js +1 -0
  142. package/.yalc/@gadmin2n/schematics/dist/lib/class/files/js/__name__.spec.js +7 -0
  143. package/.yalc/@gadmin2n/schematics/dist/lib/class/schema.json +45 -0
  144. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/angular.factory.d.ts +3 -0
  145. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/angular.factory.js +98 -0
  146. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/schema.json +24 -0
  147. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/configuration.factory.d.ts +3 -0
  148. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/configuration.factory.js +24 -0
  149. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/files/js/nest-cli.json +6 -0
  150. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/files/ts/nest-cli.json +5 -0
  151. package/.yalc/@gadmin2n/schematics/dist/lib/controller/controller.factory.d.ts +3 -0
  152. package/.yalc/@gadmin2n/schematics/dist/lib/controller/controller.factory.js +118 -0
  153. package/.yalc/@gadmin2n/schematics/dist/lib/controller/files/js/__name__.controller.js +4 -0
  154. package/.yalc/@gadmin2n/schematics/dist/lib/controller/files/js/__name__.controller.spec.js +18 -0
  155. package/.yalc/@gadmin2n/schematics/dist/lib/controller/schema.json +51 -0
  156. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/decorator.factory.d.ts +3 -0
  157. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/decorator.factory.js +33 -0
  158. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/files/js/__name__.decorator.js +3 -0
  159. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/schema.json +36 -0
  160. package/.yalc/@gadmin2n/schematics/dist/lib/defaults.d.ts +16 -0
  161. package/.yalc/@gadmin2n/schematics/dist/lib/defaults.js +19 -0
  162. package/.yalc/@gadmin2n/schematics/dist/lib/filter/files/js/__name__.filter.js +6 -0
  163. package/.yalc/@gadmin2n/schematics/dist/lib/filter/files/js/__name__.filter.spec.js +7 -0
  164. package/.yalc/@gadmin2n/schematics/dist/lib/filter/filter.factory.d.ts +3 -0
  165. package/.yalc/@gadmin2n/schematics/dist/lib/filter/filter.factory.js +34 -0
  166. package/.yalc/@gadmin2n/schematics/dist/lib/filter/schema.json +41 -0
  167. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/files/js/__name__.gateway.js +9 -0
  168. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/files/js/__name__.gateway.spec.js +18 -0
  169. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/gateway.factory.d.ts +3 -0
  170. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/gateway.factory.js +62 -0
  171. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/schema.json +41 -0
  172. package/.yalc/@gadmin2n/schematics/dist/lib/guard/files/js/__name__.guard.js +8 -0
  173. package/.yalc/@gadmin2n/schematics/dist/lib/guard/files/js/__name__.guard.spec.js +7 -0
  174. package/.yalc/@gadmin2n/schematics/dist/lib/guard/guard.factory.d.ts +3 -0
  175. package/.yalc/@gadmin2n/schematics/dist/lib/guard/guard.factory.js +34 -0
  176. package/.yalc/@gadmin2n/schematics/dist/lib/guard/schema.json +41 -0
  177. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/files/js/__name__.interceptor.js +8 -0
  178. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/files/js/__name__.interceptor.spec.js +7 -0
  179. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/interceptor.factory.d.ts +3 -0
  180. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/interceptor.factory.js +116 -0
  181. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/schema.json +50 -0
  182. package/.yalc/@gadmin2n/schematics/dist/lib/interface/interface.factory.d.ts +3 -0
  183. package/.yalc/@gadmin2n/schematics/dist/lib/interface/interface.factory.js +32 -0
  184. package/.yalc/@gadmin2n/schematics/dist/lib/interface/schema.json +32 -0
  185. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/.babelrc +4 -0
  186. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/jsconfig.json +9 -0
  187. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.module.js +8 -0
  188. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.service.js +4 -0
  189. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.service.spec.js +18 -0
  190. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/index.js +2 -0
  191. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/ts/tsconfig.lib.json +9 -0
  192. package/.yalc/@gadmin2n/schematics/dist/lib/library/library.factory.d.ts +3 -0
  193. package/.yalc/@gadmin2n/schematics/dist/lib/library/library.factory.js +190 -0
  194. package/.yalc/@gadmin2n/schematics/dist/lib/library/schema.json +37 -0
  195. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/files/js/__name__.middleware.js +8 -0
  196. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/files/js/__name__.middleware.spec.js +7 -0
  197. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/middleware.factory.d.ts +3 -0
  198. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/middleware.factory.js +34 -0
  199. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/schema.json +41 -0
  200. package/.yalc/@gadmin2n/schematics/dist/lib/module/files/js/__name__.module.js +4 -0
  201. package/.yalc/@gadmin2n/schematics/dist/lib/module/module.factory.d.ts +3 -0
  202. package/.yalc/@gadmin2n/schematics/dist/lib/module/module.factory.js +58 -0
  203. package/.yalc/@gadmin2n/schematics/dist/lib/module/schema.json +46 -0
  204. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/files/js/__name__.pipe.js +8 -0
  205. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/files/js/__name__.pipe.spec.js +7 -0
  206. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/pipe.factory.d.ts +3 -0
  207. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/pipe.factory.js +34 -0
  208. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/schema.json +41 -0
  209. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/prisma-resource.factory.d.ts +3 -0
  210. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/prisma-resource.factory.js +131 -0
  211. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/schema.json +91 -0
  212. package/.yalc/@gadmin2n/schematics/dist/lib/provider/files/js/__name__.js +4 -0
  213. package/.yalc/@gadmin2n/schematics/dist/lib/provider/files/js/__name__.spec.js +18 -0
  214. package/.yalc/@gadmin2n/schematics/dist/lib/provider/provider.factory.d.ts +3 -0
  215. package/.yalc/@gadmin2n/schematics/dist/lib/provider/provider.factory.js +67 -0
  216. package/.yalc/@gadmin2n/schematics/dist/lib/provider/schema.json +45 -0
  217. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/files/js/__name__.resolver.js +4 -0
  218. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/files/js/__name__.resolver.spec.js +18 -0
  219. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/resolver.factory.d.ts +3 -0
  220. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/resolver.factory.js +62 -0
  221. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/schema.json +41 -0
  222. package/.yalc/@gadmin2n/schematics/dist/lib/resource/files/ts/__name__.graphql +24 -0
  223. package/.yalc/@gadmin2n/schematics/dist/lib/resource/resource.factory.d.ts +3 -0
  224. package/.yalc/@gadmin2n/schematics/dist/lib/resource/resource.factory.js +131 -0
  225. package/.yalc/@gadmin2n/schematics/dist/lib/resource/schema.json +90 -0
  226. package/.yalc/@gadmin2n/schematics/dist/lib/service/files/js/__name__.service.js +4 -0
  227. package/.yalc/@gadmin2n/schematics/dist/lib/service/files/js/__name__.service.spec.js +18 -0
  228. package/.yalc/@gadmin2n/schematics/dist/lib/service/schema.json +41 -0
  229. package/.yalc/@gadmin2n/schematics/dist/lib/service/service.factory.d.ts +3 -0
  230. package/.yalc/@gadmin2n/schematics/dist/lib/service/service.factory.js +63 -0
  231. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/.babelrc +4 -0
  232. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/index.js +2 -0
  233. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/jsconfig.json +10 -0
  234. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.controller.js +15 -0
  235. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.controller.spec.js +22 -0
  236. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.module.js +10 -0
  237. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.service.js +8 -0
  238. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/main.js +8 -0
  239. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/test/app.e2e-spec.js +23 -0
  240. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/test/jest-e2e.json +5 -0
  241. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/ts/test/jest-e2e.json +9 -0
  242. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/ts/tsconfig.app.json +9 -0
  243. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/schema.json +32 -0
  244. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/sub-app.factory.d.ts +3 -0
  245. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/sub-app.factory.js +245 -0
  246. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/.babelrc +4 -0
  247. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/index.js +2 -0
  248. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/jsconfig.json +10 -0
  249. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/ts/tsconfig.app.json +9 -0
  250. package/.yalc/@gadmin2n/schematics/dist/utils/change.d.ts +46 -0
  251. package/.yalc/@gadmin2n/schematics/dist/utils/change.js +95 -0
  252. package/.yalc/@gadmin2n/schematics/dist/utils/dependencies.utils.d.ts +15 -0
  253. package/.yalc/@gadmin2n/schematics/dist/utils/dependencies.utils.js +42 -0
  254. package/.yalc/@gadmin2n/schematics/dist/utils/export-from.declarator.d.ts +10 -0
  255. package/.yalc/@gadmin2n/schematics/dist/utils/export-from.declarator.js +39 -0
  256. package/.yalc/@gadmin2n/schematics/dist/utils/formatting.d.ts +1 -0
  257. package/.yalc/@gadmin2n/schematics/dist/utils/formatting.js +12 -0
  258. package/.yalc/@gadmin2n/schematics/dist/utils/index.d.ts +9 -0
  259. package/.yalc/@gadmin2n/schematics/dist/utils/index.js +25 -0
  260. package/.yalc/@gadmin2n/schematics/dist/utils/json-file.util.d.ts +15 -0
  261. package/.yalc/@gadmin2n/schematics/dist/utils/json-file.util.js +68 -0
  262. package/.yalc/@gadmin2n/schematics/dist/utils/metadata.manager.d.ts +13 -0
  263. package/.yalc/@gadmin2n/schematics/dist/utils/metadata.manager.js +162 -0
  264. package/.yalc/@gadmin2n/schematics/dist/utils/module-import.declarator.d.ts +10 -0
  265. package/.yalc/@gadmin2n/schematics/dist/utils/module-import.declarator.js +39 -0
  266. package/.yalc/@gadmin2n/schematics/dist/utils/module-metadata.declarator.d.ts +4 -0
  267. package/.yalc/@gadmin2n/schematics/dist/utils/module-metadata.declarator.js +12 -0
  268. package/.yalc/@gadmin2n/schematics/dist/utils/module.declarator.d.ts +23 -0
  269. package/.yalc/@gadmin2n/schematics/dist/utils/module.declarator.js +32 -0
  270. package/.yalc/@gadmin2n/schematics/dist/utils/module.finder.d.ts +13 -0
  271. package/.yalc/@gadmin2n/schematics/dist/utils/module.finder.js +24 -0
  272. package/.yalc/@gadmin2n/schematics/dist/utils/name.parser.d.ts +12 -0
  273. package/.yalc/@gadmin2n/schematics/dist/utils/name.parser.js +17 -0
  274. package/.yalc/@gadmin2n/schematics/dist/utils/path.solver.d.ts +4 -0
  275. package/.yalc/@gadmin2n/schematics/dist/utils/path.solver.js +14 -0
  276. package/.yalc/@gadmin2n/schematics/dist/utils/source-root.helpers.d.ts +8 -0
  277. package/.yalc/@gadmin2n/schematics/dist/utils/source-root.helpers.js +35 -0
  278. package/.yalc/@gadmin2n/schematics/package.json +78 -0
  279. package/.yalc/@gadmin2n/schematics/yalc.sig +1 -0
  280. package/actions/prisma.action.js +3 -3
  281. package/package.json +2 -2
  282. package/yalc.lock +10 -0
@@ -0,0 +1,122 @@
1
+
2
+ import {
3
+ FieldDataType,
4
+ handleInitialValues,
5
+ handleOnFinish,
6
+ ModelType,
7
+ produceModel,
8
+ } from "@gadmin2n/react-common";
9
+ import { Edit, ListButton, RefreshButton, useFileUploadState, useForm } from "@refinedev/antd";
10
+ import { Form } from "antd";
11
+ import { IResourceComponentsProps, useApiUrl, useParsed, useTranslate } from "@refinedev/core";
12
+ import { getFormItem, onFormValuesChange } from "../../helpers";
13
+ import React, { useContext, useState } from "react";
14
+
15
+ import { modelsMap, modelsEnum } from "../../generated/models.index";
16
+ import {
17
+ roleResourceFormConfig as formConfig,
18
+ roleResourceFormPrismaSelect as formPrismaSelect,
19
+ } from "../../generated/props/roleResource/config";
20
+ import {
21
+ roleResourceModel,
22
+ useRelation,
23
+ } from "../../generated/props/roleResource/model";
24
+ import { RoleResource } from "../../generated/types/prisma.types";
25
+ import { RoleResourceForm as transformClass } from "../../generated/props/roleResource/form.validator";
26
+ import { BusinessContext } from 'components/contexts/business';
27
+
28
+ export const RoleResourceEdit: React.FC<IResourceComponentsProps> = () => {
29
+ const resourceName = "roleResource";
30
+ const t = useTranslate();
31
+
32
+
33
+ const [[fields, model]] = useState(() => {
34
+ const model: ModelType = produceModel(
35
+ roleResourceModel,
36
+ {
37
+ // all formItem attrs surport, https://ant.design/components/form#formitem
38
+ // description : { component : <MDEditor data-color-mode="light" /> },
39
+ // status : { normalize : (value: any) => value ? "1" : "0" },
40
+ // cron: {validator: { validator: runCronValidator },},
41
+ },
42
+ transformClass
43
+ );
44
+
45
+ const fields: FieldDataType[] = formConfig.fields
46
+ .map((fieldName: string) => model[fieldName])
47
+ .filter((field: FieldDataType) => field);
48
+
49
+ return [fields, model] as const;
50
+ });
51
+
52
+ const { formProps, saveButtonProps, onFinish, form } =
53
+ useForm<RoleResource>({
54
+ meta: { select: formPrismaSelect},
55
+ });
56
+ formProps.initialValues = handleInitialValues(
57
+ formProps.initialValues || {},
58
+ fields
59
+ );
60
+
61
+ const apiUrl = useApiUrl();
62
+ const { isLoading, onChange } = useFileUploadState();
63
+
64
+ const relationSelectProps = useRelation(modelsMap);
65
+
66
+ return (
67
+ <Edit
68
+ saveButtonProps={{
69
+ ...saveButtonProps,
70
+ disabled: isLoading,
71
+ }}
72
+ headerButtons={
73
+ <>
74
+ <ListButton />
75
+ <RefreshButton
76
+ meta={{ select: formPrismaSelect}}
77
+ />
78
+ </>
79
+ }
80
+ >
81
+ <Form
82
+ {...formProps}
83
+ validateTrigger="onBlur"
84
+ onFinish={(values) => {
85
+ onFinish(
86
+ handleOnFinish(
87
+ {
88
+ ...values,
89
+
90
+ id: undefined,
91
+ },
92
+ fields,
93
+ "edit"
94
+ )
95
+ );
96
+ }}
97
+ layout="vertical"
98
+ form={form}
99
+ onValuesChange={onFormValuesChange(
100
+ form,
101
+ formConfig.reaction,
102
+ )}
103
+ >
104
+ {fields.map((field) => {
105
+ return getFormItem(
106
+ field,
107
+ resourceName,
108
+ t,
109
+ form,
110
+ formConfig.reaction,
111
+ modelsEnum,
112
+ model,
113
+ apiUrl,
114
+ relationSelectProps,
115
+ onChange
116
+ );
117
+ })}
118
+ </Form>
119
+ </Edit>
120
+ );
121
+ };
122
+
@@ -0,0 +1,6 @@
1
+ // Stub - this module has been integrated into role management
2
+ const EmptyComponent = () => null;
3
+ export const RoleResourceCreate = EmptyComponent;
4
+ export const RoleResourceEdit = EmptyComponent;
5
+ export const RoleResourceList = EmptyComponent;
6
+ export const RoleResourceShow = EmptyComponent;
@@ -0,0 +1,243 @@
1
+
2
+ /**
3
+ * RoleResource List Page
4
+ *
5
+ * Generated using simplified pattern with @gadmin2n/react-common hooks and components.
6
+ *
7
+ * Flexibility Levels:
8
+ * 1. Basic usage - Use components with defaults (this file)
9
+ * 2. Render props - Customize specific buttons/elements
10
+ * 3. Children function - Complete UI control
11
+ * 4. Core hooks - No UI assumptions, full control
12
+ *
13
+ * See: examples/ListPageExamples.tsx for all patterns
14
+ */
15
+ import React, { useMemo } from 'react';
16
+ import { Table } from 'antd';
17
+ import { List, useTable, useImport } from '@refinedev/antd';
18
+ import {
19
+ HttpError,
20
+ IResourceComponentsProps,
21
+ parseTableParams,
22
+ useExport,
23
+ useTranslate,
24
+ useApiUrl,
25
+ } from '@refinedev/core';
26
+ import { useLocation } from 'react-router-dom';
27
+ import {
28
+ getColumns,
29
+ ModelType,
30
+ produceModel,
31
+ tableSearchBar,
32
+ } from '@gadmin2n/react-common';
33
+
34
+ // Generated imports
35
+ import { modelsEnum, modelsMap } from 'generated/models.index';
36
+ import {
37
+ roleResourceTableConfig as tableConfig,
38
+ roleResourceTablePrismaSelect as prismaSelect,
39
+ } from 'generated/props/roleResource/config';
40
+ import { roleResourceModel, useRelation } from 'generated/props/roleResource/model';
41
+ import type { RoleResource } from 'generated/types/prisma.types';
42
+
43
+ // Local imports
44
+ import {
45
+ BulkActions,
46
+ ListPageHeader,
47
+ RowActions,
48
+ SearchBar,
49
+ } from 'components';
50
+ import { getRowActionsColumnProps } from 'components/agentPanel';
51
+ import { LogButton } from 'components/auditLog';
52
+ import { requestHeaders } from 'helpers/login';
53
+ import { useBatchOperations } from 'hooks';
54
+ import {
55
+ createSearchFormOnFinish,
56
+ getSearchFormInitialValues,
57
+ getTableColumnV2,
58
+ TableColumnContext
59
+ } from 'helpers';
60
+
61
+
62
+ const { placeholder: searchPlaceholder, getSearchFilters } = tableSearchBar(
63
+ tableConfig['toolbar']['searchBar'],
64
+ roleResourceModel,
65
+ );
66
+
67
+ // https://refine.dev/docs/api-reference/antd/hooks/table/useTable/
68
+ export const RoleResourceList: React.FC<IResourceComponentsProps> = () => {
69
+ const resourceName = 'roleResource';
70
+ const t = useTranslate();
71
+ const apiUrl = useApiUrl();
72
+ const { search } = useLocation();
73
+ const { parsedSorter, parsedFilters } = parseTableParams(search);
74
+
75
+
76
+ // Relations
77
+ const relationSelectProps = useRelation(modelsMap);
78
+
79
+ // Model with customizations
80
+ const [columns, model] = useMemo(() => {
81
+ const model: ModelType = produceModel(roleResourceModel, {
82
+ // Custom column renderers can be added here
83
+ // cron: { render: (value) => humanizeCronInChinese(value) },
84
+ });
85
+
86
+ const columns = getColumns('RoleResource', tableConfig.fields, {
87
+ ...modelsMap,
88
+ RoleResource: { model, meta: modelsMap['RoleResource'].meta },
89
+ });
90
+
91
+ return [columns, model] as const;
92
+ }, []);
93
+
94
+ // Table hook
95
+ const {
96
+ tableProps,
97
+ sorters: sorter,
98
+ setCurrent,
99
+ setFilters,
100
+ filters,
101
+ tableQueryResult,
102
+ searchFormProps,
103
+ } = useTable<RoleResource, HttpError>({
104
+ meta: { transformQFn: getSearchFilters, select: prismaSelect },
105
+ filters: { initial: parsedFilters, defaultBehavior: 'merge' },
106
+ sorters: { initial: parsedSorter },
107
+
108
+ });
109
+
110
+ // initialValues: 从 URL 的 parsedFilters 中恢复 q(搜索关键词)和 createdAt(日期范围)
111
+ // onFinish: 将表单值转换为 CrudFilters 并更新筛选条件
112
+ // 有 createdAt 字段的模型(默认)
113
+ searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters);
114
+ searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters);
115
+
116
+ // 没有 createdAt 字段的模型
117
+ // searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters, { dateField: null });
118
+ // searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters, { dateField: null });
119
+
120
+ // 使用其他日期字段(如 updatedAt)
121
+ // searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters, { dateField: 'updatedAt' });
122
+ // searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters, { dateField: 'updatedAt' });
123
+
124
+ // Batch operations (selection, update, delete)
125
+ const batchOps = useBatchOperations({
126
+ resourceName,
127
+ apiUrl,
128
+ requestHeaders,
129
+ onSuccess: () => tableQueryResult.refetch(),
130
+ t,
131
+ });
132
+
133
+ // Export all
134
+ const { triggerExport, isLoading: exportLoading } = useExport<RoleResource>({
135
+ maxItemCount: 200,
136
+ pageSize: 100,
137
+
138
+ });
139
+
140
+ // Export selected
141
+ const { triggerExport: triggerExportSelected, isLoading: exportSelectedLoading } =
142
+ useExport<RoleResource>({
143
+ pageSize: 100,
144
+ meta: { where: { id: { in: batchOps.selectedRowKeys.map(Number) } } },
145
+ });
146
+
147
+ // Import
148
+ const importProps = useImport<RoleResource>({
149
+ mapData: (item: any) => ({
150
+ ...item,
151
+
152
+ }),
153
+ batchSize: 1,
154
+ });
155
+
156
+ // Context for table columns
157
+ const columnContext: TableColumnContext = {
158
+ resourceName,
159
+ t,
160
+ model,
161
+ modelsEnum,
162
+ modelsMap,
163
+ tableConfig,
164
+ sorter,
165
+ filters,
166
+ relationSelectProps,
167
+ };
168
+
169
+ return (
170
+ <List
171
+ headerProps={{
172
+ subTitle: batchOps.hasSelected && (
173
+ <BulkActions
174
+ selectedRowKeys={batchOps.selectedRowKeys}
175
+ actions={tableConfig.rowSelection.actions}
176
+ onUpdateSelected={batchOps.updateSelectedItems}
177
+ onDeleteSelected={batchOps.deleteSelectedItems}
178
+ onExportSelected={triggerExportSelected}
179
+ updateLoading={batchOps.updateManyIsLoading}
180
+ deleteLoading={batchOps.deleteManyIsLoading}
181
+ exportLoading={exportSelectedLoading}
182
+ t={t}
183
+ resourceName={resourceName}
184
+ // Render props examples (uncomment to customize):
185
+ // renderDeleteButton={(onClick, loading) => <Button danger onClick={onClick} loading={loading}>Delete</Button>}
186
+ // renderSelectionCount={(count) => <Badge count={count}><Tag>Selected</Tag></Badge>}
187
+ // extraActions={<Button>Custom Action</Button>}
188
+ />
189
+ ),
190
+ extra: (
191
+ <ListPageHeader
192
+ importProps={importProps}
193
+ onExport={triggerExport}
194
+ exportLoading={exportLoading}
195
+ />
196
+ ),
197
+ }}
198
+ >
199
+ {/* Search Bar */}
200
+ <SearchBar
201
+ formProps={searchFormProps}
202
+ t={t}
203
+ resourceName={resourceName}
204
+ searchPlaceholder={searchPlaceholder}
205
+ // Render props examples (uncomment to customize):
206
+ // renderKeywordInput={(field, defaultInput) => <Input.Search placeholder={field.placeholder} />}
207
+ // renderSubmitButton={(defaultButton) => <Space>{defaultButton}<Button>Reset</Button></Space>}
208
+ // extraActions={<Button type="link">Advanced</Button>}
209
+ />
210
+
211
+ {/* Data Table */}
212
+ <Table {...tableProps} rowKey="id" rowSelection={batchOps.rowSelection}>
213
+ {columns.map((col) => getTableColumnV2({ col, context: columnContext }))}
214
+
215
+ {/* Actions Column */}
216
+ <Table.Column<RoleResource>
217
+ title={t('table.actions')}
218
+ dataIndex="actions"
219
+ {...getRowActionsColumnProps(resourceName)}
220
+ render={(_, record) => (
221
+ <RowActions
222
+ record={record}
223
+ actions={tableConfig.rowActions.actions}
224
+ onUpdate={batchOps.updateOne}
225
+ updateLoading={batchOps.updateManyIsLoading}
226
+ t={t}
227
+ resourceName={resourceName}
228
+ LogButton={LogButton}
229
+ // Render props examples (uncomment to customize):
230
+ // showClone={false}
231
+ // showDelete={false}
232
+ // renderEditButton={(id) => <Button type="link" size="small">Quick Edit</Button>}
233
+ // renderDeleteButton={(id) => <Popconfirm title="Sure?"><Button danger size="small">Remove</Button></Popconfirm>}
234
+ // extraPrimaryActions={<Button type="text" size="small">Quick View</Button>}
235
+ />
236
+ )}
237
+ />
238
+ </Table>
239
+ </List>
240
+ );
241
+ };
242
+
243
+ export default RoleResourceList;
@@ -0,0 +1,61 @@
1
+
2
+ import { ModelType, getColumns, produceModel } from "@gadmin2n/react-common";
3
+ import { CloneButton, DeleteButton, EditButton, ListButton, RefreshButton, Show } from "@refinedev/antd";
4
+ import { IResourceComponentsProps, useShow, useTranslate } from "@refinedev/core";
5
+ import React, { useState } from "react";
6
+ import { getShowField } from "../../helpers";
7
+ import type { RoleResource } from "../../generated/types/prisma.types"; //'.prisma/client/index';
8
+ import {
9
+ roleResourceShowConfig as showConfig,
10
+ roleResourceShowPrismaSelect as showPrismaSelect,
11
+ } from "../../generated/props/roleResource/config";
12
+ import { roleResourceModel } from "../../generated/props/roleResource/model";
13
+ import { modelsMap } from "generated/models.index";
14
+
15
+ export const RoleResourceShow: React.FC<IResourceComponentsProps> = () => {
16
+ const resourceName = "roleResource";
17
+ const t = useTranslate();
18
+
19
+ const { queryResult } = useShow<RoleResource>({
20
+ meta: { select: showPrismaSelect},
21
+ });
22
+ const { data, isLoading } = queryResult;
23
+ const record = data?.data;
24
+
25
+ const [[fields, model]] = useState(() => {
26
+ const model: ModelType = produceModel(roleResourceModel, {
27
+ // status: { render: xxxxx }
28
+ });
29
+
30
+ // getColumns is a function that returns an array of fields
31
+ const fields = getColumns("RoleResource", showConfig.fields, {
32
+ ...modelsMap,
33
+ RoleResource: { model, meta: modelsMap["RoleResource"].meta },
34
+ });
35
+
36
+ return [fields, model] as const;
37
+ });
38
+
39
+ return (
40
+ <Show
41
+ isLoading={isLoading}
42
+ headerButtons={
43
+ <>
44
+ <ListButton/>
45
+ <EditButton recordItemId={record?.id} />
46
+ <CloneButton recordItemId={record?.id} />
47
+ <DeleteButton recordItemId={record?.id} />
48
+ <RefreshButton
49
+ recordItemId={record?.id}
50
+ meta={{ select: showPrismaSelect}}
51
+ />
52
+ </>
53
+ }
54
+ >
55
+ {fields.map((field: any) => {
56
+ return getShowField(field, resourceName, record, t, model, modelsMap);
57
+ })}
58
+ </Show>
59
+ );
60
+ };
61
+
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+
3
+ import { UserFormModal } from "./form-modal";
4
+
5
+ interface CreateModalProps {
6
+ onClose: () => void;
7
+ }
8
+
9
+ export const CreateModal: React.FC<CreateModalProps> = ({ onClose }) => {
10
+ return (
11
+ <UserFormModal
12
+ action="create"
13
+ onCancel={onClose}
14
+ onMutationSuccess={onClose}
15
+ />
16
+ );
17
+ };
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+
3
+ import { UserFormModal } from "./form-modal";
4
+
5
+ interface EditModalProps {
6
+ id?: number;
7
+ onClose: () => void;
8
+ }
9
+
10
+ export const EditModal: React.FC<EditModalProps> = ({ id, onClose }) => {
11
+ return (
12
+ <UserFormModal
13
+ action="edit"
14
+ id={id}
15
+ onCancel={onClose}
16
+ onMutationSuccess={onClose}
17
+ />
18
+ );
19
+ };
@@ -0,0 +1,188 @@
1
+ import React, { useState } from "react";
2
+
3
+ import { useModalForm } from "@refinedev/antd";
4
+ import { type HttpError, type RedirectAction } from "@refinedev/core";
5
+
6
+ import { Button, Form, Input, Modal, Select, Space, Switch } from "antd";
7
+ import { ReloadOutlined } from "@ant-design/icons";
8
+
9
+ import { useRoles } from "hooks/useRoles";
10
+ import { User } from "types";
11
+
12
+ import { UserSelect } from "../queries";
13
+
14
+ const generateApiKey = () => crypto.randomUUID();
15
+
16
+ type Props = {
17
+ action: "create" | "edit";
18
+ id?: number;
19
+ redirect?: RedirectAction;
20
+ onMutationSuccess?: () => void;
21
+ onCancel?: () => void;
22
+ };
23
+
24
+ export const UserFormModal: React.FC<Props> = ({
25
+ action,
26
+ id,
27
+ redirect,
28
+ onCancel,
29
+ onMutationSuccess,
30
+ }) => {
31
+ const [isApiKey, setIsApiKey] = useState(false);
32
+ const [usernameTouched, setUsernameTouched] = useState(false);
33
+
34
+ // Fetch roles from backend using custom hook
35
+ const { roleOptions, loading: rolesLoading } = useRoles();
36
+
37
+ const { formProps, modalProps, onFinish, close, form } = useModalForm<
38
+ User,
39
+ HttpError,
40
+ Partial<User>
41
+ >({
42
+ resource: "user",
43
+ action,
44
+ id,
45
+ defaultVisible: true,
46
+ redirect,
47
+ onMutationSuccess: () => {
48
+ onMutationSuccess?.();
49
+ },
50
+ meta: {
51
+ select: UserSelect,
52
+ },
53
+ });
54
+
55
+ // fix react-query cache data type error
56
+ if (
57
+ formProps.initialValues?.roles &&
58
+ typeof formProps.initialValues.roles === "string"
59
+ ) {
60
+ formProps.initialValues.roles = JSON.parse(formProps.initialValues.roles);
61
+ }
62
+
63
+ // sync isApiKey state with form initial values
64
+ React.useEffect(() => {
65
+ if (formProps.initialValues?.isApiKey !== undefined) {
66
+ setIsApiKey(formProps.initialValues.isApiKey);
67
+ }
68
+ }, [formProps.initialValues?.isApiKey]);
69
+
70
+ const handleGenerateApiKey = () => {
71
+ const newKey = generateApiKey();
72
+ form.setFieldsValue({ apiKey: newKey });
73
+ };
74
+
75
+ const handleIsApiKeyChange = (checked: boolean) => {
76
+ setIsApiKey(checked);
77
+ if (checked && !form.getFieldValue("apiKey")) {
78
+ handleGenerateApiKey();
79
+ }
80
+ if (checked) {
81
+ form.setFieldsValue({ isActive: true });
82
+ }
83
+ };
84
+
85
+ formProps.onFinish = (values) => {
86
+ onFinish({ ...values, roles: JSON.stringify(values.roles) });
87
+ };
88
+
89
+ return (
90
+ <Modal
91
+ {...modalProps}
92
+ width={560}
93
+ onCancel={() => {
94
+ if (onCancel) {
95
+ onCancel();
96
+ return;
97
+ }
98
+ //TODO: modalProps.onCancel expect an event so, I used close. Actually both of them are same.
99
+ close();
100
+ }}
101
+ title={action === "create" ? "Create User" : "Edit User"}
102
+ >
103
+ <Form {...formProps} layout="vertical">
104
+ <Form.Item rules={[{ required: true }]} name="userid" label="User ID(WecomId 或者 太湖帐号名)">
105
+ <Input
106
+ placeholder="Please enter user ID"
107
+ onChange={(e) => {
108
+ if (action === "create" && !usernameTouched) {
109
+ form.setFieldsValue({ username: e.target.value });
110
+ }
111
+ }}
112
+ />
113
+ </Form.Item>
114
+
115
+ <Form.Item
116
+ rules={[{ required: true }]}
117
+ name="username"
118
+ label="Username(一般设置为和上面的 User ID 一样)"
119
+ >
120
+ <Input
121
+ placeholder="Please enter username"
122
+ onChange={() => {
123
+ if (!usernameTouched) setUsernameTouched(true);
124
+ }}
125
+ />
126
+ </Form.Item>
127
+
128
+ <Form.Item rules={[{ required: true }]} name="roles" label="Roles">
129
+ <Select
130
+ mode="multiple"
131
+ placeholder="Please select roles"
132
+ options={roleOptions}
133
+ loading={rolesLoading}
134
+ />
135
+ </Form.Item>
136
+
137
+ <Form.Item
138
+ name="isActive"
139
+ label="Is Active"
140
+ valuePropName="checked"
141
+ initialValue={true}
142
+ >
143
+ <Switch />
144
+ </Form.Item>
145
+
146
+ <Form.Item
147
+ name="isApiKey"
148
+ label="Is API Key User(用来提供给其他开发者以apikey的方式来访问)"
149
+ valuePropName="checked"
150
+ >
151
+ <Switch onChange={handleIsApiKeyChange} />
152
+ </Form.Item>
153
+
154
+ {isApiKey && (
155
+ <>
156
+ <Form.Item
157
+ label="API Key"
158
+ rules={[{ required: isApiKey, message: "Please generate API Key" }]}
159
+ >
160
+ <Space.Compact style={{ width: "100%" }}>
161
+ <Form.Item name="apiKey" noStyle>
162
+ <Input
163
+ placeholder="Click button to generate API Key"
164
+ style={{ fontFamily: "monospace" }}
165
+ />
166
+ </Form.Item>
167
+ <Button
168
+ type="primary"
169
+ icon={<ReloadOutlined />}
170
+ onClick={handleGenerateApiKey}
171
+ >
172
+ {form.getFieldValue("apiKey") ? "Regenerate" : "Generate"}
173
+ </Button>
174
+ </Space.Compact>
175
+ </Form.Item>
176
+
177
+ <Form.Item name="description" label="Description">
178
+ <Input.TextArea
179
+ rows={2}
180
+ placeholder="Please enter description for this API Key"
181
+ />
182
+ </Form.Item>
183
+ </>
184
+ )}
185
+ </Form>
186
+ </Modal>
187
+ );
188
+ };