@sdcorejs/angular 19.1.6 → 19.2.1
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 +10 -0
- package/assets/scss/core/menu.scss +18 -0
- package/assets/scss/core/utilities/_misc.scss +15 -0
- package/assets/scss/sd-core.scss +1 -0
- package/components/anchor/src/components/anchor/anchor.component.d.ts +3 -1
- package/components/api-contract-builder/index.d.ts +8 -0
- package/components/api-contract-builder/src/api-contract-builder.component.d.ts +123 -0
- package/components/api-contract-builder/src/api-contract.configuration.d.ts +41 -0
- package/components/api-contract-builder/src/api-contract.expression.d.ts +43 -0
- package/components/api-contract-builder/src/api-contract.model.d.ts +167 -0
- package/components/api-contract-builder/src/api-contract.samples.d.ts +25 -0
- package/components/api-contract-builder/src/api-contract.schema.d.ts +126 -0
- package/components/api-contract-builder/src/api-contract.serializer.d.ts +17 -0
- package/components/api-contract-builder/src/api-contract.validation.d.ts +12 -0
- package/components/api-contract-builder/src/components/api-contract-diagnostic-list.component.d.ts +18 -0
- package/components/api-contract-builder/src/components/api-contract-node-drawer.component.d.ts +130 -0
- package/components/api-contract-builder/src/components/api-contract-node-editor.component.d.ts +35 -0
- package/components/api-contract-builder/src/components/api-contract-node-summary.component.d.ts +41 -0
- package/components/api-contract-builder/src/components/api-contract-record-editor.component.d.ts +36 -0
- package/components/api-contract-builder/src/components/api-contract-source-editor.component.d.ts +86 -0
- package/components/api-contract-builder/src/components/api-contract-suggestion.model.d.ts +17 -0
- package/components/badge/src/badge.component.d.ts +2 -0
- package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +1 -1
- package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +2 -1
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +3 -1
- package/components/form-generic/src/components/form-render/components/item/components/checkbox/checkbox.component.d.ts +34 -0
- package/components/form-generic/src/components/form-render/components/item/components/index.d.ts +1 -0
- package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +6 -1
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -1
- package/components/form-generic/src/configurations/form.configuration.d.ts +1 -1
- package/components/form-generic/src/models/form-generic-component.model.d.ts +8 -8
- package/components/form-generic/src/models/form-generic-definition-selection.model.d.ts +5 -5
- package/components/form-generic/src/models/form-generic-expression.model.d.ts +12 -12
- package/components/form-generic/src/models/index.d.ts +1 -0
- package/components/form-generic/src/services/form-generic.service.d.ts +2 -2
- package/components/import-excel/src/import-excel.component.d.ts +1 -0
- package/components/index.d.ts +7 -1
- package/components/mini-editor/src/mini-editor.model.d.ts +1 -1
- package/components/modal/src/modal.component.d.ts +3 -2
- package/components/modal-resizable/src/modal-resizable.component.d.ts +92 -0
- package/components/modal-resizable/src/modal-resizable.registry.d.ts +22 -0
- package/components/org-chart/src/org-chart.component.d.ts +6 -0
- package/components/preview/src/preview-image/preview-image.component.d.ts +1 -0
- package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +6 -2
- package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +4 -1
- package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +8 -0
- package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +2 -0
- package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +2 -0
- package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +3 -3
- package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +9 -4
- package/components/query-bar/src/query-bar.component.d.ts +32 -5
- package/components/query-bar/src/query-bar.model.d.ts +15 -12
- package/components/query-builder/src/query-builder.component.d.ts +76 -39
- package/components/query-builder/src/query-builder.model.d.ts +59 -52
- package/components/query-builder/src/query-builder.serializer.d.ts +15 -6
- package/components/section/src/section.component.d.ts +5 -0
- package/components/side-drawer/src/body-scroll-lock.service.d.ts +10 -0
- package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +1 -0
- package/components/tab-router/index.d.ts +2 -1
- package/components/tab-router/src/actions/tab-router.action.d.ts +2 -2
- package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +2 -2
- package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +3 -3
- package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -3
- package/components/tab-router/src/decorators/tab.decorator.d.ts +13 -1
- package/components/tab-router/src/events/tab-router.event.d.ts +3 -3
- package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
- package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
- package/components/tab-router/src/services/tab-router.service.d.ts +9 -9
- package/components/table/index.d.ts +1 -0
- package/components/table/src/components/config/config.component.d.ts +6 -1
- package/components/table/src/components/desktop-cell/view/view.component.d.ts +1 -0
- package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +1 -1
- package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +1 -1
- package/components/table/src/components/selector-action/action-filter.pipe.d.ts +8 -1
- package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -0
- package/components/table/src/directives/index.d.ts +1 -0
- package/components/table/src/directives/sd-table-command-header-def.directive.d.ts +24 -0
- package/components/table/src/models/table-column.model.d.ts +30 -13
- package/components/table/src/models/table-item.model.d.ts +30 -1
- package/components/table/src/models/table-option-selector.model.d.ts +5 -4
- package/components/table/src/models/table-option.model.d.ts +12 -0
- package/components/table/src/pipes/sd-group.pipe.d.ts +6 -2
- package/components/table/src/services/table-filter/table-filter.model.d.ts +15 -15
- package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
- package/components/table/src/services/table-format/table-format.service.d.ts +1 -1
- package/components/table/src/services/table-selection/selection-action.util.d.ts +24 -0
- package/components/table/src/services/table-selection/table-selection.util.d.ts +31 -0
- package/components/table/src/services/tree/tree.util.d.ts +3 -2
- package/components/table/src/table.component.d.ts +51 -5
- package/components/tree/src/tree-item-def.directive.d.ts +1 -1
- package/components/tree/src/tree.component.d.ts +16 -4
- package/components/tree/src/tree.model.d.ts +31 -25
- package/components/upload-file/src/configurations/upload-file.configuration.d.ts +2 -2
- package/components/upload-file/src/upload-file.component.d.ts +4 -1
- package/configurations/src/sd-core.configuration.d.ts +1 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +36 -12
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs +3411 -0
- package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +27 -2
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +27 -17
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +33 -2
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +555 -267
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +7 -1
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +231 -60
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +95 -23
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +130 -26
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +39 -15
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +227 -6
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +135 -37
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +895 -68
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +342 -111
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services.mjs +0 -1
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs +17 -10
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +5 -2
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +10 -0
- package/forms/date/src/date.component.d.ts +13 -2
- package/forms/date-range/src/date-range.component.d.ts +13 -2
- package/forms/datetime/src/datetime.component.d.ts +13 -2
- package/forms/entity-picker/src/entity-picker.component.d.ts +9 -3
- package/forms/input/src/input.component.d.ts +3 -0
- package/forms/input-color/src/input-color.component.d.ts +4 -0
- package/forms/input-number/src/input-number.component.d.ts +3 -0
- package/forms/models/index.d.ts +3 -0
- package/forms/models/src/sd-form-control-connector.d.ts +12 -0
- package/forms/models/src/sd-model-facing-control.d.ts +43 -0
- package/forms/models/src/sd-search.model.d.ts +1 -1
- package/forms/models/src/sd-selection-data.model.d.ts +1 -1
- package/forms/models/src/sd-temporal-transform.d.ts +31 -0
- package/forms/models/src/sd-timer-scope.d.ts +29 -0
- package/forms/select/src/select.component.d.ts +27 -4
- package/forms/src/forms.module.d.ts +22 -13
- package/forms/switch/src/switch.component.d.ts +5 -0
- package/forms/textarea/src/textarea.component.d.ts +5 -3
- package/forms/time-range/src/time-range.component.d.ts +22 -1
- package/forms/tree-select/src/tree-select.component.d.ts +36 -5
- package/i18n/src/en.d.ts +170 -10
- package/i18n/src/i18n.messages.d.ts +1 -1
- package/i18n/src/i18n.pipe.d.ts +3 -3
- package/i18n/src/i18n.service.d.ts +2 -1
- package/i18n/src/i18n.types.d.ts +0 -3
- package/interceptors/no-internet/no-internet.interceptor.d.ts +11 -1
- package/modules/auth/services/auth.model.d.ts +1 -1
- package/modules/keycloak/keycloak.service.d.ts +1 -0
- package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +2 -0
- package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +16 -3
- package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v2/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v3/main.component.d.ts +3 -3
- package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +5 -0
- package/modules/layout/modules/not-found/pages/root/root.component.d.ts +5 -0
- package/modules/layout/services/layout.service.d.ts +21 -0
- package/modules/layout/services/storage/storage.service.d.ts +52 -7
- package/modules/permission/src/configurations/permission.configuration.d.ts +11 -0
- package/modules/permission/src/directives/permission.directive.d.ts +2 -1
- package/modules/permission/src/services/permission.service.d.ts +52 -1
- package/package.json +40 -29
- package/pipes/src/safe-html.pipe.d.ts +26 -4
- package/pipes/src/time-different.pipe.d.ts +1 -0
- package/public-api.d.ts +11 -10
- package/services/api/src/api-host.d.ts +15 -0
- package/services/api/src/api.model.d.ts +14 -0
- package/services/api/src/api.module.d.ts +6 -0
- package/services/cache/src/cache.model.d.ts +10 -0
- package/services/index.d.ts +0 -1
- package/services/notify/index.d.ts +1 -1
- package/utilities/extensions/index.d.ts +1 -5
- package/utilities/extensions/src/url-safety.d.ts +72 -0
- package/utilities/extensions/src/utility.extension.d.ts +9 -5
- package/utilities/models/index.d.ts +0 -10
- package/components/base/index.d.ts +0 -1
- package/components/base/src/base-secure.component.d.ts +0 -8
- package/components/document-builder/index.d.ts +0 -4
- package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +0 -15
- package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +0 -4
- package/components/document-builder/src/components/index.d.ts +0 -1
- package/components/document-builder/src/document-builder.component.d.ts +0 -53
- package/components/document-builder/src/document-builder.config.d.ts +0 -21
- package/components/document-builder/src/document-builder.model.d.ts +0 -41
- package/components/document-builder/src/document-builder.utils.d.ts +0 -10
- package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +0 -9
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +0 -44
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +0 -57
- package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +0 -5
- package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +0 -4
- package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +0 -31
- package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +0 -5
- package/components/document-builder/src/plugins/index.d.ts +0 -11
- package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +0 -24
- package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +0 -14
- package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +0 -25
- package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +0 -29
- package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +0 -35
- package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +0 -54
- package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +0 -27
- package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +0 -16
- package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +0 -25
- package/components/document-builder/src/plugins/paste-handler/index.d.ts +0 -35
- package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +0 -31
- package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +0 -31
- package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +0 -29
- package/components/document-builder/src/plugins/paste-handler/types.d.ts +0 -30
- package/components/document-builder/src/plugins/table-custom/index.d.ts +0 -34
- package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +0 -51
- package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +0 -9
- package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
- package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-models.mjs +0 -6
- package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
- package/models/index.d.ts +0 -1
- package/models/src/language.model.d.ts +0 -2
- package/services/docx/index.d.ts +0 -1
- package/services/docx/src/lib/docx.model.d.ts +0 -9
- package/services/docx/src/lib/docx.service.d.ts +0 -14
- package/services/docx/src/lib/pandoc-core.d.ts +0 -11
- package/services/docx/src/public-api.d.ts +0 -2
- package/services/license/index.d.ts +0 -1
- package/services/license/src/license.service.d.ts +0 -9
- package/utilities/extensions/src/array.extension.d.ts +0 -1
- package/utilities/extensions/src/color.extension.d.ts +0 -5
- package/utilities/extensions/src/date.extension.d.ts +0 -1
- package/utilities/extensions/src/number.extension.d.ts +0 -1
- package/utilities/extensions/src/string.extension.d.ts +0 -50
- package/utilities/models/src/color.model.d.ts +0 -4
- package/utilities/models/src/empty.model.d.ts +0 -4
- package/utilities/models/src/filter.model.d.ts +0 -12
- package/utilities/models/src/maybe-async.model.d.ts +0 -10
- package/utilities/models/src/nested-key-of.model.d.ts +0 -4
- package/utilities/models/src/operator.model.d.ts +0 -13
- package/utilities/models/src/order.model.d.ts +0 -4
- package/utilities/models/src/paging.model.d.ts +0 -8
- package/utilities/models/src/pattern.model.d.ts +0 -21
- package/utilities/models/src/size.model.d.ts +0 -4
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SdApiContractConfiguration } from './api-contract.configuration';
|
|
2
|
+
import { type SdApiContractDiagnostic } from './api-contract.model';
|
|
3
|
+
/**
|
|
4
|
+
* Validates a contract against the grammar, the schema rules, the REST rules and the injected env
|
|
5
|
+
* catalog.
|
|
6
|
+
*
|
|
7
|
+
* Pure and UI-free: it takes `unknown` because an externally supplied contract may be malformed,
|
|
8
|
+
* and it **never repairs anything** — a silent fix would hide the very mistake the author needs to
|
|
9
|
+
* see. Diagnostics come back in a fixed traversal order (metadata → `input` → `req` → `res` →
|
|
10
|
+
* `output`, declaration order within each), so the same contract always yields the same list.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateSdApiContract(contract: unknown, configuration?: SdApiContractConfiguration): SdApiContractDiagnostic[];
|
package/components/api-contract-builder/src/components/api-contract-diagnostic-list.component.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SdApiContractDiagnostic } from '../api-contract.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Validation summary + the diagnostic list.
|
|
5
|
+
*
|
|
6
|
+
* Severity is never signalled by colour alone: every row carries an icon, the severity word, the
|
|
7
|
+
* stable `code` and the structural `path`, so the list stays readable for a colour-blind reader and
|
|
8
|
+
* usable from a screen reader.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SdApiContractDiagnosticList {
|
|
11
|
+
diagnostics: import("@angular/core").InputSignal<readonly SdApiContractDiagnostic[]>;
|
|
12
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
13
|
+
navigate: import("@angular/core").OutputEmitterRef<SdApiContractDiagnostic>;
|
|
14
|
+
protected readonly errorCount: import("@angular/core").Signal<number>;
|
|
15
|
+
protected readonly warningCount: import("@angular/core").Signal<number>;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractDiagnosticList, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractDiagnosticList, "sd-api-contract-diagnostic-list", never, { "diagnostics": { "alias": "diagnostics"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "navigate": "navigate"; }, never, never, true, never>;
|
|
18
|
+
}
|
package/components/api-contract-builder/src/components/api-contract-node-drawer.component.d.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { SdSideDrawer } from '@sdcorejs/angular/components/side-drawer';
|
|
2
|
+
import { type SdApiContractDataType } from '../api-contract.model';
|
|
3
|
+
import { type SdApiContractStructuralNode } from '../api-contract.schema';
|
|
4
|
+
import type { SdApiContractSuggestion } from './api-contract-suggestion.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/** What the drawer hands back when the author closes the books on one node. */
|
|
7
|
+
export interface SdApiContractNodeCommit {
|
|
8
|
+
name: string;
|
|
9
|
+
node: SdApiContractStructuralNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A layer list asking for the drawer to be opened.
|
|
13
|
+
*
|
|
14
|
+
* The list does not own the drawer — the builder does, so there is exactly one drawer and one staged
|
|
15
|
+
* draft on the page. The list only says which node the author reached for; the builder knows which
|
|
16
|
+
* section that list was wired into and applies the commit there.
|
|
17
|
+
*/
|
|
18
|
+
export interface SdApiContractNodeEditRequest {
|
|
19
|
+
/** `null` means "add a new node to this collection". */
|
|
20
|
+
name: string | null;
|
|
21
|
+
node: SdApiContractStructuralNode | null;
|
|
22
|
+
/** Names already taken at this level, so the drawer can refuse a duplicate. */
|
|
23
|
+
siblingNames: readonly string[];
|
|
24
|
+
/**
|
|
25
|
+
* Where the listed collection sits inside its layer root — `[]` for an object layer, `['items']`
|
|
26
|
+
* for an array layer whose fields belong to the element.
|
|
27
|
+
*
|
|
28
|
+
* why cần: drawer không dùng field này, nhưng builder thì có. Một tầng `array` (vd `output.schema`
|
|
29
|
+
* nhận `${res.body.items}`) khai field ở `items.properties`, còn tầng `object` khai ở `properties`.
|
|
30
|
+
* Danh sách đã biết mình đang đọc chỗ nào, nên nó nói ra thay vì để builder đoán lại.
|
|
31
|
+
*/
|
|
32
|
+
pointer?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
interface SdApiContractOption {
|
|
35
|
+
value: string;
|
|
36
|
+
label: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Editing surface for exactly one node, staged and committed in one go.
|
|
40
|
+
*
|
|
41
|
+
* The layer lists outside are read-only, so this drawer is the only place a node changes. It holds a
|
|
42
|
+
* DEEP COPY of the node it was seeded from and emits `nodeCommit` once, when the author saves — that
|
|
43
|
+
* is what makes "Huỷ" able to actually cancel, and what keeps the tree from changing under the
|
|
44
|
+
* author's cursor on every keystroke.
|
|
45
|
+
*
|
|
46
|
+
* Save is blocked only for the two problems that stop a node from existing at all: no name, or a name
|
|
47
|
+
* a sibling already holds. Everything else — a reference to a field that does not exist yet, a type
|
|
48
|
+
* that will not fit — saves and is reported by `validateSdApiContract`, because inventing rules here
|
|
49
|
+
* would stop an author declaring one end of a mapping before the other exists.
|
|
50
|
+
*/
|
|
51
|
+
export declare class SdApiContractNodeDrawer {
|
|
52
|
+
#private;
|
|
53
|
+
/** `mapping` shows the value editor; `schema` is a plain declaration with no mapping. */
|
|
54
|
+
layer: import("@angular/core").InputSignal<"schema" | "mapping">;
|
|
55
|
+
allowTransform: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
56
|
+
suggestions: import("@angular/core").InputSignal<readonly SdApiContractSuggestion[]>;
|
|
57
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
58
|
+
nodeCommit: import("@angular/core").OutputEmitterRef<SdApiContractNodeCommit>;
|
|
59
|
+
protected readonly drawerRef: import("@angular/core").Signal<SdSideDrawer>;
|
|
60
|
+
protected readonly draftName: import("@angular/core").Signal<string>;
|
|
61
|
+
protected readonly discardPrompt: import("@angular/core").Signal<boolean>;
|
|
62
|
+
/** The node the author is looking at right now — the draft root, or a descendant of it. */
|
|
63
|
+
protected readonly current: import("@angular/core").Signal<SdApiContractStructuralNode | null>;
|
|
64
|
+
/** Every key on the breadcrumb. The pointer alternates `properties`/key, so keys sit on odd slots. */
|
|
65
|
+
protected readonly breadcrumb: import("@angular/core").Signal<string[]>;
|
|
66
|
+
/**
|
|
67
|
+
* What the name field shows.
|
|
68
|
+
*
|
|
69
|
+
* why một signal riêng chứ không đọc thẳng từ draft: một tên KHÔNG áp được — rỗng, hoặc trùng
|
|
70
|
+
* sibling — vẫn phải hiện ra để người dùng thấy mình vừa gõ gì và đọc được lý do bị chặn. Đọc
|
|
71
|
+
* thẳng từ draft thì ô input nhảy về tên cũ ngay khi gõ, tức là từ chối im lặng.
|
|
72
|
+
*/
|
|
73
|
+
protected readonly currentName: import("@angular/core").Signal<string>;
|
|
74
|
+
protected readonly children: import("@angular/core").Signal<{
|
|
75
|
+
key: string;
|
|
76
|
+
node: SdApiContractStructuralNode;
|
|
77
|
+
}[]>;
|
|
78
|
+
/** Siblings on the level the author is on — the root list, or the parent object's keys. */
|
|
79
|
+
protected readonly siblingNames: import("@angular/core").Signal<readonly string[]>;
|
|
80
|
+
protected readonly typeOptions: SdApiContractOption[];
|
|
81
|
+
protected readonly requiredOptions: SdApiContractOption[];
|
|
82
|
+
protected readonly transformOptions: SdApiContractOption[];
|
|
83
|
+
protected readonly title: import("@angular/core").Signal<string>;
|
|
84
|
+
protected readonly dirty: import("@angular/core").Signal<boolean>;
|
|
85
|
+
protected readonly nameError: import("@angular/core").Signal<string | null>;
|
|
86
|
+
protected readonly canSave: import("@angular/core").Signal<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* `beforeClose` guard for `<sd-side-drawer>`.
|
|
89
|
+
*
|
|
90
|
+
* why an arrow field, not a method: the drawer takes it as an input value, so it must keep `this`
|
|
91
|
+
* without the template having to bind it.
|
|
92
|
+
*/
|
|
93
|
+
protected readonly closeGuard: () => boolean;
|
|
94
|
+
openForAdd(siblingNames?: readonly string[], type?: SdApiContractDataType): void;
|
|
95
|
+
openForEdit(name: string, node: SdApiContractStructuralNode, siblingNames?: readonly string[]): void;
|
|
96
|
+
/**
|
|
97
|
+
* Types into the name field.
|
|
98
|
+
*
|
|
99
|
+
* The typed text is ALWAYS kept, then applied to the draft only when it can be. A name that cannot
|
|
100
|
+
* be applied — empty, or already taken by a sibling — stays visible and `nameError()` explains it,
|
|
101
|
+
* which is what blocks Save. Refusing the keystroke instead would leave the field showing one name
|
|
102
|
+
* while the contract holds another.
|
|
103
|
+
*/
|
|
104
|
+
protected setName(value: unknown): void;
|
|
105
|
+
protected setType(value: unknown): void;
|
|
106
|
+
protected setRequired(value: unknown): void;
|
|
107
|
+
protected setText(key: 'label' | 'description', value: unknown): void;
|
|
108
|
+
protected setTransform(value: unknown): void;
|
|
109
|
+
protected applyCurrent(node: SdApiContractStructuralNode): void;
|
|
110
|
+
protected enter(key: string): void;
|
|
111
|
+
/** `depth` counts breadcrumb entries, so 0 is the draft root. */
|
|
112
|
+
protected backTo(depth: number): void;
|
|
113
|
+
protected addChild(): void;
|
|
114
|
+
protected removeChild(key: string): void;
|
|
115
|
+
protected save(): void;
|
|
116
|
+
protected requestCancel(): void;
|
|
117
|
+
protected confirmDiscard(): void;
|
|
118
|
+
protected cancelDiscard(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Blocks the close while the draft is dirty and raises an inline prompt instead.
|
|
121
|
+
*
|
|
122
|
+
* why inline chứ không `window.confirm`: một component thư viện không được dựng dialog của browser
|
|
123
|
+
* — nó không style được, không test được, và chặn cả tab.
|
|
124
|
+
*/
|
|
125
|
+
protected guardClose(): boolean;
|
|
126
|
+
protected onClosed(): void;
|
|
127
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractNodeDrawer, never>;
|
|
128
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractNodeDrawer, "sd-api-contract-node-drawer", never, { "layer": { "alias": "layer"; "required": false; "isSignal": true; }; "allowTransform": { "alias": "allowTransform"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "nodeCommit": "nodeCommit"; }, never, never, true, never>;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
package/components/api-contract-builder/src/components/api-contract-node-editor.component.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type SdApiContractStructuralNode } from '../api-contract.schema';
|
|
2
|
+
import type { SdApiContractNodeEditRequest } from './api-contract-node-drawer.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
interface SdApiContractPropertyEntry {
|
|
5
|
+
key: string;
|
|
6
|
+
node: SdApiContractStructuralNode;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* One schema layer — `input.schema`, `req.body`, `res.body`, `output.schema` — rendered as a flat list
|
|
10
|
+
* of the fields it declares.
|
|
11
|
+
*
|
|
12
|
+
* It used to be a recursive tree of editable seven-column rows. It is now a list you read: adding and
|
|
13
|
+
* editing ask the builder to open its drawer, and only removal is applied straight away. The list is
|
|
14
|
+
* deliberately FLAT — an `object` field shows how many fields it holds and the author drills into it
|
|
15
|
+
* inside the drawer, so a deeply nested node is edited with a drawer's worth of room instead of a
|
|
16
|
+
* 100px cell.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SdApiContractNodeEditor {
|
|
19
|
+
#private;
|
|
20
|
+
/** The layer's root node. */
|
|
21
|
+
node: import("@angular/core").InputSignal<SdApiContractStructuralNode>;
|
|
22
|
+
/** Diagnostic path of the layer itself, e.g. `input.schema`. */
|
|
23
|
+
basePath: import("@angular/core").InputSignal<string>;
|
|
24
|
+
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
25
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
26
|
+
nodeChange: import("@angular/core").OutputEmitterRef<SdApiContractStructuralNode>;
|
|
27
|
+
editRequest: import("@angular/core").OutputEmitterRef<SdApiContractNodeEditRequest>;
|
|
28
|
+
protected readonly entries: import("@angular/core").Signal<SdApiContractPropertyEntry[]>;
|
|
29
|
+
protected requestAdd(): void;
|
|
30
|
+
protected requestEdit(key: string, node: SdApiContractStructuralNode): void;
|
|
31
|
+
protected removeProperty(key: string): void;
|
|
32
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractNodeEditor, never>;
|
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractNodeEditor, "sd-api-contract-node-editor", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "basePath": { "alias": "basePath"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "nodeChange": "nodeChange"; "editRequest": "editRequest"; }, never, never, true, never>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
package/components/api-contract-builder/src/components/api-contract-node-summary.component.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SdApiContractStructuralNode } from '../api-contract.schema';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* One collapsed, read-only row for a node in a layer list.
|
|
5
|
+
*
|
|
6
|
+
* The whole point is that it holds NO editable control. Editing a node happens in the drawer, so the
|
|
7
|
+
* list can stay a thing you scan rather than a wall of inputs — and so a node never has two editors
|
|
8
|
+
* writing it at once.
|
|
9
|
+
*
|
|
10
|
+
* The row shows what an author needs to spot a mistake without opening anything: the name, the
|
|
11
|
+
* declared type, whether it is required, and where its value comes from.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SdApiContractNodeSummary {
|
|
14
|
+
#private;
|
|
15
|
+
name: import("@angular/core").InputSignal<string>;
|
|
16
|
+
node: import("@angular/core").InputSignal<SdApiContractStructuralNode>;
|
|
17
|
+
/** `view` mode and `disabled` both land here: the row becomes text, with no action at all. */
|
|
18
|
+
readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
20
|
+
edit: import("@angular/core").OutputEmitterRef<void>;
|
|
21
|
+
remove: import("@angular/core").OutputEmitterRef<void>;
|
|
22
|
+
protected readonly requiredLabel: string;
|
|
23
|
+
protected readonly removeLabel: string;
|
|
24
|
+
protected readonly unmapped: import("@angular/core").Signal<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* One line describing where the value comes from.
|
|
27
|
+
*
|
|
28
|
+
* why bốn dạng khác nhau: `${input.keyword}` rút về `input.keyword` vì dấu `${}` là cú pháp chứ
|
|
29
|
+
* không phải thông tin; còn template ghép giữ NGUYÊN VĂN vì rút gọn nó sẽ sai. Literal hiện giá trị
|
|
30
|
+
* để thấy ngay, object hiện số trường để biết còn bao nhiêu phải mở ra xem.
|
|
31
|
+
*/
|
|
32
|
+
protected readonly mappingSummary: import("@angular/core").Signal<string>;
|
|
33
|
+
protected requestEdit(): void;
|
|
34
|
+
/**
|
|
35
|
+
* why stopPropagation: nút xoá nằm TRONG hàng có `(click)`, nên không chặn thì bấm xoá cũng mở
|
|
36
|
+
* drawer — người dùng bấm xoá lại thấy form hiện ra.
|
|
37
|
+
*/
|
|
38
|
+
protected requestRemove(event: Event): void;
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractNodeSummary, never>;
|
|
40
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractNodeSummary, "sd-api-contract-node-summary", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "node": { "alias": "node"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "edit": "edit"; "remove": "remove"; }, never, never, true, never>;
|
|
41
|
+
}
|
package/components/api-contract-builder/src/components/api-contract-record-editor.component.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type SdApiContractStructuralNode } from '../api-contract.schema';
|
|
2
|
+
import type { SdApiContractNodeEditRequest } from './api-contract-node-drawer.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
type SdApiContractNodeRecord = Record<string, SdApiContractStructuralNode>;
|
|
5
|
+
interface SdApiContractRecordEntry {
|
|
6
|
+
key: string;
|
|
7
|
+
node: SdApiContractStructuralNode;
|
|
8
|
+
path: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* One keyed collection of nodes — `req.path` / `req.query` / `req.headers` / `res.headers` — rendered
|
|
12
|
+
* as a list you read, not a list you type into.
|
|
13
|
+
*
|
|
14
|
+
* Every entry is a collapsed row. Adding and editing both ask the builder to open its drawer; only
|
|
15
|
+
* removal is applied straight away, because there is nothing to stage about deleting a row. That is
|
|
16
|
+
* why `add()` emits an edit request rather than an entry: a half-declared field must never reach the
|
|
17
|
+
* contract just because someone clicked the add button and changed their mind.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SdApiContractRecordEditor {
|
|
20
|
+
#private;
|
|
21
|
+
record: import("@angular/core").InputSignal<SdApiContractNodeRecord | undefined>;
|
|
22
|
+
/** Diagnostic path of the collection itself, e.g. `req.query`. */
|
|
23
|
+
basePath: import("@angular/core").InputSignal<string>;
|
|
24
|
+
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
25
|
+
emptyLabel: import("@angular/core").InputSignal<string>;
|
|
26
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
27
|
+
recordChange: import("@angular/core").OutputEmitterRef<SdApiContractNodeRecord>;
|
|
28
|
+
editRequest: import("@angular/core").OutputEmitterRef<SdApiContractNodeEditRequest>;
|
|
29
|
+
protected readonly entries: import("@angular/core").Signal<SdApiContractRecordEntry[]>;
|
|
30
|
+
protected requestAdd(): void;
|
|
31
|
+
protected requestEdit(entry: SdApiContractRecordEntry): void;
|
|
32
|
+
protected remove(key: string): void;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractRecordEditor, never>;
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractRecordEditor, "sd-api-contract-record-editor", never, { "record": { "alias": "record"; "required": false; "isSignal": true; }; "basePath": { "alias": "basePath"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "recordChange": "recordChange"; "editRequest": "editRequest"; }, never, never, true, never>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
package/components/api-contract-builder/src/components/api-contract-source-editor.component.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { SdApiContractStructuralNode } from '../api-contract.schema';
|
|
2
|
+
import type { SdApiContractSuggestion } from './api-contract-suggestion.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* How a mapped node receives its value.
|
|
6
|
+
*
|
|
7
|
+
* - `source` — one whole-value reference, picked from a dropdown.
|
|
8
|
+
* - `advanced` — a raw template the dropdown cannot express, e.g. `Bearer ${env.token}`.
|
|
9
|
+
* - `static` — a literal typed in a control that matches the declared type.
|
|
10
|
+
* - `nested` — an object mapped field by field.
|
|
11
|
+
* - `none` — CHƯA GÁN. Không phải một lựa chọn trong picker: picker để trống + `required`, nên node
|
|
12
|
+
* chưa gán là lỗi thấy ngay trên hàng thay vì một giá trị trông như đã chọn.
|
|
13
|
+
*/
|
|
14
|
+
export type SdApiContractValueMode = 'source' | 'advanced' | 'static' | 'nested' | 'none';
|
|
15
|
+
interface SdApiContractOption {
|
|
16
|
+
value: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Value editor for one mapped node: a mode picker plus one control chosen by the mode.
|
|
21
|
+
*
|
|
22
|
+
* `source` shows a single dropdown of the references the surrounding schemas and the injected env
|
|
23
|
+
* catalog make available — the author never types `${…}` for the common case. `advanced` keeps a raw
|
|
24
|
+
* expression field for what a dropdown cannot express (`Bearer ${env.token}`). `static` renders a
|
|
25
|
+
* control matching the declared type, including a JSON editor for `object` / `array` literals.
|
|
26
|
+
*
|
|
27
|
+
* The JSON editor for a composite literal only writes when the text parses. While it is half-typed it
|
|
28
|
+
* emits the raw string, and that string is dropped — otherwise one keystroke would turn a literal
|
|
29
|
+
* object into a garbage string in the contract.
|
|
30
|
+
*/
|
|
31
|
+
export declare class SdApiContractSourceEditor {
|
|
32
|
+
#private;
|
|
33
|
+
node: import("@angular/core").InputSignal<SdApiContractStructuralNode>;
|
|
34
|
+
suggestions: import("@angular/core").InputSignal<readonly SdApiContractSuggestion[]>;
|
|
35
|
+
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
36
|
+
autoId: import("@angular/core").InputSignal<string | null | undefined>;
|
|
37
|
+
nodeChange: import("@angular/core").OutputEmitterRef<SdApiContractStructuralNode>;
|
|
38
|
+
protected readonly advancedPlaceholder = "Bearer ${env.token}";
|
|
39
|
+
protected readonly booleanOptions: SdApiContractOption[];
|
|
40
|
+
protected readonly mode: import("@angular/core").WritableSignal<SdApiContractValueMode>;
|
|
41
|
+
/**
|
|
42
|
+
* Giá trị hiển thị của picker.
|
|
43
|
+
*
|
|
44
|
+
* why: `none` không còn là một option, nên bind nó vào `[model]` sẽ ra một ô trống mà người dùng
|
|
45
|
+
* không hiểu tại sao. Trả `null` để picker rỗng THẬT — cộng `required`, một node chưa gán trở thành
|
|
46
|
+
* lỗi thấy được ngay trên hàng, khớp với diagnostic `mapping.node.unmapped` mà validation đã báo.
|
|
47
|
+
*/
|
|
48
|
+
protected readonly modeValue: import("@angular/core").Signal<SdApiContractValueMode | null>;
|
|
49
|
+
protected readonly modeOptions: import("@angular/core").Signal<SdApiContractOption[]>;
|
|
50
|
+
protected readonly suggestionOptions: import("@angular/core").Signal<SdApiContractSuggestion[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Options for the source dropdown.
|
|
53
|
+
*
|
|
54
|
+
* why: một `source` đang lưu có thể trỏ vào trường đã bị xoá hoặc đổi tên — nó KHÔNG còn trong
|
|
55
|
+
* danh sách gợi ý. `sd-select` không tìm thấy value sẽ hiện ô rỗng, và giá trị vẫn nằm trong
|
|
56
|
+
* contract mà người dùng không thấy để sửa. Thêm một option dựng từ chính giá trị đó để nó luôn
|
|
57
|
+
* hiển thị; validation lo phần báo `mapping.reference.missing`.
|
|
58
|
+
*/
|
|
59
|
+
protected readonly sourceOptions: import("@angular/core").Signal<SdApiContractSuggestion[]>;
|
|
60
|
+
protected readonly staticText: import("@angular/core").Signal<string>;
|
|
61
|
+
protected readonly staticNumber: import("@angular/core").Signal<number | null>;
|
|
62
|
+
protected setMode(mode: unknown): void;
|
|
63
|
+
protected setSource(value: unknown): void;
|
|
64
|
+
protected setStaticScalar(value: unknown): void;
|
|
65
|
+
protected setStaticNumber(value: unknown): void;
|
|
66
|
+
/**
|
|
67
|
+
* Stores a `date` / `datetime` literal.
|
|
68
|
+
*
|
|
69
|
+
* why: `<sd-date>` / `<sd-datetime>` có thể bắn ra một `Date`. `String(new Date())` ra
|
|
70
|
+
* `Mon Aug 17 2026 …` — không parse lại được và đổi theo locale của máy tác giả, nên contract sẽ
|
|
71
|
+
* mang một giá trị không portable. Chuẩn hoá về ISO.
|
|
72
|
+
*/
|
|
73
|
+
protected setStaticTemporal(value: unknown): void;
|
|
74
|
+
/**
|
|
75
|
+
* Stores an `object` / `array` literal from the JSON editor.
|
|
76
|
+
*
|
|
77
|
+
* why: `<sd-code-editor language="json">` bắn ra STRING khi cú pháp còn dở (`{"a":`). Ghi chuỗi đó
|
|
78
|
+
* vào contract sẽ biến một literal object thành rác, nên bỏ qua và giữ giá trị hợp lệ cuối cùng —
|
|
79
|
+
* người dùng vẫn thấy nguyên văn mình đang gõ trong editor.
|
|
80
|
+
*/
|
|
81
|
+
protected setStaticJson(value: unknown): void;
|
|
82
|
+
protected setStaticBoolean(value: unknown): void;
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiContractSourceEditor, never>;
|
|
84
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdApiContractSourceEditor, "sd-api-contract-source-editor", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "nodeChange": "nodeChange"; }, never, never, true, never>;
|
|
85
|
+
}
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SdApiContractDataType, SdApiContractExpressionRoot } from '../api-contract.model';
|
|
2
|
+
/**
|
|
3
|
+
* One `${…}` reference the source editor can offer.
|
|
4
|
+
*
|
|
5
|
+
* Internal to the builder UI — it is derived from the contract and the injected env catalog on every
|
|
6
|
+
* edit, so it is never persisted and never part of the public surface.
|
|
7
|
+
*/
|
|
8
|
+
export interface SdApiContractSuggestion {
|
|
9
|
+
/** Ready-to-insert text, e.g. `${input.customer.id}`. */
|
|
10
|
+
expression: string;
|
|
11
|
+
/** Dotted path without the delimiters, e.g. `input.customer.id`. */
|
|
12
|
+
path: string;
|
|
13
|
+
root: SdApiContractExpressionRoot;
|
|
14
|
+
type: SdApiContractDataType;
|
|
15
|
+
/** What the picker shows. Never contains a value — a sensitive variable only shows its name. */
|
|
16
|
+
display: string;
|
|
17
|
+
}
|
|
@@ -21,7 +21,9 @@ export declare class SdBadge {
|
|
|
21
21
|
size: import("@angular/core").InputSignalWithTransform<Size, Size | null | undefined>;
|
|
22
22
|
readonly click: EventEmitter<Event>;
|
|
23
23
|
onClick: (event: Event) => void;
|
|
24
|
+
onActivateKey: (event: Event) => void;
|
|
24
25
|
effectiveColor: import("@angular/core").Signal<Color>;
|
|
26
|
+
accessibleName: import("@angular/core").Signal<string>;
|
|
25
27
|
baseColorClasses: import("@angular/core").Signal<{
|
|
26
28
|
'c-primary': boolean;
|
|
27
29
|
'c-secondary': boolean;
|
|
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
* - CKEditor's CSS must be global (applies to body-rendered overlays, dialogs, balloons),
|
|
7
7
|
* which means whichever Angular component declares it must use ViewEncapsulation.None.
|
|
8
8
|
* - Switching encapsulation on the main editor components (`<sd-editor>`, `<sd-mini-editor>`,
|
|
9
|
-
* `<sd-
|
|
9
|
+
* `<sd-mini-editor>`) would un-scope all their local styles too.
|
|
10
10
|
* - Instead, this tiny no-render component owns the global CSS. The editor components embed
|
|
11
11
|
* `<sd-ckeditor-styles>` at the top of their template; the CSS is injected once into <head>
|
|
12
12
|
* the first time any editor instance mounts. Editor components themselves keep
|
|
@@ -8,7 +8,7 @@ export declare class ExpressionBuilderComponent implements OnInit {
|
|
|
8
8
|
modal?: SdModal;
|
|
9
9
|
form: FormGroup<{}>;
|
|
10
10
|
attributeOperators: Record<"string" | "number" | "boolean" | "datetime" | "values", {
|
|
11
|
-
value: import("@sdcorejs/angular/components/form-generic").
|
|
11
|
+
value: import("@sdcorejs/angular/components/form-generic").SdFormGenericOperator;
|
|
12
12
|
symbol?: string;
|
|
13
13
|
display: string;
|
|
14
14
|
}[]>;
|
|
@@ -37,6 +37,7 @@ export declare class ExpressionBuilderComponent implements OnInit {
|
|
|
37
37
|
constructor(...args: unknown[]);
|
|
38
38
|
ngOnInit(): void;
|
|
39
39
|
onEdit: () => Promise<void>;
|
|
40
|
+
onExprKeydown: (event: KeyboardEvent) => void;
|
|
40
41
|
addCondition: (conditions: SdFormGenericExpression["conditions"]) => void;
|
|
41
42
|
addCombinator: (conditions: SdFormGenericExpression["conditions"]) => void;
|
|
42
43
|
remove: (conditions: SdFormGenericExpression["conditions"], idx: number) => void;
|
|
@@ -104,7 +104,7 @@ export declare class SdFormBuilder implements OnInit, OnDestroy {
|
|
|
104
104
|
placeholderColumnsFor: (item: FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup | DragDropRowItem | undefined) => number;
|
|
105
105
|
/** True nếu component có expression điều kiện — drives the "conditional" status chip. */
|
|
106
106
|
hasConditional: (item: SdFormGenericComponent | SdFormGenericGroup) => boolean;
|
|
107
|
-
/** Map
|
|
107
|
+
/** Map Color preset → 2 CSS var names cho header-bg và header-fg của group card. */
|
|
108
108
|
groupColorVars: (color: string | undefined | null) => {
|
|
109
109
|
bg: string;
|
|
110
110
|
fg: string;
|
|
@@ -112,6 +112,7 @@ export declare class SdFormBuilder implements OnInit, OnDestroy {
|
|
|
112
112
|
/** Segmented Design/Preview toggle (replaces play_circle/stop_circle). */
|
|
113
113
|
setMode: (preview: boolean) => void;
|
|
114
114
|
/** Mở canvas thiết kế riêng cho 1 group (chỉ children của nó). Snapshot để Cancel revert. */
|
|
115
|
+
onEnterGroupEditKeydown: (group: SdFormGenericGroup, event: KeyboardEvent) => void;
|
|
115
116
|
enterGroupEdit: (group: SdFormGenericGroup) => void;
|
|
116
117
|
/** OK: giữ thay đổi children, quay về canvas chính. */
|
|
117
118
|
confirmGroupEdit: () => void;
|
|
@@ -124,6 +125,7 @@ export declare class SdFormBuilder implements OnInit, OnDestroy {
|
|
|
124
125
|
/** Xoá component theo scope hiện tại (top-level hoặc children của group đang Detail). */
|
|
125
126
|
removeComponent: (id: string) => void;
|
|
126
127
|
selectComponent: (item?: SdFormGenericComponent | SdFormGenericGroup) => void;
|
|
128
|
+
onPaletteItemKeydown: (item: FormBuilderComponent, event: KeyboardEvent) => void;
|
|
127
129
|
onClickedOutside: (e: any) => void;
|
|
128
130
|
clickFormContentEmpty: () => void;
|
|
129
131
|
drop: (event: CdkDragDrop<any[]>) => void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { SdFormGenericCheckbox } from '../../../../../../models';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Ô checkbox của form-render.
|
|
8
|
+
*
|
|
9
|
+
* why: form-builder từ trước đã tạo được field `type: 'checkbox'` nhưng form-render KHÔNG có nhánh
|
|
10
|
+
* nào cho nó — field dựng trong builder chạy ra form trống, không hiện gì. Component này lấp chỗ đó
|
|
11
|
+
* theo đúng khuôn của các control còn lại (textfield/radio…): nhận cùng bộ input, tự áp defaultValue,
|
|
12
|
+
* và nghe `setVariables` để giá trị đặt từ biểu thức cũng phản ánh lên UI.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CheckboxComponent implements OnInit, OnDestroy {
|
|
15
|
+
#private;
|
|
16
|
+
private ref;
|
|
17
|
+
readonly setVariables: import("@angular/core").InputSignal<Subject<{
|
|
18
|
+
key: string;
|
|
19
|
+
value: any;
|
|
20
|
+
}>>;
|
|
21
|
+
readonly form: import("@angular/core").InputSignal<FormGroup<{}>>;
|
|
22
|
+
entity: Record<string, any>;
|
|
23
|
+
set _entity(val: Record<string, any>);
|
|
24
|
+
component?: SdFormGenericCheckbox;
|
|
25
|
+
set _component(val: SdFormGenericCheckbox);
|
|
26
|
+
disabled: boolean;
|
|
27
|
+
set _disabled(val: boolean | '' | undefined | null);
|
|
28
|
+
viewed: boolean;
|
|
29
|
+
set _viewed(val: boolean | '' | undefined | null);
|
|
30
|
+
ngOnInit(): void;
|
|
31
|
+
ngOnDestroy(): void;
|
|
32
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
|
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "lib-checkbox", never, { "setVariables": { "alias": "setVariables"; "required": true; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "_entity": { "alias": "entity"; "required": true; }; "_component": { "alias": "component"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; }, {}, never, never, true, never>;
|
|
34
|
+
}
|
package/components/form-generic/src/components/form-render/components/item/components/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './number/number.component';
|
|
|
6
6
|
export * from './datetime/datetime.component';
|
|
7
7
|
export * from './select/select.component';
|
|
8
8
|
export * from './radio/radio.component';
|
|
9
|
+
export * from './checkbox/checkbox.component';
|
|
9
10
|
export * from './upload/upload.component';
|
|
10
11
|
export * from './table/table.component';
|
|
11
12
|
export * from './html/html.component';
|
|
@@ -31,7 +31,7 @@ export declare class TableComponent implements AfterViewInit, OnDestroy, OnInit
|
|
|
31
31
|
readonly modelChange: import("@angular/core").OutputEmitterRef<any[]>;
|
|
32
32
|
tableOption?: SdTableOption;
|
|
33
33
|
row: any;
|
|
34
|
-
columnValues: Record<string, SdFormGenericSelectionItem[] | SdSearch
|
|
34
|
+
columnValues: Record<string, SdFormGenericSelectionItem[] | SdSearch<SdFormGenericSelectionItem>>;
|
|
35
35
|
formRenderColumn: Record<string, SdFormGenericTableColumn>;
|
|
36
36
|
fileKeys: string[];
|
|
37
37
|
imageKeys: string[];
|
|
@@ -40,6 +40,11 @@ export declare class TableComponent implements AfterViewInit, OnDestroy, OnInit
|
|
|
40
40
|
ngOnInit(): void;
|
|
41
41
|
ngAfterViewInit(): void;
|
|
42
42
|
ngOnDestroy(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Tiêu đề của side-drawer phải nói đúng tác vụ đang làm — trước đây nó cứng là "Chi tiết" cho cả
|
|
45
|
+
* thêm mới lẫn sửa, còn dòng "Tạo mới/cập nhật" thì rơi vào thân drawer vì gắn nhầm slot.
|
|
46
|
+
*/
|
|
47
|
+
get detailTitle(): string;
|
|
43
48
|
onDetail: (row?: any) => void;
|
|
44
49
|
onCancel: () => void;
|
|
45
50
|
onAccept: (addable?: boolean) => void;
|
package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class SdFeelExpression implements OnInit {
|
|
|
11
11
|
modal?: SdModal;
|
|
12
12
|
form: FormGroup<{}>;
|
|
13
13
|
attributeOperators: Record<"string" | "number" | "boolean" | "datetime" | "values", {
|
|
14
|
-
value: import("@sdcorejs/angular/components/form-generic").
|
|
14
|
+
value: import("@sdcorejs/angular/components/form-generic").SdFormGenericOperator;
|
|
15
15
|
symbol?: string;
|
|
16
16
|
display: string;
|
|
17
17
|
}[]>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
2
2
|
import { SdFormGenericArgs, SdFormGenericDefinitionHtml, SdFormGenericDefinitionSelection, SdFormGenericDefinitionTable, SdFormGenericSelectionItem, SdFormGenericTemplate } from '../models';
|
|
3
3
|
import { SdFormGenericValidationConfiguration } from '../models/form-generic-validation.model';
|
|
4
|
-
export interface IWorkflowConfigurationForm<TSelectionArgs =
|
|
4
|
+
export interface IWorkflowConfigurationForm<TSelectionArgs = unknown> {
|
|
5
5
|
templates: SdFormGenericTemplate[];
|
|
6
6
|
selections: SdFormGenericDefinitionSelection<any, TSelectionArgs>[] | (() => SdFormGenericDefinitionSelection<any, TSelectionArgs>[]) | (() => Promise<SdFormGenericDefinitionSelection[]>);
|
|
7
7
|
getValues?: (key: string, selectionArgs?: TSelectionArgs) => Promise<SdFormGenericSelectionItem[]>;
|
|
@@ -17,9 +17,9 @@ export interface SdFormGenericLayout {
|
|
|
17
17
|
columns: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
18
18
|
mobileColumns?: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
19
19
|
}
|
|
20
|
-
export declare const
|
|
21
|
-
export declare const
|
|
22
|
-
export declare const
|
|
20
|
+
export declare const sdGenerateId: () => string;
|
|
21
|
+
export declare const sdGenerateKey: () => string;
|
|
22
|
+
export declare const sdFormatComponent: (component: SdFormGenericComponent | SdFormGenericGroup) => void;
|
|
23
23
|
export interface SdFormGenericVariable {
|
|
24
24
|
id: string;
|
|
25
25
|
key: string;
|
|
@@ -171,7 +171,7 @@ export interface FormRenderComponentTableColumnValues {
|
|
|
171
171
|
query?: Record<string, any>;
|
|
172
172
|
}
|
|
173
173
|
export type SdFormGenericTableColumn<T = any> = TableColumnString<T> | TableColumnNumber<T> | TableColumnBool<T> | TableColumnDate<T> | TableColumnDatetime<T> | TableColumnRadio<T> | TableColumnValues<T> | TableColumnImage<T> | TableColumnFile<T>;
|
|
174
|
-
export declare const
|
|
174
|
+
export declare const SD_TABLE_COLUMN_TYPES: {
|
|
175
175
|
value: string;
|
|
176
176
|
display: string;
|
|
177
177
|
}[];
|
|
@@ -301,17 +301,17 @@ export interface FormBuilderComponent {
|
|
|
301
301
|
group: FormBuilderComponentGroup;
|
|
302
302
|
name: string;
|
|
303
303
|
}
|
|
304
|
-
export declare const
|
|
304
|
+
export declare const SD_FORM_BUILDER_COMPONENTS: FormBuilderComponent[];
|
|
305
305
|
/** Lookup: component type → Material icon + label, used by attribute panel header. */
|
|
306
|
-
export declare const
|
|
306
|
+
export declare const SD_COMPONENT_ICONS: Record<string, {
|
|
307
307
|
symbol: string;
|
|
308
308
|
label: string;
|
|
309
309
|
}>;
|
|
310
|
-
export declare const
|
|
310
|
+
export declare const sdGetComponentAttributes: (components: (SdFormGenericComponent | SdFormGenericGroup)[]) => {
|
|
311
311
|
value: string;
|
|
312
312
|
display: string;
|
|
313
313
|
}[];
|
|
314
|
-
export declare const
|
|
314
|
+
export declare const sdGetVariableAttributes: (variables: SdFormGenericVariable[]) => {
|
|
315
315
|
value: string;
|
|
316
316
|
display: string;
|
|
317
317
|
}[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
2
2
|
import { SdFormGenericArgs } from './form-render/form-render-args.model';
|
|
3
|
-
export interface SdFormGenericSelectionItem<T =
|
|
3
|
+
export interface SdFormGenericSelectionItem<T = unknown> {
|
|
4
4
|
value: string;
|
|
5
5
|
display: string;
|
|
6
6
|
disabled?: boolean;
|
|
@@ -11,8 +11,8 @@ export interface SdFormGenericSelectionStaticItem {
|
|
|
11
11
|
value: string;
|
|
12
12
|
label: string;
|
|
13
13
|
}
|
|
14
|
-
export type SdFormGenericDefinitionSelection<T =
|
|
15
|
-
interface SelectionVariables<T =
|
|
14
|
+
export type SdFormGenericDefinitionSelection<T = unknown, TArgs = unknown> = SelectionValues<T> | SelectionLazyValues<T> | SelectionValuesKey<TArgs> | SelectionLazyValuesKey<TArgs>;
|
|
15
|
+
interface SelectionVariables<T = unknown> {
|
|
16
16
|
items?: {
|
|
17
17
|
value: Extract<keyof T, string>;
|
|
18
18
|
display: string;
|
|
@@ -40,10 +40,10 @@ interface SelectionLazyValuesKey<TArgs> extends SelecttionBase {
|
|
|
40
40
|
lazyValuesKey: string;
|
|
41
41
|
args?: TArgs;
|
|
42
42
|
}
|
|
43
|
-
interface SelectionValues<T =
|
|
43
|
+
interface SelectionValues<T = unknown> extends SelecttionBase {
|
|
44
44
|
values: (args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem<T>[]>;
|
|
45
45
|
}
|
|
46
|
-
interface SelectionLazyValues<T =
|
|
46
|
+
interface SelectionLazyValues<T = unknown> extends SelecttionBase {
|
|
47
47
|
lazyValues: (searchArgs: Parameters<SdSearch>[0], args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem<T>[]>;
|
|
48
48
|
}
|
|
49
49
|
export {};
|