@sdcorejs/angular 19.1.6 → 19.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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/badge/src/badge.component.d.ts +1 -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 +6 -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 +3 -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-autoid-inspector.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -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-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 +16 -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 +541 -254
- 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 +6 -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 +490 -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 +332 -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 +90 -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 +8 -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 -33
- 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
package/README.md
CHANGED
|
@@ -21,6 +21,16 @@ Install the package major that matches your Angular application.
|
|
|
21
21
|
|
|
22
22
|
The package manifests accept Angular 19–21 peers, while releases provide an Angular-aligned package line for each major. The first version number is reserved for Angular compatibility, so read the [changelog](https://github.com/sdcorejs/sdcorejs-angular/blob/main/CHANGELOG.md) for explicitly labeled breaking changes before upgrading.
|
|
23
23
|
|
|
24
|
+
### Peer dependencies
|
|
25
|
+
|
|
26
|
+
The package declares these peers. A standard Angular CLI application already provides all of them except `@angular/material` and `@angular/material-date-fns-adapter`, which is why only those two appear in the install commands above.
|
|
27
|
+
|
|
28
|
+
| Peer | Range |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `@angular/animations` · `@angular/cdk` · `@angular/common` · `@angular/core` · `@angular/forms` · `@angular/platform-browser` · `@angular/router` | `^19.0.0 \|\| ^20.0.0 \|\| ^21.0.0` |
|
|
31
|
+
| `@angular/material` · `@angular/material-date-fns-adapter` | `^19.0.0 \|\| ^20.0.0 \|\| ^21.0.0` |
|
|
32
|
+
| `rxjs` | `^7.8.0` |
|
|
33
|
+
|
|
24
34
|
## Installation and setup
|
|
25
35
|
|
|
26
36
|
The examples below use Angular 19; replace `19` with your application's Angular major.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// why: Material tạo khoảng cách giữa leading icon và nhãn của menu item bằng `margin-right` đặt trên
|
|
2
|
+
// `.mat-icon`. Với `<sd-icon>` thì `.mat-icon` nằm BÊN TRONG host, nên margin đó không đẩy nhãn ra —
|
|
3
|
+
// nó chỉ làm glyph lệch và bị xén trong host (sd-icon đã trung hoà margin đó ở cấp component). Rule
|
|
4
|
+
// dưới đây trả khoảng cách về đúng cấp: host `<sd-icon>` khi nó là icon dẫn đầu của menu item.
|
|
5
|
+
//
|
|
6
|
+
// Đặt ở cấp host nên Material font icon và Lucide SVG hành xử giống hệt nhau — Lucide không render
|
|
7
|
+
// `.mat-icon` nên trước đây không nhận được khoảng cách nào từ Material.
|
|
8
|
+
//
|
|
9
|
+
// Chỉ nhắm con TRỰC TIẾP: menu tự bọc icon trong wrapper flex có `gap` riêng (sd-table command,
|
|
10
|
+
// sd-tree command) không được cộng thêm margin. Angular slot nội dung không phải `mat-icon` vào
|
|
11
|
+
// trong `.mat-mdc-menu-item-text`, nên phải liệt kê cả hai cấp.
|
|
12
|
+
//
|
|
13
|
+
// Bọc trong `:where()` để specificity bằng 0: bất kỳ rule nào của menu cụ thể — kể cả một class đơn —
|
|
14
|
+
// cũng thắng, nên đây là default an toàn chứ không phải thứ phải đi vá bằng `!important`.
|
|
15
|
+
:where(.mat-mdc-menu-item > sd-icon:first-child),
|
|
16
|
+
:where(.mat-mdc-menu-item > .mat-mdc-menu-item-text > sd-icon:first-child) {
|
|
17
|
+
margin-right: var(--mat-menu-item-spacing, 12px);
|
|
18
|
+
}
|
|
@@ -18,3 +18,18 @@
|
|
|
18
18
|
// --------------------------------------------------------------------------
|
|
19
19
|
.visible { visibility: visible !important; }
|
|
20
20
|
.invisible { visibility: hidden !important; }
|
|
21
|
+
|
|
22
|
+
// --------------------------------------------------------------------------
|
|
23
|
+
// Screen-reader-only text (visually hidden, still in the accessibility tree)
|
|
24
|
+
// --------------------------------------------------------------------------
|
|
25
|
+
.sd-visually-hidden {
|
|
26
|
+
position: absolute !important;
|
|
27
|
+
width: 1px !important;
|
|
28
|
+
height: 1px !important;
|
|
29
|
+
padding: 0 !important;
|
|
30
|
+
margin: -1px !important;
|
|
31
|
+
overflow: hidden !important;
|
|
32
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
33
|
+
white-space: nowrap !important;
|
|
34
|
+
border: 0 !important;
|
|
35
|
+
}
|
package/assets/scss/sd-core.scss
CHANGED
|
@@ -12,11 +12,13 @@ export declare class SdAnchor implements OnDestroy {
|
|
|
12
12
|
ellipsis: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
13
|
overScroll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
14
14
|
hideNav: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
15
|
+
hideNavOnMobile: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
15
16
|
color: import("@angular/core").InputSignal<Color>;
|
|
17
|
+
readonly navHidden: import("@angular/core").Signal<boolean>;
|
|
16
18
|
activeSectionId: import("@angular/core").WritableSignal<string>;
|
|
17
19
|
constructor();
|
|
18
20
|
scrollSectionByClick(idSectionTarget: string): void;
|
|
19
21
|
ngOnDestroy(): void;
|
|
20
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdAnchor, never>;
|
|
21
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdAnchor, "sd-anchor", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "sidebarWidth": { "alias": "sidebarWidth"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "overScroll": { "alias": "overScroll"; "required": false; "isSignal": true; }; "hideNav": { "alias": "hideNav"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, ["sections"], ["*"], true, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdAnchor, "sd-anchor", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "sidebarWidth": { "alias": "sidebarWidth"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "overScroll": { "alias": "overScroll"; "required": false; "isSignal": true; }; "hideNav": { "alias": "hideNav"; "required": false; "isSignal": true; }; "hideNavOnMobile": { "alias": "hideNavOnMobile"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, ["sections"], ["*"], true, never>;
|
|
22
24
|
}
|
|
@@ -21,6 +21,7 @@ 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>;
|
|
25
26
|
baseColorClasses: import("@angular/core").Signal<{
|
|
26
27
|
'c-primary': 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 {};
|
|
@@ -14,9 +14,9 @@ export interface SdFormGenericExpressionCondition {
|
|
|
14
14
|
value: any;
|
|
15
15
|
dayInfo: DayInfo;
|
|
16
16
|
}
|
|
17
|
-
export type
|
|
18
|
-
export declare const
|
|
19
|
-
value:
|
|
17
|
+
export type SdFormGenericOperator = 'EQUAL' | 'NOT_EQUAL' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_OR_EQUAL' | 'LESS_OR_EQUAL' | 'NULL' | 'NOT_NULL';
|
|
18
|
+
export declare const SdFormGenericOperators: {
|
|
19
|
+
value: SdFormGenericOperator;
|
|
20
20
|
symbol?: string;
|
|
21
21
|
display: string;
|
|
22
22
|
}[];
|
|
@@ -43,16 +43,16 @@ export interface DayInfo {
|
|
|
43
43
|
related?: 'LASTDAY' | 'NEXTDAY' | 'LASTWEEK' | 'NEXTWEEK' | 'LASTMONTH' | 'NEXTMONTH';
|
|
44
44
|
relatedValue?: number;
|
|
45
45
|
}
|
|
46
|
-
export declare const
|
|
46
|
+
export declare const SD_DAY_INFO_TYPES: {
|
|
47
47
|
value: string;
|
|
48
48
|
display: string;
|
|
49
49
|
}[];
|
|
50
|
-
export declare const
|
|
50
|
+
export declare const SD_DAY_INFO_PREVIOUSES: {
|
|
51
51
|
value: string;
|
|
52
52
|
display: string;
|
|
53
53
|
format: (n: number) => string;
|
|
54
54
|
}[];
|
|
55
|
-
export declare const
|
|
55
|
+
export declare const sdGetDatetimeValue: (value: string) => string | undefined;
|
|
56
56
|
interface AttributeValues {
|
|
57
57
|
value: string;
|
|
58
58
|
display: string;
|
|
@@ -62,13 +62,13 @@ interface AttributeValues {
|
|
|
62
62
|
display: string;
|
|
63
63
|
}[];
|
|
64
64
|
}
|
|
65
|
-
export declare const
|
|
66
|
-
value:
|
|
65
|
+
export declare const SD_ATTRIBUTE_OPERATORS: Record<Attribute['type'], {
|
|
66
|
+
value: SdFormGenericOperator;
|
|
67
67
|
symbol?: string;
|
|
68
68
|
display: string;
|
|
69
69
|
}[]>;
|
|
70
|
-
export declare const
|
|
71
|
-
export declare const
|
|
72
|
-
export declare const
|
|
73
|
-
export declare const
|
|
70
|
+
export declare const sdGetAttributes: (components: (SdFormGenericComponent | SdFormGenericGroup)[]) => Attribute[];
|
|
71
|
+
export declare const sdTemplateToCondition: (template: string | undefined | null, entity: Record<string, any>) => string | undefined;
|
|
72
|
+
export declare const sdEvaluateExpression: (condition: SdFormGenericExpression | SdFormGenericExpressionCondition, entity: Record<string, any>) => boolean | undefined;
|
|
73
|
+
export declare const sdExpressionToJavascriptExpression: (condition: SdFormGenericExpression | SdFormGenericExpressionCondition) => string | undefined;
|
|
74
74
|
export {};
|
|
@@ -6,3 +6,4 @@ export type * from './form-generic-definition-selection.model';
|
|
|
6
6
|
export type * from './form-generic-definition-table.model';
|
|
7
7
|
export type * from './form-generic-definition-html.model';
|
|
8
8
|
export * from './form-generic-expression.model';
|
|
9
|
+
export * from './form-generic-validation.model';
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class FormGenericService {
|
|
5
5
|
#private;
|
|
6
6
|
private readonly configuration;
|
|
7
|
-
get selections(): (() => Promise<SdFormGenericDefinitionSelection[]>) | SdFormGenericDefinitionSelection<any,
|
|
7
|
+
get selections(): (() => Promise<SdFormGenericDefinitionSelection[]>) | SdFormGenericDefinitionSelection<any, unknown>[] | (() => SdFormGenericDefinitionSelection<any, unknown>[]);
|
|
8
8
|
get tables(): import("@sdcorejs/angular/components/form-generic").SdFormGenericDefinitionTable<any>[];
|
|
9
9
|
getSelection: (valuesKey: string | undefined | null) => Promise<SdFormGenericDefinitionSelection | undefined>;
|
|
10
10
|
selection: {
|
|
@@ -12,7 +12,7 @@ export declare class FormGenericService {
|
|
|
12
12
|
getDefinition: (valuesKey: string | undefined | null) => Promise<SdFormGenericDefinitionSelection | undefined>;
|
|
13
13
|
items: (valuesKey: string | undefined | null, args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem[] | SdSearch<SdFormGenericSelectionItem>>;
|
|
14
14
|
variables: {
|
|
15
|
-
detail: (valuesKey: string, values: string | number | string[] | number[], args: SdFormGenericArgs) => Promise<
|
|
15
|
+
detail: (valuesKey: string, values: string | number | string[] | number[], args: SdFormGenericArgs) => Promise<unknown>;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
html: {
|
|
@@ -36,6 +36,7 @@ export declare class SdImportExcel implements OnInit, OnDestroy {
|
|
|
36
36
|
accept: () => void;
|
|
37
37
|
setValidation: (validations: SdImportExcelValidation[]) => void;
|
|
38
38
|
view: (showing?: "ALL" | "SUCCESS" | "WARNING" | "ERROR") => void;
|
|
39
|
+
onDownloadTemplateKeydown: (event: KeyboardEvent) => void;
|
|
39
40
|
downloadTemplate: () => Promise<void>;
|
|
40
41
|
export: () => Promise<void>;
|
|
41
42
|
onClosed: () => void;
|
package/components/index.d.ts
CHANGED
|
@@ -11,12 +11,12 @@ export * from '@sdcorejs/angular/components/query-bar';
|
|
|
11
11
|
export * from '@sdcorejs/angular/components/upload-file';
|
|
12
12
|
export * from '@sdcorejs/angular/components/section';
|
|
13
13
|
export * from '@sdcorejs/angular/components/inform';
|
|
14
|
+
export * from '@sdcorejs/angular/components/form-generic';
|
|
14
15
|
export * from '@sdcorejs/angular/components/anchor';
|
|
15
16
|
export * from '@sdcorejs/angular/components/query-builder';
|
|
16
17
|
export * from '@sdcorejs/angular/components/org-chart';
|
|
17
18
|
export * from '@sdcorejs/angular/components/tree';
|
|
18
19
|
export * from '@sdcorejs/angular/components/import-excel';
|
|
19
|
-
export * from '@sdcorejs/angular/components/document-builder';
|
|
20
20
|
export * from '@sdcorejs/angular/components/mini-editor';
|
|
21
21
|
export * from '@sdcorejs/angular/components/view';
|
|
22
22
|
export * from '@sdcorejs/angular/components/code-editor';
|
|
@@ -29,3 +29,8 @@ export * from '@sdcorejs/angular/components/breadcrumb';
|
|
|
29
29
|
export * from '@sdcorejs/angular/components/data-state';
|
|
30
30
|
export * from '@sdcorejs/angular/components/job-progress';
|
|
31
31
|
export * from '@sdcorejs/angular/components/audit-diff';
|
|
32
|
+
export * from '@sdcorejs/angular/components/ckeditor-styles';
|
|
33
|
+
export * from '@sdcorejs/angular/components/history';
|
|
34
|
+
export * from '@sdcorejs/angular/components/operator';
|
|
35
|
+
export * from '@sdcorejs/angular/components/stepper';
|
|
36
|
+
export * from '@sdcorejs/angular/components/tab';
|
|
@@ -14,7 +14,7 @@ export interface SdMiniEditorMentionConfig {
|
|
|
14
14
|
attributes?: Record<string, string>;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export type SdMiniEditorMentionItem<T =
|
|
17
|
+
export type SdMiniEditorMentionItem<T = unknown> = MentionFeedObjectItem & {
|
|
18
18
|
data?: T;
|
|
19
19
|
};
|
|
20
20
|
export interface SdMiniEditorOption {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ElementRef, TemplateRef } from '@angular/core';
|
|
1
|
+
import { ElementRef, OnDestroy, TemplateRef } from '@angular/core';
|
|
2
2
|
import { Color } from '@sdcorejs/utils/models';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export type SdModalBeforeClose = () => boolean | Promise<boolean>;
|
|
5
|
-
export declare class SdModal {
|
|
5
|
+
export declare class SdModal implements OnDestroy {
|
|
6
6
|
#private;
|
|
7
7
|
static index: import("@angular/core").WritableSignal<number>;
|
|
8
8
|
templateRef: import("@angular/core").Signal<TemplateRef<any>>;
|
|
@@ -26,6 +26,7 @@ export declare class SdModal {
|
|
|
26
26
|
isOpened: import("@angular/core").WritableSignal<boolean>;
|
|
27
27
|
alreadyOpened: import("@angular/core").WritableSignal<boolean>;
|
|
28
28
|
constructor();
|
|
29
|
+
ngOnDestroy(): void;
|
|
29
30
|
open: () => void;
|
|
30
31
|
close: () => void;
|
|
31
32
|
requestClose: () => Promise<boolean>;
|
|
@@ -1,11 +1,93 @@
|
|
|
1
1
|
import { CdkPortal } from '@angular/cdk/portal';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* `<sd-modal-resizable>` — right-docked, non-modal panel that can be minimized, expanded or pushed
|
|
5
|
+
* fullscreen. Several panels stack side by side along the right edge of the viewport, so the user
|
|
6
|
+
* can keep multiple records open at once while still working with the page behind them.
|
|
7
|
+
*
|
|
8
|
+
* Use it for side-by-side comparison / inspector workflows. Use `<sd-modal>` when the task is
|
|
9
|
+
* blocking, and `<sd-side-drawer>` when a single overlay with a backdrop is enough.
|
|
10
|
+
*
|
|
11
|
+
* NOTE ON DOCS: this component deliberately has **no** sibling `sd-modal-resizable.md`. Every `*.md`
|
|
12
|
+
* under the library is swept into `published-docs/<version>/index.json` by `scripts/collect-docs.mjs`,
|
|
13
|
+
* and `scripts/generate-showcase-example-sources.test.mjs` asserts that list is 1:1 with the
|
|
14
|
+
* `publishedDocId` set in the showcase documentation registry. A published doc with no showcase page
|
|
15
|
+
* therefore turns that release guard red. Keep the reference here until the component ships a
|
|
16
|
+
* showcase demo + registry entry; only then add the `.md`.
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { SdModalResizable } from '@sdcorejs/angular/components/modal-resizable';
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* ```html
|
|
23
|
+
* <sd-button title="Open detail" type="fill" color="primary" (click)="panel.open()"></sd-button>
|
|
24
|
+
*
|
|
25
|
+
* <sd-modal-resizable #panel width="520px">
|
|
26
|
+
* <span sdTitle>Đơn hàng #1024</span>
|
|
27
|
+
*
|
|
28
|
+
* <div sdBody class="panel-body">
|
|
29
|
+
* <sd-section icon="receipt" title="Thông tin chung">
|
|
30
|
+
* <sd-section-item label="Khách hàng">Nguyen Van An</sd-section-item>
|
|
31
|
+
* </sd-section>
|
|
32
|
+
* </div>
|
|
33
|
+
*
|
|
34
|
+
* <sd-button sdFooterRight type="text" title="Đóng" (click)="panel.close()"></sd-button>
|
|
35
|
+
* </sd-modal-resizable>
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* ### Slots
|
|
39
|
+
* | Selector | Where it renders |
|
|
40
|
+
* | ----------------- | ------------------------- |
|
|
41
|
+
* | `[sdTitle]` | Header title area. |
|
|
42
|
+
* | `[sdBody]` | Scrollable content area. |
|
|
43
|
+
* | `[sdFooterLeft]` | Footer left action group. |
|
|
44
|
+
* | `[sdFooterRight]` | Footer right action group.|
|
|
45
|
+
*
|
|
46
|
+
* Header, body and footer only render while the panel is open.
|
|
47
|
+
*
|
|
48
|
+
* ### Panel stacking
|
|
49
|
+
* The panel is portalled onto `document.body` (via `CdkPortal` + `DomPortalOutlet`), so laying panels
|
|
50
|
+
* out is a concern shared by all live instances rather than by a single view. Arrangement is scoped
|
|
51
|
+
* through the root-provided `SdModalResizableRegistry`: each instance registers its panel id on
|
|
52
|
+
* construction and unregisters it on destroy. `open`, `close`, `minimize`, `maximize` and
|
|
53
|
+
* `toggleMaximum` re-run the arrangement and rewrite inline `width` / `right` **only on registered,
|
|
54
|
+
* still-mounted panels**, in registration order. Consequences worth knowing:
|
|
55
|
+
* - Markup of your own that happens to carry the `.modal-resizable` class is **not** touched.
|
|
56
|
+
* (Earlier builds ran `document.querySelectorAll('.modal-resizable')` and rewrote every match.)
|
|
57
|
+
* - A destroyed panel immediately stops taking up a slot for the instances that outlive it.
|
|
58
|
+
* - Panels marked `c-closed`, and expanded panels with no captured `data-width`, are skipped.
|
|
59
|
+
*
|
|
60
|
+
* ### Lifecycle / teardown
|
|
61
|
+
* `open()`, `close()` and the arrangement pass each schedule a short `setTimeout` (100ms / 100ms /
|
|
62
|
+
* 200ms) that mutates DOM. All of them are tracked and cleared in `DestroyRef.onDestroy`, together
|
|
63
|
+
* with unregistering from the registry and destroying the portal view. Destroying the component
|
|
64
|
+
* mid-animation cannot run layout work against a detached panel.
|
|
65
|
+
*
|
|
66
|
+
* ### Anti-patterns
|
|
67
|
+
* - Rendering it inside a scroll container and expecting it to be clipped — it lives on `<body>`.
|
|
68
|
+
* - Reusing the `.modal-resizable` class on your own elements to "join" the stack; register a real
|
|
69
|
+
* component instead.
|
|
70
|
+
* - Writing inline `width` / `right` on a panel yourself — the next arrangement pass overwrites both.
|
|
71
|
+
*
|
|
72
|
+
* ### Tests
|
|
73
|
+
* `src/modal-resizable.component.spec.ts` — portal attach, open/close/minimize/maximize math,
|
|
74
|
+
* loading, editing, timer teardown, registry scoping. Run:
|
|
75
|
+
* `npx ng test sdcorejs-angular --watch=false --browsers=ChromeHeadless --include='projects/sdcorejs-angular/components/modal-resizable/src/modal-resizable.component.spec.ts'`
|
|
76
|
+
*
|
|
77
|
+
* ### Related
|
|
78
|
+
* `<sd-modal>` (blocking dialog / bottom-sheet), `<sd-side-drawer>` (single right-side overlay with
|
|
79
|
+
* a body scroll lock), `SdLoadingService` (powers `startLoading()` / `stopLoading()`).
|
|
80
|
+
*/
|
|
3
81
|
export declare class SdModalResizable {
|
|
4
82
|
#private;
|
|
83
|
+
/** Generated DOM id of the panel element (`I<uuid>`). */
|
|
5
84
|
readonly id: string;
|
|
6
85
|
readonly portal: import("@angular/core").Signal<CdkPortal>;
|
|
86
|
+
/** Marks the panel as editable. Bare attribute = `true`. Default `false`. */
|
|
7
87
|
readonly editable: import("@angular/core").InputSignalWithTransform<boolean, boolean | "">;
|
|
88
|
+
/** CSS width used while the panel is expanded (not a minimum). Default `'480px'`. */
|
|
8
89
|
readonly width: import("@angular/core").InputSignal<string>;
|
|
90
|
+
/** Emitted by `toggleEditable()` with the new editing state. */
|
|
9
91
|
readonly editingChanged: import("@angular/core").OutputEmitterRef<boolean>;
|
|
10
92
|
readonly isEditing: import("@angular/core").WritableSignal<boolean>;
|
|
11
93
|
readonly isOpened: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -14,15 +96,25 @@ export declare class SdModalResizable {
|
|
|
14
96
|
readonly isMinimum: import("@angular/core").WritableSignal<boolean>;
|
|
15
97
|
readonly isMaximum: import("@angular/core").WritableSignal<boolean>;
|
|
16
98
|
constructor();
|
|
99
|
+
/** Opens the panel, captures its rendered width, and expands it. */
|
|
17
100
|
open: () => void;
|
|
101
|
+
/** Collapses the panel to zero width and stops loading. */
|
|
18
102
|
close: () => void;
|
|
103
|
+
/** Shrinks the panel to the 300px minimum strip. */
|
|
19
104
|
minimize: () => void;
|
|
105
|
+
/** Restores the panel to its expanded width. */
|
|
20
106
|
maximize: () => void;
|
|
107
|
+
/** Toggles fullscreen (`calc(100% - 16px)`). */
|
|
21
108
|
toggleMaximum: () => void;
|
|
109
|
+
/** Drives the scoped loading overlay through `SdLoadingService`. */
|
|
22
110
|
startLoading: () => void;
|
|
111
|
+
/** Stops the scoped loading overlay. */
|
|
23
112
|
stopLoading: () => void;
|
|
113
|
+
/** Flips `isEditing` and emits `editingChanged`. */
|
|
24
114
|
toggleEditable(): void;
|
|
115
|
+
/** Hover state hook bound in the template. */
|
|
25
116
|
onFocus: () => void;
|
|
117
|
+
/** Hover state hook bound in the template. */
|
|
26
118
|
onBlur: () => void;
|
|
27
119
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdModalResizable, never>;
|
|
28
120
|
static ɵcmp: i0.ɵɵComponentDeclaration<SdModalResizable, "sd-modal-resizable", never, { "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "editingChanged": "editingChanged"; }, never, ["[sdTitle]", "[sdBody]", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Sổ đăng ký các panel `<sd-modal-resizable>` đang sống.
|
|
4
|
+
*
|
|
5
|
+
* why: mỗi panel được portal ra thẳng `document.body` nên việc xếp chỗ (width/right) là bài toán
|
|
6
|
+
* chung của cả stack. Trước đây `#arrangePanels` quét `document.querySelectorAll('.modal-resizable')`
|
|
7
|
+
* — query đó bắt MỌI phần tử mang class này trong tài liệu, kể cả markup của component khác hoặc
|
|
8
|
+
* của app dùng trùng tên class, rồi ghi đè inline style lên chúng. Registry giới hạn phạm vi ghi
|
|
9
|
+
* đúng vào các instance do library tạo ra và còn sống.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SdModalResizableRegistry {
|
|
12
|
+
#private;
|
|
13
|
+
register(id: string): void;
|
|
14
|
+
unregister(id: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Phần tử panel của các instance đã đăng ký và đang có mặt trong DOM.
|
|
17
|
+
* Instance đã destroy hoặc chưa attach portal sẽ bị bỏ qua.
|
|
18
|
+
*/
|
|
19
|
+
panels(): HTMLElement[];
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdModalResizableRegistry, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdModalResizableRegistry>;
|
|
22
|
+
}
|
|
@@ -16,9 +16,15 @@ export declare class SdOrgChart {
|
|
|
16
16
|
readonly resolvedItemTemplate: import("@angular/core").Signal<TemplateRef<SdOrgChartItemContext<SdOrgChartItem>> | undefined>;
|
|
17
17
|
readonly trackByItem: (_index: number, item: SdOrgChartItem) => string | number;
|
|
18
18
|
hasChildren: (item: SdOrgChartItem) => boolean;
|
|
19
|
+
/** why: trả về hằng số dùng chung thay vì `[]` mới, để leaf không cấp phát mỗi lần CD gọi tới. */
|
|
19
20
|
childrenOf: (item: SdOrgChartItem) => SdOrgChartItem[];
|
|
20
21
|
isExpanded: (item: SdOrgChartItem) => boolean;
|
|
21
22
|
toggle: (item: SdOrgChartItem, event?: Event) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Template context của một node. Ref ổn định giữa các lần CD nhờ `#contextByItem`.
|
|
25
|
+
* Item không nằm trong `resolvedItems()` (gọi thủ công từ bên ngoài) thì dựng mới — trường hợp
|
|
26
|
+
* này không nằm trên đường render nên không gây churn.
|
|
27
|
+
*/
|
|
22
28
|
createContext: (item: SdOrgChartItem, depth: number, parent: SdOrgChartItem | null) => SdOrgChartItemContext;
|
|
23
29
|
nodeAutoId: (item: SdOrgChartItem, part: "node" | "image" | "title" | "description" | "toggle") => string | undefined;
|
|
24
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdOrgChart, never>;
|
|
@@ -7,6 +7,7 @@ export declare class SdPreviewImage implements OnDestroy {
|
|
|
7
7
|
static readonly MAX_ZOOM = 4;
|
|
8
8
|
static readonly ZOOM_STEP = 0.1;
|
|
9
9
|
static readonly SWIPE_THRESHOLD = 40;
|
|
10
|
+
readonly stageId: string;
|
|
10
11
|
readonly autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
|
|
11
12
|
readonly autoId: import("@angular/core").Signal<string | undefined>;
|
|
12
13
|
readonly autoIdPrev: import("@angular/core").Signal<string | undefined>;
|