@gadmin2n/schematics 0.0.68 → 0.0.70

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 (223) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +45 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +24 -23
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +93 -90
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +70 -0
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +3 -3
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +70 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +70 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +70 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +70 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +70 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +70 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +70 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +95 -2
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +4 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +7 -1
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +1 -3
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +2 -2
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +6 -5
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +157 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +290 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +184 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +143 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +100 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +119 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -3
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +109 -143
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +5 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +20 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +81 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +49 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +11 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +334 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +249 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +2 -1
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +2 -2
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +17 -4
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +7737 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +38 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +2 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +49 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -2
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +137 -111
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +46 -44
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +32 -12
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +74 -23
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +9 -9
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +57 -31
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +53 -24
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +148 -72
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +190 -16
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +914 -63
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +17 -8
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -10
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +969 -46
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +66 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +85 -25
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +84 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +16 -20
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +4 -4
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +13 -13
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +15 -16
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +15 -15
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -2
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +896 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +219 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +159 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +192 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +1034 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +8 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +509 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +66 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +552 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +263 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +35 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +207 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +382 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +135 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +53 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +8 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +1 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +31 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +9 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +39349 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +19 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +12 -12
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +22 -26
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +13 -9
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -4
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +22 -37
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +4 -4
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +10 -10
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +1 -1
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +113 -65
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +14 -14
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +1 -1
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +2 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +1 -1
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +21 -21
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +17 -13
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +26 -5
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +221 -51
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +3 -3
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +199 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +335 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +56 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +401 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +129 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +202 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +36 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +8 -0
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +835 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +8 -8
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +1 -1
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +120 -70
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +3 -3
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +11 -11
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +16 -19
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +1 -1
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +99 -73
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -27
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +74 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +95 -51
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +7 -3
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +15 -15
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +10 -10
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +8 -7
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +10 -10
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +10 -10
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +36 -27
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +144 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +4 -4
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +34 -34
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +8 -4
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +1 -1
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +55 -41
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +8 -8
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +9 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +193 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +194 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +81 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +37 -37
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +23 -31
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +34 -35
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +1 -1
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +4 -6
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +41 -34
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +33 -20
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +87 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +192 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +409 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +1372 -0
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +384 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +476 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +135 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +101 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +236 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +200 -0
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +92 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +25 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +875 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +126 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +11 -0
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +115 -0
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +217 -0
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +153 -0
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +211 -0
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +90 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +87 -0
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +204 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +1153 -0
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +2 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +45 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +45 -0
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +108 -0
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +105 -0
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +121 -0
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +4 -0
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +237 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +74 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +29 -20
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +3 -3
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +7 -3
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +58 -23
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +206 -122
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +8 -4
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +1 -1
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +345 -190
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +1 -1
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +341 -340
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +2 -2
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +2 -2
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +41 -24
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +64 -36
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +2 -2
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +78 -40
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +3 -3
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +4 -4
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +19 -9
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +45 -47
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +4 -4
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +1 -1
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +121 -147
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +1 -1
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +2 -2
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +2 -2
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +25 -19
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +5 -5
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +10 -10
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +31 -26
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +76 -71
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +1 -1
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +1 -1
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +3 -3
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +1 -1
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +1 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +42 -25
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +1193 -32
  220. package/package.json +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/seedDataMngtPages.ts +0 -258
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +0 -497
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/skills.ts +0 -464
@@ -1,13 +1,13 @@
1
1
  export enum AuditLogActionEnum {
2
- create = "create",
3
- update = "update",
4
- delete = "delete",
5
- download = "download",
2
+ create = 'create',
3
+ update = 'update',
4
+ delete = 'delete',
5
+ download = 'download',
6
6
  }
7
7
 
8
8
  export const auditLogActionOptions = [
9
- { label: "Create", value: AuditLogActionEnum.create },
10
- { label: "Update", value: AuditLogActionEnum.update },
11
- { label: "Delete", value: AuditLogActionEnum.delete },
12
- { label: "Download", value: AuditLogActionEnum.download },
9
+ { label: 'Create', value: AuditLogActionEnum.create },
10
+ { label: 'Update', value: AuditLogActionEnum.update },
11
+ { label: 'Delete', value: AuditLogActionEnum.delete },
12
+ { label: 'Download', value: AuditLogActionEnum.download },
13
13
  ];
@@ -1 +1 @@
1
- export * from "./audit-log.enum";
1
+ export * from './audit-log.enum';
@@ -6,45 +6,83 @@ import {
6
6
  whenIsTrue,
7
7
  convertPrismaDecimal,
8
8
  isPrismaDecimal,
9
- } from "@gadmin2n/react-common";
10
- import { getValueFromEvent } from "@refinedev/antd";
11
- import { UploadFile } from "antd/lib/upload/interface";
9
+ } from '@gadmin2n/react-common';
10
+ import { getValueFromEvent } from '@refinedev/antd';
11
+ import { useList } from '@refinedev/core';
12
+ import { useMemo } from 'react';
13
+ import { UploadFile } from 'antd/lib/upload/interface';
12
14
  import {
13
15
  SelectProps,
14
16
  Form,
15
17
  Upload,
16
18
  Select,
17
19
  Input,
20
+ AutoComplete,
18
21
  FormInstance,
19
22
  InputNumber,
20
23
  DatePicker,
21
24
  Switch,
22
25
  Checkbox,
23
26
  Radio,
24
- } from "antd";
25
- import VanillaJSONEditor from "../components/VanillaJSONEditor";
26
- import { agentAttrs } from "../components/agentPanel/agentAttributes";
27
- import MDEditor from "@uiw/react-md-editor";
28
- import { DefaultOptionType } from "antd/es/select";
29
- import { UploadChangeParam } from "antd/es/upload";
30
- import { ModelConfig } from "generated/types/config.types";
31
- import dayjs from "dayjs";
27
+ } from 'antd';
28
+ import VanillaJSONEditor from '../components/VanillaJSONEditor';
32
29
 
33
- function getDependanceFields(config: ModelConfig["form"]["reaction"] = {}) {
30
+ function DynamicAutoComplete({
31
+ resourceName,
32
+ fieldName,
33
+ disabled,
34
+ }: {
35
+ resourceName: string;
36
+ fieldName: string;
37
+ disabled?: boolean;
38
+ }) {
39
+ const { data } = useList({
40
+ resource: resourceName,
41
+ pagination: { pageSize: 1000 },
42
+ meta: { select: { [fieldName]: true } },
43
+ });
44
+
45
+ const options = useMemo(() => {
46
+ const values = (data?.data ?? [])
47
+ .map((item: any) => item[fieldName])
48
+ .filter((v: any) => v !== undefined && v !== null && v !== '');
49
+ return Array.from(new Set(values)).map((v) => ({ value: v as string }));
50
+ }, [data, fieldName]);
51
+
52
+ return (
53
+ <AutoComplete
54
+ options={options}
55
+ filterOption={(input, option) =>
56
+ (option?.value ?? '').toLowerCase().includes(input.toLowerCase())
57
+ }
58
+ allowClear
59
+ disabled={disabled}
60
+ />
61
+ );
62
+ }
63
+
64
+ import { agentAttrs } from '../components/agentPanel/agentAttributes';
65
+ import MDEditor from '@uiw/react-md-editor';
66
+ import { DefaultOptionType } from 'antd/es/select';
67
+ import { UploadChangeParam } from 'antd/es/upload';
68
+ import { ModelConfig } from 'generated/types/config.types';
69
+ import dayjs from 'dayjs';
70
+
71
+ function getDependanceFields(config: ModelConfig['form']['reaction'] = {}) {
34
72
  const dependencies: string[] = [];
35
73
  Object.values(config).forEach(({ toggle }) =>
36
- toggle.forEach(({ when }) => dependencies.push(...Object.keys(when)))
74
+ toggle.forEach(({ when }) => dependencies.push(...Object.keys(when))),
37
75
  );
38
76
  return dependencies;
39
77
  }
40
78
  export function onFormValuesChange(
41
79
  form: any,
42
- config: ModelConfig["form"]["reaction"] = {}
80
+ config: ModelConfig['form']['reaction'] = {},
43
81
  ) {
44
82
  const dependencies = getDependanceFields(config);
45
83
  return (
46
84
  changedValues: Record<string, any>,
47
- allValues: Record<string, any>
85
+ allValues: Record<string, any>,
48
86
  ) => {
49
87
  if (Object.keys(changedValues).some((key) => dependencies.includes(key))) {
50
88
  Object.entries(config).forEach(([k, v]) => {
@@ -52,7 +90,7 @@ export function onFormValuesChange(
52
90
  v.toggle.forEach(({ props, when }) => {
53
91
  if (whenIsTrue(when, allValues)) {
54
92
  matched = true;
55
- if (props?.hasOwnProperty?.("value")) {
93
+ if (props?.hasOwnProperty?.('value')) {
56
94
  form.setFieldValue(k, props.value);
57
95
  }
58
96
  if (props.hidden) {
@@ -64,7 +102,7 @@ export function onFormValuesChange(
64
102
  }
65
103
  });
66
104
  if (!matched && v.defaultProps) {
67
- if (v.defaultProps?.hasOwnProperty?.("value")) {
105
+ if (v.defaultProps?.hasOwnProperty?.('value')) {
68
106
  form.setFieldValue(k, v.defaultProps.value);
69
107
  }
70
108
  if (v.defaultProps.hidden) {
@@ -82,7 +120,7 @@ export function onFormValuesChange(
82
120
  function getConfigProperty(
83
121
  fieldName: string,
84
122
  form: FormInstance<any>,
85
- config: ModelConfig["form"]["reaction"] = {}
123
+ config: ModelConfig['form']['reaction'] = {},
86
124
  ) {
87
125
  if (!config[fieldName]) {
88
126
  return {};
@@ -90,7 +128,7 @@ function getConfigProperty(
90
128
 
91
129
  const values = form.getFieldsValue();
92
130
  const toggle = config[fieldName].toggle.find(({ when }) =>
93
- whenIsTrue(when, values)
131
+ whenIsTrue(when, values),
94
132
  );
95
133
  if (toggle) {
96
134
  return toggle.props;
@@ -103,7 +141,7 @@ function getElement(
103
141
  resourceName: string,
104
142
  t: I18N_T,
105
143
  form: FormInstance<any>,
106
- config: ModelConfig["form"]["reaction"],
144
+ config: ModelConfig['form']['reaction'],
107
145
  modelsEnum: Record<string, Record<string, string>>,
108
146
  model: ModelType,
109
147
  apiUrl: string,
@@ -117,7 +155,7 @@ function getElement(
117
155
  DefaultOptionType
118
156
  >
119
157
  >,
120
- onUploadFileStateChange: (info: UploadChangeParam<UploadFile<any>>) => void
158
+ onUploadFileStateChange: (info: UploadChangeParam<UploadFile<any>>) => void,
121
159
  ) {
122
160
  const { type: fieldType, args } = field.uiType.formItem;
123
161
  const fieldName = field.name;
@@ -131,20 +169,21 @@ function getElement(
131
169
  const itemProps = {
132
170
  label: t(
133
171
  `resources.${resourceName}.fields.${fieldName}`,
134
- fieldName.endsWith(".connect")
172
+ fieldName.endsWith('.connect')
135
173
  ? t(
136
- `resources.${model[fieldName.split(".")[0]]?.type?.toLowerCase() || ""
137
- }.name`,
138
- model[fieldName.split(".")[0]]?.type
139
- )
140
- : fieldName
174
+ `resources.${
175
+ model[fieldName.split('.')[0]]?.type?.toLowerCase() || ''
176
+ }.name`,
177
+ model[fieldName.split('.')[0]]?.type,
178
+ )
179
+ : fieldName,
141
180
  ),
142
181
 
143
182
  ...field,
144
183
 
145
184
  key: fieldName,
146
- name: fieldName.endsWith(".connect")
147
- ? [fieldName.split(".")[0], field.isList ? "ids" : "id"]
185
+ name: fieldName.endsWith('.connect')
186
+ ? [fieldName.split('.')[0], field.isList ? 'ids' : 'id']
148
187
  : fieldName,
149
188
  rules: [
150
189
  {
@@ -158,9 +197,9 @@ function getElement(
158
197
  };
159
198
  if (field.component) {
160
199
  element = <Form.Item {...itemProps}>{field.component}</Form.Item>;
161
- } else if ("File" === fieldType || "Image" === fieldType) {
200
+ } else if ('File' === fieldType || 'Image' === fieldType) {
162
201
  element = (
163
- <Form.Item {...omit(itemProps, ["name"])}>
202
+ <Form.Item {...omit(itemProps, ['name'])}>
164
203
  <Form.Item
165
204
  name={itemProps.name}
166
205
  valuePropName="fileList"
@@ -171,48 +210,50 @@ function getElement(
171
210
  disabled={readonly}
172
211
  name="file"
173
212
  action={apiUrl + `/${resourceName}/upload`}
174
- listType={fieldType === "Image" ? "picture" : "text"}
213
+ listType={fieldType === 'Image' ? 'picture' : 'text'}
175
214
  maxCount={args.maxCount || 1}
176
215
  multiple={(args.maxCount || 1) > 1}
177
- accept={args.accept || "*"}
216
+ accept={args.accept || '*'}
178
217
  onChange={onUploadFileStateChange}
179
218
  >
180
219
  <p className="ant-upload-text">
181
- {t("form.uploadPlaceholder", "Drag & drop a file in this area")}
220
+ {t('form.uploadPlaceholder', 'Drag & drop a file in this area')}
182
221
  </p>
183
222
  </Upload.Dragger>
184
223
  </Form.Item>
185
224
  </Form.Item>
186
225
  );
187
- } else if ("Email" === fieldType) {
226
+ } else if ('Email' === fieldType) {
188
227
  element = (
189
- <Form.Item {...itemProps} rules={[{ type: "email" }, ...itemProps.rules]}>
228
+ <Form.Item {...itemProps} rules={[{ type: 'email' }, ...itemProps.rules]}>
190
229
  <Input disabled={readonly} />
191
230
  </Form.Item>
192
231
  );
193
- } else if ("Url" === fieldType) {
232
+ } else if ('Url' === fieldType) {
194
233
  element = (
195
- <Form.Item {...itemProps} rules={[{ type: "url" }, ...itemProps.rules]}>
234
+ <Form.Item {...itemProps} rules={[{ type: 'url' }, ...itemProps.rules]}>
196
235
  <Input disabled={readonly} />
197
236
  </Form.Item>
198
237
  );
199
- } else if (fieldName.endsWith(".connect")) {
238
+ } else if (fieldName.endsWith('.connect')) {
200
239
  element = (
201
240
  <Form.Item {...itemProps}>
202
241
  <Select
203
- {...(relationSelectProps as any)[fieldName.split(".")[0]]}
204
- mode={field.isList ? "multiple" : undefined}
242
+ {...(relationSelectProps as any)[fieldName.split('.')[0]]}
243
+ mode={field.isList ? 'multiple' : undefined}
205
244
  disabled={readonly}
206
245
  />
207
246
  </Form.Item>
208
247
  );
209
- } else if (field.kind === "enum") {
248
+ } else if (field.kind === 'enum') {
210
249
  element = (
211
250
  <Form.Item {...itemProps}>
212
251
  <Select
213
252
  showSearch
214
253
  options={Object.entries((modelsEnum as any)[field.type])
215
- .filter(([k, v]) => !showOptions || showOptions.includes(v as string))
254
+ .filter(
255
+ ([k, v]) => !showOptions || showOptions.includes(v as string),
256
+ )
216
257
  .map(([k, v]) => ({
217
258
  value: v,
218
259
  label: t(`resources.${resourceName}.enums.${fieldName}.${k}`, k),
@@ -221,7 +262,7 @@ function getElement(
221
262
  />
222
263
  </Form.Item>
223
264
  );
224
- } else if (fieldType === "Select") {
265
+ } else if (fieldType === 'Select') {
225
266
  element = (
226
267
  <Form.Item {...itemProps}>
227
268
  <Select
@@ -231,14 +272,24 @@ function getElement(
231
272
  value,
232
273
  label: t(
233
274
  `resources.${resourceName}.enums.${fieldName}.${value}`,
234
- value
275
+ value,
235
276
  ),
236
277
  }))}
237
278
  disabled={readonly}
238
279
  />
239
280
  </Form.Item>
240
281
  );
241
- } else if (fieldType === "CheckBox") {
282
+ } else if (fieldType === 'AutoComplete') {
283
+ element = (
284
+ <Form.Item {...itemProps}>
285
+ <DynamicAutoComplete
286
+ resourceName={resourceName}
287
+ fieldName={fieldName}
288
+ disabled={readonly}
289
+ />
290
+ </Form.Item>
291
+ );
292
+ } else if (fieldType === 'CheckBox') {
242
293
  element = (
243
294
  <Form.Item {...itemProps}>
244
295
  <Checkbox.Group
@@ -246,14 +297,14 @@ function getElement(
246
297
  value,
247
298
  label: t(
248
299
  `resources.${resourceName}.enums.${fieldName}.${value}`,
249
- value
300
+ value,
250
301
  ),
251
302
  }))}
252
303
  disabled={readonly}
253
304
  />
254
305
  </Form.Item>
255
306
  );
256
- } else if (fieldType === "Radio") {
307
+ } else if (fieldType === 'Radio') {
257
308
  element = (
258
309
  <Form.Item {...itemProps}>
259
310
  <Radio.Group
@@ -261,73 +312,72 @@ function getElement(
261
312
  value,
262
313
  label: t(
263
314
  `resources.${resourceName}.enums.${fieldName}.${value}`,
264
- value
315
+ value,
265
316
  ),
266
317
  }))}
267
318
  disabled={readonly}
268
319
  />
269
320
  </Form.Item>
270
321
  );
271
- } else if (fieldType === "Markdown") {
322
+ } else if (fieldType === 'Markdown') {
272
323
  element = (
273
324
  <Form.Item {...itemProps}>
274
325
  <MDEditor data-color-mode="light" />
275
326
  </Form.Item>
276
327
  );
277
- } else if ((fieldType as any) === "JSON") {
328
+ } else if ((fieldType as any) === 'JSON') {
278
329
  element = (
279
330
  <Form.Item {...itemProps}>
280
- <VanillaJSONEditor
281
- readOnly={readonly}
282
- validator={field.ajvValidator}
283
- />
331
+ <VanillaJSONEditor readOnly={readonly} validator={field.ajvValidator} />
284
332
  </Form.Item>
285
333
  );
286
- } else if (fieldType === "Int" || fieldType === "BigInt") {
334
+ } else if (fieldType === 'Int' || fieldType === 'BigInt') {
287
335
  element = (
288
336
  <Form.Item
289
337
  {...itemProps}
290
- rules={[{ type: "integer" }, ...itemProps.rules]}
338
+ rules={[{ type: 'integer' }, ...itemProps.rules]}
291
339
  >
292
340
  <InputNumber disabled={readonly} />
293
341
  </Form.Item>
294
342
  );
295
- } else if (fieldType === "Float" || fieldType === "Decimal") {
343
+ } else if (fieldType === 'Float' || fieldType === 'Decimal') {
296
344
  element = (
297
345
  <Form.Item
298
346
  {...itemProps}
299
- rules={[{ type: "number" }, ...itemProps.rules]}
347
+ rules={[{ type: 'number' }, ...itemProps.rules]}
300
348
  getValueProps={(value) => ({
301
- value: isPrismaDecimal(value) ? Number(convertPrismaDecimal(value)) : value,
349
+ value: isPrismaDecimal(value)
350
+ ? Number(convertPrismaDecimal(value))
351
+ : value,
302
352
  })}
303
353
  >
304
354
  <InputNumber disabled={readonly} />
305
355
  </Form.Item>
306
356
  );
307
- } else if (fieldType === "Boolean") {
357
+ } else if (fieldType === 'Boolean') {
308
358
  element = (
309
359
  <Form.Item {...itemProps} valuePropName="checked">
310
360
  <Switch disabled={readonly} />
311
361
  </Form.Item>
312
362
  );
313
- } else if (fieldType === "DateTime") {
363
+ } else if (fieldType === 'DateTime') {
314
364
  element = (
315
365
  <Form.Item
316
366
  {...itemProps}
317
367
  getValueProps={(value) => ({
318
- value: value ? dayjs(value) : "",
368
+ value: value ? dayjs(value) : '',
319
369
  })}
320
370
  rules={[
321
371
  {
322
372
  required: field.isRequired || required,
323
373
  },
324
- { type: "date" },
374
+ { type: 'date' },
325
375
  ]}
326
376
  >
327
377
  <DatePicker showTime disabled={readonly} />
328
378
  </Form.Item>
329
379
  );
330
- } else if (fieldType === "Text") {
380
+ } else if (fieldType === 'Text') {
331
381
  element = (
332
382
  <Form.Item {...itemProps}>
333
383
  <Input.TextArea rows={args.rows || 5} disabled={readonly} />
@@ -349,7 +399,7 @@ export function getFormItem(
349
399
  resourceName: string,
350
400
  t: I18N_T,
351
401
  form: FormInstance<any>,
352
- config: ModelConfig["form"]["reaction"],
402
+ config: ModelConfig['form']['reaction'],
353
403
  modelsEnum: Record<string, Record<string, string>>,
354
404
  model: ModelType,
355
405
  apiUrl: string,
@@ -363,7 +413,7 @@ export function getFormItem(
363
413
  DefaultOptionType
364
414
  >
365
415
  >,
366
- onUploadFileStateChange: (info: UploadChangeParam<UploadFile<any>>) => void
416
+ onUploadFileStateChange: (info: UploadChangeParam<UploadFile<any>>) => void,
367
417
  ) {
368
418
  const fieldAgentAttrs = agentAttrs({
369
419
  type: 'form-field',
@@ -377,7 +427,7 @@ export function getFormItem(
377
427
  config[field.name].toggle.reduce((acc: {}, { when }) => {
378
428
  Object.assign(acc, when);
379
429
  return acc;
380
- }, {})
430
+ }, {}),
381
431
  );
382
432
 
383
433
  return (
@@ -394,7 +444,7 @@ export function getFormItem(
394
444
  model,
395
445
  apiUrl,
396
446
  relationSelectProps,
397
- onUploadFileStateChange
447
+ onUploadFileStateChange,
398
448
  );
399
449
  }}
400
450
  </Form.Item>
@@ -413,7 +463,7 @@ export function getFormItem(
413
463
  model,
414
464
  apiUrl,
415
465
  relationSelectProps,
416
- onUploadFileStateChange
466
+ onUploadFileStateChange,
417
467
  )}
418
468
  </div>
419
469
  );
@@ -1,8 +1,8 @@
1
1
  export const getNameInitials = (name: string, count = 2) => {
2
2
  const initials = name
3
- .split(" ")
3
+ .split(' ')
4
4
  .map((n) => n[0])
5
- .join("");
6
- const filtered = initials.replace(/[^a-zA-Z]/g, "");
5
+ .join('');
6
+ const filtered = initials.replace(/[^a-zA-Z]/g, '');
7
7
  return filtered.slice(0, count).toUpperCase();
8
8
  };
@@ -3,17 +3,17 @@
3
3
  */
4
4
  export const getRandomColorFromString = (text: string) => {
5
5
  const colors = [
6
- "#ff9c6e",
7
- "#ff7875",
8
- "#ffc069",
9
- "#ffd666",
10
- "#fadb14",
11
- "#95de64",
12
- "#5cdbd3",
13
- "#69c0ff",
14
- "#85a5ff",
15
- "#b37feb",
16
- "#ff85c0",
6
+ '#ff9c6e',
7
+ '#ff7875',
8
+ '#ffc069',
9
+ '#ffd666',
10
+ '#fadb14',
11
+ '#95de64',
12
+ '#5cdbd3',
13
+ '#69c0ff',
14
+ '#85a5ff',
15
+ '#b37feb',
16
+ '#ff85c0',
17
17
  ];
18
18
 
19
19
  let hash = 0;
@@ -1,13 +1,13 @@
1
- import axios from "axios";
1
+ import axios from 'axios';
2
2
  import {
3
3
  GadminCrud as gadminDataProvider,
4
4
  applyErrorInterceptor,
5
5
  customRequest as baseCustomRequest,
6
- } from "@gadmin2n/react-common";
7
- import { login, requestHeaders } from "./login";
8
- import { getApiUrl } from "config/http";
6
+ } from '@gadmin2n/react-common';
7
+ import { login, requestHeaders } from './login';
8
+ import { getApiUrl } from 'config/http';
9
9
  // Re-export Prisma helpers from react-common for backward compatibility
10
- export { convertPrismaDecimal, isPrismaDecimal } from "@gadmin2n/react-common";
10
+ export { convertPrismaDecimal, isPrismaDecimal } from '@gadmin2n/react-common';
11
11
 
12
12
  const apiUrl = getApiUrl();
13
13
 
@@ -21,7 +21,7 @@ axiosInstance.interceptors.request.use(
21
21
  }
22
22
  return config;
23
23
  },
24
- (error) => Promise.reject(error)
24
+ (error) => Promise.reject(error),
25
25
  );
26
26
 
27
27
  // 处理 401 跳转登录、403 跳权限页(app 层特有逻辑,须在 applyErrorInterceptor 之前注册)
@@ -29,27 +29,25 @@ axiosInstance.interceptors.response.use(
29
29
  (response) => response,
30
30
  (error) => {
31
31
  if (error?.response?.status === 401) {
32
- console.log("login expired");
32
+ console.log('login expired');
33
33
  login();
34
34
  // 返回pending状态的promise,以免后续代码出错
35
35
  return new Promise(() => {});
36
36
  }
37
37
  if (error?.response?.status === 403) {
38
38
  // 已经在 /403 页面则不再跳转,防止死循环
39
- if (!window.location.pathname.endsWith("/403")) {
40
- window.location.href = "/403";
39
+ if (!window.location.pathname.endsWith('/403')) {
40
+ window.location.href = '/403';
41
41
  }
42
42
  return new Promise(() => {});
43
43
  }
44
44
  return Promise.reject(error);
45
- }
45
+ },
46
46
  );
47
47
 
48
48
  // 统一错误格式化(复用公共库逻辑,消除重复代码)
49
49
  applyErrorInterceptor(axiosInstance);
50
50
 
51
-
52
-
53
51
  export const gadminCrudProvider = gadminDataProvider(apiUrl, axiosInstance);
54
52
 
55
53
  /**
@@ -57,19 +55,20 @@ export const gadminCrudProvider = gadminDataProvider(apiUrl, axiosInstance);
57
55
  */
58
56
  export async function findMany<T>(
59
57
  resource: string,
60
- params: Record<string, any>
58
+ params: Record<string, any>,
61
59
  ): Promise<T[]> {
62
60
  const url = `${apiUrl}/${resource}/findMany`;
63
61
  const res = await fetch(url, {
64
- method: "POST",
62
+ method: 'POST',
65
63
  headers: {
66
- "Content-Type": "application/json",
64
+ 'Content-Type': 'application/json',
67
65
  ...requestHeaders(),
68
66
  },
69
67
  body: JSON.stringify(params),
70
68
  });
69
+ if (!res.ok) throw new Error(`findMany ${resource} failed: ${res.status}`);
71
70
  const data = await res.json();
72
- return data.data as T[];
71
+ return (data.data ?? []) as T[];
73
72
  }
74
73
 
75
74
  /**
@@ -79,9 +78,7 @@ export async function findMany<T>(
79
78
  export async function customRequest<T>(
80
79
  urlPath: string,
81
80
  method: string,
82
- params?: Record<string, any>
81
+ params?: Record<string, any>,
83
82
  ) {
84
83
  return baseCustomRequest<T>(axiosInstance, apiUrl, urlPath, method, params);
85
84
  }
86
-
87
-
@@ -5,4 +5,4 @@ export * from './login';
5
5
  export * from './utils';
6
6
  export * from './http';
7
7
  export * from './get-name-initials';
8
- export * from './get-random-color';
8
+ export * from './get-random-color';