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.
- package/README.md +46 -2
- package/bin/create.mjs +5 -0
- package/package.json +22 -4
- package/template/.dockerignore +12 -0
- package/template/.editorconfig +12 -0
- package/template/.env +14 -0
- package/template/.env.development +5 -0
- package/template/.env.production +2 -0
- package/template/.env.test +5 -0
- package/template/.github/workflows/ci.yml +40 -0
- package/template/.gitlab-ci.yml +208 -0
- package/template/.husky/commit-msg +1 -0
- package/template/.husky/pre-commit +1 -0
- package/template/.nvmrc +1 -0
- package/template/.prettierignore +11 -0
- package/template/.prettierrc +47 -0
- package/template/Dockerfile +16 -0
- package/template/README.md +372 -0
- package/template/build/advancedTable.ts +103 -0
- package/template/build/environment.ts +150 -0
- package/template/commitlint.config.js +32 -0
- package/template/components.json +21 -0
- package/template/deploy/README.md +132 -0
- package/template/deploy/host-nginx/react-admin-api.conf +14 -0
- package/template/deploy/host-nginx/react-admin-web.conf +8 -0
- package/template/deploy/nginx.conf +38 -0
- package/template/docs/activity-status.md +217 -0
- package/template/docs/audit-logs.md +158 -0
- package/template/docs/authentication-adapters.md +219 -0
- package/template/docs/browser-security.md +58 -0
- package/template/docs/bundle-budgets.md +65 -0
- package/template/docs/component-source-governance.md +99 -0
- package/template/docs/data-masking.md +169 -0
- package/template/docs/enterprise-scaffold.md +208 -0
- package/template/docs/feature-data-template.md +227 -0
- package/template/docs/feature-flags.md +169 -0
- package/template/docs/file-capabilities.md +196 -0
- package/template/docs/locale-and-i18n.md +132 -0
- package/template/docs/mutation-idempotency.md +24 -0
- package/template/docs/optional-editors.md +203 -0
- package/template/docs/page-feedback.md +83 -0
- package/template/docs/query-data-conventions.md +178 -0
- package/template/docs/realtime-collaboration.md +140 -0
- package/template/docs/reporting-printing-templates.md +156 -0
- package/template/docs/scaffold-capability-roadmap.md +226 -0
- package/template/docs/scaffold-guide.md +443 -0
- package/template/docs/template-changelog.md +30 -0
- package/template/docs/template-versioning.md +26 -0
- package/template/docs/tenant-workspace-context.md +147 -0
- package/template/docs/unsaved-changes.md +58 -0
- package/template/docs/white-label.md +102 -0
- package/template/eslint.config.js +697 -0
- package/template/gitignore +39 -0
- package/template/index.html +26 -0
- package/template/knip.config.ts +42 -0
- package/template/lint-staged.config.js +8 -0
- package/template/package.json +133 -0
- package/template/pnpm-lock.yaml +8694 -0
- package/template/public/favicon.ico +0 -0
- package/template/public/logo.svg +1 -0
- package/template/public/runtime-config.json +49 -0
- package/template/scaffold.template.json +5 -0
- package/template/src/Application.tsx +114 -0
- package/template/src/api/ApiError.ts +33 -0
- package/template/src/api/activity/ActivityProvider.tsx +167 -0
- package/template/src/api/activity/access.ts +13 -0
- package/template/src/api/activity/errors.ts +17 -0
- package/template/src/api/activity/index.ts +67 -0
- package/template/src/api/activity/model.ts +227 -0
- package/template/src/api/activity/query.ts +163 -0
- package/template/src/api/activity/source.ts +16 -0
- package/template/src/api/activity/subscription.ts +292 -0
- package/template/src/api/activity/transports.ts +271 -0
- package/template/src/api/activity/types.ts +402 -0
- package/template/src/api/authClient.ts +134 -0
- package/template/src/api/authSession.ts +307 -0
- package/template/src/api/clients/configureApiClient.ts +62 -0
- package/template/src/api/clients/httpStatus.ts +4 -0
- package/template/src/api/config/services.json +7 -0
- package/template/src/api/demoAuthClient.ts +46 -0
- package/template/src/api/enums/EnumCatalogProvider.tsx +169 -0
- package/template/src/api/enums/EnumDictionary.ts +55 -0
- package/template/src/api/enums/access.ts +130 -0
- package/template/src/api/enums/catalog.ts +216 -0
- package/template/src/api/enums/errors.ts +21 -0
- package/template/src/api/enums/index.ts +48 -0
- package/template/src/api/enums/query.ts +82 -0
- package/template/src/api/enums/scope.ts +58 -0
- package/template/src/api/enums/types.ts +251 -0
- package/template/src/api/hooks/error.ts +198 -0
- package/template/src/api/hooks/index.ts +4 -0
- package/template/src/api/hooks/request.ts +99 -0
- package/template/src/api/hooks/requestId.ts +65 -0
- package/template/src/api/hooks/response.ts +22 -0
- package/template/src/api/hooks/types.ts +20 -0
- package/template/src/api/idempotency/index.ts +1 -0
- package/template/src/api/idempotency/key.ts +23 -0
- package/template/src/api/index.ts +14 -0
- package/template/src/api/metadata/MetadataProvider.tsx +37 -0
- package/template/src/api/metadata/index.ts +2 -0
- package/template/src/api/metadata/types.ts +30 -0
- package/template/src/api/parameters/GlobalParameterProvider.tsx +210 -0
- package/template/src/api/parameters/access.ts +117 -0
- package/template/src/api/parameters/catalog.ts +170 -0
- package/template/src/api/parameters/errors.ts +21 -0
- package/template/src/api/parameters/index.ts +53 -0
- package/template/src/api/parameters/query.ts +84 -0
- package/template/src/api/parameters/scope.ts +58 -0
- package/template/src/api/parameters/types.ts +214 -0
- package/template/src/api/query/index.ts +13 -0
- package/template/src/api/query/keys.ts +155 -0
- package/template/src/api/query/mutation.ts +48 -0
- package/template/src/api/query/react.ts +36 -0
- package/template/src/api/query/scope.ts +38 -0
- package/template/src/api/query/types.ts +147 -0
- package/template/src/api/types.ts +144 -0
- package/template/src/application/types.ts +52 -0
- package/template/src/auditLogs/errors.ts +17 -0
- package/template/src/auditLogs/export.ts +85 -0
- package/template/src/auditLogs/index.ts +54 -0
- package/template/src/auditLogs/model.ts +526 -0
- package/template/src/auditLogs/query.ts +113 -0
- package/template/src/auditLogs/react.ts +36 -0
- package/template/src/auditLogs/source.ts +51 -0
- package/template/src/auditLogs/types.ts +357 -0
- package/template/src/authentication/controller.ts +351 -0
- package/template/src/authentication/index.ts +8 -0
- package/template/src/authentication/redirect.ts +72 -0
- package/template/src/authentication/types.ts +300 -0
- package/template/src/bootstrap.tsx +96 -0
- package/template/src/components/AppDataTable/AppDataTable.tsx +74 -0
- package/template/src/components/AppDataTable/index.ts +2 -0
- package/template/src/components/AppDataTable/types.ts +27 -0
- package/template/src/components/AppDialog/AppConfirmDialog.tsx +44 -0
- package/template/src/components/AppDialog/AppDialog.tsx +113 -0
- package/template/src/components/AppDialog/index.ts +3 -0
- package/template/src/components/AppDialog/messages.tsx +22 -0
- package/template/src/components/AppDialog/types.ts +53 -0
- package/template/src/components/AppPageForm/AppPageForm.tsx +21 -0
- package/template/src/components/AppPageForm/PageForm.tsx +765 -0
- package/template/src/components/AppPageForm/SOURCE.md +26 -0
- package/template/src/components/AppPageForm/config.ts +253 -0
- package/template/src/components/AppPageForm/controller.ts +580 -0
- package/template/src/components/AppPageForm/index.ts +2 -0
- package/template/src/components/AppPageForm/messages.ts +90 -0
- package/template/src/components/AppPageForm/optionUtils.ts +91 -0
- package/template/src/components/AppPageForm/options.ts +397 -0
- package/template/src/components/AppPageForm/query.ts +44 -0
- package/template/src/components/AppPageForm/style.css +119 -0
- package/template/src/components/AppPageForm/types.ts +632 -0
- package/template/src/components/AppPageForm/validation.ts +233 -0
- package/template/src/components/AppTable/AppTable.tsx +26 -0
- package/template/src/components/AppTable/SOURCE.md +72 -0
- package/template/src/components/AppTable/cell/customCell/TableCellLayer.tsx +73 -0
- package/template/src/components/AppTable/cell/customCell/actions/ActionDropdownCell.tsx +104 -0
- package/template/src/components/AppTable/cell/customCell/cellLayer.ts +358 -0
- package/template/src/components/AppTable/cell/customCell/componentProps.ts +30 -0
- package/template/src/components/AppTable/cell/customCell/date/TemporalPickerEditor.tsx +54 -0
- package/template/src/components/AppTable/cell/customCell/index.ts +2 -0
- package/template/src/components/AppTable/cell/customCell/select/SelectCellEditor.tsx +225 -0
- package/template/src/components/AppTable/cell/customCell/tableCellLayer.css +20 -0
- package/template/src/components/AppTable/cell/customCell/tooltip/TooltipCell.tsx +45 -0
- package/template/src/components/AppTable/cell/customCell/types.ts +63 -0
- package/template/src/components/AppTable/cell/customCell/useCellLayerLifecycle.ts +111 -0
- package/template/src/components/AppTable/cell/frameworkCell/TableCellComponentLayer.tsx +40 -0
- package/template/src/components/AppTable/cell/frameworkCell/cellComponentSession.ts +203 -0
- package/template/src/components/AppTable/cell/frameworkCell/index.ts +3 -0
- package/template/src/components/AppTable/cell/index.ts +2 -0
- package/template/src/components/AppTable/columns/TableColumnEditor.tsx +257 -0
- package/template/src/components/AppTable/columns/index.ts +1 -0
- package/template/src/components/AppTable/columns/useTableColumnPreferenceActions.ts +85 -0
- package/template/src/components/AppTable/config/defaults.ts +46 -0
- package/template/src/components/AppTable/config/index.ts +2 -0
- package/template/src/components/AppTable/config/license.ts +39 -0
- package/template/src/components/AppTable/config/resolver.ts +25 -0
- package/template/src/components/AppTable/config/types.ts +377 -0
- package/template/src/components/AppTable/engine/bottom/index.ts +1 -0
- package/template/src/components/AppTable/engine/bottom/types.ts +14 -0
- package/template/src/components/AppTable/engine/cell/constants.ts +32 -0
- package/template/src/components/AppTable/engine/cell/customCell/actions/index.ts +1 -0
- package/template/src/components/AppTable/engine/cell/customCell/actions/renderer.ts +162 -0
- package/template/src/components/AppTable/engine/cell/customCell/date/index.ts +1 -0
- package/template/src/components/AppTable/engine/cell/customCell/date/renderer.ts +116 -0
- package/template/src/components/AppTable/engine/cell/customCell/editors/editorBounds.ts +57 -0
- package/template/src/components/AppTable/engine/cell/customCell/editors/editorTrigger.ts +46 -0
- package/template/src/components/AppTable/engine/cell/customCell/editors/index.ts +3 -0
- package/template/src/components/AppTable/engine/cell/customCell/editors/layerEditor.ts +244 -0
- package/template/src/components/AppTable/engine/cell/customCell/index.ts +7 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/columnRenderer.ts +245 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/confirmInput.ts +57 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/display.ts +78 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/index.ts +3 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/itemList.ts +60 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/links.ts +131 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/selection.ts +41 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/shared.ts +71 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/step.ts +37 -0
- package/template/src/components/AppTable/engine/cell/customCell/renderers/switch.ts +45 -0
- package/template/src/components/AppTable/engine/cell/customCell/select/index.ts +1 -0
- package/template/src/components/AppTable/engine/cell/customCell/select/renderer.ts +33 -0
- package/template/src/components/AppTable/engine/cell/customCell/tooltip/index.ts +1 -0
- package/template/src/components/AppTable/engine/cell/customCell/tooltip/tooltip.ts +94 -0
- package/template/src/components/AppTable/engine/cell/customCell/types.ts +82 -0
- package/template/src/components/AppTable/engine/cell/formatting.ts +355 -0
- package/template/src/components/AppTable/engine/cell/formula.ts +145 -0
- package/template/src/components/AppTable/engine/cell/index.ts +7 -0
- package/template/src/components/AppTable/engine/cell/multiSelect.ts +96 -0
- package/template/src/components/AppTable/engine/cell/options.ts +339 -0
- package/template/src/components/AppTable/engine/cell/types.ts +53 -0
- package/template/src/components/AppTable/engine/columns/column.ts +430 -0
- package/template/src/components/AppTable/engine/columns/config/columns.ts +33 -0
- package/template/src/components/AppTable/engine/columns/config/index.ts +4 -0
- package/template/src/components/AppTable/engine/columns/config/mutation.ts +138 -0
- package/template/src/components/AppTable/engine/columns/config/temporal.ts +11 -0
- package/template/src/components/AppTable/engine/columns/config/validation.ts +106 -0
- package/template/src/components/AppTable/engine/columns/constants.ts +6 -0
- package/template/src/components/AppTable/engine/columns/gridColumns.ts +332 -0
- package/template/src/components/AppTable/engine/columns/index.ts +4 -0
- package/template/src/components/AppTable/engine/columns/rendererPolicies.ts +129 -0
- package/template/src/components/AppTable/engine/component/resolver.ts +272 -0
- package/template/src/components/AppTable/engine/component/types.ts +384 -0
- package/template/src/components/AppTable/engine/config/constants.ts +33 -0
- package/template/src/components/AppTable/engine/config/grid/compiler.ts +65 -0
- package/template/src/components/AppTable/engine/config/grid/defaults.ts +82 -0
- package/template/src/components/AppTable/engine/config/grid/ownership.ts +35 -0
- package/template/src/components/AppTable/engine/config/grid/runtimeDelta.ts +34 -0
- package/template/src/components/AppTable/engine/config/grid/types.ts +30 -0
- package/template/src/components/AppTable/engine/pagination/config.ts +75 -0
- package/template/src/components/AppTable/engine/pagination/constants.ts +5 -0
- package/template/src/components/AppTable/engine/pagination/index.ts +3 -0
- package/template/src/components/AppTable/engine/pagination/types.ts +70 -0
- package/template/src/components/AppTable/engine/preference/index.ts +2 -0
- package/template/src/components/AppTable/engine/preference/preference.ts +535 -0
- package/template/src/components/AppTable/engine/preference/types.ts +28 -0
- package/template/src/components/AppTable/engine/right/index.ts +1 -0
- package/template/src/components/AppTable/engine/right/types.ts +18 -0
- package/template/src/components/AppTable/engine/search/config.ts +64 -0
- package/template/src/components/AppTable/engine/search/constants.ts +8 -0
- package/template/src/components/AppTable/engine/search/index.ts +7 -0
- package/template/src/components/AppTable/engine/search/localQuery.ts +145 -0
- package/template/src/components/AppTable/engine/search/query.ts +203 -0
- package/template/src/components/AppTable/engine/search/remoteQuery.ts +99 -0
- package/template/src/components/AppTable/engine/search/searchInteraction.ts +46 -0
- package/template/src/components/AppTable/engine/search/types.ts +155 -0
- package/template/src/components/AppTable/engine/selection/config.ts +13 -0
- package/template/src/components/AppTable/engine/selection/index.ts +4 -0
- package/template/src/components/AppTable/engine/selection/selection.ts +357 -0
- package/template/src/components/AppTable/engine/selection/selectionHeader.ts +88 -0
- package/template/src/components/AppTable/engine/selection/types.ts +66 -0
- package/template/src/components/AppTable/engine/shared/action.ts +11 -0
- package/template/src/components/AppTable/engine/shared/constants.ts +2 -0
- package/template/src/components/AppTable/engine/shared/decimal.ts +114 -0
- package/template/src/components/AppTable/engine/shared/feedback.ts +62 -0
- package/template/src/components/AppTable/engine/shared/index.ts +13 -0
- package/template/src/components/AppTable/engine/shared/interaction.ts +55 -0
- package/template/src/components/AppTable/engine/shared/messages.ts +161 -0
- package/template/src/components/AppTable/engine/shared/row.ts +32 -0
- package/template/src/components/AppTable/engine/shared/scheduler.ts +17 -0
- package/template/src/components/AppTable/engine/shared/tableKey.ts +31 -0
- package/template/src/components/AppTable/engine/shared/theme.ts +196 -0
- package/template/src/components/AppTable/engine/shared/treeRows.ts +155 -0
- package/template/src/components/AppTable/engine/shared/types.ts +58 -0
- package/template/src/components/AppTable/engine/shared/valueSnapshot.ts +46 -0
- package/template/src/components/AppTable/engine/summary/config/export.ts +117 -0
- package/template/src/components/AppTable/engine/summary/config/index.ts +3 -0
- package/template/src/components/AppTable/engine/summary/config/summary.ts +62 -0
- package/template/src/components/AppTable/engine/summary/config/types.ts +93 -0
- package/template/src/components/AppTable/engine/summary/constants.ts +13 -0
- package/template/src/components/AppTable/engine/summary/excelJs.ts +133 -0
- package/template/src/components/AppTable/engine/summary/export.ts +311 -0
- package/template/src/components/AppTable/engine/summary/index.ts +6 -0
- package/template/src/components/AppTable/engine/summary/selectionSum.ts +92 -0
- package/template/src/components/AppTable/engine/summary/summary.ts +457 -0
- package/template/src/components/AppTable/engine/table/clipboard/index.ts +1 -0
- package/template/src/components/AppTable/engine/table/clipboard/transfer.ts +9 -0
- package/template/src/components/AppTable/engine/table/controller/TableController.ts +802 -0
- package/template/src/components/AppTable/engine/table/controller/errors.ts +106 -0
- package/template/src/components/AppTable/engine/table/controller/index.ts +4 -0
- package/template/src/components/AppTable/engine/table/controller/latestAbortableTask.ts +33 -0
- package/template/src/components/AppTable/engine/table/controller/tableDataReplacement.ts +60 -0
- package/template/src/components/AppTable/engine/table/controller/tableDomainConfiguration.ts +94 -0
- package/template/src/components/AppTable/engine/table/controller/tableEditingCommands.ts +163 -0
- package/template/src/components/AppTable/engine/table/controller/tableGridHost.ts +324 -0
- package/template/src/components/AppTable/engine/table/controller/tableIdentity.ts +68 -0
- package/template/src/components/AppTable/engine/table/controller/tableMutationPipeline.ts +79 -0
- package/template/src/components/AppTable/engine/table/controller/tableQueryCoordinator.ts +187 -0
- package/template/src/components/AppTable/engine/table/controller/tableReportingCoordinator.ts +143 -0
- package/template/src/components/AppTable/engine/table/controller/tableSaveCoordinator.ts +227 -0
- package/template/src/components/AppTable/engine/table/controller/tableSaveValidation.ts +29 -0
- package/template/src/components/AppTable/engine/table/controller/tableSnapshot.ts +58 -0
- package/template/src/components/AppTable/engine/table/controller/types.ts +202 -0
- package/template/src/components/AppTable/engine/table/editing/baselineStore.ts +134 -0
- package/template/src/components/AppTable/engine/table/editing/changeSet.ts +492 -0
- package/template/src/components/AppTable/engine/table/editing/changeSetSettlement.ts +633 -0
- package/template/src/components/AppTable/engine/table/editing/commitResultIndex.ts +75 -0
- package/template/src/components/AppTable/engine/table/editing/constants.ts +15 -0
- package/template/src/components/AppTable/engine/table/editing/dirtyCellIndex.ts +96 -0
- package/template/src/components/AppTable/engine/table/editing/index.ts +6 -0
- package/template/src/components/AppTable/engine/table/editing/mutation.ts +173 -0
- package/template/src/components/AppTable/engine/table/editing/rowKey.ts +10 -0
- package/template/src/components/AppTable/engine/table/editing/types.ts +404 -0
- package/template/src/components/AppTable/engine/table/editing/validation.ts +452 -0
- package/template/src/components/AppTable/engine/table/grid/cellMeta.ts +90 -0
- package/template/src/components/AppTable/engine/table/grid/handsontable.ts +25 -0
- package/template/src/components/AppTable/engine/table/grid/handsontableExtensions.d.ts +26 -0
- package/template/src/components/AppTable/engine/table/grid/index.ts +5 -0
- package/template/src/components/AppTable/engine/table/grid/moduleRegistry.ts +39 -0
- package/template/src/components/AppTable/engine/table/grid/runtime.ts +31 -0
- package/template/src/components/AppTable/engine/table/grid/types.ts +25 -0
- package/template/src/components/AppTable/engine/table/hooks/fixedEndHooks.ts +44 -0
- package/template/src/components/AppTable/engine/table/hooks/gridHooks.ts +108 -0
- package/template/src/components/AppTable/engine/table/hooks/headerHooks.ts +103 -0
- package/template/src/components/AppTable/engine/table/hooks/index.ts +3 -0
- package/template/src/components/AppTable/engine/table/index.ts +6 -0
- package/template/src/components/AppTable/engine/table/layout/constants.ts +2 -0
- package/template/src/components/AppTable/engine/table/layout/dropdownMenu.ts +89 -0
- package/template/src/components/AppTable/engine/table/layout/fixedColumns.ts +44 -0
- package/template/src/components/AppTable/engine/table/layout/fixedEndOverlay.ts +90 -0
- package/template/src/components/AppTable/engine/table/layout/fixedEndOverlayAccessibility.ts +104 -0
- package/template/src/components/AppTable/engine/table/layout/fixedEndOverlayRenderer.ts +690 -0
- package/template/src/components/AppTable/engine/table/layout/fixedEndOverlaySignature.ts +58 -0
- package/template/src/components/AppTable/engine/table/layout/fixedEndRuntime.ts +137 -0
- package/template/src/components/AppTable/engine/table/layout/handsontableDomAdapter.ts +40 -0
- package/template/src/components/AppTable/engine/table/layout/height.ts +72 -0
- package/template/src/components/AppTable/engine/table/layout/index.ts +14 -0
- package/template/src/components/AppTable/engine/table/layout/layoutScheduler.ts +60 -0
- package/template/src/components/AppTable/engine/table/layout/mergeCells.ts +146 -0
- package/template/src/components/AppTable/engine/table/layout/nestedHeaders.ts +271 -0
- package/template/src/components/AppTable/engine/table/layout/types.ts +10 -0
- package/template/src/components/AppTable/engine/toolbar/index.ts +1 -0
- package/template/src/components/AppTable/engine/toolbar/types.ts +56 -0
- package/template/src/components/AppTable/index.ts +11 -0
- package/template/src/components/AppTable/messages.ts +256 -0
- package/template/src/components/AppTable/pagination/TablePaginationBar.tsx +193 -0
- package/template/src/components/AppTable/pagination/index.ts +1 -0
- package/template/src/components/AppTable/pagination/paginationItems.ts +56 -0
- package/template/src/components/AppTable/preference/index.ts +1 -0
- package/template/src/components/AppTable/preference/useTablePreference.ts +208 -0
- package/template/src/components/AppTable/reporting/index.ts +1 -0
- package/template/src/components/AppTable/reporting/useTableReporting.ts +342 -0
- package/template/src/components/AppTable/search/TableSearchBar.tsx +301 -0
- package/template/src/components/AppTable/search/TableSearchConditionEditor.tsx +254 -0
- package/template/src/components/AppTable/search/TableSearchField.tsx +338 -0
- package/template/src/components/AppTable/search/TableSearchFields.tsx +65 -0
- package/template/src/components/AppTable/search/constants.ts +9 -0
- package/template/src/components/AppTable/search/index.ts +3 -0
- package/template/src/components/AppTable/search/tableSearchBar.css +164 -0
- package/template/src/components/AppTable/search/types.ts +7 -0
- package/template/src/components/AppTable/search/useTableQuery.ts +373 -0
- package/template/src/components/AppTable/selection/index.ts +1 -0
- package/template/src/components/AppTable/selection/useTableSelection.ts +188 -0
- package/template/src/components/AppTable/sensitiveData.tsx +41 -0
- package/template/src/components/AppTable/shared/styles.ts +2 -0
- package/template/src/components/AppTable/styles/index.css +6 -0
- package/template/src/components/AppTable/styles/tableComponent.css +297 -0
- package/template/src/components/AppTable/styles/theme.css +133 -0
- package/template/src/components/AppTable/table/components/TableComponent.tsx +567 -0
- package/template/src/components/AppTable/table/components/TableErrorFeedback.tsx +36 -0
- package/template/src/components/AppTable/table/components/TableGridViewport.tsx +85 -0
- package/template/src/components/AppTable/table/components/index.ts +2 -0
- package/template/src/components/AppTable/table/components/types.ts +90 -0
- package/template/src/components/AppTable/table/controller/configuration.ts +89 -0
- package/template/src/components/AppTable/table/controller/index.ts +2 -0
- package/template/src/components/AppTable/table/controller/useTableController.ts +155 -0
- package/template/src/components/AppTable/table/controller/useTableLifecycle.ts +97 -0
- package/template/src/components/AppTable/table/grid/index.ts +1 -0
- package/template/src/components/AppTable/table/grid/useTableGrid.ts +857 -0
- package/template/src/components/AppTable/table/grid/useTableGridRuntimeSettings.ts +49 -0
- package/template/src/components/AppTable/table/index.ts +4 -0
- package/template/src/components/AppTable/table/layout/TablePanels.tsx +389 -0
- package/template/src/components/AppTable/table/layout/index.ts +7 -0
- package/template/src/components/AppTable/table/layout/types.ts +3 -0
- package/template/src/components/AppTable/table/layout/useResizablePanel.ts +213 -0
- package/template/src/components/AppTable/table/layout/useTableAdaptiveHeight.ts +238 -0
- package/template/src/components/AppTable/table/layout/useTablePanels.ts +329 -0
- package/template/src/components/AppTable/table/layout/useTableTheme.ts +123 -0
- package/template/src/components/AppTable/toolbar/TableToolbar.tsx +336 -0
- package/template/src/components/AppTable/toolbar/index.ts +1 -0
- package/template/src/components/BrandLogo/BrandLogo.tsx +41 -0
- package/template/src/components/BrandLogo/index.ts +1 -0
- package/template/src/components/Can/Can.tsx +19 -0
- package/template/src/components/Can/index.ts +7 -0
- package/template/src/components/Can/types.ts +41 -0
- package/template/src/components/EnumBadge/EnumBadge.tsx +44 -0
- package/template/src/components/EnumBadge/index.ts +2 -0
- package/template/src/components/EnumBadge/types.ts +16 -0
- package/template/src/components/EnumText/EnumText.tsx +33 -0
- package/template/src/components/EnumText/index.ts +2 -0
- package/template/src/components/EnumText/types.ts +13 -0
- package/template/src/components/FilePreview/FilePreview.tsx +120 -0
- package/template/src/components/FilePreview/index.ts +11 -0
- package/template/src/components/FilePreview/preview.ts +88 -0
- package/template/src/components/FilePreview/types.ts +91 -0
- package/template/src/components/FileUpload/FileUpload.tsx +172 -0
- package/template/src/components/FileUpload/index.ts +2 -0
- package/template/src/components/FileUpload/types.ts +32 -0
- package/template/src/components/JsonEditor/JsonEditor.tsx +103 -0
- package/template/src/components/JsonEditor/index.ts +1 -0
- package/template/src/components/JsonEditor/types.ts +14 -0
- package/template/src/components/PageFeedback/PageFeedback.tsx +194 -0
- package/template/src/components/PageFeedback/index.ts +10 -0
- package/template/src/components/PageFeedback/types.ts +31 -0
- package/template/src/components/PasswordInput/PasswordInput.tsx +50 -0
- package/template/src/components/PasswordInput/index.ts +1 -0
- package/template/src/components/RouteDialog/RouteDialog.tsx +20 -0
- package/template/src/components/RouteDialog/index.ts +2 -0
- package/template/src/components/RouteDialog/types.ts +8 -0
- package/template/src/components/RouteDialog/useRouteDialogNavigation.ts +30 -0
- package/template/src/components/SensitiveData/SensitiveData.tsx +337 -0
- package/template/src/components/SensitiveData/index.ts +2 -0
- package/template/src/components/SensitiveData/types.ts +31 -0
- package/template/src/components/StatusBadge/StatusBadge.tsx +28 -0
- package/template/src/components/StatusBadge/index.ts +2 -0
- package/template/src/components/StatusBadge/statusBadgeStyles.ts +30 -0
- package/template/src/components/StatusBadge/types.ts +7 -0
- package/template/src/components/layout/AppHeader/AppHeader.tsx +57 -0
- package/template/src/components/layout/AppHeader/HeaderSearch.tsx +160 -0
- package/template/src/components/layout/AppHeader/HeaderUserMenu.tsx +59 -0
- package/template/src/components/layout/AppHeader/ThemeControls.tsx +44 -0
- package/template/src/components/layout/AppHeader/index.ts +1 -0
- package/template/src/components/layout/AppHeader/themeOptions.ts +13 -0
- package/template/src/components/layout/AppSidebar.tsx +268 -0
- package/template/src/components/layout/PageContainer.tsx +16 -0
- package/template/src/components/ui/avatar.tsx +108 -0
- package/template/src/components/ui/badge.tsx +47 -0
- package/template/src/components/ui/button.tsx +63 -0
- package/template/src/components/ui/card.tsx +60 -0
- package/template/src/components/ui/checkbox.tsx +31 -0
- package/template/src/components/ui/collapsible.tsx +33 -0
- package/template/src/components/ui/command.tsx +181 -0
- package/template/src/components/ui/dialog.tsx +157 -0
- package/template/src/components/ui/dropdown-menu.tsx +254 -0
- package/template/src/components/ui/form.tsx +141 -0
- package/template/src/components/ui/input.tsx +20 -0
- package/template/src/components/ui/label.tsx +23 -0
- package/template/src/components/ui/pagination.tsx +127 -0
- package/template/src/components/ui/popover.tsx +41 -0
- package/template/src/components/ui/select.tsx +187 -0
- package/template/src/components/ui/separator.tsx +25 -0
- package/template/src/components/ui/sheet.tsx +142 -0
- package/template/src/components/ui/sidebar.tsx +878 -0
- package/template/src/components/ui/skeleton.tsx +13 -0
- package/template/src/components/ui/sonner.tsx +33 -0
- package/template/src/components/ui/tooltip.tsx +54 -0
- package/template/src/config/RuntimeConfigErrorPage.tsx +48 -0
- package/template/src/config/appConfig.ts +126 -0
- package/template/src/config/buildInfo.ts +8 -0
- package/template/src/config/observabilityAdapter.ts +8 -0
- package/template/src/config/runtimeConfig.ts +360 -0
- package/template/src/config/types.ts +195 -0
- package/template/src/context/ThemeProvider.tsx +84 -0
- package/template/src/context/UnsavedChangesProvider.tsx +123 -0
- package/template/src/context/applicationScope.ts +39 -0
- package/template/src/context/types.ts +41 -0
- package/template/src/dataMasking/index.ts +14 -0
- package/template/src/dataMasking/masking.ts +139 -0
- package/template/src/dataMasking/types.ts +144 -0
- package/template/src/featureFlags/FeatureFlagProvider.tsx +143 -0
- package/template/src/featureFlags/FeatureGate.tsx +12 -0
- package/template/src/featureFlags/catalog.ts +140 -0
- package/template/src/featureFlags/errors.ts +17 -0
- package/template/src/featureFlags/index.ts +43 -0
- package/template/src/featureFlags/query.ts +103 -0
- package/template/src/featureFlags/registry.ts +149 -0
- package/template/src/featureFlags/scope.ts +27 -0
- package/template/src/featureFlags/types.ts +241 -0
- package/template/src/features/auth/AuthLayout.tsx +17 -0
- package/template/src/features/auth/index.ts +2 -0
- package/template/src/features/auth/signIn/components/UserAuthForm.tsx +121 -0
- package/template/src/features/auth/signIn/index.tsx +71 -0
- package/template/src/features/auth/signIn/messages.ts +37 -0
- package/template/src/features/auth/signIn/types.ts +4 -0
- package/template/src/features/errors/ForbiddenError.tsx +34 -0
- package/template/src/features/errors/GeneralError.tsx +46 -0
- package/template/src/features/errors/MaintenanceError.tsx +31 -0
- package/template/src/features/errors/NotFoundError.tsx +34 -0
- package/template/src/features/errors/RouteError.tsx +72 -0
- package/template/src/features/errors/UnauthorizedError.tsx +34 -0
- package/template/src/features/errors/index.ts +6 -0
- package/template/src/features/errors/messages.ts +56 -0
- package/template/src/features/home/index.tsx +107 -0
- package/template/src/features/home/messages.ts +59 -0
- package/template/src/features/showcase/AccessShowcasePage.tsx +284 -0
- package/template/src/features/showcase/AdvancedTableDemo.tsx +120 -0
- package/template/src/features/showcase/FeedbackShowcasePage.tsx +142 -0
- package/template/src/features/showcase/FileShowcasePage.tsx +110 -0
- package/template/src/features/showcase/FormShowcasePage.tsx +156 -0
- package/template/src/features/showcase/MetadataShowcasePage.tsx +241 -0
- package/template/src/features/showcase/ShowcasePageHeader.tsx +24 -0
- package/template/src/features/showcase/TableShowcasePage.tsx +436 -0
- package/template/src/features/showcase/accessMessages.ts +67 -0
- package/template/src/features/showcase/index.ts +6 -0
- package/template/src/features/showcase/messages.ts +192 -0
- package/template/src/files/download.ts +82 -0
- package/template/src/files/errors.ts +15 -0
- package/template/src/files/filename.ts +61 -0
- package/template/src/files/index.ts +38 -0
- package/template/src/files/types.ts +299 -0
- package/template/src/files/useFileTask.ts +153 -0
- package/template/src/files/useFileUpload.ts +117 -0
- package/template/src/files/validation.ts +109 -0
- package/template/src/layouts/AppLayout.tsx +37 -0
- package/template/src/lib/accessControl.ts +42 -0
- package/template/src/lib/navigationRedirect.ts +26 -0
- package/template/src/lib/utils.ts +6 -0
- package/template/src/locale/LocaleProvider.tsx +37 -0
- package/template/src/locale/context.ts +15 -0
- package/template/src/locale/formatters.ts +123 -0
- package/template/src/locale/hooks.ts +35 -0
- package/template/src/locale/index.ts +17 -0
- package/template/src/locale/messages.ts +151 -0
- package/template/src/locale/types.ts +167 -0
- package/template/src/main.tsx +5 -0
- package/template/src/observability/browser.ts +37 -0
- package/template/src/observability/consoleAdapter.ts +18 -0
- package/template/src/observability/index.ts +26 -0
- package/template/src/observability/observer.ts +118 -0
- package/template/src/observability/redaction.ts +85 -0
- package/template/src/observability/types.ts +119 -0
- package/template/src/optionalEditors/controller.ts +327 -0
- package/template/src/optionalEditors/errors.ts +21 -0
- package/template/src/optionalEditors/index.ts +35 -0
- package/template/src/optionalEditors/model.ts +253 -0
- package/template/src/optionalEditors/react.ts +89 -0
- package/template/src/optionalEditors/types.ts +254 -0
- package/template/src/permissions/index.ts +3 -0
- package/template/src/permissions/types.ts +5 -0
- package/template/src/permissions/usePermission.ts +16 -0
- package/template/src/realtimeCollaboration/controller.ts +355 -0
- package/template/src/realtimeCollaboration/errors.ts +20 -0
- package/template/src/realtimeCollaboration/index.ts +39 -0
- package/template/src/realtimeCollaboration/model.ts +212 -0
- package/template/src/realtimeCollaboration/react.ts +72 -0
- package/template/src/realtimeCollaboration/types.ts +251 -0
- package/template/src/reporting/errors.ts +21 -0
- package/template/src/reporting/generation.ts +87 -0
- package/template/src/reporting/index.ts +42 -0
- package/template/src/reporting/model.ts +373 -0
- package/template/src/reporting/print.ts +16 -0
- package/template/src/reporting/query.ts +50 -0
- package/template/src/reporting/react.ts +17 -0
- package/template/src/reporting/source.ts +13 -0
- package/template/src/reporting/types.ts +219 -0
- package/template/src/router/RootRouteLayout.tsx +11 -0
- package/template/src/router/authLifecycle.ts +39 -0
- package/template/src/router/config.ts +293 -0
- package/template/src/router/interceptors.ts +48 -0
- package/template/src/router/lazyRouteComponents.ts +78 -0
- package/template/src/router/messages.ts +48 -0
- package/template/src/router/navigation.ts +167 -0
- package/template/src/router/router.ts +66 -0
- package/template/src/router/searchSchemas.ts +9 -0
- package/template/src/router/types.ts +76 -0
- package/template/src/stores/authSessionStorage.ts +27 -0
- package/template/src/stores/authStore.ts +165 -0
- package/template/src/stores/types.ts +36 -0
- package/template/src/stores/uiPreferenceStore.ts +34 -0
- package/template/src/styles/index.css +141 -0
- package/template/src/styles/theme.css +213 -0
- package/template/src/tenantWorkspace/TenantWorkspaceProvider.tsx +102 -0
- package/template/src/tenantWorkspace/index.ts +33 -0
- package/template/src/tenantWorkspace/store.ts +184 -0
- package/template/src/tenantWorkspace/switch.ts +206 -0
- package/template/src/tenantWorkspace/types.ts +155 -0
- package/template/src/vite-env.d.ts +20 -0
- package/template/stylelint.config.js +28 -0
- package/template/tests/integration/Application.test.tsx +269 -0
- package/template/tests/integration/layout/AppHeader.test.tsx +182 -0
- package/template/tests/integration/layout/AppSidebar.test.tsx +121 -0
- 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
- package/template/tests/integration/router/__screenshots__/config.test.ts/route-tree-authentication-boundaries-exposes-only-scaffold-navigation-metadata-1.png +0 -0
- package/template/tests/integration/router/config.test.ts +123 -0
- package/template/tests/integration/router/interceptors.test.ts +100 -0
- package/template/tests/setup/accessibility.ts +25 -0
- package/template/tests/setup/runtimeConfig.ts +3 -0
- package/template/tests/unit/api/ApiError.test.ts +25 -0
- 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
- 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
- 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
- package/template/tests/unit/api/activity/ActivityProvider.test.tsx +131 -0
- 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
- package/template/tests/unit/api/activity/modelAndQuery.test.ts +144 -0
- package/template/tests/unit/api/activity/subscription.test.ts +103 -0
- package/template/tests/unit/api/activity/transports.test.ts +145 -0
- package/template/tests/unit/api/authClient.test.ts +110 -0
- package/template/tests/unit/api/authSession.test.ts +289 -0
- package/template/tests/unit/api/clients/configureApiClient.test.ts +198 -0
- package/template/tests/unit/api/demoAuthClient.test.ts +47 -0
- package/template/tests/unit/api/enums/access.test.ts +107 -0
- package/template/tests/unit/api/enums/catalog.test.ts +200 -0
- package/template/tests/unit/api/enums/query.test.ts +110 -0
- package/template/tests/unit/api/enums/useEnum.test.tsx +98 -0
- package/template/tests/unit/api/enums/useEnumCatalog.test.tsx +68 -0
- package/template/tests/unit/api/hooks/error.test.ts +168 -0
- package/template/tests/unit/api/hooks/request.test.ts +170 -0
- package/template/tests/unit/api/hooks/response.test.ts +46 -0
- package/template/tests/unit/api/metadata/MetadataProvider.test.tsx +102 -0
- package/template/tests/unit/api/parameters/catalog.test.ts +147 -0
- package/template/tests/unit/api/parameters/query.test.ts +78 -0
- package/template/tests/unit/api/parameters/useGlobalParameter.test.tsx +89 -0
- package/template/tests/unit/api/query/queryPolicy.test.ts +245 -0
- package/template/tests/unit/api/query/useAppQueryScope.test.tsx +74 -0
- package/template/tests/unit/auditLogs/auditLogHooks.test.tsx +194 -0
- package/template/tests/unit/auditLogs/auditLogs.test.ts +199 -0
- 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
- 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
- package/template/tests/unit/authentication/authentication.test.ts +376 -0
- package/template/tests/unit/components/AppDialog.test.tsx +225 -0
- package/template/tests/unit/components/AppTable.test.tsx +129 -0
- package/template/tests/unit/components/AppTableLayoutTransition.test.ts +118 -0
- package/template/tests/unit/components/AppTableLocalization.test.ts +58 -0
- package/template/tests/unit/components/AppTableSensitiveData.test.ts +35 -0
- package/template/tests/unit/components/AppTableUpgrade.test.tsx +179 -0
- package/template/tests/unit/components/AppTableUpgradeCore.test.ts +258 -0
- package/template/tests/unit/components/BrandLogo.test.tsx +24 -0
- package/template/tests/unit/components/Can.test.tsx +80 -0
- package/template/tests/unit/components/Dialog.test.tsx +56 -0
- package/template/tests/unit/components/EnumPresentation.test.tsx +64 -0
- package/template/tests/unit/components/FilePreviewEngine.test.ts +51 -0
- package/template/tests/unit/components/JsonEditor.test.tsx +47 -0
- package/template/tests/unit/components/LocalizedSharedComponents.test.tsx +36 -0
- package/template/tests/unit/components/OverlayLayer.test.tsx +151 -0
- package/template/tests/unit/components/PageFeedback.test.tsx +143 -0
- package/template/tests/unit/components/PageForm.test.tsx +272 -0
- package/template/tests/unit/components/PageFormCore.test.ts +74 -0
- package/template/tests/unit/components/PasswordInput.test.tsx +105 -0
- package/template/tests/unit/components/ScaffoldComponents.test.tsx +64 -0
- package/template/tests/unit/components/SensitiveData.test.tsx +151 -0
- package/template/tests/unit/components/StatusBadge.test.tsx +36 -0
- package/template/tests/unit/components/TableComponent.test.tsx +644 -0
- package/template/tests/unit/components/TableCore.test.ts +145 -0
- package/template/tests/unit/components/ThemeAccessibility.test.tsx +27 -0
- package/template/tests/unit/components/__screenshots__/BatchOperationDialog.test.tsx/confirms-a-batch-action-and-presents-partial-failure-details-1.png +0 -0
- 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
- 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
- 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
- package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-renders-shadcn-components-through-cellComponent-1.png +0 -0
- package/template/tests/unit/components/__screenshots__/TableComponent.test.tsx/TableComponent-renders-the-toolbar-without-a-bottom-divider-1.png +0 -0
- 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
- package/template/tests/unit/config/RuntimeConfigErrorPage.test.tsx +23 -0
- package/template/tests/unit/config/appConfig.test.ts +98 -0
- package/template/tests/unit/config/appTableContracts.test.mjs +120 -0
- package/template/tests/unit/config/bundleBudget.test.mjs +190 -0
- package/template/tests/unit/config/componentGovernance.test.mjs +156 -0
- package/template/tests/unit/config/deployConfig.test.mjs +211 -0
- package/template/tests/unit/config/eslintConfig.test.mjs +101 -0
- package/template/tests/unit/config/featureBoundaries.test.mjs +126 -0
- package/template/tests/unit/config/npmPackage.test.mjs +37 -0
- package/template/tests/unit/config/releaseArtifact.test.mjs +105 -0
- package/template/tests/unit/config/runtimeConfig.test.ts +225 -0
- package/template/tests/unit/config/scaffoldCheck.test.mjs +53 -0
- package/template/tests/unit/config/scaffoldFeature.test.mjs +177 -0
- package/template/tests/unit/config/scaffoldInit.test.mjs +218 -0
- package/template/tests/unit/config/scaffoldProject.test.mjs +378 -0
- package/template/tests/unit/config/scaffoldTransaction.test.mjs +77 -0
- package/template/tests/unit/config/viteConfig.test.mjs +371 -0
- package/template/tests/unit/context/ThemeProvider.test.tsx +108 -0
- package/template/tests/unit/context/UnsavedChangesProvider.test.tsx +94 -0
- 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
- package/template/tests/unit/context/applicationScope.test.ts +62 -0
- package/template/tests/unit/dataMasking/dataMasking.test.ts +95 -0
- package/template/tests/unit/featureFlags/featureFlags.test.ts +169 -0
- package/template/tests/unit/featureFlags/useFeatureFlag.test.tsx +108 -0
- package/template/tests/unit/features/FeatureLocalization.test.tsx +54 -0
- package/template/tests/unit/features/RouteError.test.tsx +40 -0
- package/template/tests/unit/features/auth/signIn/UserAuthForm.test.tsx +79 -0
- package/template/tests/unit/features/auth/signIn/__screenshots__/UserAuthForm.test.tsx/UserAuthForm-passes-validated-values-to-onSubmit-1.png +0 -0
- package/template/tests/unit/features/auth/signIn/__screenshots__/UserAuthForm.test.tsx/UserAuthForm-shows-validation-messages-when-submitting-an-empty-form-1.png +0 -0
- package/template/tests/unit/files/fileHooks.test.tsx +130 -0
- package/template/tests/unit/files/files.test.ts +112 -0
- package/template/tests/unit/lib/accessControl.test.ts +69 -0
- package/template/tests/unit/locale/locale.test.tsx +90 -0
- package/template/tests/unit/observability/browser.test.ts +48 -0
- package/template/tests/unit/observability/observer.test.ts +115 -0
- package/template/tests/unit/optionalEditors/__screenshots__/useOptionalEditor.test.tsx/useOptionalEditor-fails-permission-precheck-before-loading-the-project-SDK-1.png +0 -0
- 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
- package/template/tests/unit/optionalEditors/optionalEditors.test.ts +313 -0
- package/template/tests/unit/optionalEditors/useOptionalEditor.test.tsx +141 -0
- package/template/tests/unit/realtimeCollaboration/collaboration.test.ts +240 -0
- package/template/tests/unit/realtimeCollaboration/useRealtimeCollaboration.test.tsx +115 -0
- package/template/tests/unit/reporting/reporting.test.ts +195 -0
- package/template/tests/unit/reporting/reportingHooks.test.tsx +203 -0
- package/template/tests/unit/router/authLifecycle.test.ts +55 -0
- package/template/tests/unit/router/navigation.test.ts +55 -0
- package/template/tests/unit/router/redirects.test.ts +22 -0
- package/template/tests/unit/scaffoldFeatureTemplate/featureTemplate.test.ts +42 -0
- package/template/tests/unit/scaffoldFeatureTemplate/publicContract.test.ts +28 -0
- package/template/tests/unit/scaffoldFeatureTemplate/queries.test.tsx +289 -0
- package/template/tests/unit/stores/authStore.test.ts +128 -0
- package/template/tests/unit/stores/uiPreferenceStore.test.ts +56 -0
- package/template/tests/unit/tenantWorkspace/tenantWorkspace.test.tsx +261 -0
- package/template/tools/bundle/budgets.json +48 -0
- package/template/tools/bundle/check.mjs +307 -0
- package/template/tools/component-governance/check.mjs +703 -0
- package/template/tools/component-governance/manifest.json +112 -0
- package/template/tools/deployment/browser-smoke.mjs +76 -0
- package/template/tools/deployment/browser-smoke.sh +141 -0
- package/template/tools/openapi/generate.mjs +268 -0
- package/template/tools/openapi/templates/README.md +14 -0
- package/template/tools/openapi/templates/base/README.md +7 -0
- package/template/tools/openapi/templates/base/data-contracts.eta +44 -0
- package/template/tools/openapi/templates/base/http-client.eta +3 -0
- package/template/tools/openapi/templates/base/http-clients/axios-http-client.eta +132 -0
- package/template/tools/openapi/templates/base/http-clients/fetch-http-client.eta +220 -0
- package/template/tools/openapi/templates/base/route-docs.eta +31 -0
- package/template/tools/openapi/templates/base/route-name.eta +43 -0
- package/template/tools/openapi/templates/base/route-type.eta +22 -0
- package/template/tools/openapi/templates/default/README.md +7 -0
- package/template/tools/openapi/templates/default/api.eta +67 -0
- package/template/tools/openapi/templates/default/http-client.eta +137 -0
- package/template/tools/openapi/templates/default/procedure-call.eta +99 -0
- package/template/tools/openapi/templates/default/route-docs.eta +40 -0
- package/template/tools/openapi/templates/default/route-types.eta +28 -0
- package/template/tools/openapi/templates/modular/README.md +7 -0
- package/template/tools/openapi/templates/modular/api.eta +28 -0
- package/template/tools/openapi/templates/modular/procedure-call.eta +99 -0
- package/template/tools/openapi/templates/modular/route-types.eta +18 -0
- package/template/tools/release/artifact.mjs +258 -0
- package/template/tools/scaffold/add-capability.mjs +409 -0
- package/template/tools/scaffold/capability-catalog.json +163 -0
- package/template/tools/scaffold/check.mjs +326 -0
- package/template/tools/scaffold/create-feature.mjs +444 -0
- package/template/tools/scaffold/create-project.mjs +482 -0
- package/template/tools/scaffold/init.example.json +64 -0
- package/template/tools/scaffold/init.mjs +419 -0
- package/template/tools/scaffold/lockfile.mjs +193 -0
- package/template/tools/scaffold/templates/feature/index.ts +19 -0
- package/template/tools/scaffold/templates/feature/model.ts +142 -0
- package/template/tools/scaffold/templates/feature/queries.ts +154 -0
- package/template/tools/scaffold/templates/feature/repository.ts +206 -0
- package/template/tools/scaffold/templates/feature/types.ts +168 -0
- package/template/tools/scaffold/workspace-transaction.mjs +111 -0
- package/template/tsconfig.app.json +31 -0
- package/template/tsconfig.json +12 -0
- package/template/tsconfig.node.json +24 -0
- 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
|
+
}
|