@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
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Render an HTML string through `[innerHTML]`.
|
|
6
|
+
*
|
|
7
|
+
* why: this pipe used to call `bypassSecurityTrustHtml()` unconditionally, on every value, with no
|
|
8
|
+
* sanitize step. That turned every call site into a stored-XSS sink — and the library itself pipes
|
|
9
|
+
* server-supplied table cell data through it
|
|
10
|
+
* (`components/table/src/components/desktop-cell/view/view.component.html`), while
|
|
11
|
+
* `components/table/sd-table.md` already described the value as "sanitized via sdSafeHtml".
|
|
12
|
+
*
|
|
13
|
+
* Now it **sanitizes by default** and the bypass is an explicit, per-call-site opt-in:
|
|
14
|
+
*
|
|
15
|
+
* ```html
|
|
16
|
+
* <!-- untrusted / server-supplied: script, on* handlers and javascript: urls are stripped -->
|
|
17
|
+
* <div [innerHTML]="row.note | sdSafeHtml"></div>
|
|
18
|
+
*
|
|
19
|
+
* <!-- app-authored markup you control, e.g. an inline SVG sprite -->
|
|
20
|
+
* <span [innerHTML]="iconSvg | sdSafeHtml: true"></span>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* This mirrors the decision already taken for the toast in `services/notify`: text-safe by default,
|
|
24
|
+
* opt-in HTML. Auto-detecting "this looks like HTML" is deliberately NOT done — it would escalate
|
|
25
|
+
* untrusted text that merely contains `<` straight back into the unsanitized sink.
|
|
26
|
+
*/
|
|
3
27
|
export declare class SdSafeHtmlPipe implements PipeTransform {
|
|
4
|
-
private
|
|
5
|
-
|
|
6
|
-
constructor(...args: unknown[]);
|
|
7
|
-
transform(html: string | number | undefined | null): import("@angular/platform-browser").SafeHtml | undefined;
|
|
28
|
+
#private;
|
|
29
|
+
transform(html: string | number | undefined | null, trusted?: boolean): SafeHtml | string | number | undefined;
|
|
8
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSafeHtmlPipe, never>;
|
|
9
31
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdSafeHtmlPipe, "sdSafeHtml", true>;
|
|
10
32
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdSafeHtmlPipe>;
|
package/public-api.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
export * from '@sdcorejs/angular/configurations';
|
|
2
|
+
export * from '@sdcorejs/angular/i18n';
|
|
3
|
+
export * from '@sdcorejs/angular/utilities';
|
|
4
|
+
export * from '@sdcorejs/angular/pipes';
|
|
5
|
+
export * from '@sdcorejs/angular/directives';
|
|
6
|
+
export * from '@sdcorejs/angular/services';
|
|
7
|
+
export * from '@sdcorejs/angular/interceptors';
|
|
8
|
+
export * from '@sdcorejs/angular/handlers';
|
|
9
|
+
export * from '@sdcorejs/angular/components';
|
|
10
|
+
export * from '@sdcorejs/angular/forms';
|
|
11
|
+
export * from '@sdcorejs/angular/modules';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler nào chịu trách nhiệm cho `url`?
|
|
3
|
+
*
|
|
4
|
+
* why: trước đây là `url.startsWith(host)` — so chuỗi thô. Với host `https://api.example.com`,
|
|
5
|
+
* url `https://api.example.com.attacker.tld/x` cũng "khớp", nên handler chạy `intercept` cho host
|
|
6
|
+
* giả mạo đó và gắn luôn header auth mà nó đính kèm. `sdMatchesSecureRoute` parse URL rồi so
|
|
7
|
+
* origin + path prefix theo segment, nên `.attacker.tld` khác origin → không khớp, và
|
|
8
|
+
* `/api/v1beta` không bị coi là nằm dưới `/api/v1`.
|
|
9
|
+
*
|
|
10
|
+
* Việc chọn base origin khi không có `window.location` (SSR/prerender) do
|
|
11
|
+
* `sdResolveBaseOrigin` trong `url-safety` lo — trước đây file này tự giữ một origin giả riêng,
|
|
12
|
+
* nhưng `SdKeycloakInterceptor` lại không có, nên nó âm thầm ngừng đính token trên server. Logic
|
|
13
|
+
* đó giờ nằm ở helper chung để mọi call site cùng hành xử.
|
|
14
|
+
*/
|
|
15
|
+
export declare function sdApiMatchesHandlerHosts(url: string, hosts: readonly string[] | undefined): boolean;
|
|
@@ -72,4 +72,18 @@ export interface ISdApiConfiguration {
|
|
|
72
72
|
export declare const SD_API_CONFIG: InjectionToken<ISdApiConfiguration>;
|
|
73
73
|
/** @deprecated Use `SD_API_CONFIG`. This is the same injection token. */
|
|
74
74
|
export declare const SD_API_CONFIGURATION: InjectionToken<ISdApiConfiguration>;
|
|
75
|
+
/**
|
|
76
|
+
* Lỗi nghiệp vụ: HTTP 200 nhưng body envelope báo thất bại (`{ ok: false, ... }`).
|
|
77
|
+
*
|
|
78
|
+
* why: trước đây `SdApiService` `throw body` — một plain object. Hệ quả: `error instanceof Error`
|
|
79
|
+
* là `false`, `error.message` là `undefined`, nên mọi `catch` của consumer và predicate
|
|
80
|
+
* `retry.retryWhen` đều bỏ sót nhánh này. Bọc vào một Error thật để envelope lỗi đi chung
|
|
81
|
+
* đường với lỗi HTTP; body gốc vẫn giữ nguyên ở `.body`.
|
|
82
|
+
*/
|
|
83
|
+
export declare class SdApiError<TBody = unknown> extends Error {
|
|
84
|
+
readonly name = "SdApiError";
|
|
85
|
+
/** Body nguyên bản của response (đúng object server trả về). */
|
|
86
|
+
readonly body: TBody;
|
|
87
|
+
constructor(body: TBody, message?: string);
|
|
88
|
+
}
|
|
75
89
|
export {};
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Thông điệp của assertion dev-mode ở constructor. Export ra để spec khẳng định đúng nội dung,
|
|
4
|
+
* và để consumer grep được khi thấy nó trong console.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SD_API_MISSING_HTTP_CLIENT_MESSAGE: string;
|
|
2
7
|
export declare class SdApiModule {
|
|
8
|
+
constructor();
|
|
3
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiModule, never>;
|
|
4
10
|
static ɵmod: i0.ɵɵNgModuleDeclaration<SdApiModule, never, never, never>;
|
|
5
11
|
static ɵinj: i0.ɵɵInjectorDeclaration<SdApiModule>;
|
|
@@ -41,12 +41,22 @@ export interface SdCacheStoredValue<T = unknown> {
|
|
|
41
41
|
export type SdCacheSetCallback = (key: string, value: SdCacheStoredValue<unknown>, option?: SdCacheOption<unknown>) => Promise<void> | void;
|
|
42
42
|
export type SdCacheGetCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<unknown> | undefined>;
|
|
43
43
|
export type SdCacheRemoveCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
|
|
44
|
+
/**
|
|
45
|
+
* Số entry `type: 'memory'` tối đa được giữ trước khi LRU đẩy entry cũ nhất ra.
|
|
46
|
+
* Ghi đè bằng `maxMemoryEntries` trên `SD_CACHE_CONFIG`.
|
|
47
|
+
*/
|
|
48
|
+
export declare const SD_CACHE_DEFAULT_MAX_MEMORY_ENTRIES = 500;
|
|
44
49
|
export interface ISdCacheConfiguration {
|
|
45
50
|
convertKey?: (key: string) => string;
|
|
46
51
|
namespace?: string;
|
|
47
52
|
version?: string | number;
|
|
48
53
|
serializer?: SdPersistenceSerializer;
|
|
49
54
|
identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
|
|
55
|
+
/**
|
|
56
|
+
* Trần LRU cho cache `type: 'memory'`. Mặc định `SD_CACHE_DEFAULT_MAX_MEMORY_ENTRIES` (500).
|
|
57
|
+
* Giá trị không hợp lệ (không hữu hạn, < 1) sẽ rơi về mặc định.
|
|
58
|
+
*/
|
|
59
|
+
maxMemoryEntries?: number;
|
|
50
60
|
set?: SdCacheSetCallback;
|
|
51
61
|
get?: SdCacheGetCallback;
|
|
52
62
|
remove?: SdCacheRemoveCallback;
|
package/services/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export * from '@sdcorejs/angular/services/confirm';
|
|
|
6
6
|
export * from '@sdcorejs/angular/services/api';
|
|
7
7
|
export * from '@sdcorejs/angular/services/loading';
|
|
8
8
|
export * from '@sdcorejs/angular/services/excel';
|
|
9
|
-
export * from '@sdcorejs/angular/services/docx';
|
|
10
9
|
export * from '@sdcorejs/angular/services/viewport';
|
|
11
10
|
export * from '@sdcorejs/angular/services/unsaved-changes';
|
|
12
11
|
export * from '@sdcorejs/angular/services/task';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type NotifyOption as SdNotifyOption } from './src/notify.model';
|
|
1
|
+
export { type NotifyOption as SdNotifyOption, type ToastData as SdToastData, type ToastType as SdToastType } from './src/notify.model';
|
|
2
2
|
export * from './src/notify.service';
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
export * from './src/array.extension';
|
|
2
|
-
export * from './src/string.extension';
|
|
3
|
-
export * from './src/number.extension';
|
|
4
|
-
export * from './src/date.extension';
|
|
5
1
|
export * from './src/utility.extension';
|
|
6
|
-
export * from './src/color.extension';
|
|
7
2
|
export * from './src/object.extension';
|
|
3
|
+
export * from './src/url-safety';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL safety helpers.
|
|
3
|
+
*
|
|
4
|
+
* why: this library used to decide "is this an external link?" and "should this request carry the
|
|
5
|
+
* bearer token?" with plain substring tests — `path.includes('http')` and `url.includes(route)`.
|
|
6
|
+
* Both are unsound:
|
|
7
|
+
*
|
|
8
|
+
* - `'javascript:fetch(...)//http'.includes('http')` is `true`, so a menu entry could be opened
|
|
9
|
+
* with `window.open()` and execute script in the app origin.
|
|
10
|
+
* - With `secureRoutes: ['/api/v1']`, `'https://evil.example.com/api/v1/collect'.includes('/api/v1')`
|
|
11
|
+
* is `true`, so a third-party host received the `Authorization: Bearer <token>` header.
|
|
12
|
+
*
|
|
13
|
+
* Everything here parses the URL instead of pattern-matching the string, and fails closed.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Stand-in origin used when there is no `window.location` (SSR, prerender, unit tests).
|
|
17
|
+
*
|
|
18
|
+
* why: without a base, a relative route entry like `'/api/v1'` cannot be parsed, so every
|
|
19
|
+
* origin-aware check would silently answer `false` on the server — e.g. the keycloak interceptor
|
|
20
|
+
* would stop attaching the bearer token to every server-rendered request. Resolving BOTH the route
|
|
21
|
+
* entry and the request URL against one fixed synthetic origin keeps relative-vs-relative matching
|
|
22
|
+
* consistent across environments, while an ABSOLUTE route entry still has to match a real origin,
|
|
23
|
+
* so nothing is loosened.
|
|
24
|
+
*/
|
|
25
|
+
export declare const SD_NON_BROWSER_ORIGIN = "http://sdcorejs.invalid";
|
|
26
|
+
/** Resolve the origin that relative URLs should be interpreted against. */
|
|
27
|
+
export declare function sdResolveBaseOrigin(explicit?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Parse `value` into a URL. Relative values are resolved against `base` when one is supplied.
|
|
30
|
+
* Returns `undefined` instead of throwing so callers can fail closed with a simple null check.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sdParseUrl(value: string | null | undefined, base?: string): URL | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* True only when `value` is an ABSOLUTE `http:`/`https:` URL.
|
|
35
|
+
*
|
|
36
|
+
* Replaces `url.startsWith('http')` / `path.includes('http')`. Note that `startsWith('http')` also
|
|
37
|
+
* accepts nonsense like `'httpfoo'`, and `includes('http')` accepts any string that merely mentions
|
|
38
|
+
* it — including `javascript:` payloads.
|
|
39
|
+
*/
|
|
40
|
+
export declare function sdIsExternalHttpUrl(value: string | null | undefined): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Open an external link in a new browsing context.
|
|
43
|
+
*
|
|
44
|
+
* Refuses anything that is not absolute `http:`/`https:` (returns `null` without opening), and
|
|
45
|
+
* always passes `noopener,noreferrer` so the opened page cannot reach back through `window.opener`
|
|
46
|
+
* (reverse tabnabbing).
|
|
47
|
+
*/
|
|
48
|
+
export declare function sdOpenExternal(value: string | null | undefined, target?: string): Window | null;
|
|
49
|
+
/**
|
|
50
|
+
* True when `url` is same-origin, or its origin is in `allowedOrigins`.
|
|
51
|
+
*
|
|
52
|
+
* Relative URLs (`/api/v1/users`) always count as same-origin. Outside a browser they resolve
|
|
53
|
+
* against {@link SD_NON_BROWSER_ORIGIN} unless `baseOrigin` is supplied.
|
|
54
|
+
*/
|
|
55
|
+
export declare function sdIsAllowedOrigin(url: string | null | undefined, allowedOrigins: readonly string[], baseOrigin?: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Decide whether an outgoing request matches one of the configured secure routes, i.e. whether it
|
|
58
|
+
* is allowed to carry credentials.
|
|
59
|
+
*
|
|
60
|
+
* A route entry is either:
|
|
61
|
+
* - a path prefix (`'/api/v1'`) — matches ONLY same-origin requests under that path, or
|
|
62
|
+
* - an absolute URL (`'https://api.example.com/v1'`) — matches that exact origin, under that path.
|
|
63
|
+
*
|
|
64
|
+
* Path matching is segment-aware: `'/api/v1'` matches `/api/v1` and `/api/v1/users`, but NOT
|
|
65
|
+
* `/api/v1beta`. Anything that fails to parse returns `false`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function sdMatchesSecureRoute(url: string | null | undefined, routes: readonly string[] | undefined, baseOrigin?: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Segment-aware path prefix test: `/api/v1` covers `/api/v1` and `/api/v1/users`, but not
|
|
70
|
+
* `/api/v1beta`. A bare `/` prefix covers everything on that origin.
|
|
71
|
+
*/
|
|
72
|
+
export declare function sdIsPathPrefix(prefix: string, pathname: string): boolean;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
export { Utilities, BrowserUtilities } from '@sdcorejs/utils/fns';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Facade tiện ích chung của `@sdcorejs/angular` (upload/download, clipboard, paging, hash, uuid…).
|
|
3
|
+
*
|
|
4
|
+
* why: khối này TỪNG bị đánh dấu `@deprecated` như thể chỉ là alias mỏng của `Utilities` /
|
|
5
|
+
* `BrowserUtilities` bên `@sdcorejs/utils/fns` — điều đó SAI. Cả 14 member dưới đây là cài đặt
|
|
6
|
+
* cục bộ trong chính file này (xem phần trên), có hành vi riêng cho môi trường Angular (interceptor,
|
|
7
|
+
* i18n, DOM). Xoá nó theo diện "dead alias" sẽ mất code thật, nên marker `@deprecated` đã được gỡ
|
|
8
|
+
* trong đợt breaking rename thay vì gỡ implementation. Các alias thật sự chết ở `utilities/**`
|
|
9
|
+
* (`SdColor`, `SD_EMPTY_STR`, `SdFilter*`, `SdPatternCommons`, `hslToHex`/`rgbToHex`…) đã bị xoá hẳn.
|
|
6
10
|
*/
|
|
7
11
|
declare const SdUtilities: {
|
|
8
12
|
upload: (option?: {
|
|
@@ -24,7 +28,7 @@ declare const SdUtilities: {
|
|
|
24
28
|
randomId: (prefix?: string | null) => string;
|
|
25
29
|
hash: (obj: any) => string;
|
|
26
30
|
parseQueryParams: (queryString?: string) => Record<string, string>;
|
|
27
|
-
getClientPublicIp: () => Promise<string | null>;
|
|
31
|
+
getClientPublicIp: (endpoint: string) => Promise<string | null>;
|
|
28
32
|
generateUuid: () => string;
|
|
29
33
|
getNestedValue: (obj: any, path: string) => any;
|
|
30
34
|
};
|
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
export type * from './src/color.model';
|
|
2
|
-
export type * from './src/size.model';
|
|
3
1
|
export * from './src/icon.model';
|
|
4
|
-
export * from './src/pattern.model';
|
|
5
|
-
export * from './src/empty.model';
|
|
6
|
-
export * from './src/maybe-async.model';
|
|
7
|
-
export type * from './src/nested-key-of.model';
|
|
8
2
|
export type * from './src/unwrap-signal.model';
|
|
9
|
-
export * from './src/operator.model';
|
|
10
|
-
export type * from './src/filter.model';
|
|
11
|
-
export type * from './src/order.model';
|
|
12
|
-
export type * from './src/paging.model';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './src/base-secure.component';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { SdLicenseService } from '@sdcorejs/angular/services/license';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare abstract class SdBaseSecureComponent {
|
|
4
|
-
protected licenseService: SdLicenseService;
|
|
5
|
-
constructor();
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdBaseSecureComponent, never>;
|
|
7
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SdBaseSecureComponent, never, never, {}, {}, never, never, true, never>;
|
|
8
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { DocumentBuilderI18n } from '../../document-builder.model';
|
|
2
|
-
import { ClassicEditor, EditorConfig } from 'ckeditor5';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class SdHeaderFooterBuilder {
|
|
5
|
-
#private;
|
|
6
|
-
Editor: typeof ClassicEditor;
|
|
7
|
-
set model(value: string | undefined | null);
|
|
8
|
-
readonly modelChange: import("@angular/core").OutputEmitterRef<string>;
|
|
9
|
-
config: EditorConfig & {
|
|
10
|
-
_i18n?: DocumentBuilderI18n;
|
|
11
|
-
};
|
|
12
|
-
onReady(editor: ClassicEditor): void;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdHeaderFooterBuilder, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdHeaderFooterBuilder, "sd-header-footer-builder", never, { "model": { "alias": "model"; "required": false; }; }, { "modelChange": "modelChange"; }, never, never, true, never>;
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './header-footer-builder/header-footer-builder.component';
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
-
import { ClassicEditor, ModelRange } from 'ckeditor5';
|
|
3
|
-
import { VariablePlugin, CkCommentPlugin } from './plugins';
|
|
4
|
-
import { DocumentBuilderOption, SdDocumentBuilderHeading, SdDocumentBuilderOption } from './document-builder.model';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class SdDocumentBuilder implements OnInit, OnDestroy {
|
|
7
|
-
#private;
|
|
8
|
-
readonly option: import("@angular/core").InputSignal<SdDocumentBuilderOption>;
|
|
9
|
-
disabled: boolean;
|
|
10
|
-
set _disabled(val: boolean | '' | undefined | null);
|
|
11
|
-
readonly contentChange: import("@angular/core").OutputEmitterRef<string>;
|
|
12
|
-
Editor: typeof ClassicEditor;
|
|
13
|
-
config: DocumentBuilderOption;
|
|
14
|
-
ngOnInit(): void;
|
|
15
|
-
ngOnDestroy(): void;
|
|
16
|
-
onReady(editor: ClassicEditor): void;
|
|
17
|
-
setContent: (html: string) => void;
|
|
18
|
-
getContent: () => string;
|
|
19
|
-
setOrientation: (orientation: "PORTRAIT" | "LANDSCAPE") => void;
|
|
20
|
-
getOrientation: () => "PORTRAIT" | "LANDSCAPE";
|
|
21
|
-
scrollToTop(): void;
|
|
22
|
-
heading: {
|
|
23
|
-
/**
|
|
24
|
-
* Lấy tất cả headings trong document
|
|
25
|
-
* @returns Danh sách tất cả headings
|
|
26
|
-
*/
|
|
27
|
-
all: () => SdDocumentBuilderHeading[];
|
|
28
|
-
/**
|
|
29
|
-
* Scroll tới vị trí của heading
|
|
30
|
-
* @param id - ID của heading cần scroll tới
|
|
31
|
-
*/
|
|
32
|
-
scroll: (id: string) => void;
|
|
33
|
-
};
|
|
34
|
-
getCommentPluginAPI(): CkCommentPlugin | null;
|
|
35
|
-
getVariablePluginAPI(): VariablePlugin | null;
|
|
36
|
-
/**
|
|
37
|
-
* Xuất file Word có Header/Footer
|
|
38
|
-
* @param fileName Tên file
|
|
39
|
-
* @param headerText Nội dung Header (hoặc HTML)
|
|
40
|
-
* '<p style="text-align: center; font-weight: bold;">CÔNG TY CỔ PHẦN CÔNG NGHỆ ABC</p>'
|
|
41
|
-
* @param footerText Nội dung Footer (hoặc HTML)
|
|
42
|
-
* '<p style="text-align: right; font-size: 10pt;">Trang <span style="mso-field-code: PAGE"></span> / <span style="mso-field-code: NUMPAGES"></span></p>'
|
|
43
|
-
*/
|
|
44
|
-
exportDocx(args: {
|
|
45
|
-
fileName?: string;
|
|
46
|
-
header?: string;
|
|
47
|
-
footer?: string;
|
|
48
|
-
}): void;
|
|
49
|
-
hightSelectRange: (range: ModelRange) => void;
|
|
50
|
-
removeHighlightSeclectRange: () => void;
|
|
51
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdDocumentBuilder, never>;
|
|
52
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdDocumentBuilder, "sd-document-builder", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; "_disabled": { "alias": "disabled"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, true, never>;
|
|
53
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cấu hình màu cho Document Builder
|
|
3
|
-
* Bảng màu tập trung và cấu hình cho việc lựa chọn màu nhất quán
|
|
4
|
-
*/
|
|
5
|
-
import { ColorPickerConfig, FontColorConfig, FontSizeConfig, HeadingConfig } from 'ckeditor5';
|
|
6
|
-
/**
|
|
7
|
-
* Trả về bảng màu chung được sử dụng trong tất cả tính năng của document builder
|
|
8
|
-
* @returns Mảng các tùy chọn màu được định sẵn với giá trị hex và label
|
|
9
|
-
*/
|
|
10
|
-
export declare function getPresetColors(): FontColorConfig['colors'];
|
|
11
|
-
/**
|
|
12
|
-
* Trả về cấu hình bộ chọn màu với định dạng hex
|
|
13
|
-
* @returns Đối tượng cấu hình bộ chọn màu
|
|
14
|
-
*/
|
|
15
|
-
export declare function getColorPickerConfig(): ColorPickerConfig;
|
|
16
|
-
/**
|
|
17
|
-
* Trả về cấu hình kích thước font cho document builder
|
|
18
|
-
* @returns Mảng các tùy chọn kích thước font được định sẵn
|
|
19
|
-
*/
|
|
20
|
-
export declare function getFontSizeOptions(): FontSizeConfig['options'];
|
|
21
|
-
export declare function getHeadingOptions(): HeadingConfig['options'];
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { EditorConfig, EventInfo, ModelDocumentSelection, ViewDataTransfer } from 'ckeditor5';
|
|
2
|
-
import { I18nParams } from '@sdcorejs/angular/i18n';
|
|
3
|
-
import { CkCommentConfig } from './plugins/ck-comment/ck-comment.plugin.model';
|
|
4
|
-
/** Plain translator cho CKEditor plugin — tránh truyền thẳng I18nService (private fields mất `this` qua config). */
|
|
5
|
-
export interface DocumentBuilderI18n {
|
|
6
|
-
t(key: string, params?: I18nParams): string;
|
|
7
|
-
}
|
|
8
|
-
export type DocumentBuilderOption = EditorConfig & {
|
|
9
|
-
getOption?: () => SdDocumentBuilderOption;
|
|
10
|
-
_i18n?: DocumentBuilderI18n;
|
|
11
|
-
};
|
|
12
|
-
export interface SdDocumentBuilderOption {
|
|
13
|
-
onDropVariable?: (variable: SdDocumentBuilderVariable) => boolean | Promise<boolean | SdDocumentBuilderVariable>;
|
|
14
|
-
onAfterDropVariable?: (variable: SdDocumentBuilderVariable) => void;
|
|
15
|
-
onPasteVariable?: (display: string) => SdDocumentBuilderVariable | null | Promise<SdDocumentBuilderVariable | null>;
|
|
16
|
-
comment?: CkCommentConfig;
|
|
17
|
-
onSelection?: (selection: ModelDocumentSelection, $event: EventInfo<string, unknown>) => void;
|
|
18
|
-
onOrientation?: (orientation: 'PORTRAIT' | 'LANDSCAPE') => void;
|
|
19
|
-
onPaste?: (data: SdPasteEventData) => void | Promise<void>;
|
|
20
|
-
orientation?: 'PORTRAIT' | 'LANDSCAPE';
|
|
21
|
-
}
|
|
22
|
-
export interface SdDocumentBuilderVariable<T = any> {
|
|
23
|
-
id: string;
|
|
24
|
-
uuid?: string;
|
|
25
|
-
value: string;
|
|
26
|
-
display: string;
|
|
27
|
-
bindingValue?: string;
|
|
28
|
-
data?: T;
|
|
29
|
-
}
|
|
30
|
-
export interface SdDocumentBuilderHeading {
|
|
31
|
-
id: string;
|
|
32
|
-
text: string;
|
|
33
|
-
level: number;
|
|
34
|
-
type: string;
|
|
35
|
-
}
|
|
36
|
-
export interface SdPasteEventData {
|
|
37
|
-
html?: string;
|
|
38
|
-
text: string;
|
|
39
|
-
source: 'word' | 'excel' | 'google-docs' | 'web' | 'unknown';
|
|
40
|
-
dataTransfer: ViewDataTransfer;
|
|
41
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Document Builder Utilities
|
|
3
|
-
* Các hàm tiện ích cho document builder
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Chuẩn hóa nội dung bằng cách chuyển đổi tất cả màu HSL và RGB sang hex
|
|
7
|
-
* @param content - Nội dung HTML cần chuẩn hóa
|
|
8
|
-
* @returns Nội dung đã được chuẩn hóa với màu hex
|
|
9
|
-
*/
|
|
10
|
-
export declare function normalize(content: string): string;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Plugin } from 'ckeditor5';
|
|
2
|
-
/**
|
|
3
|
-
* Plugin để thêm margin-bottom: 4px cho các block elements
|
|
4
|
-
* (paragraph, heading, list, table) thông qua downcast conversion
|
|
5
|
-
*/
|
|
6
|
-
export declare class BlockSpace extends Plugin {
|
|
7
|
-
static get pluginName(): string;
|
|
8
|
-
init(): void;
|
|
9
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Plugin, ContextualBalloon } from 'ckeditor5';
|
|
2
|
-
import { CkComment, CkCommentConfig, CkCommentColors } from './ck-comment.plugin.model';
|
|
3
|
-
export declare class CkCommentPlugin extends Plugin {
|
|
4
|
-
#private;
|
|
5
|
-
static get pluginName(): string;
|
|
6
|
-
static get requires(): (typeof ContextualBalloon)[];
|
|
7
|
-
static readonly PENDING_MARKER_ID = "__pending_comment__";
|
|
8
|
-
static readonly DEFAULT_SEARCH_RANGE = 5;
|
|
9
|
-
static readonly DEFAULT_MAX_TEXT_LENGTH = 1000;
|
|
10
|
-
static readonly DEFAULT_COLORS: CkCommentColors;
|
|
11
|
-
init(): void;
|
|
12
|
-
/**
|
|
13
|
-
* Thiết lập config với callbacks
|
|
14
|
-
*/
|
|
15
|
-
setConfig(config: CkCommentConfig): void;
|
|
16
|
-
/**
|
|
17
|
-
* Thêm comment và tạo marker
|
|
18
|
-
*/
|
|
19
|
-
addComment(comment: CkComment): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Xóa comment theo id
|
|
22
|
-
*/
|
|
23
|
-
removeComment(id: string | number): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Chọn comment theo id - chỉ thêm class highlight, không bôi đen text
|
|
26
|
-
*/
|
|
27
|
-
selectComment(id: string | number, scrollIntoView?: boolean): void;
|
|
28
|
-
/**
|
|
29
|
-
* Thiết lập tất cả comments (khôi phục từ dữ liệu)
|
|
30
|
-
*/
|
|
31
|
-
setComments(comments: CkComment[]): void;
|
|
32
|
-
/**
|
|
33
|
-
* Lấy tất cả comments
|
|
34
|
-
*/
|
|
35
|
-
get comments(): CkComment[];
|
|
36
|
-
/**
|
|
37
|
-
* Thiết lập pending highlight cho selection (khi user đang nhập nội dung comment)
|
|
38
|
-
*/
|
|
39
|
-
setPendingSelection(startPath: number[], endPath: number[]): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Xóa pending highlight và fire onCancelPending callback
|
|
42
|
-
*/
|
|
43
|
-
clearPendingSelection(): void;
|
|
44
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ModelRange } from 'ckeditor5';
|
|
2
|
-
/**
|
|
3
|
-
* Comment status based on text changes
|
|
4
|
-
*/
|
|
5
|
-
export type CkCommentStatus = 'normal' | 'modified' | 'broken';
|
|
6
|
-
/**
|
|
7
|
-
* Color configuration for comment markers
|
|
8
|
-
*/
|
|
9
|
-
export interface CkCommentColors {
|
|
10
|
-
marker?: string;
|
|
11
|
-
markerSelected?: string;
|
|
12
|
-
markerPending?: string;
|
|
13
|
-
markerModified?: string;
|
|
14
|
-
markerBroken?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Comment data structure for CkCommentPlugin
|
|
18
|
-
*/
|
|
19
|
-
export interface CkComment<T = any> {
|
|
20
|
-
id: string | number;
|
|
21
|
-
startPath: number[];
|
|
22
|
-
endPath: number[];
|
|
23
|
-
originalText: string;
|
|
24
|
-
currentText: string;
|
|
25
|
-
status: CkCommentStatus;
|
|
26
|
-
data?: T;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Config for CkCommentPlugin
|
|
30
|
-
*/
|
|
31
|
-
export interface CkCommentConfig {
|
|
32
|
-
onPendingComment?: (comment: CkComment) => void;
|
|
33
|
-
onAddComment?: (comment: CkComment) => void;
|
|
34
|
-
onSelectComment?: (id: string | number) => void;
|
|
35
|
-
onRemoveComment?: (id: string | number) => void;
|
|
36
|
-
onChange?: (comments: CkComment[]) => void;
|
|
37
|
-
onCancelPending?: () => void;
|
|
38
|
-
onError?: (error: {
|
|
39
|
-
code: string;
|
|
40
|
-
message: string;
|
|
41
|
-
data?: any;
|
|
42
|
-
}) => void;
|
|
43
|
-
searchRange?: number;
|
|
44
|
-
debug?: boolean;
|
|
45
|
-
colors?: CkCommentColors;
|
|
46
|
-
maxTextLength?: number;
|
|
47
|
-
allowCreating?: boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Data returned when user selects text for comment
|
|
51
|
-
*/
|
|
52
|
-
export interface CkCommentSelection {
|
|
53
|
-
range: ModelRange;
|
|
54
|
-
startPath: number[];
|
|
55
|
-
endPath: number[];
|
|
56
|
-
text: string;
|
|
57
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Plugin } from 'ckeditor5';
|
|
2
|
-
export declare class ImageCustomPlugin extends Plugin {
|
|
3
|
-
static get pluginName(): "ImageCustomPlugin";
|
|
4
|
-
init(): void;
|
|
5
|
-
/**
|
|
6
|
-
* Xử lý sự kiện chèn ảnh
|
|
7
|
-
*/
|
|
8
|
-
private handleImageInsert;
|
|
9
|
-
/**
|
|
10
|
-
* Xử lý sự kiện thay đổi attribute ảnh
|
|
11
|
-
*/
|
|
12
|
-
private handleImageAttributeChange;
|
|
13
|
-
/**
|
|
14
|
-
* Xử lý sự kiện thay đổi style ảnh - thêm float inline style cho căn chỉnh
|
|
15
|
-
*/
|
|
16
|
-
private handleImageStyleChange;
|
|
17
|
-
/**
|
|
18
|
-
* Áp dụng custom styles cho element ảnh
|
|
19
|
-
*/
|
|
20
|
-
private applyCustomStyles;
|
|
21
|
-
/**
|
|
22
|
-
* Tìm container ck-widget (element figure)
|
|
23
|
-
* CKEditor wrap ảnh block trong <figure class="ck-widget"><img></figure>
|
|
24
|
-
*/
|
|
25
|
-
private findWidgetElement;
|
|
26
|
-
/**
|
|
27
|
-
* Tìm element img thực tế bên trong widget structure
|
|
28
|
-
* CKEditor wrap ảnh block trong <figure class="ck-widget"><img></figure>
|
|
29
|
-
*/
|
|
30
|
-
private findImgElement;
|
|
31
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './heading/heading.plugin';
|
|
2
|
-
export * from './variable/variable.plugin';
|
|
3
|
-
export * from './table-custom';
|
|
4
|
-
export * from './image-upload/image-upload.plugin';
|
|
5
|
-
export * from './image-custom/image-custom.plugin';
|
|
6
|
-
export * from './page-orientation/page-orientation.plugin';
|
|
7
|
-
export * from './paste-handler';
|
|
8
|
-
export * from './highlight-range/highlight-range.plugin';
|
|
9
|
-
export * from './block-space/block-space.plugin';
|
|
10
|
-
export * from './ck-comment/ck-comment.plugin';
|
|
11
|
-
export type * from './ck-comment/ck-comment.plugin.model';
|