@antelopejs/interface-dms 0.9.0 → 0.10.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/CHANGELOG.md +123 -0
- package/dist/attachments.js +3 -1
- package/dist/attachments.js.map +1 -1
- package/dist/auth/db/models/sessions.model.js +1 -5
- package/dist/auth/db/models/sessions.model.js.map +1 -1
- package/dist/auth/db/tables/users.table.js.map +1 -1
- package/dist/auth/index.js +4 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/internal/jwt-auth-decorator.js +7 -5
- package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
- package/dist/auth/internal/request-authenticators.js +4 -1
- package/dist/auth/internal/request-authenticators.js.map +1 -1
- package/dist/auth/internal/request-principal.js +1 -0
- package/dist/auth/internal/request-principal.js.map +1 -1
- package/dist/base/activity-feed.d.ts +26 -26
- package/dist/base/banner.d.ts +14 -14
- package/dist/base/banner.js +1 -0
- package/dist/base/banner.js.map +1 -1
- package/dist/base/block-registry/helpers.js +1 -0
- package/dist/base/block-registry/helpers.js.map +1 -1
- package/dist/base/block-registry/internal/describe.js +107 -85
- package/dist/base/block-registry/internal/describe.js.map +1 -1
- package/dist/base/block-registry/presentation.js +0 -5
- package/dist/base/block-registry/presentation.js.map +1 -1
- package/dist/base/block-registry/registry.js +4 -1
- package/dist/base/block-registry/registry.js.map +1 -1
- package/dist/base/block-types.js +0 -2
- package/dist/base/block-types.js.map +1 -1
- package/dist/base/card.d.ts +8 -8
- package/dist/base/chart-card.d.ts +2 -2
- package/dist/base/chart-card.js +2 -2
- package/dist/base/chart-card.js.map +1 -1
- package/dist/base/chart-schemas.d.ts +66 -66
- package/dist/base/chart-schemas.js +19 -21
- package/dist/base/chart-schemas.js.map +1 -1
- package/dist/base/chart.js +1 -0
- package/dist/base/chart.js.map +1 -1
- package/dist/base/code-block.js +1 -0
- package/dist/base/code-block.js.map +1 -1
- package/dist/base/confirm-dialog.d.ts +2 -6
- package/dist/base/confirm-dialog.js +36 -15
- package/dist/base/confirm-dialog.js.map +1 -1
- package/dist/base/data-sources.js +6 -2
- package/dist/base/data-sources.js.map +1 -1
- package/dist/base/data-types/compare-types.js +82 -68
- package/dist/base/data-types/compare-types.js.map +1 -1
- package/dist/base/data-types/core.d.ts +8 -101
- package/dist/base/data-types/core.js +40 -143
- package/dist/base/data-types/core.js.map +1 -1
- package/dist/base/data-types/default/address.d.ts +126 -0
- package/dist/base/data-types/default/address.js +57 -0
- package/dist/base/data-types/default/address.js.map +1 -0
- package/dist/base/data-types/default/choices.d.ts +54 -0
- package/dist/base/data-types/default/choices.js +135 -0
- package/dist/base/data-types/default/choices.js.map +1 -0
- package/dist/base/data-types/default/files.d.ts +86 -0
- package/dist/base/data-types/default/files.js +214 -0
- package/dist/base/data-types/default/files.js.map +1 -0
- package/dist/base/data-types/default/inputs.d.ts +11 -0
- package/dist/base/data-types/default/inputs.js +26 -0
- package/dist/base/data-types/default/inputs.js.map +1 -0
- package/dist/base/data-types/default/numbers.d.ts +62 -0
- package/dist/base/data-types/default/numbers.js +287 -0
- package/dist/base/data-types/default/numbers.js.map +1 -0
- package/dist/base/data-types/default/options.d.ts +133 -0
- package/dist/base/data-types/default/options.js +3 -0
- package/dist/base/data-types/default/options.js.map +1 -0
- package/dist/base/data-types/default/relations.d.ts +267 -0
- package/dist/base/data-types/default/relations.js +149 -0
- package/dist/base/data-types/default/relations.js.map +1 -0
- package/dist/base/data-types/default/strings.d.ts +35 -0
- package/dist/base/data-types/default/strings.js +154 -0
- package/dist/base/data-types/default/strings.js.map +1 -0
- package/dist/base/data-types/default-types.d.ts +73 -753
- package/dist/base/data-types/default-types.js +39 -991
- package/dist/base/data-types/default-types.js.map +1 -1
- package/dist/base/data-types/field-types.js +2 -6
- package/dist/base/data-types/field-types.js.map +1 -1
- package/dist/base/data-types/index.js +1 -20
- package/dist/base/data-types/index.js.map +1 -1
- package/dist/base/data-types/internal/compare-types.js +0 -2
- package/dist/base/data-types/internal/compare-types.js.map +1 -1
- package/dist/base/data-types/internal/relation-add-form.d.ts +7 -0
- package/dist/base/data-types/internal/relation-add-form.js +21 -0
- package/dist/base/data-types/internal/relation-add-form.js.map +1 -0
- package/dist/base/data-types/internal/relation-endpoints.d.ts +8 -0
- package/dist/base/data-types/internal/relation-endpoints.js +36 -0
- package/dist/base/data-types/internal/relation-endpoints.js.map +1 -0
- package/dist/base/data-types/status-type.js +0 -6
- package/dist/base/data-types/status-type.js.map +1 -1
- package/dist/base/display.d.ts +6 -6
- package/dist/base/display.js +15 -10
- package/dist/base/display.js.map +1 -1
- package/dist/base/empty-state.d.ts +8 -8
- package/dist/base/export-jobs.js.map +1 -1
- package/dist/base/form-block-schema.d.ts +36 -36
- package/dist/base/form-block-schema.js +0 -5
- package/dist/base/form-block-schema.js.map +1 -1
- package/dist/base/form-schema.d.ts +5 -1
- package/dist/base/form-schema.js +44 -206
- package/dist/base/form-schema.js.map +1 -1
- package/dist/base/form-types.d.ts +4 -84
- package/dist/base/form-types.js.map +1 -1
- package/dist/base/form.js +0 -7
- package/dist/base/form.js.map +1 -1
- package/dist/base/guard.d.ts +14 -14
- package/dist/base/helpers/archive-mode-helpers.js +11 -11
- package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
- package/dist/base/helpers/file-refs.js +20 -7
- package/dist/base/helpers/file-refs.js.map +1 -1
- package/dist/base/index.js +0 -5
- package/dist/base/index.js.map +1 -1
- package/dist/base/internal/button-availability.d.ts +3 -17
- package/dist/base/internal/button-availability.js +36 -31
- package/dist/base/internal/button-availability.js.map +1 -1
- package/dist/base/internal/chart-schemas.js +0 -2
- package/dist/base/internal/chart-schemas.js.map +1 -1
- package/dist/base/internal/composed-text.js +0 -2
- package/dist/base/internal/composed-text.js.map +1 -1
- package/dist/base/internal/confirm-dialog.d.ts +3 -13
- package/dist/base/internal/confirm-dialog.js +37 -21
- package/dist/base/internal/confirm-dialog.js.map +1 -1
- package/dist/base/internal/display.js +3 -1
- package/dist/base/internal/display.js.map +1 -1
- package/dist/base/internal/form-schema-components.d.ts +12 -0
- package/dist/base/internal/form-schema-components.js +61 -0
- package/dist/base/internal/form-schema-components.js.map +1 -0
- package/dist/base/internal/form-schema-validation.d.ts +16 -0
- package/dist/base/internal/form-schema-validation.js +68 -0
- package/dist/base/internal/form-schema-validation.js.map +1 -0
- package/dist/base/internal/form-schema.d.ts +2 -7
- package/dist/base/internal/form-schema.js +36 -28
- package/dist/base/internal/form-schema.js.map +1 -1
- package/dist/base/internal/layouts.d.ts +1 -59
- package/dist/base/internal/searchable.js +3 -1
- package/dist/base/internal/searchable.js.map +1 -1
- package/dist/base/key-value-list.d.ts +12 -12
- package/dist/base/kpi-card.d.ts +2 -2
- package/dist/base/kpi-card.js +2 -0
- package/dist/base/kpi-card.js.map +1 -1
- package/dist/base/layouts.d.ts +6 -80
- package/dist/base/layouts.js +38 -54
- package/dist/base/layouts.js.map +1 -1
- package/dist/base/live-toggle.d.ts +2 -2
- package/dist/base/meter.d.ts +25 -25
- package/dist/base/meter.js +0 -1
- package/dist/base/meter.js.map +1 -1
- package/dist/base/nav-card-grid.d.ts +13 -13
- package/dist/base/page-toolbar.d.ts +2 -2
- package/dist/base/page-toolbar.js +0 -6
- package/dist/base/page-toolbar.js.map +1 -1
- package/dist/base/period-selector.d.ts +2 -2
- package/dist/base/period-selector.js +0 -4
- package/dist/base/period-selector.js.map +1 -1
- package/dist/base/query-response.js +3 -5
- package/dist/base/query-response.js.map +1 -1
- package/dist/base/resource-form-schema.js +0 -4
- package/dist/base/resource-form-schema.js.map +1 -1
- package/dist/base/searchable.d.ts +5 -0
- package/dist/base/searchable.js +11 -2
- package/dist/base/searchable.js.map +1 -1
- package/dist/base/stat-group.d.ts +15 -15
- package/dist/base/tab.d.ts +8 -8
- package/dist/base/tab.js +1 -0
- package/dist/base/tab.js.map +1 -1
- package/dist/base/table-view/column-display.js +0 -1
- package/dist/base/table-view/column-display.js.map +1 -1
- package/dist/base/table-view/data-functions.d.ts +10 -10
- package/dist/base/table-view/data-functions.js.map +1 -1
- package/dist/base/table-view/factory.js +32 -204
- package/dist/base/table-view/factory.js.map +1 -1
- package/dist/base/table-view/internal/auth.js +5 -19
- package/dist/base/table-view/internal/auth.js.map +1 -1
- package/dist/base/table-view/internal/column-conditions.js +0 -5
- package/dist/base/table-view/internal/column-conditions.js.map +1 -1
- package/dist/base/table-view/internal/column-display.js +5 -3
- package/dist/base/table-view/internal/column-display.js.map +1 -1
- package/dist/base/table-view/internal/factory-helpers.js +24 -158
- package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
- package/dist/base/table-view/internal/factory-lifecycle-created.d.ts +21 -0
- package/dist/base/table-view/internal/factory-lifecycle-created.js +96 -0
- package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -0
- package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +15 -0
- package/dist/base/table-view/internal/factory-lifecycle-filter.js +37 -0
- package/dist/base/table-view/internal/factory-lifecycle-filter.js.map +1 -0
- package/dist/base/table-view/internal/factory-lifecycle-options.d.ts +41 -0
- package/dist/base/table-view/internal/factory-lifecycle-options.js +99 -0
- package/dist/base/table-view/internal/factory-lifecycle-options.js.map +1 -0
- package/dist/base/table-view/internal/factory-private-actions.d.ts +32 -0
- package/dist/base/table-view/internal/factory-private-actions.js +77 -0
- package/dist/base/table-view/internal/factory-private-actions.js.map +1 -0
- package/dist/base/table-view/internal/factory-private-displays.d.ts +5 -0
- package/dist/base/table-view/internal/factory-private-displays.js +21 -0
- package/dist/base/table-view/internal/factory-private-displays.js.map +1 -0
- package/dist/base/table-view/internal/factory-private-urls.d.ts +15 -0
- package/dist/base/table-view/internal/factory-private-urls.js +43 -0
- package/dist/base/table-view/internal/factory-private-urls.js.map +1 -0
- package/dist/base/table-view/internal/files.js +3 -4
- package/dist/base/table-view/internal/files.js.map +1 -1
- package/dist/base/table-view/internal/footer.js +5 -3
- package/dist/base/table-view/internal/footer.js.map +1 -1
- package/dist/base/table-view/internal/guards.js +7 -10
- package/dist/base/table-view/internal/guards.js.map +1 -1
- package/dist/base/table-view/internal/meta-helpers.d.ts +27 -0
- package/dist/base/table-view/internal/meta-helpers.js +75 -0
- package/dist/base/table-view/internal/meta-helpers.js.map +1 -0
- package/dist/base/table-view/internal/meta.js +8 -2
- package/dist/base/table-view/internal/meta.js.map +1 -1
- package/dist/base/table-view/internal/nav-badges.js +5 -3
- package/dist/base/table-view/internal/nav-badges.js.map +1 -1
- package/dist/base/table-view/internal/option-contract.d.ts +403 -0
- package/dist/base/table-view/internal/option-contract.js +3 -0
- package/dist/base/table-view/internal/option-contract.js.map +1 -0
- package/dist/base/table-view/internal/option-displays.d.ts +125 -0
- package/dist/base/table-view/internal/option-displays.js +3 -0
- package/dist/base/table-view/internal/option-displays.js.map +1 -0
- package/dist/base/table-view/internal/option-empty-states.d.ts +43 -0
- package/dist/base/table-view/internal/option-empty-states.js +3 -0
- package/dist/base/table-view/internal/option-empty-states.js.map +1 -0
- package/dist/base/table-view/internal/option-expandable.d.ts +66 -0
- package/dist/base/table-view/internal/option-expandable.js +3 -0
- package/dist/base/table-view/internal/option-expandable.js.map +1 -0
- package/dist/base/table-view/internal/option-filtering.d.ts +85 -0
- package/dist/base/table-view/internal/option-filtering.js +4 -0
- package/dist/base/table-view/internal/option-filtering.js.map +1 -0
- package/dist/base/table-view/internal/option-footer.d.ts +64 -0
- package/dist/base/table-view/internal/option-footer.js +3 -0
- package/dist/base/table-view/internal/option-footer.js.map +1 -0
- package/dist/base/table-view/internal/option-forms.d.ts +62 -0
- package/dist/base/table-view/internal/option-forms.js +3 -0
- package/dist/base/table-view/internal/option-forms.js.map +1 -0
- package/dist/base/table-view/internal/option-row-actions.d.ts +76 -0
- package/dist/base/table-view/internal/option-row-actions.js +3 -0
- package/dist/base/table-view/internal/option-row-actions.js.map +1 -0
- package/dist/base/table-view/internal/option-views.d.ts +199 -0
- package/dist/base/table-view/internal/option-views.js +3 -0
- package/dist/base/table-view/internal/option-views.js.map +1 -0
- package/dist/base/table-view/internal/options.d.ts +2 -6
- package/dist/base/table-view/internal/options.js +35 -6
- package/dist/base/table-view/internal/options.js.map +1 -1
- package/dist/base/table-view/internal/realtime.js +15 -5
- package/dist/base/table-view/internal/realtime.js.map +1 -1
- package/dist/base/table-view/internal/request-filter.js +12 -12
- package/dist/base/table-view/internal/request-filter.js.map +1 -1
- package/dist/base/table-view/internal/resource-form.js +1 -10
- package/dist/base/table-view/internal/resource-form.js.map +1 -1
- package/dist/base/table-view/internal/row-actions-schema.js +0 -6
- package/dist/base/table-view/internal/row-actions-schema.js.map +1 -1
- package/dist/base/table-view/internal/row-rule-shape.d.ts +10 -0
- package/dist/base/table-view/internal/row-rule-shape.js +43 -0
- package/dist/base/table-view/internal/row-rule-shape.js.map +1 -0
- package/dist/base/table-view/internal/row-rules.js +1 -4
- package/dist/base/table-view/internal/row-rules.js.map +1 -1
- package/dist/base/table-view/internal/tabs.js +3 -6
- package/dist/base/table-view/internal/tabs.js.map +1 -1
- package/dist/base/table-view/internal/validation.js +2 -16
- package/dist/base/table-view/internal/validation.js.map +1 -1
- package/dist/base/table-view/internal/writer.js +1 -0
- package/dist/base/table-view/internal/writer.js.map +1 -1
- package/dist/base/table-view/meta.js +11 -93
- package/dist/base/table-view/meta.js.map +1 -1
- package/dist/base/table-view/options.d.ts +61 -1099
- package/dist/base/table-view/options.js.map +1 -1
- package/dist/base/table-view/resource-form.js +0 -2
- package/dist/base/table-view/resource-form.js.map +1 -1
- package/dist/base/table-view/routes.js +10 -9
- package/dist/base/table-view/routes.js.map +1 -1
- package/dist/base/table-view/schema.d.ts +93 -93
- package/dist/base/table-view/schema.js +4 -22
- package/dist/base/table-view/schema.js.map +1 -1
- package/dist/base/table-view/source.js +0 -5
- package/dist/base/table-view/source.js.map +1 -1
- package/dist/base/table-view/views.js +0 -3
- package/dist/base/table-view/views.js.map +1 -1
- package/dist/base/table-view/writer.js +0 -5
- package/dist/base/table-view/writer.js.map +1 -1
- package/dist/base/top-list-card.d.ts +13 -13
- package/dist/base/top-list-card.js +2 -0
- package/dist/base/top-list-card.js.map +1 -1
- package/dist/base/types/action-target.d.ts +1 -302
- package/dist/base/types/button.d.ts +2 -7
- package/dist/base/types/button.js +35 -8
- package/dist/base/types/button.js.map +1 -1
- package/dist/base/types/confirm-dialog.d.ts +1 -127
- package/dist/base/types/custom-button.d.ts +1 -87
- package/dist/base/types/error.js +2 -1
- package/dist/base/types/error.js.map +1 -1
- package/dist/base/types/export-status.d.ts +2 -8
- package/dist/base/types/export-status.js +35 -9
- package/dist/base/types/export-status.js.map +1 -1
- package/dist/base/types/form-values.d.ts +1 -4
- package/dist/base/types/internal/action-target.d.ts +2 -8
- package/dist/base/types/internal/action-target.js +36 -15
- package/dist/base/types/internal/action-target.js.map +1 -1
- package/dist/base/types/row-action-operators.d.ts +3 -29
- package/dist/base/types/row-action-operators.js +35 -18
- package/dist/base/types/row-action-operators.js.map +1 -1
- package/dist/base/types/row-action.d.ts +3 -36
- package/dist/base/types/size.d.ts +1 -3
- package/dist/base/types/size.js +0 -3
- package/dist/base/types/size.js.map +1 -1
- package/dist/base/types/tone.d.ts +3 -8
- package/dist/base/types/tone.js +35 -15
- package/dist/base/types/tone.js.map +1 -1
- package/dist/base/types/watch.d.ts +5 -19
- package/dist/base/types/watch.js +35 -3
- package/dist/base/types/watch.js.map +1 -1
- package/dist/component-options/action-target.d.ts +304 -0
- package/dist/component-options/action-target.js +3 -0
- package/dist/component-options/action-target.js.map +1 -0
- package/dist/component-options/button.d.ts +93 -0
- package/dist/component-options/button.js +12 -0
- package/dist/component-options/button.js.map +1 -0
- package/dist/component-options/confirm-dialog.d.ts +132 -0
- package/dist/component-options/confirm-dialog.js +18 -0
- package/dist/component-options/confirm-dialog.js.map +1 -0
- package/dist/component-options/data-type.d.ts +101 -0
- package/dist/component-options/data-type.js +146 -0
- package/dist/component-options/data-type.js.map +1 -0
- package/dist/component-options/form-field.d.ts +88 -0
- package/dist/component-options/form-field.js +3 -0
- package/dist/component-options/form-field.js.map +1 -0
- package/dist/component-options/internal/action-target.d.ts +8 -0
- package/dist/component-options/internal/action-target.js +18 -0
- package/dist/component-options/internal/action-target.js.map +1 -0
- package/dist/component-options/internal/button-availability.d.ts +17 -0
- package/dist/component-options/internal/button-availability.js +34 -0
- package/dist/component-options/internal/button-availability.js.map +1 -0
- package/dist/component-options/internal/confirm-dialog.d.ts +13 -0
- package/dist/component-options/internal/confirm-dialog.js +24 -0
- package/dist/component-options/internal/confirm-dialog.js.map +1 -0
- package/dist/component-options/internal/form-field.d.ts +7 -0
- package/dist/component-options/internal/form-field.js +31 -0
- package/dist/component-options/internal/form-field.js.map +1 -0
- package/dist/component-options/internal/page-layout.d.ts +71 -0
- package/dist/component-options/internal/page-layout.js +10 -0
- package/dist/component-options/internal/page-layout.js.map +1 -0
- package/dist/component-options/page-layout.d.ts +80 -0
- package/dist/component-options/page-layout.js +57 -0
- package/dist/component-options/page-layout.js.map +1 -0
- package/dist/component-options/row-action.d.ts +66 -0
- package/dist/component-options/row-action.js +22 -0
- package/dist/component-options/row-action.js.map +1 -0
- package/dist/component-slots.js.map +1 -1
- package/dist/component.d.ts +2 -2
- package/dist/component.js +38 -193
- package/dist/component.js.map +1 -1
- package/dist/data-controllers/members.js +2 -8
- package/dist/data-controllers/members.js.map +1 -1
- package/dist/data-controllers/roles.js +0 -5
- package/dist/data-controllers/roles.js.map +1 -1
- package/dist/db/internal/exportJobs.model.js +10 -6
- package/dist/db/internal/exportJobs.model.js.map +1 -1
- package/dist/db/internal/tenantLifecycle.model.js +0 -2
- package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
- package/dist/db/tables/exportJobs.table.d.ts +1 -1
- package/dist/db/tables/roles.table.js.map +1 -1
- package/dist/db/tables/user_invites.table.d.ts +1 -1
- package/dist/db/tables/user_invites.table.js.map +1 -1
- package/dist/export-status.d.ts +8 -0
- package/dist/export-status.js +13 -0
- package/dist/export-status.js.map +1 -0
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +2 -4
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +0 -9
- package/dist/index.js.map +1 -1
- package/dist/internal/component-builder.d.ts +17 -0
- package/dist/internal/component-builder.js +58 -0
- package/dist/internal/component-builder.js.map +1 -0
- package/dist/internal/component-permissions.d.ts +13 -0
- package/dist/internal/component-permissions.js +45 -0
- package/dist/internal/component-permissions.js.map +1 -0
- package/dist/internal/component-serialization.d.ts +10 -0
- package/dist/internal/component-serialization.js +42 -0
- package/dist/internal/component-serialization.js.map +1 -0
- package/dist/internal/component-slots.js +7 -4
- package/dist/internal/component-slots.js.map +1 -1
- package/dist/internal/component-watches.d.ts +17 -0
- package/dist/internal/component-watches.js +110 -0
- package/dist/internal/component-watches.js.map +1 -0
- package/dist/internal/invite-membership.js +0 -1
- package/dist/internal/invite-membership.js.map +1 -1
- package/dist/invite-extension-payloads.d.ts +2 -0
- package/dist/invite-extension-payloads.js +3 -0
- package/dist/invite-extension-payloads.js.map +1 -0
- package/dist/invite-extensions/internal/delivery.js +4 -1
- package/dist/invite-extensions/internal/delivery.js.map +1 -1
- package/dist/invite-extensions/internal/edit.js +5 -4
- package/dist/invite-extensions/internal/edit.js.map +1 -1
- package/dist/invite-extensions/internal/form-slot.js +5 -35
- package/dist/invite-extensions/internal/form-slot.js.map +1 -1
- package/dist/invite-extensions/internal/payload-slices.js +10 -3
- package/dist/invite-extensions/internal/payload-slices.js.map +1 -1
- package/dist/invite-extensions/internal/registry.js +3 -5
- package/dist/invite-extensions/internal/registry.js.map +1 -1
- package/dist/invite-extensions/registry.js +3 -8
- package/dist/invite-extensions/registry.js.map +1 -1
- package/dist/invite-extensions/types.d.ts +1 -2
- package/dist/invite-resolution.js +2 -1
- package/dist/invite-resolution.js.map +1 -1
- package/dist/layout-banners.js.map +1 -1
- package/dist/notifications/builder.js +25 -5
- package/dist/notifications/builder.js.map +1 -1
- package/dist/notifications/internal.js +0 -3
- package/dist/notifications/internal.js.map +1 -1
- package/dist/notifications/sendable.js.map +1 -1
- package/dist/page/categories.js +1 -4
- package/dist/page/categories.js.map +1 -1
- package/dist/page/controllers.js +9 -55
- package/dist/page/controllers.js.map +1 -1
- package/dist/page/form-page-routes.js +0 -7
- package/dist/page/form-page-routes.js.map +1 -1
- package/dist/page/internal/categories.d.ts +1 -1
- package/dist/page/internal/categories.js +12 -36
- package/dist/page/internal/categories.js.map +1 -1
- package/dist/page/internal/category-permission.d.ts +10 -0
- package/dist/page/internal/category-permission.js +20 -0
- package/dist/page/internal/category-permission.js.map +1 -0
- package/dist/page/internal/component-target.js +2 -2
- package/dist/page/internal/component-target.js.map +1 -1
- package/dist/page/internal/component-tree.js +0 -2
- package/dist/page/internal/component-tree.js.map +1 -1
- package/dist/page/internal/controller-options.d.ts +6 -0
- package/dist/page/internal/controller-options.js +40 -0
- package/dist/page/internal/controller-options.js.map +1 -0
- package/dist/page/internal/extension-assembly.js +2 -7
- package/dist/page/internal/extension-assembly.js.map +1 -1
- package/dist/page/internal/layout-filter.js +7 -3
- package/dist/page/internal/layout-filter.js.map +1 -1
- package/dist/page/internal/metadata-components.d.ts +47 -0
- package/dist/page/internal/metadata-components.js +136 -0
- package/dist/page/internal/metadata-components.js.map +1 -0
- package/dist/page/internal/metadata-extension-contributions.d.ts +14 -0
- package/dist/page/internal/metadata-extension-contributions.js +56 -0
- package/dist/page/internal/metadata-extension-contributions.js.map +1 -0
- package/dist/page/internal/metadata-extensions.d.ts +8 -0
- package/dist/page/internal/metadata-extensions.js +21 -0
- package/dist/page/internal/metadata-extensions.js.map +1 -0
- package/dist/page/internal/metadata-helpers.js +0 -14
- package/dist/page/internal/metadata-helpers.js.map +1 -1
- package/dist/page/internal/metadata-info.d.ts +5 -0
- package/dist/page/internal/metadata-info.js +39 -0
- package/dist/page/internal/metadata-info.js.map +1 -0
- package/dist/page/internal/metadata-layout-response.d.ts +32 -0
- package/dist/page/internal/metadata-layout-response.js +76 -0
- package/dist/page/internal/metadata-layout-response.js.map +1 -0
- package/dist/page/internal/metadata-layout.d.ts +10 -0
- package/dist/page/internal/metadata-layout.js +44 -0
- package/dist/page/internal/metadata-layout.js.map +1 -0
- package/dist/page/internal/metadata-lifecycle.d.ts +52 -0
- package/dist/page/internal/metadata-lifecycle.js +241 -0
- package/dist/page/internal/metadata-lifecycle.js.map +1 -0
- package/dist/page/internal/metadata-owner.d.ts +53 -0
- package/dist/page/internal/metadata-owner.js +14 -0
- package/dist/page/internal/metadata-owner.js.map +1 -0
- package/dist/page/internal/metadata-publish.d.ts +20 -0
- package/dist/page/internal/metadata-publish.js +55 -0
- package/dist/page/internal/metadata-publish.js.map +1 -0
- package/dist/page/internal/metadata-registration.d.ts +8 -0
- package/dist/page/internal/metadata-registration.js +72 -0
- package/dist/page/internal/metadata-registration.js.map +1 -0
- package/dist/page/internal/metadata-upload-registration.d.ts +16 -0
- package/dist/page/internal/metadata-upload-registration.js +64 -0
- package/dist/page/internal/metadata-upload-registration.js.map +1 -0
- package/dist/page/internal/metadata-uploads.d.ts +18 -0
- package/dist/page/internal/metadata-uploads.js +46 -0
- package/dist/page/internal/metadata-uploads.js.map +1 -0
- package/dist/page/internal/nav-badges.d.ts +1 -1
- package/dist/page/internal/nav-badges.js +3 -1
- package/dist/page/internal/nav-badges.js.map +1 -1
- package/dist/page/internal/page-record.d.ts +2 -9
- package/dist/page/internal/page-record.js +8 -5
- package/dist/page/internal/page-record.js.map +1 -1
- package/dist/page/internal/page-registration.js +0 -4
- package/dist/page/internal/page-registration.js.map +1 -1
- package/dist/page/internal/registry.js +2 -1
- package/dist/page/internal/registry.js.map +1 -1
- package/dist/page/internal/table-view-ids.js +3 -2
- package/dist/page/internal/table-view-ids.js.map +1 -1
- package/dist/page/layout-filter.js +1 -0
- package/dist/page/layout-filter.js.map +1 -1
- package/dist/page/metadata.js +192 -558
- package/dist/page/metadata.js.map +1 -1
- package/dist/page/roots.js +3 -5
- package/dist/page/roots.js.map +1 -1
- package/dist/page/types.d.ts +15 -2
- package/dist/page/types.js.map +1 -1
- package/dist/permissions.js +0 -18
- package/dist/permissions.js.map +1 -1
- package/dist/realtime.js +0 -3
- package/dist/realtime.js.map +1 -1
- package/dist/request-tenant.js +4 -1
- package/dist/request-tenant.js.map +1 -1
- package/dist/tenant-lifecycle.js +2 -2
- package/dist/tenant-lifecycle.js.map +1 -1
- package/dist/tones.d.ts +8 -0
- package/dist/tones.js +19 -0
- package/dist/tones.js.map +1 -0
- package/dist/uploads.js +15 -4
- package/dist/uploads.js.map +1 -1
- package/dist/utils/internal/row-instance.js +2 -3
- package/dist/utils/internal/row-instance.js.map +1 -1
- package/dist/utils/internal/type-check.d.ts +10 -1
- package/dist/utils/internal/type-check.js +12 -3
- package/dist/utils/internal/type-check.js.map +1 -1
- package/dist/utils/internal/value-parser.js +7 -2
- package/dist/utils/internal/value-parser.js.map +1 -1
- package/dist/watch-actions.d.ts +19 -0
- package/dist/watch-actions.js +7 -0
- package/dist/watch-actions.js.map +1 -0
- package/docs/3.base/2.types.md +1 -1
- package/docs/3.base/8.data-types.md +2 -0
- package/docs/4.notifications/3.sending.md +1 -1
- package/docs/tsconfig.json +5 -1
- package/package.json +3 -9
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildTableConfig = buildTableConfig;
|
|
7
|
+
exports.decorateColumn = decorateColumn;
|
|
8
|
+
/** @internal */
|
|
9
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
10
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
11
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
12
|
+
const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
13
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
14
|
+
const form_schema_1 = require("../../form-schema");
|
|
15
|
+
const types_1 = require("../../types");
|
|
16
|
+
const column_display_1 = require("./column-display");
|
|
17
|
+
/** @internal */
|
|
18
|
+
function buildTableConfig(view, serialize) {
|
|
19
|
+
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published target constructor type does not establish ControllerClass.location; registration is assumed rather than validated here.
|
|
20
|
+
const apimeta = (0, interface_core_1.GetMetadata)(view.target, interface_api_1.ControllerMeta);
|
|
21
|
+
const datameta = (0, interface_core_1.GetMetadata)(view.target, metadata_1.DataAPIMeta);
|
|
22
|
+
return {
|
|
23
|
+
location: apimeta.location,
|
|
24
|
+
columns: Object.entries(view.columns)
|
|
25
|
+
.sort((a, b) => (a[1].order ?? 0) - (b[1].order ?? 0))
|
|
26
|
+
.map(([key, options]) => {
|
|
27
|
+
const meta = datameta.fields[key];
|
|
28
|
+
return {
|
|
29
|
+
id: key,
|
|
30
|
+
header: options.name ?? key,
|
|
31
|
+
isVisible: options.isVisible,
|
|
32
|
+
type: serialize(options.type),
|
|
33
|
+
accessorKey: key,
|
|
34
|
+
listable: !!meta.listable?.list,
|
|
35
|
+
enableSorting: meta.sortable !== undefined,
|
|
36
|
+
enableColumnFilter: !!options.filterable,
|
|
37
|
+
cellWrap: options.cellWrap,
|
|
38
|
+
size: options.size,
|
|
39
|
+
display: (0, column_display_1.serializeColumnDisplay)(options.display),
|
|
40
|
+
defaultValue: options.defaultValue,
|
|
41
|
+
accessMode: meta.mode,
|
|
42
|
+
readonlyBehavior: options.readonlyBehavior ?? types_1.ReadonlyBehaviorType.default,
|
|
43
|
+
};
|
|
44
|
+
}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** @internal */
|
|
48
|
+
function decorateColumn(target, key, descriptor, options, meta) {
|
|
49
|
+
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The decorator accepts PropertyKey while the column registry, the localization lookup and Filter take string keys; symbol and number inputs are not rejected or converted here.
|
|
50
|
+
const columnKey = key;
|
|
51
|
+
meta.setColumn(columnKey, options);
|
|
52
|
+
if (options.validate !== false) {
|
|
53
|
+
// oxlint-disable-next-line typescript/unbound-method -- This assertion checks method presence without calling it; getValidation is called through options.type below.
|
|
54
|
+
(0, node_assert_1.default)(options.type.getValidation, "Type has no getValidation method");
|
|
55
|
+
const dataMeta = (0, interface_core_1.GetMetadata)(target.constructor, metadata_1.DataAPIMeta);
|
|
56
|
+
const localizedFields = (0, interface_database_decorators_1.getModifiedFields)(dataMeta.tableClass.prototype, interface_database_decorators_1.LocalizationModifier);
|
|
57
|
+
const isLocalized = localizedFields.includes(key);
|
|
58
|
+
const baseSchema = options.type.getValidation();
|
|
59
|
+
const zodSchema = (0, form_schema_1.adaptFieldValidationSchema)(baseSchema, {
|
|
60
|
+
localized: isLocalized,
|
|
61
|
+
required: false,
|
|
62
|
+
fallbackLocale: isLocalized
|
|
63
|
+
? interface_database_decorators_1.LocalizationModifier.fallbackLocaleOf(dataMeta.tableClass, columnKey)
|
|
64
|
+
: undefined,
|
|
65
|
+
});
|
|
66
|
+
(0, metadata_1.Validator)((value) => zodSchema.safeParseAsync(value))(target, key, descriptor ?? {});
|
|
67
|
+
}
|
|
68
|
+
if (options.filterable) {
|
|
69
|
+
(0, metadata_1.Filter)(options.type.filter.bind(options.type))(target, columnKey);
|
|
70
|
+
}
|
|
71
|
+
if (options.type.decorateField) {
|
|
72
|
+
options.type.decorateField(target, key, descriptor);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=meta-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-helpers.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,15 @@ const interface_api_1 = require("@antelopejs/interface-api");
|
|
|
5
5
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
6
6
|
const meta_1 = require("../meta");
|
|
7
7
|
/** @internal */
|
|
8
|
-
|
|
8
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- This published adapter accepts arbitrary controller receivers; the metadata lookup below assumes a registered constructor without validating it.
|
|
9
|
+
const getTableViewMetaFor = (target) => (0, interface_core_1.GetMetadata)(
|
|
10
|
+
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published unknown receiver does not prove ControllerClass; controller route dispatch supplies it and this adapter preserves that unchecked boundary.
|
|
11
|
+
target.constructor, meta_1.TableViewMeta);
|
|
9
12
|
exports.getTableViewMetaFor = getTableViewMetaFor;
|
|
10
13
|
/** @internal */
|
|
11
|
-
|
|
14
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- This published metadata adapter accepts arbitrary controller receivers; narrowing its input would change that contract.
|
|
15
|
+
const getControllerLocation = (target) => (0, interface_core_1.GetMetadata)(
|
|
16
|
+
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published unknown receiver does not verify its constructor; route dispatch remains responsible for supplying a controller instance.
|
|
17
|
+
target.constructor, interface_api_1.ControllerMeta).location;
|
|
12
18
|
exports.getControllerLocation = getControllerLocation;
|
|
13
19
|
//# sourceMappingURL=meta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta.ts"],"names":[],"mappings":";;;AAAA,6DAGmC;AACnC,+DAAyD;AACzD,kCAAwC;AAExC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta.ts"],"names":[],"mappings":";;;AAAA,6DAGmC;AACnC,+DAAyD;AACzD,kCAAwC;AAExC,gBAAgB;AAChB,+MAA+M;AACxM,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAiB,EAAE,CACpE,IAAA,4BAAW;AACT,2OAA2O;AAC1O,MAA2C,CAAC,WAAW,EACxD,oBAAa,CACd,CAAC;AALS,QAAA,mBAAmB,uBAK5B;AAEJ,gBAAgB;AAChB,sLAAsL;AAC/K,MAAM,qBAAqB,GAAG,CAAC,MAAe,EAAU,EAAE,CAC/D,IAAA,4BAAW;AACT,0NAA0N;AACzN,MAA2C,CAAC,WAAW,EACxD,8BAAc,CACf,CAAC,QAAQ,CAAC;AALA,QAAA,qBAAqB,yBAKrB"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// The navigation badges a table view publishes: the counter of a tab declared
|
|
3
|
-
// with `navBadge`, counted on the server when the menu loads.
|
|
4
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
3
|
exports.declareTabNavBadges = declareTabNavBadges;
|
|
6
4
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
@@ -37,11 +35,14 @@ async function countRows(controller, ctx, user, filter) {
|
|
|
37
35
|
const permissions = await (0, auth_1.authorizeAction)(instance, auth_1.LIST_ACTION, user, (0, request_tenant_1.getRequestTenantId)(ctx));
|
|
38
36
|
const queryContext = withQuery(ctx, tabFilterQuery(filter));
|
|
39
37
|
const filters = components_1.Parameters.ExtractFilters(queryContext, (0, interface_data_api_1.GetDataControllerMeta)(instance));
|
|
40
|
-
const { total } = await (0, data_functions_1.countWithSearch)(
|
|
38
|
+
const { total } = await (0, data_functions_1.countWithSearch)(
|
|
39
|
+
// oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- GetControllerInstance returns an instance, while the published runtime proxy accepts DataControllerCallback as its receiver type; that mismatch is not validated here.
|
|
40
|
+
instance, queryContext, { filters }, user, permissions);
|
|
41
41
|
return total;
|
|
42
42
|
}
|
|
43
43
|
/** The tab's count in the tone its `navBadge` declares; a bare count without one. */
|
|
44
44
|
function withTabTone(tab) {
|
|
45
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- The published navBadge option declares a boolean shorthand or an object with a tone; this selects the object variant.
|
|
45
46
|
const tone = typeof tab.navBadge === "object" ? tab.navBadge.tone : undefined;
|
|
46
47
|
return (count) => (tone ? { count, tone } : count);
|
|
47
48
|
}
|
|
@@ -58,6 +59,7 @@ function navBadgeSourceOf(tab, controller) {
|
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
const { to, countFrom } = tab;
|
|
62
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Published tab targets and count sources may be strings or controller classes; navigation badges require the class variants.
|
|
61
63
|
if (typeof to === "string" || !countFrom || typeof countFrom === "string") {
|
|
62
64
|
logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}": tab "${tab.id}" sets navBadge but links to a path or counts from a location; a navigation badge needs a page controller \`to\` and a data controller \`countFrom\`. It publishes nothing.`);
|
|
63
65
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/nav-badges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/nav-badges.ts"],"names":[],"mappings":";;AA2HA,kDAUC;AArID,6DAImC;AACnC,gEAA6D;AAC7D,uEAGwC;AACxC,0EAAuE;AAOvE,4DAA6D;AAC7D,iCAAsD;AACtD,sDAAoD;AAGpD,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,qFAAqF;AACrF,SAAS,cAAc,CAAC,MAAsC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO;QACL,CAAC,GAAG,mBAAmB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;KACxF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,GAAmB,EACnB,KAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,SAAS,CACtB,UAA2B,EAC3B,GAAmB,EACnB,IAAU,EACV,MAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,IAAA,qCAAqB,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAe,EACvC,QAAQ,EACR,kBAAW,EACX,IAAI,EACJ,IAAA,mCAAkB,EAAC,GAAG,CAAC,CACxB,CAAC;IACF,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,uBAAU,CAAC,cAAc,CACvC,YAAY,EACZ,IAAA,0CAAqB,EAAC,QAAQ,CAAC,CAChC,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,gCAAe;IACrC,yPAAyP;IACzP,QAAkC,EAClC,YAAY,EACZ,EAAE,OAAO,EAAE,EACX,IAAI,EACJ,WAAW,CACZ,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,SAAS,WAAW,CAClB,GAAiB;IAEjB,gLAAgL;IAChL,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,GAAiB,EACjB,UAA2B;IAE3B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACnB,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACtE,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9B,sLAAsL;IACtL,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1E,iBAAO,CAAC,IAAI,CACV,uBAAuB,UAAU,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,6KAA6K,CACrO,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACnB,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,OAA4B,EAC5B,IAAgC,EAChC,UAA2B;IAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,SAAS;QAC5B,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { CustomButtonSerialized, CustomButton } from "../../types/custom-button";
|
|
3
|
+
import type { TableViewRowActionOptionsSerialized, TableViewRowActionOptions } from "./option-row-actions";
|
|
4
|
+
import type { ComponentInfoSerialized } from "../../../component";
|
|
5
|
+
import type { FormPropsSerialized } from "../../form-types";
|
|
6
|
+
import type { QueryParamFilters, RouteParamFilters, TableViewLayout, TableViewQuickFilter, TableViewPaginationMode, TableViewReorderOptions } from "./option-filtering";
|
|
7
|
+
import type { TableViewTabSerialized, TableViewViewsSerialized, TableViewRowClick, TableViewColumnsOptions, TableViewTab, TableViewViewsOptions } from "./option-views";
|
|
8
|
+
import type { TableViewDisplayOptionSerialized, KanbanOptions, GroupedOptions, TableViewCardOptions, TableViewDisplayOption } from "./option-displays";
|
|
9
|
+
import type { TableViewFormPageUrls, FormContainer, TableViewFormSetup } from "./option-forms";
|
|
10
|
+
import type { TableViewExpandableSerialized, TableViewExpandableOptions } from "./option-expandable";
|
|
11
|
+
import type { TableViewFooterSerialized, TableViewFooterOptions } from "./option-footer";
|
|
12
|
+
import type { TableViewEmptyStatesSerialized, TableViewEmptyStates } from "./option-empty-states";
|
|
13
|
+
import type { TableViewSourceSerialized } from "../source";
|
|
14
|
+
import type { RowActionRule } from "../../types/row-action";
|
|
15
|
+
import type { TableViewGuards } from "../../types/guards";
|
|
16
|
+
export interface TableViewOptionsSerialized extends Omit<TableViewOptions, "columns" | "customButtons" | "rowActions" | "kanban" | "displays" | "formSlots" | "forms" | "expandable" | "tabs" | "views" | "footer" | "emptyStates"> {
|
|
17
|
+
enableTableExport: boolean;
|
|
18
|
+
/** Whether the controller declares `@Searchable` fields to search in. */
|
|
19
|
+
searchable: boolean;
|
|
20
|
+
customButtons?: CustomButtonSerialized[];
|
|
21
|
+
defaultFilters?: Array<{
|
|
22
|
+
accessorKey: string;
|
|
23
|
+
value?: string;
|
|
24
|
+
mode: string;
|
|
25
|
+
}>;
|
|
26
|
+
rowActions?: TableViewRowActionOptionsSerialized;
|
|
27
|
+
formComponents: Record<string, ComponentInfoSerialized<FormPropsSerialized> | undefined>;
|
|
28
|
+
defaultSort?: {
|
|
29
|
+
field: string;
|
|
30
|
+
desc?: boolean;
|
|
31
|
+
};
|
|
32
|
+
queryParamFilters?: QueryParamFilters;
|
|
33
|
+
routeParamFilters?: RouteParamFilters;
|
|
34
|
+
tabs?: TableViewTabSerialized[];
|
|
35
|
+
displays?: TableViewDisplayOptionSerialized[];
|
|
36
|
+
/**
|
|
37
|
+
* Resolved page-mode form URLs. Server-computed, so the frontend navigates to
|
|
38
|
+
* the very URLs the form sub-pages were registered under instead of rebuilding
|
|
39
|
+
* them from the browser path. Absent when the container is not a page.
|
|
40
|
+
*/
|
|
41
|
+
formPages?: TableViewFormPageUrls;
|
|
42
|
+
expandable?: TableViewExpandableSerialized;
|
|
43
|
+
views?: TableViewViewsSerialized;
|
|
44
|
+
footer?: TableViewFooterSerialized;
|
|
45
|
+
emptyStates?: TableViewEmptyStatesSerialized;
|
|
46
|
+
/** Where a `TableView.fromSource` table reads its rows. */
|
|
47
|
+
source?: TableViewSourceSerialized;
|
|
48
|
+
/**
|
|
49
|
+
* Key of the table view in its page, which prefixes its URL keys
|
|
50
|
+
* (`?<tableId>.view=`). Set per request.
|
|
51
|
+
*/
|
|
52
|
+
tableId?: string;
|
|
53
|
+
/**
|
|
54
|
+
* The table view is the only one its page carries: the short URL keys
|
|
55
|
+
* (`?view=`, `?tab=`) are its own. Set per request.
|
|
56
|
+
*/
|
|
57
|
+
isSoleTableView?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* When a `liveHold` table also holds its rows while its live page is in
|
|
61
|
+
* Direct: the table alone keeps them and counts its events into the
|
|
62
|
+
* "N new · Show" banner, the other blocks of the page staying live. The
|
|
63
|
+
* banner says why the table holds ("Table on hold · search active"). It reads
|
|
64
|
+
* the rows once again when the hold ends, if it missed any.
|
|
65
|
+
*/
|
|
66
|
+
export interface TableViewLiveHoldOptions {
|
|
67
|
+
/** While one of its rows is open in the side panel. Defaults to false. */
|
|
68
|
+
whileRowOpen?: boolean;
|
|
69
|
+
/** While the user has scrolled its first row out of view. Defaults to false. */
|
|
70
|
+
whileScrolled?: boolean;
|
|
71
|
+
/** While the user's search narrows the rows. Defaults to false. */
|
|
72
|
+
whileSearching?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* While the user sorts the rows otherwise than by the table's `defaultSort`
|
|
75
|
+
* (the newest first, for a log): new rows would land anywhere among them.
|
|
76
|
+
* Defaults to false.
|
|
77
|
+
*/
|
|
78
|
+
whileSorted?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* What the strip calls the new rows, given `{count}`, as the `LiveToggle`'s
|
|
81
|
+
* own `missedLabel`: an i18n key prefixed with `$`
|
|
82
|
+
* (`"$api.live.new_requests"`, "12 new requests"), or a text. While the
|
|
83
|
+
* page is paused, the strip adds the breakdown a component gave with
|
|
84
|
+
* `usePageLive().setMissedDetail` ("12 new requests · 2 in 5xx").
|
|
85
|
+
* Defaults to "N new".
|
|
86
|
+
*/
|
|
87
|
+
missedLabel?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface TableViewOptions<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
90
|
+
caption?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Row density the table opens with: "compact" gives 36px rows under a 32px
|
|
93
|
+
* header. The user picks another from the "Density" entry of the ⋯ table
|
|
94
|
+
* menu, kept with the rest of the table's state.
|
|
95
|
+
*/
|
|
96
|
+
density?: "default" | "compact";
|
|
97
|
+
/**
|
|
98
|
+
* Caps the rows in a scroll area of their own (any CSS length, e.g.
|
|
99
|
+
* "60vh"), under a column header that stays in view while they scroll.
|
|
100
|
+
*/
|
|
101
|
+
maxHeight?: string;
|
|
102
|
+
/**
|
|
103
|
+
* What runs the row's click action: a double-click by default, a single
|
|
104
|
+
* click with `"single"`. See {@link TableViewRowClick}.
|
|
105
|
+
* @example "single"
|
|
106
|
+
*/
|
|
107
|
+
rowClick?: TableViewRowClick;
|
|
108
|
+
/**
|
|
109
|
+
* Expandable rows: a caret column in front of the content opens a detail
|
|
110
|
+
* band under each row, listing `fields` or rendering `component`.
|
|
111
|
+
* @example { fields: ["address", "carrier"], defaultExpanded: "first" }
|
|
112
|
+
* @example { component: CustomComponent("OrderLines"), single: true }
|
|
113
|
+
*/
|
|
114
|
+
expandable?: TableViewExpandableOptions;
|
|
115
|
+
/**
|
|
116
|
+
* How much the table draws around its rows: `"full"` (the default) or the
|
|
117
|
+
* `"compact"` list of a settings page. See {@link TableViewLayout}.
|
|
118
|
+
*/
|
|
119
|
+
layout?: TableViewLayout;
|
|
120
|
+
/** Placeholder of the search field. `$`-prefixed: an i18n key. */
|
|
121
|
+
searchPlaceholder?: string;
|
|
122
|
+
/**
|
|
123
|
+
* The key that opens and focuses the search field, in Nuxt UI
|
|
124
|
+
* `defineShortcuts` notation: `"/"`, `"shift_f"`, `"meta_k"`. Defaults to
|
|
125
|
+
* `"shift_f"` (⇧F). Like every table shortcut, it does not fire while the
|
|
126
|
+
* user types in a field, so `"/"` stays a character there.
|
|
127
|
+
* @example "/"
|
|
128
|
+
*/
|
|
129
|
+
searchShortcut?: string;
|
|
130
|
+
/** One-click dropdown filters drawn in the toolbar. */
|
|
131
|
+
quickFilters?: TableViewQuickFilter[];
|
|
132
|
+
/**
|
|
133
|
+
* Rows per page while the user has picked none, from 1 to 50 (registration
|
|
134
|
+
* throws otherwise). Defaults to 10. A size other than the standard 10, 25
|
|
135
|
+
* and 50 joins them in this table's page size picker.
|
|
136
|
+
*/
|
|
137
|
+
pageSize?: number;
|
|
138
|
+
/**
|
|
139
|
+
* How the rows beyond the first page are reached. Defaults to `pages`.
|
|
140
|
+
* See {@link TableViewPaginationMode}.
|
|
141
|
+
*/
|
|
142
|
+
pagination?: TableViewPaginationMode;
|
|
143
|
+
/**
|
|
144
|
+
* The footer band: the row count and a hint, figures computed over the
|
|
145
|
+
* listed rows (`summary`) and a legend of a select column's items.
|
|
146
|
+
*/
|
|
147
|
+
footer?: TableViewFooterOptions<T>;
|
|
148
|
+
/**
|
|
149
|
+
* What the empty body of the grid and the `cards` display says when the
|
|
150
|
+
* table has no row yet, when its filters match nothing, or when the list
|
|
151
|
+
* failed. See {@link TableViewEmptyStates}.
|
|
152
|
+
*/
|
|
153
|
+
emptyStates?: TableViewEmptyStates;
|
|
154
|
+
/**
|
|
155
|
+
* The key of the row id, default is _id
|
|
156
|
+
*/
|
|
157
|
+
rowIdKey?: string;
|
|
158
|
+
/**
|
|
159
|
+
* The key of the field naming a row: it follows the title of the drawer or
|
|
160
|
+
* modal that edits or shows the row ("Edit task · Write the docs"), and
|
|
161
|
+
* ends the breadcrumb of its edit and details pages.
|
|
162
|
+
*/
|
|
163
|
+
labelKey?: string;
|
|
164
|
+
rowActions?: TableViewRowActionOptions<T>;
|
|
165
|
+
/**
|
|
166
|
+
* The controller's columns as this table view shows them, when one page
|
|
167
|
+
* needs them otherwise than the controller declares: a related list on a
|
|
168
|
+
* record's page hides the column naming that record.
|
|
169
|
+
* @example { hidden: ["workspace"] }
|
|
170
|
+
*/
|
|
171
|
+
columns?: TableViewColumnsOptions;
|
|
172
|
+
customButtons?: CustomButton[];
|
|
173
|
+
/**
|
|
174
|
+
* Where the add, edit and details forms open (a page by default) and their
|
|
175
|
+
* titles, in any container.
|
|
176
|
+
* @example { type: "drawer", pages: { new: { displayName: "$tasks.form.new_title" } } }
|
|
177
|
+
*/
|
|
178
|
+
formContainer?: FormContainer;
|
|
179
|
+
/**
|
|
180
|
+
* Enable archive mode: replaces delete action with archive/restore
|
|
181
|
+
*/
|
|
182
|
+
archiveMode?: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* The count the caption shows while the archived rows are listed, naming
|
|
185
|
+
* them: an i18n key with `$` receiving `{ count }` and pluralized on it
|
|
186
|
+
* ("13 factures archivées"), or a text with `{count}`. Defaults to
|
|
187
|
+
* "Archived: {count}" ("Archives : {count}" in French), which agrees with
|
|
188
|
+
* no noun.
|
|
189
|
+
* @example "$invoices.archived_count"
|
|
190
|
+
*/
|
|
191
|
+
archivedCountLabel?: string;
|
|
192
|
+
/**
|
|
193
|
+
* Default filters to apply when the table view is opened
|
|
194
|
+
*/
|
|
195
|
+
defaultFilters?: Array<{
|
|
196
|
+
accessorKey: string;
|
|
197
|
+
value?: string;
|
|
198
|
+
mode: string;
|
|
199
|
+
}>;
|
|
200
|
+
/**
|
|
201
|
+
* Default sort configuration applied when no user preference exists, and
|
|
202
|
+
* the sort the table goes back to when the user clears theirs.
|
|
203
|
+
*/
|
|
204
|
+
defaultSort?: {
|
|
205
|
+
field: string;
|
|
206
|
+
desc?: boolean;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Rows listed first, whatever the sort: those `pinnedRows` accepts, a rule
|
|
210
|
+
* on the row's fields as a row action's `rule`, in the order the sort gives
|
|
211
|
+
* them. The rest follows in the sort's order. A route answering every row
|
|
212
|
+
* (a `TableView.fromSource` without `paginate`) has its pinned rows on the
|
|
213
|
+
* first page; a route answering one page has them first within the page it
|
|
214
|
+
* answers. The `grouped` display keeps its groups and pins nothing;
|
|
215
|
+
* registration refuses it alongside `reorder`, whose rows keep their
|
|
216
|
+
* position.
|
|
217
|
+
* @example { field: "isBase", equals: true }
|
|
218
|
+
*/
|
|
219
|
+
pinnedRows?: RowActionRule<T>;
|
|
220
|
+
/**
|
|
221
|
+
* Maps URL query parameters to hidden filters applied to the table data.
|
|
222
|
+
* These filters are not persisted in preferences, and not visible in the UI
|
|
223
|
+
* unless one sets `visible: true`: it then shows as a removable chip.
|
|
224
|
+
* @example { email: { field: "email", visible: true, label: "$app.email" } }
|
|
225
|
+
*/
|
|
226
|
+
queryParamFilters?: QueryParamFilters;
|
|
227
|
+
/**
|
|
228
|
+
* Maps DMS route parameters (extracted from the page slug, e.g. `:id`) to
|
|
229
|
+
* hidden filters applied to the table data. Filters are not visible in the
|
|
230
|
+
* UI nor persisted in preferences. Useful for detail pages where the table
|
|
231
|
+
* must be scoped by a path param such as the parent entity id.
|
|
232
|
+
*/
|
|
233
|
+
routeParamFilters?: RouteParamFilters;
|
|
234
|
+
/**
|
|
235
|
+
* When true, reject entire request if any row fails rule validation.
|
|
236
|
+
* When false (default), only process rows that pass rule validation.
|
|
237
|
+
*/
|
|
238
|
+
strictRuleValidation?: boolean;
|
|
239
|
+
/**
|
|
240
|
+
* Tabs displayed above the table. Each tab filters the rows on one column,
|
|
241
|
+
* or links to another page. The implicit "all" tab (no filter) is shown
|
|
242
|
+
* automatically when at least one tab is configured here.
|
|
243
|
+
*
|
|
244
|
+
* Each tab shows a row counter, fetched in one request: filter tabs with
|
|
245
|
+
* counters require the controller to mount
|
|
246
|
+
* `countBatch: TableViewRoutes.CountBatch`. `TableView()` warns at
|
|
247
|
+
* registration when a table declares tabs without it.
|
|
248
|
+
*/
|
|
249
|
+
tabs?: TableViewTab[];
|
|
250
|
+
/**
|
|
251
|
+
* When false, disables realtime broadcast/presence for this resource.
|
|
252
|
+
* Defaults to true (realtime is opt-out).
|
|
253
|
+
*/
|
|
254
|
+
realtime?: boolean;
|
|
255
|
+
/**
|
|
256
|
+
* Topics the backend publishes on (`PublishMessage`) when the rows change
|
|
257
|
+
* without a write through this table's routes — a batch, a job, an import.
|
|
258
|
+
* The table reads its rows again on each event, keeping the current rows on
|
|
259
|
+
* screen until the answer lands. The page registers them, as for a chart's
|
|
260
|
+
* `realtimeTopic`. Independent of `realtime`, which covers the writes made
|
|
261
|
+
* through the controller.
|
|
262
|
+
*/
|
|
263
|
+
realtimeTopic?: string | string[];
|
|
264
|
+
/**
|
|
265
|
+
* On a page declared with `live`, keeps the rows on screen while the page is
|
|
266
|
+
* paused, through the user's own search, sort and pagination too, and shows
|
|
267
|
+
* a "N new · Show" banner counting the rows the table would add since:
|
|
268
|
+
* how many more rows its tab, search and filters match now than it holds,
|
|
269
|
+
* asked of its count route (the events received, if that count fails).
|
|
270
|
+
* Show reads the rows once without leaving the pause. The page in Direct,
|
|
271
|
+
* the table also keeps its rows while they are on screen or scrolled past:
|
|
272
|
+
* a new row at the top would push down the rows the user reads, so new ones
|
|
273
|
+
* wait behind a "N new · Show" pill laid over the rows, which moves nothing.
|
|
274
|
+
* A table still below the screen follows the feed.
|
|
275
|
+
*
|
|
276
|
+
* A `TableView.fromSource` route receives the moment the rows were frozen
|
|
277
|
+
* as `liveHeldAt` (ISO 8601) on every list and count request made while
|
|
278
|
+
* paused, so it can answer the rows as they stood then; a data controller's
|
|
279
|
+
* rows are held against the realtime only. Ignored on a page without `live`.
|
|
280
|
+
*
|
|
281
|
+
* An object also names why the table holds, the rest of the page staying
|
|
282
|
+
* live, in more cases (see {@link TableViewLiveHoldOptions}); `true` and
|
|
283
|
+
* `{}` hold it while the page is paused or its rows are on screen.
|
|
284
|
+
*
|
|
285
|
+
* ```ts
|
|
286
|
+
* liveHold: { whileRowOpen: true, whileScrolled: true, whileSearching: true }
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
liveHold?: boolean | TableViewLiveHoldOptions;
|
|
290
|
+
/**
|
|
291
|
+
* Enable the kanban display mode for this collection. When set, users can
|
|
292
|
+
* switch between the table and a kanban board from the toolbar.
|
|
293
|
+
*/
|
|
294
|
+
kanban?: KanbanOptions;
|
|
295
|
+
/**
|
|
296
|
+
* Lets the user order the rows by hand: the rows are listed sorted on
|
|
297
|
+
* `field`, a drag handle moves a row within its page — on the grid and on
|
|
298
|
+
* the `cards` display, whose custom `card.component` receives the handle
|
|
299
|
+
* as its `reorder` prop — and only the rows whose position changed are
|
|
300
|
+
* saved (a partial edit of `field`). Moving is off while a search, a
|
|
301
|
+
* filter or a tab narrows the rows. Needs the `edit` action.
|
|
302
|
+
*/
|
|
303
|
+
reorder?: TableViewReorderOptions;
|
|
304
|
+
/**
|
|
305
|
+
* Offers the `grouped` display: the grid's columns with a header row per
|
|
306
|
+
* group of rows. A view may open in it (`display: "grouped"`).
|
|
307
|
+
* @example { groupByField: "createdAt", by: "day", count: true }
|
|
308
|
+
*/
|
|
309
|
+
grouped?: GroupedOptions;
|
|
310
|
+
/**
|
|
311
|
+
* Named states of the table — filters, search, sort, columns, display and
|
|
312
|
+
* density — drawn as tabs, a strip of pills or a menu, opened from the URL
|
|
313
|
+
* (`?view=<id>`) and, with `userViews`, saved by users for themselves.
|
|
314
|
+
* Views and `tabs` coexist: a tab filters on one column, a view sets the
|
|
315
|
+
* whole table.
|
|
316
|
+
*/
|
|
317
|
+
views?: TableViewViewsOptions;
|
|
318
|
+
/**
|
|
319
|
+
* The card the `kanban` and `cards` displays draw for each row: the columns
|
|
320
|
+
* it shows, or a component drawing it whole.
|
|
321
|
+
* @example { fields: ["email", "due_date"] }
|
|
322
|
+
* @example { component: CustomComponent("TaskCard") }
|
|
323
|
+
*/
|
|
324
|
+
card?: TableViewCardOptions;
|
|
325
|
+
/**
|
|
326
|
+
* The displays this table view offers, in the switcher's order. Left out,
|
|
327
|
+
* the table view offers the built-in `table` alone; listed, it offers
|
|
328
|
+
* exactly these, so the grid is kept by listing `{ id: "table" }`. The
|
|
329
|
+
* `kanban` and `grouped` options add their display after the list unless it
|
|
330
|
+
* places them. Each `component` is a frontend component resolved by name on
|
|
331
|
+
* the client from the global registry (declare its directory with
|
|
332
|
+
* `global: true`); it receives the normalized `context` prop.
|
|
333
|
+
* `selfManagedData`/`capabilities` are the SSR source of truth for data
|
|
334
|
+
* fetching + chrome; the matching client plugin (`registerTableViewDisplay`)
|
|
335
|
+
* supplies the id, label, icon and component.
|
|
336
|
+
* @example [{ id: "table" }, { id: "cards" }]
|
|
337
|
+
*/
|
|
338
|
+
displays?: TableViewDisplayOption[];
|
|
339
|
+
/**
|
|
340
|
+
* Display shown by default when the user has no saved preference. Defaults to
|
|
341
|
+
* the first display offered: `table` when `displays` is left out.
|
|
342
|
+
*/
|
|
343
|
+
defaultDisplay?: string;
|
|
344
|
+
/**
|
|
345
|
+
* Display a phone opens on (a viewport narrower than 768px) when the user
|
|
346
|
+
* has no saved choice and the open view sets no `display` of its own (a
|
|
347
|
+
* `views.defaultView` without one opens on it too): `cards` gives a narrow screen a
|
|
348
|
+
* card per row instead of a grid cut after its first columns. One of the
|
|
349
|
+
* displays offered, so the switcher still leads back to the grid. Applied
|
|
350
|
+
* once mounted (the server cannot see the viewport) and not saved: the same
|
|
351
|
+
* user on a wide screen keeps `defaultDisplay`.
|
|
352
|
+
* @example { displays: [{ id: "table" }, { id: "cards" }], mobileDisplay: "cards" }
|
|
353
|
+
*/
|
|
354
|
+
mobileDisplay?: string;
|
|
355
|
+
/**
|
|
356
|
+
* Server-side guards that run before mutating actions (edit/delete/archive/
|
|
357
|
+
* restore/new). Throw with `assert(...)` from `@antelopejs/interface-api-util`
|
|
358
|
+
* to abort the operation with an HTTP error and an i18n message key.
|
|
359
|
+
* `this` inside a guard is the data controller instance, so models declared
|
|
360
|
+
* with @Model are accessible.
|
|
361
|
+
*/
|
|
362
|
+
guards?: TableViewGuards<T>;
|
|
363
|
+
/**
|
|
364
|
+
* Component slots the generated forms open, by form kind, so another module
|
|
365
|
+
* can extend them through `RegisterComponentSlot` — the pending-invite edit
|
|
366
|
+
* form opens one for the invite extensions. Values the slot adds to a form
|
|
367
|
+
* reach the data routes only if the controller reads them.
|
|
368
|
+
*/
|
|
369
|
+
formSlots?: Partial<Record<"new" | "edit" | "view", string>>;
|
|
370
|
+
/**
|
|
371
|
+
* Settles the forms the table view generates, by form kind, for input
|
|
372
|
+
* comfort only: each callback receives the form's builder before the table
|
|
373
|
+
* view embeds it, and declares on it what a module's own `Form` would — a
|
|
374
|
+
* value filled in from another (`SET_FIELD_VALUE`), a field one table's
|
|
375
|
+
* forms leave out. No data rule here: the data routes never see these
|
|
376
|
+
* watches. A field shown, required or locked by the value of another is a
|
|
377
|
+
* column's `visibleWhen` / `disabledWhen`, which the routes enforce too.
|
|
378
|
+
* What it declares holds in a drawer, a modal or a form page alike; the
|
|
379
|
+
* `new` form's also on a duplicated row. A watch's `requirePermission` is
|
|
380
|
+
* checked per request, as on a page's own components.
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* forms: {
|
|
384
|
+
* new: (form) =>
|
|
385
|
+
* form.watch(FormEvents.FIELD_CHANGE, FormFunctions.SET_FIELD_VALUE, {
|
|
386
|
+
* params: { targetField: "probability", valueMap: { won: 100, lost: 0 } },
|
|
387
|
+
* onParam: { key: "fieldId", value: "stage" },
|
|
388
|
+
* }),
|
|
389
|
+
* }
|
|
390
|
+
*/
|
|
391
|
+
forms?: Partial<Record<"new" | "edit" | "view", TableViewFormSetup>>;
|
|
392
|
+
/**
|
|
393
|
+
* Skip the tenant access gate on every data route of this table view, the
|
|
394
|
+
* table-view mirror of the guards' `bypassTenantAccessGate` option. Reserved
|
|
395
|
+
* for tables that must stay readable when a gate denies the tenant (e.g.
|
|
396
|
+
* invoices on the billing page of a suspended tenant) so it can regularize
|
|
397
|
+
* its situation. Data routes are registered independently of pages, so the
|
|
398
|
+
* opt-out is controller-level and latched: once any `TableView()` call on a
|
|
399
|
+
* controller declares it, the controller's routes bypass the gate wherever
|
|
400
|
+
* they are rendered. Permission checks still apply.
|
|
401
|
+
*/
|
|
402
|
+
bypassTenantAccessGate?: boolean;
|
|
403
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-contract.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/option-contract.ts"],"names":[],"mappings":""}
|