@gadmin2n/cli 0.0.81 → 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 (281) 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/package.json +2 -2
  281. package/yalc.lock +10 -0
@@ -0,0 +1,236 @@
1
+ import React from 'react';
2
+ import { Button, Popconfirm, Space } from 'antd';
3
+ import { agentAttrs } from './agentPanel/agentAttributes';
4
+ import { ExportButton } from '@refinedev/antd';
5
+ import { RowAction } from '../hooks/types';
6
+
7
+ export interface BulkActionsRenderContext {
8
+ /** Number of selected items */
9
+ selectedCount: number;
10
+ /** Selected row keys */
11
+ selectedRowKeys: React.Key[];
12
+ /** Handler for update action */
13
+ onUpdate: (values: any) => Promise<void>;
14
+ /** Handler for delete action */
15
+ onDelete: () => Promise<void>;
16
+ /** Handler for export action */
17
+ onExport?: () => void;
18
+ /** Loading states */
19
+ updateLoading: boolean;
20
+ deleteLoading: boolean;
21
+ exportLoading: boolean;
22
+ /** Translation function */
23
+ t: (key: string, defaultValue?: string) => string;
24
+ /** Resource name */
25
+ resourceName: string;
26
+ }
27
+
28
+ export interface BulkActionsProps {
29
+ /** Array of selected row keys */
30
+ selectedRowKeys: React.Key[];
31
+ /** Row selection actions from config */
32
+ actions?: RowAction[];
33
+ /** Handler for status change actions */
34
+ onUpdateSelected?: (values: any) => Promise<void>;
35
+ /** Handler for delete action */
36
+ onDeleteSelected?: () => Promise<void>;
37
+ /** Handler for export action */
38
+ onExportSelected?: () => void;
39
+ /** Loading states */
40
+ updateLoading?: boolean;
41
+ deleteLoading?: boolean;
42
+ exportLoading?: boolean;
43
+ /** Translation function */
44
+ t?: (key: string, defaultValue?: string) => string;
45
+ /** Resource name for i18n keys */
46
+ resourceName?: string;
47
+ /** Show delete button */
48
+ showDelete?: boolean;
49
+ /** Show export button */
50
+ showExport?: boolean;
51
+ /** Custom children - if provided, replaces entire default UI */
52
+ children?: React.ReactNode | ((context: BulkActionsRenderContext) => React.ReactNode);
53
+
54
+ // Render props for fine-grained customization
55
+ /** Custom render for update buttons */
56
+ renderUpdateButton?: (
57
+ action: RowAction,
58
+ onClick: () => void,
59
+ loading: boolean
60
+ ) => React.ReactNode;
61
+ /** Custom render for delete button */
62
+ renderDeleteButton?: (onClick: () => void, loading: boolean) => React.ReactNode;
63
+ /** Custom render for export button */
64
+ renderExportButton?: (onClick: () => void, loading: boolean) => React.ReactNode;
65
+ /** Custom render for selection count */
66
+ renderSelectionCount?: (count: number) => React.ReactNode;
67
+ /** Additional actions to render after default actions */
68
+ extraActions?: React.ReactNode;
69
+ }
70
+
71
+ /**
72
+ * Bulk actions component for selected rows
73
+ *
74
+ * @example
75
+ * // Basic usage
76
+ * <BulkActions
77
+ * selectedRowKeys={selectedRowKeys}
78
+ * onUpdateSelected={updateSelectedItems}
79
+ * onDeleteSelected={deleteSelectedItems}
80
+ * t={t}
81
+ * resourceName="audit"
82
+ * />
83
+ *
84
+ * @example
85
+ * // With custom render props
86
+ * <BulkActions
87
+ * {...props}
88
+ * renderDeleteButton={(onClick, loading) => (
89
+ * <MyCustomDeleteButton onClick={onClick} loading={loading} />
90
+ * )}
91
+ * renderSelectionCount={(count) => (
92
+ * <Badge count={count} />
93
+ * )}
94
+ * />
95
+ *
96
+ * @example
97
+ * // Completely custom UI using children
98
+ * <BulkActions
99
+ * selectedRowKeys={selectedRowKeys}
100
+ * onUpdateSelected={updateSelectedItems}
101
+ * onDeleteSelected={deleteSelectedItems}
102
+ * >
103
+ * {({ selectedCount, onDelete, updateLoading }) => (
104
+ * <MyCustomBulkActionsUI
105
+ * count={selectedCount}
106
+ * onDelete={onDelete}
107
+ * loading={updateLoading}
108
+ * />
109
+ * )}
110
+ * </BulkActions>
111
+ */
112
+ export const BulkActions: React.FC<BulkActionsProps> = ({
113
+ selectedRowKeys,
114
+ actions = [],
115
+ onUpdateSelected,
116
+ onDeleteSelected,
117
+ onExportSelected,
118
+ updateLoading = false,
119
+ deleteLoading = false,
120
+ exportLoading = false,
121
+ t = (key, defaultValue) => defaultValue || key,
122
+ resourceName = '',
123
+ showDelete = true,
124
+ showExport = true,
125
+ children,
126
+ renderUpdateButton,
127
+ renderDeleteButton,
128
+ renderExportButton,
129
+ renderSelectionCount,
130
+ extraActions,
131
+ }) => {
132
+ if (selectedRowKeys.length === 0) {
133
+ return null;
134
+ }
135
+
136
+ const context: BulkActionsRenderContext = {
137
+ selectedCount: selectedRowKeys.length,
138
+ selectedRowKeys,
139
+ onUpdate: onUpdateSelected || (async () => { }),
140
+ onDelete: onDeleteSelected || (async () => { }),
141
+ onExport: onExportSelected,
142
+ updateLoading,
143
+ deleteLoading,
144
+ exportLoading,
145
+ t,
146
+ resourceName,
147
+ };
148
+
149
+ // If children is a function, call it with context
150
+ if (typeof children === 'function') {
151
+ return <>{children(context)}</>;
152
+ }
153
+
154
+ // If children is provided as ReactNode, render it directly
155
+ if (children) {
156
+ return <>{children}</>;
157
+ }
158
+
159
+ // Default rendering
160
+ const statusActions = actions.filter((action) => action.action === 'CHANGE_STATUS');
161
+
162
+ const defaultUpdateButton = (action: RowAction, onClick: () => void, loading: boolean) => (
163
+ <Popconfirm
164
+ key={action.desc}
165
+ placement="top"
166
+ onConfirm={onClick}
167
+ title={t('buttons.confirm', 'Are you sure?')}
168
+ okText={t('buttons.sure', 'Yes')}
169
+ cancelText={t('buttons.cancel', 'No')}
170
+ >
171
+ <Button type="default" loading={loading}>
172
+ {t(`resources.${resourceName}.actions.${action.desc}`, action.desc)}
173
+ </Button>
174
+ </Popconfirm>
175
+ );
176
+
177
+ const defaultDeleteButton = (onClick: () => void, loading: boolean) => (
178
+ <Popconfirm
179
+ placement="top"
180
+ onConfirm={onClick}
181
+ title={t('buttons.confirm', 'Are you sure?')}
182
+ okText={t('buttons.sure', 'Yes')}
183
+ cancelText={t('buttons.cancel', 'No')}
184
+ >
185
+ <Button danger loading={loading}>
186
+ {t('buttons.delete', 'Delete')}
187
+ </Button>
188
+ </Popconfirm>
189
+ );
190
+
191
+ const defaultExportButton = (onClick: () => void, loading: boolean) => (
192
+ <ExportButton onClick={onClick} loading={loading} icon={<></>} />
193
+ );
194
+
195
+ const defaultSelectionCount = (count: number) => (
196
+ <span style={{ marginLeft: 8 }}>
197
+ {t('table.selected', 'Selected') + ' ' + count + ' ' + t('table.items', 'items')}
198
+ </span>
199
+ );
200
+
201
+ return (
202
+ <span {...agentAttrs({ type: 'bulk-actions', resource: resourceName })}>
203
+ <Space>
204
+ {statusActions.map((action) =>
205
+ renderUpdateButton
206
+ ? renderUpdateButton(action, () => onUpdateSelected?.(action.values), updateLoading)
207
+ : defaultUpdateButton(action, () => onUpdateSelected?.(action.values), updateLoading)
208
+ )}
209
+
210
+ {/* Export selected */}
211
+ {showExport && onExportSelected && (
212
+ renderExportButton
213
+ ? renderExportButton(onExportSelected, exportLoading)
214
+ : defaultExportButton(onExportSelected, exportLoading)
215
+ )}
216
+
217
+ {/* Delete selected */}
218
+ {showDelete && onDeleteSelected && (
219
+ renderDeleteButton
220
+ ? renderDeleteButton(onDeleteSelected, deleteLoading)
221
+ : defaultDeleteButton(onDeleteSelected, deleteLoading)
222
+ )}
223
+
224
+ {/* Extra actions */}
225
+ {extraActions}
226
+
227
+ {/* Selection count */}
228
+ {renderSelectionCount
229
+ ? renderSelectionCount(selectedRowKeys.length)
230
+ : defaultSelectionCount(selectedRowKeys.length)}
231
+ </Space>
232
+ </span>
233
+ );
234
+ };
235
+
236
+ export default BulkActions;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { Space } from 'antd';
3
+ import { CreateButton, ExportButton, ImportButton } from '@refinedev/antd';
4
+ import { agentAttrs } from './agentPanel/agentAttributes';
5
+
6
+ export interface ListPageHeaderProps {
7
+ /** Show import button */
8
+ showImport?: boolean;
9
+ /** Show export button */
10
+ showExport?: boolean;
11
+ /** Show create button */
12
+ showCreate?: boolean;
13
+ /** Import button props */
14
+ importProps?: any;
15
+ /** Export handler */
16
+ onExport?: () => void;
17
+ /** Export loading state */
18
+ exportLoading?: boolean;
19
+ /** Custom buttons to render before default buttons */
20
+ extraButtons?: React.ReactNode;
21
+ /** Custom buttons to render after default buttons */
22
+ extraButtonsAfter?: React.ReactNode;
23
+ /** Resource name for agent inspector */
24
+ resourceName?: string;
25
+ }
26
+
27
+ /**
28
+ * Default header buttons for list page
29
+ */
30
+ export const ListPageHeader: React.FC<ListPageHeaderProps> = ({
31
+ showImport = true,
32
+ showExport = true,
33
+ showCreate = true,
34
+ importProps,
35
+ onExport,
36
+ exportLoading = false,
37
+ extraButtons,
38
+ extraButtonsAfter,
39
+ resourceName = '',
40
+ }) => {
41
+ return (
42
+ <div {...agentAttrs({ type: 'list-header', resource: resourceName })}>
43
+ <Space>
44
+ {extraButtons}
45
+ {showImport && importProps && <ImportButton {...importProps} />}
46
+ {showExport && onExport && (
47
+ <ExportButton onClick={onExport} loading={exportLoading} />
48
+ )}
49
+ {showCreate && <CreateButton type="primary" />}
50
+ {extraButtonsAfter}
51
+ </Space>
52
+ </div>
53
+ );
54
+ };
55
+
56
+ export default ListPageHeader;
@@ -0,0 +1,292 @@
1
+ import React from 'react';
2
+ import { DownOutlined } from '@ant-design/icons';
3
+ import { Button, Dropdown, Popconfirm, Space } from 'antd';
4
+ import {
5
+ CloneButton,
6
+ DeleteButton,
7
+ EditButton,
8
+ ShowButton,
9
+ } from '@refinedev/antd';
10
+ import { RowAction } from '../hooks/types';
11
+ import { whenIsTrue } from '@gadmin2n/react-common';
12
+
13
+ export interface RowActionsRenderContext<T = any> {
14
+ /** Current record */
15
+ record: T;
16
+ /** Record ID */
17
+ recordId: number | string;
18
+ /** Translation function */
19
+ t: (key: string, defaultValue?: string) => string;
20
+ /** Resource name */
21
+ resourceName: string;
22
+ /** Update handler */
23
+ onUpdate: (values: any) => void;
24
+ /** Is update loading */
25
+ updateLoading: boolean;
26
+ }
27
+
28
+ export interface RowActionsProps<T = any> {
29
+ /** Current record */
30
+ record: T;
31
+ /** Record ID field name */
32
+ idField?: keyof T;
33
+ /** Row actions from config */
34
+ actions?: RowAction[];
35
+ /** Handler for row update */
36
+ onUpdate?: (id: number, values: any) => void;
37
+ /** Is update loading */
38
+ updateLoading?: boolean;
39
+ /** Translation function */
40
+ t?: (key: string, defaultValue?: string) => string;
41
+ /** Resource name for i18n keys */
42
+ resourceName?: string;
43
+ /** Show edit button */
44
+ showEdit?: boolean;
45
+ /** Show detail/show button */
46
+ showDetail?: boolean;
47
+ /** Show clone button */
48
+ showClone?: boolean;
49
+ /** Show delete button */
50
+ showDelete?: boolean;
51
+ /** Show history/log button */
52
+ showHistory?: boolean;
53
+ /** Custom children - if provided, replaces entire default UI */
54
+ children?: React.ReactNode | ((context: RowActionsRenderContext<T>) => React.ReactNode);
55
+
56
+ // Render props for fine-grained customization
57
+ /** Custom render for edit button */
58
+ renderEditButton?: (recordId: number | string) => React.ReactNode;
59
+ /** Custom render for detail/show button */
60
+ renderDetailButton?: (recordId: number | string) => React.ReactNode;
61
+ /** Custom render for clone button */
62
+ renderCloneButton?: (recordId: number | string) => React.ReactNode;
63
+ /** Custom render for delete button */
64
+ renderDeleteButton?: (recordId: number | string) => React.ReactNode;
65
+ /** Custom render for history/log button */
66
+ renderHistoryButton?: (recordId: number | string) => React.ReactNode;
67
+ /** Custom render for status action buttons */
68
+ renderStatusAction?: (
69
+ action: RowAction,
70
+ record: T,
71
+ onConfirm: () => void,
72
+ loading: boolean,
73
+ disabled: boolean
74
+ ) => React.ReactNode;
75
+ /** Custom render for more dropdown trigger */
76
+ renderMoreTrigger?: () => React.ReactNode;
77
+ /** Extra dropdown items to add */
78
+ extraDropdownItems?: Array<{ key: string; label: React.ReactNode }>;
79
+ /** Extra primary actions (rendered before More dropdown) */
80
+ extraPrimaryActions?: React.ReactNode;
81
+ /** Log button component (optional, for backward compatibility) */
82
+ LogButton?: React.ComponentType<any>;
83
+ }
84
+
85
+ /**
86
+ * Row actions component with edit, show, and more dropdown
87
+ *
88
+ * @example
89
+ * // Basic usage
90
+ * <RowActions
91
+ * record={record}
92
+ * actions={tableConfig.rowActions.actions}
93
+ * t={t}
94
+ * resourceName="audit"
95
+ * />
96
+ *
97
+ * @example
98
+ * // With custom render props
99
+ * <RowActions
100
+ * {...props}
101
+ * renderEditButton={(id) => <MyEditButton id={id} />}
102
+ * renderDeleteButton={(id) => <MyDeleteButton id={id} />}
103
+ * />
104
+ *
105
+ * @example
106
+ * // Completely custom UI using children
107
+ * <RowActions record={record}>
108
+ * {({ record, recordId, onUpdate }) => (
109
+ * <MyCustomActionsUI
110
+ * record={record}
111
+ * onEdit={() => navigate(`/edit/${recordId}`)}
112
+ * onUpdate={onUpdate}
113
+ * />
114
+ * )}
115
+ * </RowActions>
116
+ */
117
+ export function RowActions<T extends { id: number | string }>({
118
+ record,
119
+ idField = 'id' as keyof T,
120
+ actions = [],
121
+ onUpdate,
122
+ updateLoading = false,
123
+ t = (key, defaultValue) => defaultValue || key,
124
+ resourceName = '',
125
+ showEdit = true,
126
+ showDetail = true,
127
+ showClone = true,
128
+ showDelete = true,
129
+ showHistory = false,
130
+ children,
131
+ renderEditButton,
132
+ renderDetailButton,
133
+ renderCloneButton,
134
+ renderDeleteButton,
135
+ renderHistoryButton,
136
+ renderStatusAction,
137
+ renderMoreTrigger,
138
+ extraDropdownItems = [],
139
+ extraPrimaryActions,
140
+ LogButton,
141
+ }: RowActionsProps<T>) {
142
+ const recordId = record[idField] as number | string;
143
+
144
+ const context: RowActionsRenderContext<T> = {
145
+ record,
146
+ recordId,
147
+ t,
148
+ resourceName,
149
+ onUpdate: (values) => onUpdate?.(Number(recordId), values),
150
+ updateLoading,
151
+ };
152
+
153
+ // If children is a function, call it with context
154
+ if (typeof children === 'function') {
155
+ return <>{children(context)}</>;
156
+ }
157
+
158
+ // If children is provided as ReactNode, render it directly
159
+ if (children) {
160
+ return <>{children}</>;
161
+ }
162
+
163
+ // Default rendering
164
+ const statusActions = actions.filter((action) => action.action === 'CHANGE_STATUS');
165
+
166
+ // Default button renderers
167
+ const defaultEditButton = (id: number | string) => (
168
+ <EditButton icon={false} type="text" size="small" recordItemId={id} />
169
+ );
170
+
171
+ const defaultDetailButton = (id: number | string) => (
172
+ <ShowButton icon={false} type="text" size="small" recordItemId={id}>
173
+ {t('table.detail', 'Detail')}
174
+ </ShowButton>
175
+ );
176
+
177
+ const defaultCloneButton = (id: number | string) => (
178
+ <CloneButton icon={false} type="text" size="small" recordItemId={id} />
179
+ );
180
+
181
+ const defaultDeleteButton = (id: number | string) => (
182
+ <DeleteButton icon={false} type="text" size="small" recordItemId={id} />
183
+ );
184
+
185
+ const defaultHistoryButton = (id: number | string) =>
186
+ LogButton ? (
187
+ <LogButton hideText={false} icon={false} type="text" size="small" recordItemId={id} />
188
+ ) : null;
189
+
190
+ const defaultStatusAction = (
191
+ action: RowAction,
192
+ _record: T,
193
+ onConfirm: () => void,
194
+ loading: boolean,
195
+ disabled: boolean
196
+ ) => (
197
+ <Popconfirm
198
+ placement="top"
199
+ title={t('buttons.confirm', 'Are you sure?')}
200
+ onConfirm={onConfirm}
201
+ okText={t('buttons.sure', 'Yes')}
202
+ cancelText={t('buttons.cancel', 'No')}
203
+ disabled={disabled}
204
+ >
205
+ <Button loading={loading} size="small" type="text" disabled={disabled}>
206
+ {t(`resources.${resourceName}.actions.${action.desc}`, action.desc)}
207
+ </Button>
208
+ </Popconfirm>
209
+ );
210
+
211
+ const defaultMoreTrigger = () => (
212
+ <Button type="text" size="small">
213
+ {t('table.more', 'More')}
214
+ <DownOutlined />
215
+ </Button>
216
+ );
217
+
218
+ // Build dropdown items
219
+ const dropdownItems = [
220
+ // Status change actions
221
+ ...statusActions.map((action) => {
222
+ const disabled = !whenIsTrue(action.when, record);
223
+ const onConfirm = () => onUpdate?.(Number(recordId), action.values);
224
+
225
+ return {
226
+ key: action.desc,
227
+ label: renderStatusAction
228
+ ? renderStatusAction(action, record, onConfirm, updateLoading, disabled)
229
+ : defaultStatusAction(action, record, onConfirm, updateLoading, disabled),
230
+ };
231
+ }),
232
+ // Clone button
233
+ ...(showClone
234
+ ? [
235
+ {
236
+ key: 'clone',
237
+ label: renderCloneButton
238
+ ? renderCloneButton(recordId)
239
+ : defaultCloneButton(recordId),
240
+ },
241
+ ]
242
+ : []),
243
+ // History/Log button
244
+ ...((showHistory || LogButton)
245
+ ? [
246
+ {
247
+ key: 'history',
248
+ label: renderHistoryButton
249
+ ? renderHistoryButton(recordId)
250
+ : defaultHistoryButton(recordId),
251
+ },
252
+ ]
253
+ : []),
254
+ // Delete button
255
+ ...(showDelete
256
+ ? [
257
+ {
258
+ key: 'delete',
259
+ label: renderDeleteButton
260
+ ? renderDeleteButton(recordId)
261
+ : defaultDeleteButton(recordId),
262
+ },
263
+ ]
264
+ : []),
265
+ // Extra items
266
+ ...extraDropdownItems,
267
+ ].filter((item) => item.label != null);
268
+
269
+ return (
270
+ <Space>
271
+ {/* Edit button */}
272
+ {showEdit &&
273
+ (renderEditButton ? renderEditButton(recordId) : defaultEditButton(recordId))}
274
+
275
+ {/* Show/Detail button */}
276
+ {showDetail &&
277
+ (renderDetailButton ? renderDetailButton(recordId) : defaultDetailButton(recordId))}
278
+
279
+ {/* Extra primary actions */}
280
+ {extraPrimaryActions}
281
+
282
+ {/* More dropdown */}
283
+ {dropdownItems.length > 0 && (
284
+ <Dropdown menu={{ items: dropdownItems as any }} trigger={['click']}>
285
+ {renderMoreTrigger ? renderMoreTrigger() : defaultMoreTrigger()}
286
+ </Dropdown>
287
+ )}
288
+ </Space>
289
+ );
290
+ }
291
+
292
+ export default RowActions;