create-react-admin-template 0.0.0-stage → 0.1.0

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 (736) hide show
  1. package/README.md +46 -2
  2. package/bin/create.mjs +5 -0
  3. package/package.json +22 -4
  4. package/template/.dockerignore +12 -0
  5. package/template/.editorconfig +12 -0
  6. package/template/.env +14 -0
  7. package/template/.env.development +5 -0
  8. package/template/.env.production +2 -0
  9. package/template/.env.test +5 -0
  10. package/template/.github/workflows/ci.yml +40 -0
  11. package/template/.gitlab-ci.yml +208 -0
  12. package/template/.husky/commit-msg +1 -0
  13. package/template/.husky/pre-commit +1 -0
  14. package/template/.nvmrc +1 -0
  15. package/template/.prettierignore +11 -0
  16. package/template/.prettierrc +47 -0
  17. package/template/Dockerfile +16 -0
  18. package/template/README.md +372 -0
  19. package/template/build/advancedTable.ts +103 -0
  20. package/template/build/environment.ts +150 -0
  21. package/template/commitlint.config.js +32 -0
  22. package/template/components.json +21 -0
  23. package/template/deploy/README.md +132 -0
  24. package/template/deploy/host-nginx/react-admin-api.conf +14 -0
  25. package/template/deploy/host-nginx/react-admin-web.conf +8 -0
  26. package/template/deploy/nginx.conf +38 -0
  27. package/template/docs/activity-status.md +217 -0
  28. package/template/docs/audit-logs.md +158 -0
  29. package/template/docs/authentication-adapters.md +219 -0
  30. package/template/docs/browser-security.md +58 -0
  31. package/template/docs/bundle-budgets.md +65 -0
  32. package/template/docs/component-source-governance.md +99 -0
  33. package/template/docs/data-masking.md +169 -0
  34. package/template/docs/enterprise-scaffold.md +208 -0
  35. package/template/docs/feature-data-template.md +227 -0
  36. package/template/docs/feature-flags.md +169 -0
  37. package/template/docs/file-capabilities.md +196 -0
  38. package/template/docs/locale-and-i18n.md +132 -0
  39. package/template/docs/mutation-idempotency.md +24 -0
  40. package/template/docs/optional-editors.md +203 -0
  41. package/template/docs/page-feedback.md +83 -0
  42. package/template/docs/query-data-conventions.md +178 -0
  43. package/template/docs/realtime-collaboration.md +140 -0
  44. package/template/docs/reporting-printing-templates.md +156 -0
  45. package/template/docs/scaffold-capability-roadmap.md +226 -0
  46. package/template/docs/scaffold-guide.md +443 -0
  47. package/template/docs/template-changelog.md +30 -0
  48. package/template/docs/template-versioning.md +26 -0
  49. package/template/docs/tenant-workspace-context.md +147 -0
  50. package/template/docs/unsaved-changes.md +58 -0
  51. package/template/docs/white-label.md +102 -0
  52. package/template/eslint.config.js +697 -0
  53. package/template/gitignore +39 -0
  54. package/template/index.html +26 -0
  55. package/template/knip.config.ts +42 -0
  56. package/template/lint-staged.config.js +8 -0
  57. package/template/package.json +133 -0
  58. package/template/pnpm-lock.yaml +8694 -0
  59. package/template/public/favicon.ico +0 -0
  60. package/template/public/logo.svg +1 -0
  61. package/template/public/runtime-config.json +49 -0
  62. package/template/scaffold.template.json +5 -0
  63. package/template/src/Application.tsx +114 -0
  64. package/template/src/api/ApiError.ts +33 -0
  65. package/template/src/api/activity/ActivityProvider.tsx +167 -0
  66. package/template/src/api/activity/access.ts +13 -0
  67. package/template/src/api/activity/errors.ts +17 -0
  68. package/template/src/api/activity/index.ts +67 -0
  69. package/template/src/api/activity/model.ts +227 -0
  70. package/template/src/api/activity/query.ts +163 -0
  71. package/template/src/api/activity/source.ts +16 -0
  72. package/template/src/api/activity/subscription.ts +292 -0
  73. package/template/src/api/activity/transports.ts +271 -0
  74. package/template/src/api/activity/types.ts +402 -0
  75. package/template/src/api/authClient.ts +134 -0
  76. package/template/src/api/authSession.ts +307 -0
  77. package/template/src/api/clients/configureApiClient.ts +62 -0
  78. package/template/src/api/clients/httpStatus.ts +4 -0
  79. package/template/src/api/config/services.json +7 -0
  80. package/template/src/api/demoAuthClient.ts +46 -0
  81. package/template/src/api/enums/EnumCatalogProvider.tsx +169 -0
  82. package/template/src/api/enums/EnumDictionary.ts +55 -0
  83. package/template/src/api/enums/access.ts +130 -0
  84. package/template/src/api/enums/catalog.ts +216 -0
  85. package/template/src/api/enums/errors.ts +21 -0
  86. package/template/src/api/enums/index.ts +48 -0
  87. package/template/src/api/enums/query.ts +82 -0
  88. package/template/src/api/enums/scope.ts +58 -0
  89. package/template/src/api/enums/types.ts +251 -0
  90. package/template/src/api/hooks/error.ts +198 -0
  91. package/template/src/api/hooks/index.ts +4 -0
  92. package/template/src/api/hooks/request.ts +99 -0
  93. package/template/src/api/hooks/requestId.ts +65 -0
  94. package/template/src/api/hooks/response.ts +22 -0
  95. package/template/src/api/hooks/types.ts +20 -0
  96. package/template/src/api/idempotency/index.ts +1 -0
  97. package/template/src/api/idempotency/key.ts +23 -0
  98. package/template/src/api/index.ts +14 -0
  99. package/template/src/api/metadata/MetadataProvider.tsx +37 -0
  100. package/template/src/api/metadata/index.ts +2 -0
  101. package/template/src/api/metadata/types.ts +30 -0
  102. package/template/src/api/parameters/GlobalParameterProvider.tsx +210 -0
  103. package/template/src/api/parameters/access.ts +117 -0
  104. package/template/src/api/parameters/catalog.ts +170 -0
  105. package/template/src/api/parameters/errors.ts +21 -0
  106. package/template/src/api/parameters/index.ts +53 -0
  107. package/template/src/api/parameters/query.ts +84 -0
  108. package/template/src/api/parameters/scope.ts +58 -0
  109. package/template/src/api/parameters/types.ts +214 -0
  110. package/template/src/api/query/index.ts +13 -0
  111. package/template/src/api/query/keys.ts +155 -0
  112. package/template/src/api/query/mutation.ts +48 -0
  113. package/template/src/api/query/react.ts +36 -0
  114. package/template/src/api/query/scope.ts +38 -0
  115. package/template/src/api/query/types.ts +147 -0
  116. package/template/src/api/types.ts +144 -0
  117. package/template/src/application/types.ts +52 -0
  118. package/template/src/auditLogs/errors.ts +17 -0
  119. package/template/src/auditLogs/export.ts +85 -0
  120. package/template/src/auditLogs/index.ts +54 -0
  121. package/template/src/auditLogs/model.ts +526 -0
  122. package/template/src/auditLogs/query.ts +113 -0
  123. package/template/src/auditLogs/react.ts +36 -0
  124. package/template/src/auditLogs/source.ts +51 -0
  125. package/template/src/auditLogs/types.ts +357 -0
  126. package/template/src/authentication/controller.ts +351 -0
  127. package/template/src/authentication/index.ts +8 -0
  128. package/template/src/authentication/redirect.ts +72 -0
  129. package/template/src/authentication/types.ts +300 -0
  130. package/template/src/bootstrap.tsx +96 -0
  131. package/template/src/components/AppDataTable/AppDataTable.tsx +74 -0
  132. package/template/src/components/AppDataTable/index.ts +2 -0
  133. package/template/src/components/AppDataTable/types.ts +27 -0
  134. package/template/src/components/AppDialog/AppConfirmDialog.tsx +44 -0
  135. package/template/src/components/AppDialog/AppDialog.tsx +113 -0
  136. package/template/src/components/AppDialog/index.ts +3 -0
  137. package/template/src/components/AppDialog/messages.tsx +22 -0
  138. package/template/src/components/AppDialog/types.ts +53 -0
  139. package/template/src/components/AppPageForm/AppPageForm.tsx +21 -0
  140. package/template/src/components/AppPageForm/PageForm.tsx +765 -0
  141. package/template/src/components/AppPageForm/SOURCE.md +26 -0
  142. package/template/src/components/AppPageForm/config.ts +253 -0
  143. package/template/src/components/AppPageForm/controller.ts +580 -0
  144. package/template/src/components/AppPageForm/index.ts +2 -0
  145. package/template/src/components/AppPageForm/messages.ts +90 -0
  146. package/template/src/components/AppPageForm/optionUtils.ts +91 -0
  147. package/template/src/components/AppPageForm/options.ts +397 -0
  148. package/template/src/components/AppPageForm/query.ts +44 -0
  149. package/template/src/components/AppPageForm/style.css +119 -0
  150. package/template/src/components/AppPageForm/types.ts +632 -0
  151. package/template/src/components/AppPageForm/validation.ts +233 -0
  152. package/template/src/components/AppTable/AppTable.tsx +26 -0
  153. package/template/src/components/AppTable/SOURCE.md +72 -0
  154. package/template/src/components/AppTable/cell/customCell/TableCellLayer.tsx +73 -0
  155. package/template/src/components/AppTable/cell/customCell/actions/ActionDropdownCell.tsx +104 -0
  156. package/template/src/components/AppTable/cell/customCell/cellLayer.ts +358 -0
  157. package/template/src/components/AppTable/cell/customCell/componentProps.ts +30 -0
  158. package/template/src/components/AppTable/cell/customCell/date/TemporalPickerEditor.tsx +54 -0
  159. package/template/src/components/AppTable/cell/customCell/index.ts +2 -0
  160. package/template/src/components/AppTable/cell/customCell/select/SelectCellEditor.tsx +225 -0
  161. package/template/src/components/AppTable/cell/customCell/tableCellLayer.css +20 -0
  162. package/template/src/components/AppTable/cell/customCell/tooltip/TooltipCell.tsx +45 -0
  163. package/template/src/components/AppTable/cell/customCell/types.ts +63 -0
  164. package/template/src/components/AppTable/cell/customCell/useCellLayerLifecycle.ts +111 -0
  165. package/template/src/components/AppTable/cell/frameworkCell/TableCellComponentLayer.tsx +40 -0
  166. package/template/src/components/AppTable/cell/frameworkCell/cellComponentSession.ts +203 -0
  167. package/template/src/components/AppTable/cell/frameworkCell/index.ts +3 -0
  168. package/template/src/components/AppTable/cell/index.ts +2 -0
  169. package/template/src/components/AppTable/columns/TableColumnEditor.tsx +257 -0
  170. package/template/src/components/AppTable/columns/index.ts +1 -0
  171. package/template/src/components/AppTable/columns/useTableColumnPreferenceActions.ts +85 -0
  172. package/template/src/components/AppTable/config/defaults.ts +46 -0
  173. package/template/src/components/AppTable/config/index.ts +2 -0
  174. package/template/src/components/AppTable/config/license.ts +39 -0
  175. package/template/src/components/AppTable/config/resolver.ts +25 -0
  176. package/template/src/components/AppTable/config/types.ts +377 -0
  177. package/template/src/components/AppTable/engine/bottom/index.ts +1 -0
  178. package/template/src/components/AppTable/engine/bottom/types.ts +14 -0
  179. package/template/src/components/AppTable/engine/cell/constants.ts +32 -0
  180. package/template/src/components/AppTable/engine/cell/customCell/actions/index.ts +1 -0
  181. package/template/src/components/AppTable/engine/cell/customCell/actions/renderer.ts +162 -0
  182. package/template/src/components/AppTable/engine/cell/customCell/date/index.ts +1 -0
  183. package/template/src/components/AppTable/engine/cell/customCell/date/renderer.ts +116 -0
  184. package/template/src/components/AppTable/engine/cell/customCell/editors/editorBounds.ts +57 -0
  185. package/template/src/components/AppTable/engine/cell/customCell/editors/editorTrigger.ts +46 -0
  186. package/template/src/components/AppTable/engine/cell/customCell/editors/index.ts +3 -0
  187. package/template/src/components/AppTable/engine/cell/customCell/editors/layerEditor.ts +244 -0
  188. package/template/src/components/AppTable/engine/cell/customCell/index.ts +7 -0
  189. package/template/src/components/AppTable/engine/cell/customCell/renderers/columnRenderer.ts +245 -0
  190. package/template/src/components/AppTable/engine/cell/customCell/renderers/confirmInput.ts +57 -0
  191. package/template/src/components/AppTable/engine/cell/customCell/renderers/display.ts +78 -0
  192. package/template/src/components/AppTable/engine/cell/customCell/renderers/index.ts +3 -0
  193. package/template/src/components/AppTable/engine/cell/customCell/renderers/itemList.ts +60 -0
  194. package/template/src/components/AppTable/engine/cell/customCell/renderers/links.ts +131 -0
  195. package/template/src/components/AppTable/engine/cell/customCell/renderers/selection.ts +41 -0
  196. package/template/src/components/AppTable/engine/cell/customCell/renderers/shared.ts +71 -0
  197. package/template/src/components/AppTable/engine/cell/customCell/renderers/step.ts +37 -0
  198. package/template/src/components/AppTable/engine/cell/customCell/renderers/switch.ts +45 -0
  199. package/template/src/components/AppTable/engine/cell/customCell/select/index.ts +1 -0
  200. package/template/src/components/AppTable/engine/cell/customCell/select/renderer.ts +33 -0
  201. package/template/src/components/AppTable/engine/cell/customCell/tooltip/index.ts +1 -0
  202. package/template/src/components/AppTable/engine/cell/customCell/tooltip/tooltip.ts +94 -0
  203. package/template/src/components/AppTable/engine/cell/customCell/types.ts +82 -0
  204. package/template/src/components/AppTable/engine/cell/formatting.ts +355 -0
  205. package/template/src/components/AppTable/engine/cell/formula.ts +145 -0
  206. package/template/src/components/AppTable/engine/cell/index.ts +7 -0
  207. package/template/src/components/AppTable/engine/cell/multiSelect.ts +96 -0
  208. package/template/src/components/AppTable/engine/cell/options.ts +339 -0
  209. package/template/src/components/AppTable/engine/cell/types.ts +53 -0
  210. package/template/src/components/AppTable/engine/columns/column.ts +430 -0
  211. package/template/src/components/AppTable/engine/columns/config/columns.ts +33 -0
  212. package/template/src/components/AppTable/engine/columns/config/index.ts +4 -0
  213. package/template/src/components/AppTable/engine/columns/config/mutation.ts +138 -0
  214. package/template/src/components/AppTable/engine/columns/config/temporal.ts +11 -0
  215. package/template/src/components/AppTable/engine/columns/config/validation.ts +106 -0
  216. package/template/src/components/AppTable/engine/columns/constants.ts +6 -0
  217. package/template/src/components/AppTable/engine/columns/gridColumns.ts +332 -0
  218. package/template/src/components/AppTable/engine/columns/index.ts +4 -0
  219. package/template/src/components/AppTable/engine/columns/rendererPolicies.ts +129 -0
  220. package/template/src/components/AppTable/engine/component/resolver.ts +272 -0
  221. package/template/src/components/AppTable/engine/component/types.ts +384 -0
  222. package/template/src/components/AppTable/engine/config/constants.ts +33 -0
  223. package/template/src/components/AppTable/engine/config/grid/compiler.ts +65 -0
  224. package/template/src/components/AppTable/engine/config/grid/defaults.ts +82 -0
  225. package/template/src/components/AppTable/engine/config/grid/ownership.ts +35 -0
  226. package/template/src/components/AppTable/engine/config/grid/runtimeDelta.ts +34 -0
  227. package/template/src/components/AppTable/engine/config/grid/types.ts +30 -0
  228. package/template/src/components/AppTable/engine/pagination/config.ts +75 -0
  229. package/template/src/components/AppTable/engine/pagination/constants.ts +5 -0
  230. package/template/src/components/AppTable/engine/pagination/index.ts +3 -0
  231. package/template/src/components/AppTable/engine/pagination/types.ts +70 -0
  232. package/template/src/components/AppTable/engine/preference/index.ts +2 -0
  233. package/template/src/components/AppTable/engine/preference/preference.ts +535 -0
  234. package/template/src/components/AppTable/engine/preference/types.ts +28 -0
  235. package/template/src/components/AppTable/engine/right/index.ts +1 -0
  236. package/template/src/components/AppTable/engine/right/types.ts +18 -0
  237. package/template/src/components/AppTable/engine/search/config.ts +64 -0
  238. package/template/src/components/AppTable/engine/search/constants.ts +8 -0
  239. package/template/src/components/AppTable/engine/search/index.ts +7 -0
  240. package/template/src/components/AppTable/engine/search/localQuery.ts +145 -0
  241. package/template/src/components/AppTable/engine/search/query.ts +203 -0
  242. package/template/src/components/AppTable/engine/search/remoteQuery.ts +99 -0
  243. package/template/src/components/AppTable/engine/search/searchInteraction.ts +46 -0
  244. package/template/src/components/AppTable/engine/search/types.ts +155 -0
  245. package/template/src/components/AppTable/engine/selection/config.ts +13 -0
  246. package/template/src/components/AppTable/engine/selection/index.ts +4 -0
  247. package/template/src/components/AppTable/engine/selection/selection.ts +357 -0
  248. package/template/src/components/AppTable/engine/selection/selectionHeader.ts +88 -0
  249. package/template/src/components/AppTable/engine/selection/types.ts +66 -0
  250. package/template/src/components/AppTable/engine/shared/action.ts +11 -0
  251. package/template/src/components/AppTable/engine/shared/constants.ts +2 -0
  252. package/template/src/components/AppTable/engine/shared/decimal.ts +114 -0
  253. package/template/src/components/AppTable/engine/shared/feedback.ts +62 -0
  254. package/template/src/components/AppTable/engine/shared/index.ts +13 -0
  255. package/template/src/components/AppTable/engine/shared/interaction.ts +55 -0
  256. package/template/src/components/AppTable/engine/shared/messages.ts +161 -0
  257. package/template/src/components/AppTable/engine/shared/row.ts +32 -0
  258. package/template/src/components/AppTable/engine/shared/scheduler.ts +17 -0
  259. package/template/src/components/AppTable/engine/shared/tableKey.ts +31 -0
  260. package/template/src/components/AppTable/engine/shared/theme.ts +196 -0
  261. package/template/src/components/AppTable/engine/shared/treeRows.ts +155 -0
  262. package/template/src/components/AppTable/engine/shared/types.ts +58 -0
  263. package/template/src/components/AppTable/engine/shared/valueSnapshot.ts +46 -0
  264. package/template/src/components/AppTable/engine/summary/config/export.ts +117 -0
  265. package/template/src/components/AppTable/engine/summary/config/index.ts +3 -0
  266. package/template/src/components/AppTable/engine/summary/config/summary.ts +62 -0
  267. package/template/src/components/AppTable/engine/summary/config/types.ts +93 -0
  268. package/template/src/components/AppTable/engine/summary/constants.ts +13 -0
  269. package/template/src/components/AppTable/engine/summary/excelJs.ts +133 -0
  270. package/template/src/components/AppTable/engine/summary/export.ts +311 -0
  271. package/template/src/components/AppTable/engine/summary/index.ts +6 -0
  272. package/template/src/components/AppTable/engine/summary/selectionSum.ts +92 -0
  273. package/template/src/components/AppTable/engine/summary/summary.ts +457 -0
  274. package/template/src/components/AppTable/engine/table/clipboard/index.ts +1 -0
  275. package/template/src/components/AppTable/engine/table/clipboard/transfer.ts +9 -0
  276. package/template/src/components/AppTable/engine/table/controller/TableController.ts +802 -0
  277. package/template/src/components/AppTable/engine/table/controller/errors.ts +106 -0
  278. package/template/src/components/AppTable/engine/table/controller/index.ts +4 -0
  279. package/template/src/components/AppTable/engine/table/controller/latestAbortableTask.ts +33 -0
  280. package/template/src/components/AppTable/engine/table/controller/tableDataReplacement.ts +60 -0
  281. package/template/src/components/AppTable/engine/table/controller/tableDomainConfiguration.ts +94 -0
  282. package/template/src/components/AppTable/engine/table/controller/tableEditingCommands.ts +163 -0
  283. package/template/src/components/AppTable/engine/table/controller/tableGridHost.ts +324 -0
  284. package/template/src/components/AppTable/engine/table/controller/tableIdentity.ts +68 -0
  285. package/template/src/components/AppTable/engine/table/controller/tableMutationPipeline.ts +79 -0
  286. package/template/src/components/AppTable/engine/table/controller/tableQueryCoordinator.ts +187 -0
  287. package/template/src/components/AppTable/engine/table/controller/tableReportingCoordinator.ts +143 -0
  288. package/template/src/components/AppTable/engine/table/controller/tableSaveCoordinator.ts +227 -0
  289. package/template/src/components/AppTable/engine/table/controller/tableSaveValidation.ts +29 -0
  290. package/template/src/components/AppTable/engine/table/controller/tableSnapshot.ts +58 -0
  291. package/template/src/components/AppTable/engine/table/controller/types.ts +202 -0
  292. package/template/src/components/AppTable/engine/table/editing/baselineStore.ts +134 -0
  293. package/template/src/components/AppTable/engine/table/editing/changeSet.ts +492 -0
  294. package/template/src/components/AppTable/engine/table/editing/changeSetSettlement.ts +633 -0
  295. package/template/src/components/AppTable/engine/table/editing/commitResultIndex.ts +75 -0
  296. package/template/src/components/AppTable/engine/table/editing/constants.ts +15 -0
  297. package/template/src/components/AppTable/engine/table/editing/dirtyCellIndex.ts +96 -0
  298. package/template/src/components/AppTable/engine/table/editing/index.ts +6 -0
  299. package/template/src/components/AppTable/engine/table/editing/mutation.ts +173 -0
  300. package/template/src/components/AppTable/engine/table/editing/rowKey.ts +10 -0
  301. package/template/src/components/AppTable/engine/table/editing/types.ts +404 -0
  302. package/template/src/components/AppTable/engine/table/editing/validation.ts +452 -0
  303. package/template/src/components/AppTable/engine/table/grid/cellMeta.ts +90 -0
  304. package/template/src/components/AppTable/engine/table/grid/handsontable.ts +25 -0
  305. package/template/src/components/AppTable/engine/table/grid/handsontableExtensions.d.ts +26 -0
  306. package/template/src/components/AppTable/engine/table/grid/index.ts +5 -0
  307. package/template/src/components/AppTable/engine/table/grid/moduleRegistry.ts +39 -0
  308. package/template/src/components/AppTable/engine/table/grid/runtime.ts +31 -0
  309. package/template/src/components/AppTable/engine/table/grid/types.ts +25 -0
  310. package/template/src/components/AppTable/engine/table/hooks/fixedEndHooks.ts +44 -0
  311. package/template/src/components/AppTable/engine/table/hooks/gridHooks.ts +108 -0
  312. package/template/src/components/AppTable/engine/table/hooks/headerHooks.ts +103 -0
  313. package/template/src/components/AppTable/engine/table/hooks/index.ts +3 -0
  314. package/template/src/components/AppTable/engine/table/index.ts +6 -0
  315. package/template/src/components/AppTable/engine/table/layout/constants.ts +2 -0
  316. package/template/src/components/AppTable/engine/table/layout/dropdownMenu.ts +89 -0
  317. package/template/src/components/AppTable/engine/table/layout/fixedColumns.ts +44 -0
  318. package/template/src/components/AppTable/engine/table/layout/fixedEndOverlay.ts +90 -0
  319. package/template/src/components/AppTable/engine/table/layout/fixedEndOverlayAccessibility.ts +104 -0
  320. package/template/src/components/AppTable/engine/table/layout/fixedEndOverlayRenderer.ts +690 -0
  321. package/template/src/components/AppTable/engine/table/layout/fixedEndOverlaySignature.ts +58 -0
  322. package/template/src/components/AppTable/engine/table/layout/fixedEndRuntime.ts +137 -0
  323. package/template/src/components/AppTable/engine/table/layout/handsontableDomAdapter.ts +40 -0
  324. package/template/src/components/AppTable/engine/table/layout/height.ts +72 -0
  325. package/template/src/components/AppTable/engine/table/layout/index.ts +14 -0
  326. package/template/src/components/AppTable/engine/table/layout/layoutScheduler.ts +60 -0
  327. package/template/src/components/AppTable/engine/table/layout/mergeCells.ts +146 -0
  328. package/template/src/components/AppTable/engine/table/layout/nestedHeaders.ts +271 -0
  329. package/template/src/components/AppTable/engine/table/layout/types.ts +10 -0
  330. package/template/src/components/AppTable/engine/toolbar/index.ts +1 -0
  331. package/template/src/components/AppTable/engine/toolbar/types.ts +56 -0
  332. package/template/src/components/AppTable/index.ts +11 -0
  333. package/template/src/components/AppTable/messages.ts +256 -0
  334. package/template/src/components/AppTable/pagination/TablePaginationBar.tsx +193 -0
  335. package/template/src/components/AppTable/pagination/index.ts +1 -0
  336. package/template/src/components/AppTable/pagination/paginationItems.ts +56 -0
  337. package/template/src/components/AppTable/preference/index.ts +1 -0
  338. package/template/src/components/AppTable/preference/useTablePreference.ts +208 -0
  339. package/template/src/components/AppTable/reporting/index.ts +1 -0
  340. package/template/src/components/AppTable/reporting/useTableReporting.ts +342 -0
  341. package/template/src/components/AppTable/search/TableSearchBar.tsx +301 -0
  342. package/template/src/components/AppTable/search/TableSearchConditionEditor.tsx +254 -0
  343. package/template/src/components/AppTable/search/TableSearchField.tsx +338 -0
  344. package/template/src/components/AppTable/search/TableSearchFields.tsx +65 -0
  345. package/template/src/components/AppTable/search/constants.ts +9 -0
  346. package/template/src/components/AppTable/search/index.ts +3 -0
  347. package/template/src/components/AppTable/search/tableSearchBar.css +164 -0
  348. package/template/src/components/AppTable/search/types.ts +7 -0
  349. package/template/src/components/AppTable/search/useTableQuery.ts +373 -0
  350. package/template/src/components/AppTable/selection/index.ts +1 -0
  351. package/template/src/components/AppTable/selection/useTableSelection.ts +188 -0
  352. package/template/src/components/AppTable/sensitiveData.tsx +41 -0
  353. package/template/src/components/AppTable/shared/styles.ts +2 -0
  354. package/template/src/components/AppTable/styles/index.css +6 -0
  355. package/template/src/components/AppTable/styles/tableComponent.css +297 -0
  356. package/template/src/components/AppTable/styles/theme.css +133 -0
  357. package/template/src/components/AppTable/table/components/TableComponent.tsx +567 -0
  358. package/template/src/components/AppTable/table/components/TableErrorFeedback.tsx +36 -0
  359. package/template/src/components/AppTable/table/components/TableGridViewport.tsx +85 -0
  360. package/template/src/components/AppTable/table/components/index.ts +2 -0
  361. package/template/src/components/AppTable/table/components/types.ts +90 -0
  362. package/template/src/components/AppTable/table/controller/configuration.ts +89 -0
  363. package/template/src/components/AppTable/table/controller/index.ts +2 -0
  364. package/template/src/components/AppTable/table/controller/useTableController.ts +155 -0
  365. package/template/src/components/AppTable/table/controller/useTableLifecycle.ts +97 -0
  366. package/template/src/components/AppTable/table/grid/index.ts +1 -0
  367. package/template/src/components/AppTable/table/grid/useTableGrid.ts +857 -0
  368. package/template/src/components/AppTable/table/grid/useTableGridRuntimeSettings.ts +49 -0
  369. package/template/src/components/AppTable/table/index.ts +4 -0
  370. package/template/src/components/AppTable/table/layout/TablePanels.tsx +389 -0
  371. package/template/src/components/AppTable/table/layout/index.ts +7 -0
  372. package/template/src/components/AppTable/table/layout/types.ts +3 -0
  373. package/template/src/components/AppTable/table/layout/useResizablePanel.ts +213 -0
  374. package/template/src/components/AppTable/table/layout/useTableAdaptiveHeight.ts +238 -0
  375. package/template/src/components/AppTable/table/layout/useTablePanels.ts +329 -0
  376. package/template/src/components/AppTable/table/layout/useTableTheme.ts +123 -0
  377. package/template/src/components/AppTable/toolbar/TableToolbar.tsx +336 -0
  378. package/template/src/components/AppTable/toolbar/index.ts +1 -0
  379. package/template/src/components/BrandLogo/BrandLogo.tsx +41 -0
  380. package/template/src/components/BrandLogo/index.ts +1 -0
  381. package/template/src/components/Can/Can.tsx +19 -0
  382. package/template/src/components/Can/index.ts +7 -0
  383. package/template/src/components/Can/types.ts +41 -0
  384. package/template/src/components/EnumBadge/EnumBadge.tsx +44 -0
  385. package/template/src/components/EnumBadge/index.ts +2 -0
  386. package/template/src/components/EnumBadge/types.ts +16 -0
  387. package/template/src/components/EnumText/EnumText.tsx +33 -0
  388. package/template/src/components/EnumText/index.ts +2 -0
  389. package/template/src/components/EnumText/types.ts +13 -0
  390. package/template/src/components/FilePreview/FilePreview.tsx +120 -0
  391. package/template/src/components/FilePreview/index.ts +11 -0
  392. package/template/src/components/FilePreview/preview.ts +88 -0
  393. package/template/src/components/FilePreview/types.ts +91 -0
  394. package/template/src/components/FileUpload/FileUpload.tsx +172 -0
  395. package/template/src/components/FileUpload/index.ts +2 -0
  396. package/template/src/components/FileUpload/types.ts +32 -0
  397. package/template/src/components/JsonEditor/JsonEditor.tsx +103 -0
  398. package/template/src/components/JsonEditor/index.ts +1 -0
  399. package/template/src/components/JsonEditor/types.ts +14 -0
  400. package/template/src/components/PageFeedback/PageFeedback.tsx +194 -0
  401. package/template/src/components/PageFeedback/index.ts +10 -0
  402. package/template/src/components/PageFeedback/types.ts +31 -0
  403. package/template/src/components/PasswordInput/PasswordInput.tsx +50 -0
  404. package/template/src/components/PasswordInput/index.ts +1 -0
  405. package/template/src/components/RouteDialog/RouteDialog.tsx +20 -0
  406. package/template/src/components/RouteDialog/index.ts +2 -0
  407. package/template/src/components/RouteDialog/types.ts +8 -0
  408. package/template/src/components/RouteDialog/useRouteDialogNavigation.ts +30 -0
  409. package/template/src/components/SensitiveData/SensitiveData.tsx +337 -0
  410. package/template/src/components/SensitiveData/index.ts +2 -0
  411. package/template/src/components/SensitiveData/types.ts +31 -0
  412. package/template/src/components/StatusBadge/StatusBadge.tsx +28 -0
  413. package/template/src/components/StatusBadge/index.ts +2 -0
  414. package/template/src/components/StatusBadge/statusBadgeStyles.ts +30 -0
  415. package/template/src/components/StatusBadge/types.ts +7 -0
  416. package/template/src/components/layout/AppHeader/AppHeader.tsx +57 -0
  417. package/template/src/components/layout/AppHeader/HeaderSearch.tsx +160 -0
  418. package/template/src/components/layout/AppHeader/HeaderUserMenu.tsx +59 -0
  419. package/template/src/components/layout/AppHeader/ThemeControls.tsx +44 -0
  420. package/template/src/components/layout/AppHeader/index.ts +1 -0
  421. package/template/src/components/layout/AppHeader/themeOptions.ts +13 -0
  422. package/template/src/components/layout/AppSidebar.tsx +268 -0
  423. package/template/src/components/layout/PageContainer.tsx +16 -0
  424. package/template/src/components/ui/avatar.tsx +108 -0
  425. package/template/src/components/ui/badge.tsx +47 -0
  426. package/template/src/components/ui/button.tsx +63 -0
  427. package/template/src/components/ui/card.tsx +60 -0
  428. package/template/src/components/ui/checkbox.tsx +31 -0
  429. package/template/src/components/ui/collapsible.tsx +33 -0
  430. package/template/src/components/ui/command.tsx +181 -0
  431. package/template/src/components/ui/dialog.tsx +157 -0
  432. package/template/src/components/ui/dropdown-menu.tsx +254 -0
  433. package/template/src/components/ui/form.tsx +141 -0
  434. package/template/src/components/ui/input.tsx +20 -0
  435. package/template/src/components/ui/label.tsx +23 -0
  436. package/template/src/components/ui/pagination.tsx +127 -0
  437. package/template/src/components/ui/popover.tsx +41 -0
  438. package/template/src/components/ui/select.tsx +187 -0
  439. package/template/src/components/ui/separator.tsx +25 -0
  440. package/template/src/components/ui/sheet.tsx +142 -0
  441. package/template/src/components/ui/sidebar.tsx +878 -0
  442. package/template/src/components/ui/skeleton.tsx +13 -0
  443. package/template/src/components/ui/sonner.tsx +33 -0
  444. package/template/src/components/ui/tooltip.tsx +54 -0
  445. package/template/src/config/RuntimeConfigErrorPage.tsx +48 -0
  446. package/template/src/config/appConfig.ts +126 -0
  447. package/template/src/config/buildInfo.ts +8 -0
  448. package/template/src/config/observabilityAdapter.ts +8 -0
  449. package/template/src/config/runtimeConfig.ts +360 -0
  450. package/template/src/config/types.ts +195 -0
  451. package/template/src/context/ThemeProvider.tsx +84 -0
  452. package/template/src/context/UnsavedChangesProvider.tsx +123 -0
  453. package/template/src/context/applicationScope.ts +39 -0
  454. package/template/src/context/types.ts +41 -0
  455. package/template/src/dataMasking/index.ts +14 -0
  456. package/template/src/dataMasking/masking.ts +139 -0
  457. package/template/src/dataMasking/types.ts +144 -0
  458. package/template/src/featureFlags/FeatureFlagProvider.tsx +143 -0
  459. package/template/src/featureFlags/FeatureGate.tsx +12 -0
  460. package/template/src/featureFlags/catalog.ts +140 -0
  461. package/template/src/featureFlags/errors.ts +17 -0
  462. package/template/src/featureFlags/index.ts +43 -0
  463. package/template/src/featureFlags/query.ts +103 -0
  464. package/template/src/featureFlags/registry.ts +149 -0
  465. package/template/src/featureFlags/scope.ts +27 -0
  466. package/template/src/featureFlags/types.ts +241 -0
  467. package/template/src/features/auth/AuthLayout.tsx +17 -0
  468. package/template/src/features/auth/index.ts +2 -0
  469. package/template/src/features/auth/signIn/components/UserAuthForm.tsx +121 -0
  470. package/template/src/features/auth/signIn/index.tsx +71 -0
  471. package/template/src/features/auth/signIn/messages.ts +37 -0
  472. package/template/src/features/auth/signIn/types.ts +4 -0
  473. package/template/src/features/errors/ForbiddenError.tsx +34 -0
  474. package/template/src/features/errors/GeneralError.tsx +46 -0
  475. package/template/src/features/errors/MaintenanceError.tsx +31 -0
  476. package/template/src/features/errors/NotFoundError.tsx +34 -0
  477. package/template/src/features/errors/RouteError.tsx +72 -0
  478. package/template/src/features/errors/UnauthorizedError.tsx +34 -0
  479. package/template/src/features/errors/index.ts +6 -0
  480. package/template/src/features/errors/messages.ts +56 -0
  481. package/template/src/features/home/index.tsx +107 -0
  482. package/template/src/features/home/messages.ts +59 -0
  483. package/template/src/features/showcase/AccessShowcasePage.tsx +284 -0
  484. package/template/src/features/showcase/AdvancedTableDemo.tsx +120 -0
  485. package/template/src/features/showcase/FeedbackShowcasePage.tsx +142 -0
  486. package/template/src/features/showcase/FileShowcasePage.tsx +110 -0
  487. package/template/src/features/showcase/FormShowcasePage.tsx +156 -0
  488. package/template/src/features/showcase/MetadataShowcasePage.tsx +241 -0
  489. package/template/src/features/showcase/ShowcasePageHeader.tsx +24 -0
  490. package/template/src/features/showcase/TableShowcasePage.tsx +436 -0
  491. package/template/src/features/showcase/accessMessages.ts +67 -0
  492. package/template/src/features/showcase/index.ts +6 -0
  493. package/template/src/features/showcase/messages.ts +192 -0
  494. package/template/src/files/download.ts +82 -0
  495. package/template/src/files/errors.ts +15 -0
  496. package/template/src/files/filename.ts +61 -0
  497. package/template/src/files/index.ts +38 -0
  498. package/template/src/files/types.ts +299 -0
  499. package/template/src/files/useFileTask.ts +153 -0
  500. package/template/src/files/useFileUpload.ts +117 -0
  501. package/template/src/files/validation.ts +109 -0
  502. package/template/src/layouts/AppLayout.tsx +37 -0
  503. package/template/src/lib/accessControl.ts +42 -0
  504. package/template/src/lib/navigationRedirect.ts +26 -0
  505. package/template/src/lib/utils.ts +6 -0
  506. package/template/src/locale/LocaleProvider.tsx +37 -0
  507. package/template/src/locale/context.ts +15 -0
  508. package/template/src/locale/formatters.ts +123 -0
  509. package/template/src/locale/hooks.ts +35 -0
  510. package/template/src/locale/index.ts +17 -0
  511. package/template/src/locale/messages.ts +151 -0
  512. package/template/src/locale/types.ts +167 -0
  513. package/template/src/main.tsx +5 -0
  514. package/template/src/observability/browser.ts +37 -0
  515. package/template/src/observability/consoleAdapter.ts +18 -0
  516. package/template/src/observability/index.ts +26 -0
  517. package/template/src/observability/observer.ts +118 -0
  518. package/template/src/observability/redaction.ts +85 -0
  519. package/template/src/observability/types.ts +119 -0
  520. package/template/src/optionalEditors/controller.ts +327 -0
  521. package/template/src/optionalEditors/errors.ts +21 -0
  522. package/template/src/optionalEditors/index.ts +35 -0
  523. package/template/src/optionalEditors/model.ts +253 -0
  524. package/template/src/optionalEditors/react.ts +89 -0
  525. package/template/src/optionalEditors/types.ts +254 -0
  526. package/template/src/permissions/index.ts +3 -0
  527. package/template/src/permissions/types.ts +5 -0
  528. package/template/src/permissions/usePermission.ts +16 -0
  529. package/template/src/realtimeCollaboration/controller.ts +355 -0
  530. package/template/src/realtimeCollaboration/errors.ts +20 -0
  531. package/template/src/realtimeCollaboration/index.ts +39 -0
  532. package/template/src/realtimeCollaboration/model.ts +212 -0
  533. package/template/src/realtimeCollaboration/react.ts +72 -0
  534. package/template/src/realtimeCollaboration/types.ts +251 -0
  535. package/template/src/reporting/errors.ts +21 -0
  536. package/template/src/reporting/generation.ts +87 -0
  537. package/template/src/reporting/index.ts +42 -0
  538. package/template/src/reporting/model.ts +373 -0
  539. package/template/src/reporting/print.ts +16 -0
  540. package/template/src/reporting/query.ts +50 -0
  541. package/template/src/reporting/react.ts +17 -0
  542. package/template/src/reporting/source.ts +13 -0
  543. package/template/src/reporting/types.ts +219 -0
  544. package/template/src/router/RootRouteLayout.tsx +11 -0
  545. package/template/src/router/authLifecycle.ts +39 -0
  546. package/template/src/router/config.ts +293 -0
  547. package/template/src/router/interceptors.ts +48 -0
  548. package/template/src/router/lazyRouteComponents.ts +78 -0
  549. package/template/src/router/messages.ts +48 -0
  550. package/template/src/router/navigation.ts +167 -0
  551. package/template/src/router/router.ts +66 -0
  552. package/template/src/router/searchSchemas.ts +9 -0
  553. package/template/src/router/types.ts +76 -0
  554. package/template/src/stores/authSessionStorage.ts +27 -0
  555. package/template/src/stores/authStore.ts +165 -0
  556. package/template/src/stores/types.ts +36 -0
  557. package/template/src/stores/uiPreferenceStore.ts +34 -0
  558. package/template/src/styles/index.css +141 -0
  559. package/template/src/styles/theme.css +213 -0
  560. package/template/src/tenantWorkspace/TenantWorkspaceProvider.tsx +102 -0
  561. package/template/src/tenantWorkspace/index.ts +33 -0
  562. package/template/src/tenantWorkspace/store.ts +184 -0
  563. package/template/src/tenantWorkspace/switch.ts +206 -0
  564. package/template/src/tenantWorkspace/types.ts +155 -0
  565. package/template/src/vite-env.d.ts +20 -0
  566. package/template/stylelint.config.js +28 -0
  567. package/template/tests/integration/Application.test.tsx +269 -0
  568. package/template/tests/integration/layout/AppHeader.test.tsx +182 -0
  569. package/template/tests/integration/layout/AppSidebar.test.tsx +121 -0
  570. package/template/tests/integration/layout/__screenshots__/AppHeader.test.tsx/AppHeader-command-search-hides-the-duplicate-header-trigger-when-the-desktop-sidebar-collapses-1.png +0 -0
  571. package/template/tests/integration/router/__screenshots__/config.test.ts/route-tree-authentication-boundaries-exposes-only-scaffold-navigation-metadata-1.png +0 -0
  572. package/template/tests/integration/router/config.test.ts +123 -0
  573. package/template/tests/integration/router/interceptors.test.ts +100 -0
  574. package/template/tests/setup/accessibility.ts +25 -0
  575. package/template/tests/setup/runtimeConfig.ts +3 -0
  576. package/template/tests/unit/api/ApiError.test.ts +25 -0
  577. package/template/tests/unit/api/__screenshots__/authSession.test.ts/administrator-authentication-clears-the-session-if-a-refresh-identity-loses-administrator-access-1.png +0 -0
  578. package/template/tests/unit/api/__screenshots__/authSession.test.ts/administrator-authentication-creates-a-session-from-the-generated-login-response-for-an-admin-1.png +0 -0
  579. package/template/tests/unit/api/__screenshots__/authSession.test.ts/administrator-authentication-rejects-and-revokes-the-generated-login-result-for-an-ordinary-user-1.png +0 -0
  580. package/template/tests/unit/api/activity/ActivityProvider.test.tsx +131 -0
  581. package/template/tests/unit/api/activity/__screenshots__/transports.test.ts/activity-transport-adapters-polls-sequentially-and-advances-the-last-event-ID-1.png +0 -0
  582. package/template/tests/unit/api/activity/modelAndQuery.test.ts +144 -0
  583. package/template/tests/unit/api/activity/subscription.test.ts +103 -0
  584. package/template/tests/unit/api/activity/transports.test.ts +145 -0
  585. package/template/tests/unit/api/authClient.test.ts +110 -0
  586. package/template/tests/unit/api/authSession.test.ts +289 -0
  587. package/template/tests/unit/api/clients/configureApiClient.test.ts +198 -0
  588. package/template/tests/unit/api/demoAuthClient.test.ts +47 -0
  589. package/template/tests/unit/api/enums/access.test.ts +107 -0
  590. package/template/tests/unit/api/enums/catalog.test.ts +200 -0
  591. package/template/tests/unit/api/enums/query.test.ts +110 -0
  592. package/template/tests/unit/api/enums/useEnum.test.tsx +98 -0
  593. package/template/tests/unit/api/enums/useEnumCatalog.test.tsx +68 -0
  594. package/template/tests/unit/api/hooks/error.test.ts +168 -0
  595. package/template/tests/unit/api/hooks/request.test.ts +170 -0
  596. package/template/tests/unit/api/hooks/response.test.ts +46 -0
  597. package/template/tests/unit/api/metadata/MetadataProvider.test.tsx +102 -0
  598. package/template/tests/unit/api/parameters/catalog.test.ts +147 -0
  599. package/template/tests/unit/api/parameters/query.test.ts +78 -0
  600. package/template/tests/unit/api/parameters/useGlobalParameter.test.tsx +89 -0
  601. package/template/tests/unit/api/query/queryPolicy.test.ts +245 -0
  602. package/template/tests/unit/api/query/useAppQueryScope.test.tsx +74 -0
  603. package/template/tests/unit/auditLogs/auditLogHooks.test.tsx +194 -0
  604. package/template/tests/unit/auditLogs/auditLogs.test.ts +199 -0
  605. package/template/tests/unit/authentication/__screenshots__/authentication.test.ts/authentication-controller-completes-Step-up-callbacks-without-creating-a-second-login-result-1.png +0 -0
  606. package/template/tests/unit/authentication/__screenshots__/authentication.test.ts/authentication-controller-moves-from-challenge-to-completion-without-retaining-tokens-in-snapshot-1.png +0 -0
  607. package/template/tests/unit/authentication/authentication.test.ts +376 -0
  608. package/template/tests/unit/components/AppDialog.test.tsx +225 -0
  609. package/template/tests/unit/components/AppTable.test.tsx +129 -0
  610. package/template/tests/unit/components/AppTableLayoutTransition.test.ts +118 -0
  611. package/template/tests/unit/components/AppTableLocalization.test.ts +58 -0
  612. package/template/tests/unit/components/AppTableSensitiveData.test.ts +35 -0
  613. package/template/tests/unit/components/AppTableUpgrade.test.tsx +179 -0
  614. package/template/tests/unit/components/AppTableUpgradeCore.test.ts +258 -0
  615. package/template/tests/unit/components/BrandLogo.test.tsx +24 -0
  616. package/template/tests/unit/components/Can.test.tsx +80 -0
  617. package/template/tests/unit/components/Dialog.test.tsx +56 -0
  618. package/template/tests/unit/components/EnumPresentation.test.tsx +64 -0
  619. package/template/tests/unit/components/FilePreviewEngine.test.ts +51 -0
  620. package/template/tests/unit/components/JsonEditor.test.tsx +47 -0
  621. package/template/tests/unit/components/LocalizedSharedComponents.test.tsx +36 -0
  622. package/template/tests/unit/components/OverlayLayer.test.tsx +151 -0
  623. package/template/tests/unit/components/PageFeedback.test.tsx +143 -0
  624. package/template/tests/unit/components/PageForm.test.tsx +272 -0
  625. package/template/tests/unit/components/PageFormCore.test.ts +74 -0
  626. package/template/tests/unit/components/PasswordInput.test.tsx +105 -0
  627. package/template/tests/unit/components/ScaffoldComponents.test.tsx +64 -0
  628. package/template/tests/unit/components/SensitiveData.test.tsx +151 -0
  629. package/template/tests/unit/components/StatusBadge.test.tsx +36 -0
  630. package/template/tests/unit/components/TableComponent.test.tsx +644 -0
  631. package/template/tests/unit/components/TableCore.test.ts +145 -0
  632. package/template/tests/unit/components/ThemeAccessibility.test.tsx +27 -0
  633. package/template/tests/unit/components/__screenshots__/BatchOperationDialog.test.tsx/confirms-a-batch-action-and-presents-partial-failure-details-1.png +0 -0
  634. package/template/tests/unit/components/__screenshots__/PageForm.test.tsx/PageForm-writes-uploaded-values-through-the-public-file-field-and-resets-dirty-state-1.png +0 -0
  635. package/template/tests/unit/components/__screenshots__/PasswordInput.test.tsx/PasswordInput-toggles-the-password-visibility-when-the-show-password-button-is-clicked-1.png +0 -0
  636. package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-pins-trailing-action-columns-and-removes-their-header-menu-by-default-1.png +0 -0
  637. package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-renders-shadcn-components-through-cellComponent-1.png +0 -0
  638. package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-renders-the-toolbar-without-a-bottom-divider-1.png +0 -0
  639. package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-resyncs-adaptive-height-after-a-column-resize-changes-wrapped-row-height-1.png +0 -0
  640. package/template/tests/unit/config/RuntimeConfigErrorPage.test.tsx +23 -0
  641. package/template/tests/unit/config/appConfig.test.ts +98 -0
  642. package/template/tests/unit/config/appTableContracts.test.mjs +120 -0
  643. package/template/tests/unit/config/bundleBudget.test.mjs +190 -0
  644. package/template/tests/unit/config/componentGovernance.test.mjs +156 -0
  645. package/template/tests/unit/config/deployConfig.test.mjs +211 -0
  646. package/template/tests/unit/config/eslintConfig.test.mjs +101 -0
  647. package/template/tests/unit/config/featureBoundaries.test.mjs +126 -0
  648. package/template/tests/unit/config/npmPackage.test.mjs +37 -0
  649. package/template/tests/unit/config/releaseArtifact.test.mjs +105 -0
  650. package/template/tests/unit/config/runtimeConfig.test.ts +225 -0
  651. package/template/tests/unit/config/scaffoldCheck.test.mjs +53 -0
  652. package/template/tests/unit/config/scaffoldFeature.test.mjs +177 -0
  653. package/template/tests/unit/config/scaffoldInit.test.mjs +218 -0
  654. package/template/tests/unit/config/scaffoldProject.test.mjs +378 -0
  655. package/template/tests/unit/config/scaffoldTransaction.test.mjs +77 -0
  656. package/template/tests/unit/config/viteConfig.test.mjs +371 -0
  657. package/template/tests/unit/context/ThemeProvider.test.tsx +108 -0
  658. package/template/tests/unit/context/UnsavedChangesProvider.test.tsx +94 -0
  659. package/template/tests/unit/context/__screenshots__/ThemeProvider.test.tsx/ThemeProvider-uses-the-neutral-black-palette-for-the-app-and-scoped-table-theme-1.png +0 -0
  660. package/template/tests/unit/context/applicationScope.test.ts +62 -0
  661. package/template/tests/unit/dataMasking/dataMasking.test.ts +95 -0
  662. package/template/tests/unit/featureFlags/featureFlags.test.ts +169 -0
  663. package/template/tests/unit/featureFlags/useFeatureFlag.test.tsx +108 -0
  664. package/template/tests/unit/features/FeatureLocalization.test.tsx +54 -0
  665. package/template/tests/unit/features/RouteError.test.tsx +40 -0
  666. package/template/tests/unit/features/auth/signIn/UserAuthForm.test.tsx +79 -0
  667. package/template/tests/unit/features/auth/signIn/__screenshots__/UserAuthForm.test.tsx/UserAuthForm-passes-validated-values-to-onSubmit-1.png +0 -0
  668. package/template/tests/unit/features/auth/signIn/__screenshots__/UserAuthForm.test.tsx/UserAuthForm-shows-validation-messages-when-submitting-an-empty-form-1.png +0 -0
  669. package/template/tests/unit/files/fileHooks.test.tsx +130 -0
  670. package/template/tests/unit/files/files.test.ts +112 -0
  671. package/template/tests/unit/lib/accessControl.test.ts +69 -0
  672. package/template/tests/unit/locale/locale.test.tsx +90 -0
  673. package/template/tests/unit/observability/browser.test.ts +48 -0
  674. package/template/tests/unit/observability/observer.test.ts +115 -0
  675. package/template/tests/unit/optionalEditors/__screenshots__/useOptionalEditor.test.tsx/useOptionalEditor-fails-permission-precheck-before-loading-the-project-SDK-1.png +0 -0
  676. package/template/tests/unit/optionalEditors/__screenshots__/useOptionalEditor.test.tsx/useOptionalEditor-mounts-a-route-scoped-SDK-into-the-dedicated-host-with-permission-1.png +0 -0
  677. package/template/tests/unit/optionalEditors/optionalEditors.test.ts +313 -0
  678. package/template/tests/unit/optionalEditors/useOptionalEditor.test.tsx +141 -0
  679. package/template/tests/unit/realtimeCollaboration/collaboration.test.ts +240 -0
  680. package/template/tests/unit/realtimeCollaboration/useRealtimeCollaboration.test.tsx +115 -0
  681. package/template/tests/unit/reporting/reporting.test.ts +195 -0
  682. package/template/tests/unit/reporting/reportingHooks.test.tsx +203 -0
  683. package/template/tests/unit/router/authLifecycle.test.ts +55 -0
  684. package/template/tests/unit/router/navigation.test.ts +55 -0
  685. package/template/tests/unit/router/redirects.test.ts +22 -0
  686. package/template/tests/unit/scaffoldFeatureTemplate/featureTemplate.test.ts +42 -0
  687. package/template/tests/unit/scaffoldFeatureTemplate/publicContract.test.ts +28 -0
  688. package/template/tests/unit/scaffoldFeatureTemplate/queries.test.tsx +289 -0
  689. package/template/tests/unit/stores/authStore.test.ts +128 -0
  690. package/template/tests/unit/stores/uiPreferenceStore.test.ts +56 -0
  691. package/template/tests/unit/tenantWorkspace/tenantWorkspace.test.tsx +261 -0
  692. package/template/tools/bundle/budgets.json +48 -0
  693. package/template/tools/bundle/check.mjs +307 -0
  694. package/template/tools/component-governance/check.mjs +703 -0
  695. package/template/tools/component-governance/manifest.json +112 -0
  696. package/template/tools/deployment/browser-smoke.mjs +76 -0
  697. package/template/tools/deployment/browser-smoke.sh +141 -0
  698. package/template/tools/openapi/generate.mjs +268 -0
  699. package/template/tools/openapi/templates/README.md +14 -0
  700. package/template/tools/openapi/templates/base/README.md +7 -0
  701. package/template/tools/openapi/templates/base/data-contracts.eta +44 -0
  702. package/template/tools/openapi/templates/base/http-client.eta +3 -0
  703. package/template/tools/openapi/templates/base/http-clients/axios-http-client.eta +132 -0
  704. package/template/tools/openapi/templates/base/http-clients/fetch-http-client.eta +220 -0
  705. package/template/tools/openapi/templates/base/route-docs.eta +31 -0
  706. package/template/tools/openapi/templates/base/route-name.eta +43 -0
  707. package/template/tools/openapi/templates/base/route-type.eta +22 -0
  708. package/template/tools/openapi/templates/default/README.md +7 -0
  709. package/template/tools/openapi/templates/default/api.eta +67 -0
  710. package/template/tools/openapi/templates/default/http-client.eta +137 -0
  711. package/template/tools/openapi/templates/default/procedure-call.eta +99 -0
  712. package/template/tools/openapi/templates/default/route-docs.eta +40 -0
  713. package/template/tools/openapi/templates/default/route-types.eta +28 -0
  714. package/template/tools/openapi/templates/modular/README.md +7 -0
  715. package/template/tools/openapi/templates/modular/api.eta +28 -0
  716. package/template/tools/openapi/templates/modular/procedure-call.eta +99 -0
  717. package/template/tools/openapi/templates/modular/route-types.eta +18 -0
  718. package/template/tools/release/artifact.mjs +258 -0
  719. package/template/tools/scaffold/add-capability.mjs +409 -0
  720. package/template/tools/scaffold/capability-catalog.json +163 -0
  721. package/template/tools/scaffold/check.mjs +326 -0
  722. package/template/tools/scaffold/create-feature.mjs +444 -0
  723. package/template/tools/scaffold/create-project.mjs +482 -0
  724. package/template/tools/scaffold/init.example.json +64 -0
  725. package/template/tools/scaffold/init.mjs +419 -0
  726. package/template/tools/scaffold/lockfile.mjs +193 -0
  727. package/template/tools/scaffold/templates/feature/index.ts +19 -0
  728. package/template/tools/scaffold/templates/feature/model.ts +142 -0
  729. package/template/tools/scaffold/templates/feature/queries.ts +154 -0
  730. package/template/tools/scaffold/templates/feature/repository.ts +206 -0
  731. package/template/tools/scaffold/templates/feature/types.ts +168 -0
  732. package/template/tools/scaffold/workspace-transaction.mjs +111 -0
  733. package/template/tsconfig.app.json +31 -0
  734. package/template/tsconfig.json +12 -0
  735. package/template/tsconfig.node.json +24 -0
  736. package/template/vite.config.ts +121 -0
@@ -0,0 +1,272 @@
1
+ import type { TablePaginationConfig } from '../pagination'
2
+ import type { PreferenceStore } from '../preference'
3
+ import {
4
+ resolveTableSearchConditions,
5
+ type TableSearchCondition,
6
+ type TableSearchResetBehavior,
7
+ } from '../search'
8
+ import type { TableRowSelectionConfig } from '../selection'
9
+ import {
10
+ resolveTableKey,
11
+ type TableDensity,
12
+ type TableFeedbackOptions,
13
+ type TableLoadingMaskMode,
14
+ type TableRow,
15
+ type TableTheme,
16
+ } from '../shared'
17
+ import type { TableExportConfig } from '../summary'
18
+ import type { GridSettings, TableHeight } from '../table'
19
+ import type { TableToolbarButton } from '../toolbar'
20
+ import type { ResolvedTableComponentProps, TableComponentProps } from './types'
21
+
22
+ /**
23
+ * AppTable 配置解析器使用的完整默认值合同。
24
+ *
25
+ * 数组和对象使用工厂函数,保证每个表格实例拥有独立引用;标量值可由所有实例共享。
26
+ */
27
+ export interface TableComponentDefaults {
28
+ /** 创建实例的初始行数据,默认返回新的空数组。 */
29
+ data: <T extends TableRow>() => T[]
30
+ /** 创建搜索条件集合,默认返回新的空数组。 */
31
+ searchConditions: () => TableSearchCondition[]
32
+ /** 点击重置后是否立即查询,默认 `query`。 */
33
+ searchResetBehavior: TableSearchResetBehavior
34
+ /** 创建工具栏业务按钮集合,默认返回新的空数组。 */
35
+ buttons: <T extends TableRow>() => TableToolbarButton<T>[]
36
+ /** 配置查询处理器后是否在挂载时自动查询,默认 `true`。 */
37
+ autoQuery: boolean
38
+ /** 创建行选择交互选项,默认返回新的空配置。 */
39
+ selectionOptions: <T extends TableRow>() => TableRowSelectionConfig<T>
40
+ /** 是否显示左侧业务行号,默认 `true`。 */
41
+ showIndex: boolean
42
+ /** 业务列未指定宽度时使用的列宽,默认 `120`。 */
43
+ defaultColumnWidth: number | string
44
+ /** 是否显示隔行底色,默认 `true`。 */
45
+ striped: boolean
46
+ /** 是否高亮当前点击行,默认 `true`。 */
47
+ highlightCurrentRow: boolean
48
+ /** 普通列表头菜单的显示方式,默认 `always`。 */
49
+ headerMenuTrigger: 'always' | 'hover' | 'hidden'
50
+ /** 是否自动冻结逻辑起始侧的连续操作列,默认 `false`。 */
51
+ autoFreezeStartActions: boolean
52
+ /** 是否自动冻结逻辑结束侧的连续操作列,默认 `true`。 */
53
+ autoFreezeEndActions: boolean
54
+ /** 是否汇总框选区域中的数值单元格,默认 `true`。 */
55
+ summarySelected: boolean
56
+ /** 是否允许单次编辑事务修改多个单元格,默认 `false`。 */
57
+ allowBulkEdit: boolean
58
+ /** 查询、筛选或翻页后是否保留选择,默认 `false`。 */
59
+ keepSelection: boolean
60
+ /** 是否渲染工具栏,默认 `true`。 */
61
+ showToolbar: boolean
62
+ /** 是否显示列设置入口,默认 `true`。 */
63
+ showColumnEditor: boolean
64
+ /** 是否显示密度切换入口,默认 `true`。 */
65
+ showDensityControl: boolean
66
+ /** 创建分页配置,默认返回启用标准分页的空配置。 */
67
+ pagination: () => TablePaginationConfig
68
+ /** 创建导出配置,默认返回启用标准导出的空配置。 */
69
+ exportOptions: <T extends TableRow>() => TableExportConfig<T>
70
+ /** 创建空状态和查询错误反馈配置,默认返回新的空配置。 */
71
+ feedback: () => TableFeedbackOptions
72
+ /** 查询期间的表格遮罩策略,默认 `initial`。 */
73
+ loadingMask: TableLoadingMaskMode
74
+ /** 创建透传给 Handsontable 的原生设置,默认返回新的空配置。 */
75
+ settings: () => GridSettings
76
+ /** 表格主题,默认 `auto`,跟随应用明暗主题。 */
77
+ theme: TableTheme
78
+ /** 表格行高密度,默认 `comfortable`。 */
79
+ density: TableDensity
80
+ /** 数字、日期、汇总和导出的区域语言,默认 `zh-CN`。 */
81
+ locale: string
82
+ /** 创建 Handsontable 许可证 key;应用入口会覆盖默认评估标识。 */
83
+ licenseKey: () => string
84
+ /** 网格高度策略,默认按内容收缩。 */
85
+ height: TableHeight
86
+ }
87
+
88
+ interface TableComponentResolverDefaults<T extends TableRow> {
89
+ /** 当前表格实例独立持有的默认业务行数组。 */
90
+ data: T[]
91
+ /** 当前 tableKey 没有偏好时依次尝试迁移的历史 key。 */
92
+ legacyTableKeys: string[]
93
+ /** 当前实例独立持有的 Handsontable 原生设置。 */
94
+ settings: GridSettings
95
+ /** 已创建但尚未合并业务配置的默认搜索条件。 */
96
+ searchConditions: TableSearchCondition[]
97
+ /** 当前实例独立持有的空状态和错误反馈配置。 */
98
+ feedback: TableFeedbackOptions
99
+ /** 当前实例独立持有的行选择交互配置。 */
100
+ selectionOptions: TableRowSelectionConfig<T>
101
+ /** 当前实例独立持有的工具栏业务按钮。 */
102
+ buttons: TableToolbarButton<T>[]
103
+ /** 当前实例独立持有的分页配置。 */
104
+ pagination: TablePaginationConfig
105
+ /** 当前实例独立持有的导出配置。 */
106
+ exportOptions: TableExportConfig<T>
107
+ }
108
+
109
+ interface TableComponentResolverCache {
110
+ /** 上次解析时使用的搜索条件数组引用。 */
111
+ searchConditionsSource?: readonly TableSearchCondition[]
112
+ /** 上次解析时使用的搜索默认值对象引用。 */
113
+ searchDefaultsSource?: unknown
114
+ /** 根据条件与默认值解析后的稳定搜索条件数组。 */
115
+ searchConditions?: TableSearchCondition[]
116
+ /** 上次解析时使用的偏好配置引用。 */
117
+ preferenceSource?: unknown
118
+ /** 归一化后的偏好存储配置;`false` 表示禁用偏好。 */
119
+ preference:
120
+ | false
121
+ | {
122
+ /** 实际执行偏好读写的存储实现。 */
123
+ store?: PreferenceStore
124
+ /** 用户、租户或角色维度的偏好隔离标识。 */
125
+ userScope?: string
126
+ }
127
+ }
128
+
129
+ const createResolverDefaults = <T extends TableRow>(
130
+ componentDefaults: TableComponentDefaults
131
+ ): TableComponentResolverDefaults<T> => ({
132
+ data: componentDefaults.data<T>(),
133
+ legacyTableKeys: [],
134
+ settings: componentDefaults.settings(),
135
+ searchConditions: componentDefaults.searchConditions(),
136
+ feedback: componentDefaults.feedback(),
137
+ selectionOptions: componentDefaults.selectionOptions<T>(),
138
+ buttons: componentDefaults.buttons<T>(),
139
+ pagination: componentDefaults.pagination(),
140
+ exportOptions: componentDefaults.exportOptions<T>(),
141
+ })
142
+
143
+ /** 将业务分组配置不可变地解析为适配器内部运行态。 */
144
+ const resolveWithDefaults = <T extends TableRow>(
145
+ { tableKey, controller, config }: Readonly<TableComponentProps<T>>,
146
+ componentDefaults: TableComponentDefaults,
147
+ defaults: TableComponentResolverDefaults<T>,
148
+ cache: TableComponentResolverCache
149
+ ): ResolvedTableComponentProps<T> => {
150
+ const table = config.table
151
+ const search = config.search === false ? null : (config.search ?? {})
152
+ const query = config.query === false ? null : (config.query ?? {})
153
+ const editing = config.editing === false ? null : (config.editing ?? {})
154
+ const selection =
155
+ config.selection === false || config.selection === undefined
156
+ ? null
157
+ : config.selection
158
+ const toolbar = config.toolbar === false ? null : (config.toolbar ?? {})
159
+ const reporting = config.reporting === false ? null : (config.reporting ?? {})
160
+ const appearance = config.appearance ?? {}
161
+ const panels = config.panels === false ? null : (config.panels ?? {})
162
+ const preference = config.preference
163
+ const searchConditionsSource = search?.conditions ?? defaults.searchConditions
164
+ if (
165
+ cache.searchConditionsSource !== searchConditionsSource ||
166
+ cache.searchDefaultsSource !== search?.defaults
167
+ ) {
168
+ cache.searchConditionsSource = searchConditionsSource
169
+ cache.searchDefaultsSource = search?.defaults
170
+ cache.searchConditions = resolveTableSearchConditions(
171
+ searchConditionsSource,
172
+ {},
173
+ search?.defaults
174
+ )
175
+ }
176
+ if (cache.preferenceSource !== preference) {
177
+ cache.preferenceSource = preference
178
+ cache.preference =
179
+ preference === false
180
+ ? false
181
+ : { store: preference?.store, userScope: preference?.userScope }
182
+ }
183
+ return {
184
+ tableKey: resolveTableKey(tableKey),
185
+ controller,
186
+ runtime: config.runtime?.handsontable,
187
+ legacyTableKeys:
188
+ preference === false
189
+ ? defaults.legacyTableKeys
190
+ : (preference?.legacyKeys ?? defaults.legacyTableKeys),
191
+ preference: cache.preference,
192
+ columns: table.columns,
193
+ dataConfigured: table.data !== undefined,
194
+ data: table.data ?? defaults.data,
195
+ settings: table.settings ?? defaults.settings,
196
+ headerGroups: table.headerGroups,
197
+ autoMerge: table.autoMerge,
198
+ mergeCells: table.mergeCells,
199
+ showIndex: table.showIndex ?? componentDefaults.showIndex,
200
+ striped: table.striped ?? componentDefaults.striped,
201
+ highlightCurrentRow:
202
+ table.highlightCurrentRow ?? componentDefaults.highlightCurrentRow,
203
+ headerMenuTrigger:
204
+ table.headerMenuTrigger ?? componentDefaults.headerMenuTrigger,
205
+ autoFreezeStartActions:
206
+ table.autoFreezeStartActions ?? componentDefaults.autoFreezeStartActions,
207
+ fixedColumnsEnd: table.fixedColumnsEnd,
208
+ autoFreezeEndActions:
209
+ table.autoFreezeEndActions ?? componentDefaults.autoFreezeEndActions,
210
+ defaultColumnWidth:
211
+ table.defaultColumnWidth ?? componentDefaults.defaultColumnWidth,
212
+ height: table.height ?? componentDefaults.height,
213
+ showSearch: search !== null,
214
+ searchConditions: cache.searchConditions!,
215
+ searchResetBehavior:
216
+ search?.resetBehavior ?? componentDefaults.searchResetBehavior,
217
+ searchLayout: search?.layout,
218
+ beforeSearchSubmit: search?.beforeSubmit,
219
+ query: query?.handler,
220
+ autoQuery: query ? (query.auto ?? componentDefaults.autoQuery) : false,
221
+ loadingMask: query?.loadingMask ?? componentDefaults.loadingMask,
222
+ feedback: query ? (query.feedback ?? defaults.feedback) : false,
223
+ commitChanges: editing?.commitChanges,
224
+ getRowVersion: editing?.getRowVersion,
225
+ rowKey: editing?.rowKey,
226
+ allowBulkEdit: editing?.allowBulkEdit ?? componentDefaults.allowBulkEdit,
227
+ resolveCell: editing?.resolveCell,
228
+ selectable: selection?.enabled ?? Boolean(selection),
229
+ selectionOptions: selection?.options ?? defaults.selectionOptions,
230
+ keepSelection:
231
+ selection?.keepAcrossQuery ?? componentDefaults.keepSelection,
232
+ summarySelected:
233
+ selection?.summarySelectedCells ?? componentDefaults.summarySelected,
234
+ getQuerySelectionToken: selection?.getQueryToken,
235
+ showToolbar: toolbar
236
+ ? (toolbar.visible ?? componentDefaults.showToolbar)
237
+ : false,
238
+ buttons: toolbar?.buttons ?? defaults.buttons,
239
+ showColumnEditor:
240
+ toolbar?.columnEditor ?? componentDefaults.showColumnEditor,
241
+ showDensityControl:
242
+ toolbar?.densityControl ?? componentDefaults.showDensityControl,
243
+ pagination: config.pagination ?? defaults.pagination,
244
+ summary: reporting?.summary ?? false,
245
+ exportOptions: reporting
246
+ ? (reporting.export ?? defaults.exportOptions)
247
+ : false,
248
+ density: appearance.density ?? componentDefaults.density,
249
+ theme: appearance.theme ?? componentDefaults.theme,
250
+ locale: appearance.locale ?? componentDefaults.locale,
251
+ timeZone: appearance.timeZone,
252
+ bottomPanel: panels === null ? false : panels.bottom,
253
+ rightPanel: panels === null ? false : panels.right,
254
+ rowDetailPanel: panels === null ? false : panels.rowDetail,
255
+ licenseKey: config.runtime?.licenseKey ?? componentDefaults.licenseKey(),
256
+ }
257
+ }
258
+
259
+ /**
260
+ * 创建组件实例级配置解析器。
261
+ *
262
+ * 缺省集合与对象在同一组件生命周期内保持引用稳定,避免任意配置变化被误判为
263
+ * selection、feedback 或 Handsontable settings 变化;不同表实例仍拥有独立默认值。
264
+ */
265
+ export const createTableEnginePropsResolver = <T extends TableRow>(
266
+ componentDefaults: TableComponentDefaults
267
+ ) => {
268
+ const defaults = createResolverDefaults<T>(componentDefaults)
269
+ const cache: TableComponentResolverCache = { preference: {} }
270
+ return (props: Readonly<TableComponentProps<T>>) =>
271
+ resolveWithDefaults(props, componentDefaults, defaults, cache)
272
+ }
@@ -0,0 +1,384 @@
1
+ import type { TableBottomPanelConfig } from '../bottom'
2
+ import type { TableColumn } from '../columns'
3
+ import type { TablePaginationConfig } from '../pagination'
4
+ import type { PreferenceStore } from '../preference'
5
+ import type { TableRightPanelConfig } from '../right'
6
+ import type {
7
+ TableQuery,
8
+ TableQueryParams,
9
+ TableSearchConditionDefaults,
10
+ TableSearchCondition,
11
+ TableSearchResetBehavior,
12
+ TableSearchSubmitInterceptor,
13
+ } from '../search'
14
+ import type { TableRowSelectionConfig } from '../selection'
15
+ import type {
16
+ TableDensity,
17
+ TableFeedbackOptions,
18
+ TableKeyOf,
19
+ TableLoadingMaskMode,
20
+ TableRow,
21
+ TableTheme,
22
+ } from '../shared'
23
+ import type { TableExportConfig, TableSummaryConfig } from '../summary'
24
+ import type {
25
+ ChangeSetHandler,
26
+ GridSettings,
27
+ TableAutoMergeConfig,
28
+ TableCellMetaContext,
29
+ TableCellMetaResult,
30
+ TableController,
31
+ TableHeaderGroup,
32
+ TableMergeCellsResolver,
33
+ TableHeight,
34
+ TableRuntimeOptions,
35
+ } from '../table'
36
+ import type { TableToolbarButton } from '../toolbar'
37
+
38
+ /** 表格网格本身的配置,不包含筛选区、远程查询和工具栏。 */
39
+ export interface TableGridConfig<T extends TableRow = TableRow> {
40
+ /**
41
+ * 表格的完整列定义。每列通过稳定 key 对应后端 DTO 字段,并在这里配置标题、宽度、
42
+ * 显示、编辑、校验、格式化和操作按钮等行为。
43
+ */
44
+ columns: TableColumn<T>[]
45
+ /** 本地初始行数据;远程查询成功后会由查询结果替换,默认空数组。 */
46
+ data?: T[]
47
+ /** 透传的 Handsontable 原生设置;组件托管的关键设置最终仍由 engine 覆盖。 */
48
+ settings?: GridSettings
49
+ /** 使用稳定列 key 声明多级表头分组,并可开启官方折叠控件。 */
50
+ headerGroups?: TableHeaderGroup[]
51
+ /** 按相邻相同字段自动纵向合并;false 表示显式关闭。 */
52
+ autoMerge?: false | TableAutoMergeConfig<T>
53
+ /** 任意动态合并纯函数;声明后优先于 autoMerge 和原生 settings.mergeCells。 */
54
+ mergeCells?: false | TableMergeCellsResolver<T>
55
+ /** 是否显示左侧业务行号,默认 true。 */
56
+ showIndex?: boolean
57
+ /** 是否显示隔行底色,默认 true。 */
58
+ striped?: boolean
59
+ /** 是否高亮当前点击行,默认 true。 */
60
+ highlightCurrentRow?: boolean
61
+ /** 普通列表头菜单的显示方式,默认 always;操作列和选择列不会显示菜单。 */
62
+ headerMenuTrigger?: 'always' | 'hover' | 'hidden'
63
+ /** 是否自动冻结逻辑起始侧连续操作列,默认 false。 */
64
+ autoFreezeStartActions?: boolean
65
+ /** 固定逻辑结束侧的可视列数量;显式传 0 会关闭尾部自动冻结。 */
66
+ fixedColumnsEnd?: number
67
+ /** 未设置 fixedColumnsEnd 时是否自动冻结尾部连续操作列,默认 true。 */
68
+ autoFreezeEndActions?: boolean
69
+ /** 普通业务列未声明 width 时的统一宽度,列自身配置和用户偏好优先。 */
70
+ defaultColumnWidth?: number | string
71
+ /** 表格网格高度策略:按内容收缩、填满父容器或固定像素,默认 content。 */
72
+ height?: TableHeight
73
+ }
74
+
75
+ /** 页面筛选区配置;条件和布局偏好不与远程查询函数混在一起。 */
76
+ export interface TableSearchConfig {
77
+ /** 查询条件声明;数组顺序作为首次展示顺序,并可由用户偏好覆盖。 */
78
+ conditions?: TableSearchCondition[]
79
+ /** 为同一张表的文本匹配和日期范围提供统一默认值,单个 condition 配置优先。 */
80
+ defaults?: TableSearchConditionDefaults
81
+ /** 筛选区标签宽度、折叠高度和展开能力。 */
82
+ layout?: TableSearchLayoutConfig
83
+ /** 默认 query;clear 可保留旧版“重置只清空条件”的业务行为。 */
84
+ resetBehavior?: TableSearchResetBehavior
85
+ /** 可取消或改写搜索按钮产生的查询;返回 false 时业务可完全接管。 */
86
+ beforeSubmit?: TableSearchSubmitInterceptor
87
+ }
88
+
89
+ export interface TableSearchLayoutConfig {
90
+ /** 筛选表单 label 宽度,默认 auto,长中文标题不会被固定 64px 截断。 */
91
+ labelWidth?: number | string
92
+ /** 是否允许展开溢出的查询条件,默认 true。 */
93
+ expandable?: boolean
94
+ /** 折叠状态字段区高度;用于判断真实溢出并决定是否显示展开入口。 */
95
+ collapsedHeight?: number | string
96
+ /** 展开浮层最大高度,超出后在筛选区内部滚动。 */
97
+ maxExpandedHeight?: number
98
+ }
99
+
100
+ /** 数据查询配置,独立于筛选区 UI。 */
101
+ export interface TableDataQueryConfig<T extends TableRow = TableRow> {
102
+ /** 本地或远程查询函数;收到分页、条件、排序及可取消请求上下文。 */
103
+ handler?: TableQuery<T>
104
+ /** 挂载完成后是否自动执行首次查询,配置 query 时默认 true。 */
105
+ auto?: boolean
106
+ /** 查询期间的遮罩策略;默认 initial,仅首次空数据查询使用整表遮罩。 */
107
+ loadingMask?: TableLoadingMaskMode
108
+ /** 空状态、错误通知和重试文案;false 表示关闭组件内反馈 UI。 */
109
+ feedback?: false | TableFeedbackOptions
110
+ }
111
+
112
+ export interface TableEditingConfig<T extends TableRow = TableRow> {
113
+ /** 稳定行主键字段,供选择、脏数据、校验和冲突定位使用,默认 id。 */
114
+ rowKey?: TableKeyOf<T>
115
+ /** 显式保存回调;未提供时表格只在本地维护修改状态。 */
116
+ commitChanges?: ChangeSetHandler<T>
117
+ /** 返回后端乐观锁版本,保存冲突时用于识别过期修改。 */
118
+ getRowVersion?: (row: T) => string | number | undefined
119
+ /** 是否允许一次粘贴、填充或编辑事务修改多个单元格,默认 false。 */
120
+ allowBulkEdit?: boolean
121
+ /** 按行列上下文动态补充只读、renderer 和 className 等单元格元数据。 */
122
+ resolveCell?: (
123
+ context: TableCellMetaContext<T>
124
+ ) => TableCellMetaResult | undefined
125
+ }
126
+
127
+ export interface TableSelectionConfig<T extends TableRow = TableRow> {
128
+ /** 是否显示选择列并启用行选择状态机,默认 false。 */
129
+ enabled?: boolean
130
+ /** 多选、页全选、点击行、拖动范围和禁选行等选择交互策略。 */
131
+ options?: TableRowSelectionConfig<T>
132
+ /** 查询、筛选或翻页后是否保留显式选择,默认 false。 */
133
+ keepAcrossQuery?: boolean
134
+ /** 是否在单元格框选结束后计算数字合计,默认 true。 */
135
+ summarySelectedCells?: boolean
136
+ /** 为“选择全部匹配数据”生成后端不可变查询令牌。 */
137
+ getQueryToken?: TableQuerySelectionTokenProvider
138
+ }
139
+
140
+ export interface TableQuerySelectionTokenContext {
141
+ /** 当前令牌请求;查询切换、配置切换或组件卸载时会被取消。 */
142
+ signal: AbortSignal
143
+ /** 发起请求时的不可变查询签名,服务端可用于诊断。 */
144
+ querySignature: string
145
+ }
146
+
147
+ export type TableQuerySelectionTokenProvider = (
148
+ params: TableQueryParams,
149
+ context?: TableQuerySelectionTokenContext
150
+ ) => string | Promise<string>
151
+
152
+ export interface TableToolbarConfig<T extends TableRow = TableRow> {
153
+ /** 是否显示工具栏,默认 true;将 toolbar 设为 false 可整体关闭。 */
154
+ visible?: boolean
155
+ /** 左侧业务操作按钮,回调会收到已加载的选中行和完整选择状态。 */
156
+ buttons?: TableToolbarButton<T>[]
157
+ /** 是否显示列显隐、排序和冻结设置入口,默认 true。 */
158
+ columnEditor?: boolean
159
+ /** 是否显示表格密度切换入口,默认 true。 */
160
+ densityControl?: boolean
161
+ }
162
+
163
+ export interface TableReportingConfig<T extends TableRow = TableRow> {
164
+ /** 表格底部汇总行配置;false 表示不创建汇总能力。 */
165
+ summary?: TableSummaryConfig<T> | false
166
+ /** CSV/XLSX 导出配置;false 表示不显示导出入口。 */
167
+ export?: TableExportConfig<T> | false
168
+ }
169
+
170
+ export interface TableAppearanceConfig {
171
+ /** 初始行高密度,已保存的用户偏好优先;默认 comfortable。 */
172
+ density?: TableDensity
173
+ /** Handsontable 主题或实例级主题覆盖;默认 auto 跟随页面暗黑模式。 */
174
+ theme?: TableTheme
175
+ /** 数字、日期、汇总和导出共享的区域语言,默认 zh-CN。 */
176
+ locale?: string
177
+ /** 日期显示、汇总和导出共享的 IANA 时区。 */
178
+ timeZone?: string
179
+ }
180
+
181
+ export type TableRowDetailPlacement = 'bottom' | 'right'
182
+
183
+ /** 行详情面板只描述打开策略,具体内容统一由 `detail` slot 提供。 */
184
+ export interface TableRowDetailPanelConfig {
185
+ /** 旧版默认从表格底部展开;业务需要时可切换为右侧。 */
186
+ placement?: TableRowDetailPlacement
187
+ /** 默认双击任意数据单元格打开;设为 false 后仅允许命令式打开。 */
188
+ openOnDoubleClick?: boolean
189
+ /** 详情面板标题,默认“详情”。 */
190
+ title?: string
191
+ /** 是否在面板标题栏显示关闭按钮,默认 true。 */
192
+ closable?: boolean
193
+ }
194
+
195
+ export interface TablePanelsConfig {
196
+ /** 表格底部工作区;false 表示不渲染。 */
197
+ bottom?: false | TableBottomPanelConfig
198
+ /** 表格右侧工作区;false 表示不渲染。 */
199
+ right?: false | TableRightPanelConfig
200
+ /** 行详情的打开位置与触发方式。 */
201
+ rowDetail?: false | TableRowDetailPanelConfig
202
+ }
203
+
204
+ export interface TablePreferenceConfig {
205
+ /** 用户偏好存储实现;默认使用浏览器本地存储。挂载后变更需通过 key 重建组件。 */
206
+ store?: PreferenceStore
207
+ /** 偏好命名空间中的用户隔离标识;属于实例身份,挂载后不可热切换。 */
208
+ userScope?: string
209
+ /** 当前 tableKey 无数据时按顺序尝试迁移的历史 key;仅在首次加载时读取。 */
210
+ legacyKeys?: string[]
211
+ }
212
+
213
+ /** 业务页面唯一配置对象;每个一级字段对应一个独立功能区域。 */
214
+ export interface TableConfiguration<T extends TableRow = TableRow> {
215
+ /** 网格、列和数据配置;这是唯一必填的功能域。 */
216
+ table: TableGridConfig<T>
217
+ /** 筛选区配置;false 表示不渲染筛选区。 */
218
+ search?: false | TableSearchConfig
219
+ /** 查询流程配置;false 表示仅使用本地 data。 */
220
+ query?: false | TableDataQueryConfig<T>
221
+ /** 编辑、保存、校验身份和批量修改策略;false 表示关闭显式编辑事务。 */
222
+ editing?: false | TableEditingConfig<T>
223
+ /** 行选择配置;false 或省略表示不显示选择列。 */
224
+ selection?: false | TableSelectionConfig<T>
225
+ /** 工具栏配置;false 表示不渲染工具栏。 */
226
+ toolbar?: false | TableToolbarConfig<T>
227
+ /** 分页配置;false 只隐藏分页交互,数据加载策略仍为 page。 */
228
+ pagination?: false | TablePaginationConfig
229
+ /** 汇总和导出配置;false 表示关闭整个报表域。 */
230
+ reporting?: false | TableReportingConfig<T>
231
+ /** 密度、主题、区域语言和时区配置。 */
232
+ appearance?: TableAppearanceConfig
233
+ /** 底部、右侧及行详情工作区配置;false 表示不渲染扩展面板。 */
234
+ panels?: false | TablePanelsConfig
235
+ /** 用户个性化存储和旧 key 迁移配置;false 表示禁用偏好持久化。 */
236
+ preference?: false | TablePreferenceConfig
237
+ /** 仅承载 Handsontable 运行时模块和许可证,不放业务功能配置。 */
238
+ runtime?: {
239
+ /** 项目自定义 Handsontable 扩展模块;官方模块由 engine 统一完整注册。 */
240
+ handsontable?: TableRuntimeOptions
241
+ /** Handsontable 许可证 key;省略时使用评估标识,商业生产环境必须由应用显式注入。 */
242
+ licenseKey?: string
243
+ }
244
+ }
245
+
246
+ /** 框架适配组件公开 Props:实例身份与分组配置分离。 */
247
+ export interface TableComponentProps<T extends TableRow = TableRow> {
248
+ /** 稳定实例身份,用于偏好、缓存、查询令牌和诊断;同一页面必须唯一。 */
249
+ tableKey: string
250
+ /** 外部创建的纯 JS 控制器;属于实例身份,挂载后变更需通过框架实例 key 重建。 */
251
+ controller?: TableController<T>
252
+ /**
253
+ * 外层布局正在连续改变表格可用尺寸。启用时暂停尺寸重算,恢复为 false 后精确刷新一次;
254
+ * 该状态是宿主 UI 的瞬态信号,不会进入业务配置或偏好持久化。
255
+ */
256
+ layoutTransitioning?: boolean
257
+ /** 按功能域组织的完整业务配置。 */
258
+ config: TableConfiguration<T>
259
+ }
260
+
261
+ /** 组件内部运行态;公共分组配置只允许通过 resolver 生成该结构。 */
262
+ export interface ResolvedTableComponentProps<T extends TableRow = TableRow> {
263
+ /** 稳定的偏好/诊断身份,不从路由生成。 */
264
+ tableKey: string
265
+ /** 当前 key 无偏好时依次尝试迁移的旧 tableId/组件名。 */
266
+ legacyTableKeys?: string[]
267
+ /** 偏好持久化配置;false 表示彻底禁用。 */
268
+ preference:
269
+ | false
270
+ | {
271
+ /** 偏好读写适配器;省略时使用本地存储。 */
272
+ store?: PreferenceStore
273
+ /** 用户、租户或角色隔离域。 */
274
+ userScope?: string
275
+ }
276
+ /** 推荐由 useTable() 提供;低层直接使用时可以省略并由组件内部创建。 */
277
+ controller?: TableController<T>
278
+ /** 仅用于组件内部创建的 controller;外部 controller 使用其创建时的 runtime。 */
279
+ runtime?: TableRuntimeOptions
280
+ /** 已解析的业务列集合。 */
281
+ columns: TableColumn<T>[]
282
+ /** 业务是否显式提供 table.data;外部 Controller 省略时保留自身数据。 */
283
+ dataConfigured: boolean
284
+ /** 按稳定列 key 声明的框架无关分组,编译为 v18 NestedHeaders。 */
285
+ headerGroups?: TableHeaderGroup[]
286
+ /** 框架无关的相邻行合并规则,编译为 Handsontable mergeCells。 */
287
+ autoMerge?: false | TableAutoMergeConfig<T>
288
+ /** 动态合并单元格解析函数;优先级高于 autoMerge。 */
289
+ mergeCells?: false | TableMergeCellsResolver<T>
290
+ /** 底部工作区配置。 */
291
+ bottomPanel?: false | TableBottomPanelConfig
292
+ /** 右侧工作区配置。 */
293
+ rightPanel?: false | TableRightPanelConfig
294
+ /** 行详情面板的打开位置与行为。 */
295
+ rowDetailPanel?: false | TableRowDetailPanelConfig
296
+ /** 归一化后的本地或远程查询函数。 */
297
+ query?: TableQuery<T>
298
+ /** 为“选择全部查询结果”创建不可变后端快照。 */
299
+ getQuerySelectionToken?: TableQuerySelectionTokenProvider
300
+ /** 提供后开启显式保存事务。 */
301
+ commitChanges?: ChangeSetHandler<T>
302
+ /** 返回后端乐观锁版本。 */
303
+ getRowVersion?: (row: T) => string | number | undefined
304
+ /** 初始本地数据。 */
305
+ data: T[]
306
+ /** 是否启用搜索区域;false 时自定义 search slot 也不会渲染。 */
307
+ showSearch: boolean
308
+ /** 已声明的筛选条件。 */
309
+ searchConditions: TableSearchCondition[]
310
+ /** 搜索重置行为。 */
311
+ searchResetBehavior: TableSearchResetBehavior
312
+ /** 搜索区布局参数。 */
313
+ searchLayout?: TableSearchLayoutConfig
314
+ /** 搜索提交前拦截器。 */
315
+ beforeSearchSubmit?: TableSearchSubmitInterceptor
316
+ /** 工具栏业务按钮。 */
317
+ buttons: TableToolbarButton<T>[]
318
+ /** 是否在挂载后自动查询。 */
319
+ autoQuery: boolean
320
+ /** 是否启用行选择列。 */
321
+ selectable: boolean
322
+ /** 行选择具体交互策略。 */
323
+ selectionOptions: TableRowSelectionConfig<T>
324
+ /** 是否显示业务行号。 */
325
+ showIndex: boolean
326
+ /** 是否显示隔行底色。 */
327
+ striped: boolean
328
+ /** 是否高亮当前点击行。 */
329
+ highlightCurrentRow: boolean
330
+ /** 普通列表头菜单展示方式;选择列表头始终不显示菜单。 */
331
+ headerMenuTrigger: 'always' | 'hover' | 'hidden'
332
+ /** 自动冻结逻辑起始侧连续操作列,默认 true。 */
333
+ autoFreezeStartActions: boolean
334
+ /**
335
+ * 固定指定数量的逻辑结束侧可视列;显式传 0 会同时关闭尾部操作列自动固定。
336
+ */
337
+ fixedColumnsEnd?: number
338
+ /** 自动固定逻辑结束侧连续操作列,默认 true。 */
339
+ autoFreezeEndActions: boolean
340
+ /** 未声明列宽时使用的统一宽度。 */
341
+ defaultColumnWidth: number | string
342
+ /** 是否对框选数字单元格计算合计。 */
343
+ summarySelected: boolean
344
+ /** 安全默认值:一次粘贴/填充/编辑事务最多修改一个单元格。 */
345
+ allowBulkEdit: boolean
346
+ /** 查询、筛选或翻页后是否保留选择。 */
347
+ keepSelection: boolean
348
+ /** 稳定行主键字段。 */
349
+ rowKey?: TableKeyOf<T>
350
+ /** 是否渲染工具栏。 */
351
+ showToolbar: boolean
352
+ /** 是否显示列设置入口。 */
353
+ showColumnEditor: boolean
354
+ /** 是否显示密度切换入口。 */
355
+ showDensityControl: boolean
356
+ /** 分页配置;false 表示关闭分页。 */
357
+ pagination: TablePaginationConfig | false
358
+ /** 汇总配置;false 表示关闭汇总。 */
359
+ summary: TableSummaryConfig<T> | false
360
+ /** 导出配置;false 表示关闭导出。 */
361
+ exportOptions: TableExportConfig<T> | false
362
+ /** 空状态和表内可访问查询错误通知。 */
363
+ feedback: false | TableFeedbackOptions
364
+ /** initial 模式在刷新时保留已有行可操作,也是默认值。 */
365
+ loadingMask: TableLoadingMaskMode
366
+ /** 透传给 Handsontable 的原生设置。 */
367
+ settings: GridSettings
368
+ /** 与校验、冲突元数据共同合成的单元格级业务策略。 */
369
+ resolveCell?: (
370
+ context: TableCellMetaContext<T>
371
+ ) => TableCellMetaResult | undefined
372
+ /** 初始密度;已保存的用户偏好优先。 */
373
+ density: TableDensity
374
+ /** auto 跟随 html.dark;对象主题会克隆为表格实例级 ThemeBuilder。 */
375
+ theme: TableTheme
376
+ /** 显示、导出和远程 provider 共享的 locale,默认 zh-CN。 */
377
+ locale: string
378
+ /** 显示、导出和远程 provider 共享的时区。 */
379
+ timeZone?: string
380
+ /** Handsontable 许可证 key。 */
381
+ licenseKey: string
382
+ /** 网格区域高度策略。 */
383
+ height: TableHeight
384
+ }