@gadmin2n/schematics 0.0.69 → 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 +1 -1
  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,16 +1,17 @@
1
- import React, { useCallback, useMemo, useState } from "react";
2
- import { useTable } from "@refinedev/antd";
3
- import { useGetLocale, useGetIdentity } from "@refinedev/core";
4
- import { Table, Button, Space, Tooltip, message } from "antd";
5
-
6
- import { EditModal } from "./Components/EditModal";
7
- import { CreateModal } from "./Components/CreateModal";
8
- import type { RolePageTreeNode } from "./types";
9
- import { useRolePage } from "./hooks/useRolePage";
10
- import { EditOutlined, EyeOutlined, CodeOutlined } from "@ant-design/icons";
11
- import { RoleDetailDrawer } from "./Components/RoleDetailDrawer";
12
- import { SqlModal, generateRoleSql } from "../../components/SqlModal";
13
- import { customRequest } from "@/helpers/http";
1
+ import React, { useCallback, useMemo, useState } from 'react';
2
+ import { useTable } from '@refinedev/antd';
3
+ import { useGetLocale, useGetIdentity } from '@refinedev/core';
4
+ import { Table, Button, Space, Tooltip, message } from 'antd';
5
+
6
+ import { EditModal } from './Components/EditModal';
7
+ import { CreateModal } from './Components/CreateModal';
8
+ import type { RolePageTreeNode } from './types';
9
+ import { useRolePage } from './hooks/useRolePage';
10
+ import { EditOutlined, EyeOutlined, CodeOutlined } from '@ant-design/icons';
11
+ import { RoleDetailDrawer } from './Components/RoleDetailDrawer';
12
+ import { SqlModal, generateRoleSql } from '../../components/SqlModal';
13
+ import { customRequest } from '@/helpers/http';
14
+ import { buildPageTree } from '@/helpers/page-tree';
14
15
 
15
16
  type RolePageInfo = {
16
17
  id: number;
@@ -29,43 +30,50 @@ type RolePermissionSummary = {
29
30
  const PAGE_NAME_DISPLAY_LIMIT = 40;
30
31
 
31
32
  const normalizeToNumber = (value: unknown): number | null => {
32
- if (typeof value === "number" && !Number.isNaN(value)) {
33
+ if (typeof value === 'number' && !Number.isNaN(value)) {
33
34
  return value;
34
35
  }
35
- if (typeof value === "string" && value.trim().length > 0) {
36
+ if (typeof value === 'string' && value.trim().length > 0) {
36
37
  const parsedValue = Number(value);
37
38
  return Number.isNaN(parsedValue) ? null : parsedValue;
38
39
  }
39
40
  return null;
40
41
  };
41
42
 
42
- const extractActionsFromRelation = (relation: any, pageRecord: any): string[] => {
43
+ const extractActionsFromRelation = (
44
+ relation: any,
45
+ pageRecord: any,
46
+ ): string[] => {
43
47
  const aggregatedActions = new Set<string>();
44
48
  const relationActions = relation?.actions ?? relation?.actionList;
45
49
 
46
50
  if (Array.isArray(relationActions)) {
47
51
  relationActions.forEach((action: any) => {
48
- if (typeof action === "string" && action) {
52
+ if (typeof action === 'string' && action) {
49
53
  aggregatedActions.add(action);
50
- } else if (typeof action === "object" && action?.name) {
54
+ } else if (typeof action === 'object' && action?.name) {
51
55
  aggregatedActions.add(action.name);
52
56
  }
53
57
  });
54
- } else if (typeof relationActions === "string") {
58
+ } else if (typeof relationActions === 'string') {
55
59
  relationActions
56
- .split(",")
60
+ .split(',')
57
61
  .map((action: string) => action.trim())
58
62
  .filter(Boolean)
59
- .forEach(action => aggregatedActions.add(action));
63
+ .forEach((action) => aggregatedActions.add(action));
60
64
  }
61
65
 
62
66
  const pageResources =
63
- relation?.pageResources ?? pageRecord?.pageResources ?? pageRecord?.resources ?? [];
67
+ relation?.pageResources ??
68
+ pageRecord?.pageResources ??
69
+ pageRecord?.resources ??
70
+ [];
64
71
 
65
72
  if (Array.isArray(pageResources)) {
66
73
  pageResources.forEach((resource: any) => {
67
- const action = resource?.action ?? resource?.code ?? resource?.name ?? resource;
68
- if (typeof action === "string" && action) {
74
+ const action =
75
+ resource?.action ?? resource?.code ?? resource?.name ?? resource;
76
+ if (typeof action === 'string' && action) {
69
77
  aggregatedActions.add(action);
70
78
  }
71
79
  });
@@ -80,21 +88,29 @@ export const RoleManagementListPage: React.FC = () => {
80
88
  const { data: identity } = useGetIdentity<any>();
81
89
 
82
90
  const { tableProps } = useTable({
83
- resource: "role",
91
+ resource: 'role',
84
92
  pagination: {
85
93
  pageSize: 20,
86
94
  },
87
95
  });
88
96
 
89
- const { rolePagesData, refetchRolePages, rolePagesQuery, pageData, refetchPages, pageQuery } =
90
- useRolePage();
97
+ const {
98
+ rolePagesData,
99
+ refetchRolePages,
100
+ rolePagesQuery,
101
+ pageData,
102
+ refetchPages,
103
+ pageQuery,
104
+ } = useRolePage();
91
105
 
92
106
  const pageLookup = useMemo<Record<number, any>>(() => {
93
107
  const pages: any[] = Array.isArray(pageData?.data) ? pageData.data : [];
94
108
  const lookup: Record<number, any> = {};
95
109
 
96
110
  pages.forEach((page: any) => {
97
- const pageId = normalizeToNumber(page?.id ?? page?.pageId ?? page?.page_id);
111
+ const pageId = normalizeToNumber(
112
+ page?.id ?? page?.pageId ?? page?.page_id,
113
+ );
98
114
  if (pageId !== null) {
99
115
  lookup[pageId] = page;
100
116
  }
@@ -105,94 +121,31 @@ export const RoleManagementListPage: React.FC = () => {
105
121
 
106
122
  const pageTreeData = useMemo<RolePageTreeNode[]>(() => {
107
123
  const pages: any[] = Array.isArray(pageData?.data) ? pageData.data : [];
108
- const isZh = currentLocale === "zh_CN" || currentLocale === "zh";
109
-
110
- const getPageTitle = (page: any, pageId: number): string => {
111
- if (isZh) {
112
- return page?.zhName || page?.name || page?.code || `Page ${pageId}`;
113
- }
114
- return page?.enName || page?.name || page?.code || `Page ${pageId}`;
115
- };
116
-
117
- const nodeMap = new Map<number, { node: RolePageTreeNode; parentId: number | null; sortOrder: number | null }>();
118
-
119
- pages.forEach((page: any) => {
120
- const pageId = normalizeToNumber(page?.id ?? page?.pageId ?? page?.page_id);
121
- if (pageId === null) {
122
- return;
123
- }
124
-
125
- const parentId =
126
- normalizeToNumber(page?.parentId ?? page?.parent_id ?? page?.parent?.id) ?? null;
127
- const title = getPageTitle(page, pageId);
128
- const sortOrder = normalizeToNumber(page?.sortOrder ?? page?.sort_order);
129
-
130
- nodeMap.set(pageId, {
131
- node: {
132
- title,
133
- value: String(pageId),
134
- key: String(pageId),
135
- children: [],
136
- },
137
- parentId,
138
- sortOrder,
139
- });
140
- });
141
-
142
- const roots: RolePageTreeNode[] = [];
143
-
144
- nodeMap.forEach(({ node, parentId }) => {
145
- if (parentId !== null && nodeMap.has(parentId)) {
146
- nodeMap.get(parentId)?.node.children?.push(node);
147
- } else {
148
- roots.push(node);
149
- }
150
- });
151
-
152
- // Build a map from node key to sortOrder for sorting
153
- const sortOrderMap = new Map<string, number | null>();
154
- nodeMap.forEach(({ sortOrder }, pageId) => {
155
- sortOrderMap.set(String(pageId), sortOrder);
156
- });
157
-
158
- const sortNodes = (nodes: RolePageTreeNode[]) => {
159
- nodes.sort((a, b) => {
160
- const orderA = sortOrderMap.get(a.key) ?? Infinity;
161
- const orderB = sortOrderMap.get(b.key) ?? Infinity;
162
- return (orderA as number) - (orderB as number);
163
- });
164
- nodes.forEach(child => {
165
- if (child.children && child.children.length) {
166
- sortNodes(child.children);
167
- }
168
- });
169
- };
170
-
171
- const pruneEmptyChildren = (nodes: RolePageTreeNode[]): RolePageTreeNode[] =>
172
- nodes.map(node => {
173
- if (node.children && node.children.length) {
174
- return {
175
- ...node,
176
- children: pruneEmptyChildren(node.children),
177
- };
178
- }
179
- const { children, ...rest } = node;
180
- return rest as RolePageTreeNode;
181
- });
182
-
183
- sortNodes(roots);
184
- return pruneEmptyChildren(roots);
124
+ const isZh = currentLocale === 'zh_CN' || currentLocale === 'zh';
125
+ return buildPageTree(pages, (page) =>
126
+ isZh
127
+ ? page?.zhName || page?.name || page?.code || `Page ${page.id}`
128
+ : page?.enName || page?.name || page?.code || `Page ${page.id}`,
129
+ ) as RolePageTreeNode[];
185
130
  }, [pageData, currentLocale]);
186
131
 
187
- const rolePermissionSummary = useMemo<Record<number, RolePermissionSummary>>(() => {
188
- const relations: any[] = Array.isArray(rolePagesData?.data) ? rolePagesData.data : [];
189
- const isZh = currentLocale === "zh_CN" || currentLocale === "zh";
132
+ const rolePermissionSummary = useMemo<
133
+ Record<number, RolePermissionSummary>
134
+ >(() => {
135
+ const relations: any[] = Array.isArray(rolePagesData?.data)
136
+ ? rolePagesData.data
137
+ : [];
138
+ const isZh = currentLocale === 'zh_CN' || currentLocale === 'zh';
190
139
 
191
140
  const getLocalizedName = (pageRecord: any, fallback: string): string => {
192
141
  if (isZh) {
193
- return pageRecord?.zhName || pageRecord?.name || pageRecord?.code || fallback;
142
+ return (
143
+ pageRecord?.zhName || pageRecord?.name || pageRecord?.code || fallback
144
+ );
194
145
  }
195
- return pageRecord?.enName || pageRecord?.name || pageRecord?.code || fallback;
146
+ return (
147
+ pageRecord?.enName || pageRecord?.name || pageRecord?.code || fallback
148
+ );
196
149
  };
197
150
 
198
151
  const buildMenuPath = (pageId: number): string => {
@@ -203,10 +156,13 @@ export const RoleManagementListPage: React.FC = () => {
203
156
  visited.add(currentId);
204
157
  const record: any = pageLookup[currentId];
205
158
  if (!record) break;
206
- parts.unshift(getLocalizedName(record, record?.name || `Page ${currentId}`));
207
- currentId = normalizeToNumber(record?.parentId ?? record?.parent_id) ?? null;
159
+ parts.unshift(
160
+ getLocalizedName(record, record?.name || `Page ${currentId}`),
161
+ );
162
+ currentId =
163
+ normalizeToNumber(record?.parentId ?? record?.parent_id) ?? null;
208
164
  }
209
- return parts.join(" / ");
165
+ return parts.join(' / ');
210
166
  };
211
167
 
212
168
  const summaryMap: Record<number, RolePermissionSummary> = {};
@@ -242,16 +198,16 @@ export const RoleManagementListPage: React.FC = () => {
242
198
  }
243
199
 
244
200
  const localizedName = getLocalizedName(pageRecord, pageName);
245
- if (!summary.pageInfos.some(p => p.id === pageId)) {
201
+ if (!summary.pageInfos.some((p) => p.id === pageId)) {
246
202
  summary.pageInfos.push({
247
203
  id: pageId,
248
- code: pageRecord?.code ?? "",
204
+ code: pageRecord?.code ?? '',
249
205
  name: localizedName,
250
206
  menuPath: buildMenuPath(pageId),
251
207
  });
252
208
  }
253
209
 
254
- extractActionsFromRelation(relation, pageRecord).forEach(action => {
210
+ extractActionsFromRelation(relation, pageRecord).forEach((action) => {
255
211
  if (action && !summary.actions.includes(action)) {
256
212
  summary.actions.push(action);
257
213
  }
@@ -268,13 +224,14 @@ export const RoleManagementListPage: React.FC = () => {
268
224
  const record: any = pageLookup[currentId];
269
225
  if (!record) break;
270
226
  chain.unshift(record?.sortOrder ?? record?.sort_order ?? Infinity);
271
- currentId = normalizeToNumber(record?.parentId ?? record?.parent_id) ?? null;
227
+ currentId =
228
+ normalizeToNumber(record?.parentId ?? record?.parent_id) ?? null;
272
229
  }
273
230
  return chain;
274
231
  };
275
232
 
276
233
  // Sort pageInfos by full ancestor sort-order chain
277
- Object.values(summaryMap).forEach(summary => {
234
+ Object.values(summaryMap).forEach((summary) => {
278
235
  summary.pageInfos.sort((a, b) => {
279
236
  const chainA = getSortChain(a.id);
280
237
  const chainB = getSortChain(b.id);
@@ -294,7 +251,7 @@ export const RoleManagementListPage: React.FC = () => {
294
251
  const [drawerRole, setDrawerRole] = useState<any>(null);
295
252
 
296
253
  const [showModal, setShowModal] = useState<{
297
- type: "show" | "edit" | "create" | null;
254
+ type: 'show' | 'edit' | 'create' | null;
298
255
  id: number | null;
299
256
  }>({
300
257
  type: null,
@@ -305,31 +262,48 @@ export const RoleManagementListPage: React.FC = () => {
305
262
  open: boolean;
306
263
  title: string;
307
264
  sql: string;
308
- }>({ open: false, title: "", sql: "" });
309
-
310
- const handleShowSql = useCallback(async (record: any) => {
311
- const summary = rolePermissionSummary[record.id];
312
- const rolePages = summary?.pageInfos?.map(p => ({ pageId: p.id, pageCode: p.code, pageName: p.name })) ?? [];
265
+ }>({ open: false, title: '', sql: '' });
266
+
267
+ const handleShowSql = useCallback(
268
+ async (record: any) => {
269
+ const summary = rolePermissionSummary[record.id];
270
+ const rolePages =
271
+ summary?.pageInfos?.map((p) => ({
272
+ pageId: p.id,
273
+ pageCode: p.code,
274
+ pageName: p.name,
275
+ })) ?? [];
276
+
277
+ let roleResources: Array<{
278
+ resourceCode: string;
279
+ resourceName: string;
280
+ actions: string[];
281
+ }> = [];
282
+ try {
283
+ const resp: any = await customRequest('roleResource/findMany', 'post', {
284
+ where: { roleId: record.id },
285
+ include: { resource: true },
286
+ });
287
+ const items: any[] = Array.isArray(resp?.data) ? resp.data : [];
288
+ roleResources = items.map((item) => ({
289
+ resourceCode: item.resource?.code ?? String(item.resourceId),
290
+ resourceName: item.resource?.name ?? String(item.resourceId),
291
+ actions: Array.isArray(item.actions) ? item.actions : [],
292
+ }));
293
+ } catch {
294
+ message.warning(
295
+ 'Could not fetch role resource details; SQL will omit permissions.',
296
+ );
297
+ }
313
298
 
314
- let roleResources: Array<{ resourceCode: string; resourceName: string; actions: string[] }> = [];
315
- try {
316
- const resp: any = await customRequest("roleResource/findMany", "post", {
317
- where: { roleId: record.id },
318
- include: { resource: true },
299
+ const sql = generateRoleSql(record, rolePages, roleResources, {
300
+ authorId: identity?.userid,
301
+ authorName: identity?.username,
319
302
  });
320
- const items: any[] = Array.isArray(resp?.data) ? resp.data : [];
321
- roleResources = items.map(item => ({
322
- resourceCode: item.resource?.code ?? String(item.resourceId),
323
- resourceName: item.resource?.name ?? String(item.resourceId),
324
- actions: Array.isArray(item.actions) ? item.actions : [],
325
- }));
326
- } catch {
327
- message.warning("Could not fetch role resource details; SQL will omit permissions.");
328
- }
329
-
330
- const sql = generateRoleSql(record, rolePages, roleResources, { authorId: identity?.userid, authorName: identity?.username });
331
- setSqlModal({ open: true, title: `SQL — Role: ${record.name}`, sql });
332
- }, [rolePermissionSummary]);
303
+ setSqlModal({ open: true, title: `SQL Role: ${record.name}`, sql });
304
+ },
305
+ [rolePermissionSummary],
306
+ );
333
307
 
334
308
  const refreshRoleRelatedData = useCallback(() => {
335
309
  refetchRolePages(rolePagesQuery ?? {});
@@ -352,7 +326,7 @@ export const RoleManagementListPage: React.FC = () => {
352
326
  type="primary"
353
327
  onClick={() =>
354
328
  setShowModal({
355
- type: "create",
329
+ type: 'create',
356
330
  id: null,
357
331
  })
358
332
  }
@@ -381,7 +355,7 @@ export const RoleManagementListPage: React.FC = () => {
381
355
  type="default"
382
356
  size="small"
383
357
  icon={<EditOutlined />}
384
- onClick={() => setShowModal({ type: "edit", id: record.id })}
358
+ onClick={() => setShowModal({ type: 'edit', id: record.id })}
385
359
  />
386
360
  </Tooltip>
387
361
  <Tooltip title="Generate SQL">
@@ -404,7 +378,7 @@ export const RoleManagementListPage: React.FC = () => {
404
378
  onClose={() => setDrawerRole(null)}
405
379
  />
406
380
  )}
407
- {showModal.type === "edit" && showModal.id && (
381
+ {showModal.type === 'edit' && showModal.id && (
408
382
  <EditModal
409
383
  id={showModal.id}
410
384
  onClose={handleModalClose}
@@ -413,7 +387,7 @@ export const RoleManagementListPage: React.FC = () => {
413
387
  rolePermissionSummary={rolePermissionSummary[showModal.id]}
414
388
  />
415
389
  )}
416
- {showModal.type === "create" && (
390
+ {showModal.type === 'create' && (
417
391
  <CreateModal
418
392
  onClose={handleModalClose}
419
393
  onSuccess={handleModalSuccess}
@@ -422,7 +396,7 @@ export const RoleManagementListPage: React.FC = () => {
422
396
  )}
423
397
  <SqlModal
424
398
  open={sqlModal.open}
425
- onClose={() => setSqlModal({ open: false, title: "", sql: "" })}
399
+ onClose={() => setSqlModal({ open: false, title: '', sql: '' })}
426
400
  title={sqlModal.title}
427
401
  sql={sqlModal.sql}
428
402
  />
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from "react";
1
+ import type { ReactNode } from 'react';
2
2
 
3
3
  export type RolePageTreeNode = {
4
4
  title: ReactNode;
@@ -1,6 +1,6 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import { UserFormModal } from "./form-modal";
3
+ import { UserFormModal } from './form-modal';
4
4
 
5
5
  interface CreateModalProps {
6
6
  onClose: () => void;
@@ -1,6 +1,6 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import { UserFormModal } from "./form-modal";
3
+ import { UserFormModal } from './form-modal';
4
4
 
5
5
  interface EditModalProps {
6
6
  id?: number;
@@ -1,20 +1,20 @@
1
- import React, { useState } from "react";
1
+ import React, { useState } from 'react';
2
2
 
3
- import { useModalForm } from "@refinedev/antd";
4
- import { type HttpError, type RedirectAction } from "@refinedev/core";
3
+ import { useModalForm } from '@refinedev/antd';
4
+ import { type HttpError, type RedirectAction } from '@refinedev/core';
5
5
 
6
- import { Button, Form, Input, Modal, Select, Space, Switch } from "antd";
7
- import { ReloadOutlined } from "@ant-design/icons";
6
+ import { Button, Form, Input, Modal, Select, Space, Switch } from 'antd';
7
+ import { ReloadOutlined } from '@ant-design/icons';
8
8
 
9
- import { useRoles } from "@/hooks/useRoles";
10
- import { User } from "@/types";
9
+ import { useRoles } from '@/hooks/useRoles';
10
+ import { User } from '@/types';
11
11
 
12
- import { UserSelect } from "../queries";
12
+ import { UserSelect } from '../queries';
13
13
 
14
14
  const generateApiKey = () => crypto.randomUUID();
15
15
 
16
16
  type Props = {
17
- action: "create" | "edit";
17
+ action: 'create' | 'edit';
18
18
  id?: number;
19
19
  redirect?: RedirectAction;
20
20
  onMutationSuccess?: () => void;
@@ -39,7 +39,7 @@ export const UserFormModal: React.FC<Props> = ({
39
39
  HttpError,
40
40
  Partial<User>
41
41
  >({
42
- resource: "user",
42
+ resource: 'user',
43
43
  action,
44
44
  id,
45
45
  defaultVisible: true,
@@ -55,7 +55,7 @@ export const UserFormModal: React.FC<Props> = ({
55
55
  // fix react-query cache data type error
56
56
  if (
57
57
  formProps.initialValues?.roles &&
58
- typeof formProps.initialValues.roles === "string"
58
+ typeof formProps.initialValues.roles === 'string'
59
59
  ) {
60
60
  formProps.initialValues.roles = JSON.parse(formProps.initialValues.roles);
61
61
  }
@@ -74,7 +74,7 @@ export const UserFormModal: React.FC<Props> = ({
74
74
 
75
75
  const handleIsApiKeyChange = (checked: boolean) => {
76
76
  setIsApiKey(checked);
77
- if (checked && !form.getFieldValue("apiKey")) {
77
+ if (checked && !form.getFieldValue('apiKey')) {
78
78
  handleGenerateApiKey();
79
79
  }
80
80
  if (checked) {
@@ -98,14 +98,18 @@ export const UserFormModal: React.FC<Props> = ({
98
98
  //TODO: modalProps.onCancel expect an event so, I used close. Actually both of them are same.
99
99
  close();
100
100
  }}
101
- title={action === "create" ? "Create User" : "Edit User"}
101
+ title={action === 'create' ? 'Create User' : 'Edit User'}
102
102
  >
103
103
  <Form {...formProps} layout="vertical">
104
- <Form.Item rules={[{ required: true }]} name="userid" label="User ID(WecomId 或者 太湖帐号名)">
104
+ <Form.Item
105
+ rules={[{ required: true }]}
106
+ name="userid"
107
+ label="User ID(WecomId 或者 太湖帐号名)"
108
+ >
105
109
  <Input
106
110
  placeholder="Please enter user ID"
107
111
  onChange={(e) => {
108
- if (action === "create" && !usernameTouched) {
112
+ if (action === 'create' && !usernameTouched) {
109
113
  form.setFieldsValue({ username: e.target.value });
110
114
  }
111
115
  }}
@@ -155,13 +159,15 @@ export const UserFormModal: React.FC<Props> = ({
155
159
  <>
156
160
  <Form.Item
157
161
  label="API Key"
158
- rules={[{ required: isApiKey, message: "Please generate API Key" }]}
162
+ rules={[
163
+ { required: isApiKey, message: 'Please generate API Key' },
164
+ ]}
159
165
  >
160
- <Space.Compact style={{ width: "100%" }}>
166
+ <Space.Compact style={{ width: '100%' }}>
161
167
  <Form.Item name="apiKey" noStyle>
162
168
  <Input
163
169
  placeholder="Click button to generate API Key"
164
- style={{ fontFamily: "monospace" }}
170
+ style={{ fontFamily: 'monospace' }}
165
171
  />
166
172
  </Form.Item>
167
173
  <Button
@@ -169,7 +175,7 @@ export const UserFormModal: React.FC<Props> = ({
169
175
  icon={<ReloadOutlined />}
170
176
  onClick={handleGenerateApiKey}
171
177
  >
172
- {form.getFieldValue("apiKey") ? "Regenerate" : "Generate"}
178
+ {form.getFieldValue('apiKey') ? 'Regenerate' : 'Generate'}
173
179
  </Button>
174
180
  </Space.Compact>
175
181
  </Form.Item>
@@ -1,5 +1,5 @@
1
- export * from "./create-modal";
2
- export * from "./edit-modal";
3
- export * from "./form-modal";
4
- export * from "./role-tag";
5
- export * from "./show-drawer";
1
+ export * from './create-modal';
2
+ export * from './edit-modal';
3
+ export * from './form-modal';
4
+ export * from './role-tag';
5
+ export * from './show-drawer';
@@ -1,7 +1,7 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import { CrownOutlined, StarOutlined, UserOutlined } from "@ant-design/icons";
4
- import { Tag, type TagProps } from "antd";
3
+ import { CrownOutlined, StarOutlined, UserOutlined } from '@ant-design/icons';
4
+ import { Tag, type TagProps } from 'antd';
5
5
 
6
6
  type Props = {
7
7
  role: any;
@@ -10,34 +10,34 @@ type Props = {
10
10
  export const RoleTag: React.FC<Props> = ({ role }) => {
11
11
  const variants: {
12
12
  [key in any]: {
13
- color: TagProps["color"];
13
+ color: TagProps['color'];
14
14
  icon: React.ReactNode;
15
15
  };
16
16
  } = {
17
17
  ADMIN: {
18
- color: "red",
18
+ color: 'red',
19
19
  icon: <CrownOutlined />,
20
20
  },
21
21
  SALES_INTERN: {
22
- color: "blue",
22
+ color: 'blue',
23
23
  icon: <UserOutlined />,
24
24
  },
25
25
  SALES_PERSON: {
26
- color: "geekblue",
26
+ color: 'geekblue',
27
27
  icon: <UserOutlined />,
28
28
  },
29
29
  SALES_MANAGER: {
30
- color: "cyan",
30
+ color: 'cyan',
31
31
  icon: <StarOutlined />,
32
32
  },
33
33
  };
34
34
 
35
- const text = role.replace("_", " ").toLowerCase();
35
+ const text = role.replace('_', ' ').toLowerCase();
36
36
 
37
37
  return (
38
38
  <Tag
39
39
  style={{
40
- textTransform: "capitalize",
40
+ textTransform: 'capitalize',
41
41
  }}
42
42
  color={variants[role].color}
43
43
  icon={variants[role].icon}