@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
|
@@ -3,8 +3,25 @@ import { SdBadge } from '@sdcorejs/angular/components/badge';
|
|
|
3
3
|
import type { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
4
4
|
import { NestedKeyOf, Operator } from '@sdcorejs/utils/models';
|
|
5
5
|
import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
|
|
6
|
-
export type SdTableColumn<T =
|
|
7
|
-
|
|
6
|
+
export type SdTableColumn<T = unknown> = SdTableColumnText<T> | SdTableColumnNumber<T> | SdTableColumnBool<T> | SdTableColumnDate<T> | SdTableColumnValues<T> | SdTableColumnLazyValues<T> | SdTableColumnChildren<T>;
|
|
7
|
+
/**
|
|
8
|
+
* Cột bảng dùng ở các API **không quan tâm kiểu hàng** — chúng chỉ đọc `field` / `type` / `hidden` /
|
|
9
|
+
* `filter` và không bao giờ chạm vào dữ liệu hàng (service filter, `SdConvertToPagingReq`, …).
|
|
10
|
+
*
|
|
11
|
+
* why: `SdTableColumn<T>` **bất biến (invariant)** theo `T`, vì `T` xuất hiện ở CẢ HAI chiều:
|
|
12
|
+
* - covariant — `field: NestedKeyOf<T>`;
|
|
13
|
+
* - contravariant — `transform` / `tooltip` / `click` / `useBadge` / `htmlTemplate` đều nhận `rowData: T`.
|
|
14
|
+
*
|
|
15
|
+
* Vì bất biến nên KHÔNG tồn tại siêu kiểu chung: `SdTableColumn<unknown>` hỏng ở chiều contravariant,
|
|
16
|
+
* `SdTableColumn<never>` hỏng ở chiều covariant (`field` co về `never`). Trước đây default generic là
|
|
17
|
+
* `any` nên mọi thứ gán được cho nhau — không phải vì kiểu đúng, mà vì `any` tắt kiểm tra hai chiều.
|
|
18
|
+
*
|
|
19
|
+
* Public default đã siết sang `unknown` (consumer viết `SdTableColumn<User>` sẽ được suy luận thật và
|
|
20
|
+
* báo lỗi khi dùng sai). Riêng vài vị trí tham số NỘI BỘ row-agnostic dưới đây vẫn cần một escape
|
|
21
|
+
* hatch: alias này khoanh vùng `any` vào đúng một chỗ có tài liệu, thay vì rải `any` khắp API công khai.
|
|
22
|
+
*/
|
|
23
|
+
export type SdTableColumnAnyRow = SdTableColumn<any>;
|
|
24
|
+
export type SdTableColumnTransformFunc<T = unknown> = (value: any, rowData: T, args?: {
|
|
8
25
|
isExport?: boolean;
|
|
9
26
|
}) => string | Promise<string>;
|
|
10
27
|
interface Badge {
|
|
@@ -13,8 +30,8 @@ interface Badge {
|
|
|
13
30
|
icon?: SdUnwrapSignal<SdBadge['icon']>;
|
|
14
31
|
title?: SdUnwrapSignal<SdBadge['title']>;
|
|
15
32
|
}
|
|
16
|
-
type UseBadgeFunc<T =
|
|
17
|
-
type UseBadgeValuesFunc<T =
|
|
33
|
+
type UseBadgeFunc<T = unknown> = (value: any, rowData: T) => Badge;
|
|
34
|
+
type UseBadgeValuesFunc<T = unknown, K = unknown> = (value: any, rowData: T, items: K[]) => Badge;
|
|
18
35
|
interface ColumnTitleOption {
|
|
19
36
|
title: string;
|
|
20
37
|
templateRef?: TemplateRef<any>;
|
|
@@ -27,7 +44,7 @@ interface ColumnCellOption {
|
|
|
27
44
|
type?: 'more' | 'tooltip';
|
|
28
45
|
};
|
|
29
46
|
}
|
|
30
|
-
interface SdTableColumnBase<T =
|
|
47
|
+
interface SdTableColumnBase<T = unknown> {
|
|
31
48
|
title: string | ColumnTitleOption;
|
|
32
49
|
cell?: ColumnCellOption;
|
|
33
50
|
width?: string;
|
|
@@ -58,12 +75,12 @@ interface SdTableColumnBase<T = any> {
|
|
|
58
75
|
description?: string;
|
|
59
76
|
};
|
|
60
77
|
}
|
|
61
|
-
interface SdTableColumnText<T =
|
|
78
|
+
interface SdTableColumnText<T = unknown> extends SdTableColumnBase<T> {
|
|
62
79
|
field: NestedKeyOf<T>;
|
|
63
80
|
type: 'string';
|
|
64
81
|
useBadge?: UseBadgeFunc<T>;
|
|
65
82
|
}
|
|
66
|
-
interface SdTableColumnNumber<T =
|
|
83
|
+
interface SdTableColumnNumber<T = unknown> extends SdTableColumnBase<T> {
|
|
67
84
|
field: NestedKeyOf<T>;
|
|
68
85
|
type: 'number';
|
|
69
86
|
useBadge?: UseBadgeFunc<T>;
|
|
@@ -71,7 +88,7 @@ interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
|
|
|
71
88
|
type?: 'split-number';
|
|
72
89
|
};
|
|
73
90
|
}
|
|
74
|
-
interface SdTableColumnBool<T =
|
|
91
|
+
interface SdTableColumnBool<T = unknown> extends SdTableColumnBase<T> {
|
|
75
92
|
field: NestedKeyOf<T>;
|
|
76
93
|
type: 'boolean';
|
|
77
94
|
useBadge?: UseBadgeFunc<T>;
|
|
@@ -80,7 +97,7 @@ interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
|
|
|
80
97
|
displayOnFalse?: string;
|
|
81
98
|
};
|
|
82
99
|
}
|
|
83
|
-
interface SdTableColumnDate<T =
|
|
100
|
+
interface SdTableColumnDate<T = unknown> extends SdTableColumnBase<T> {
|
|
84
101
|
field: NestedKeyOf<T>;
|
|
85
102
|
type: 'date' | 'datetime' | 'time';
|
|
86
103
|
useBadge?: UseBadgeFunc<T>;
|
|
@@ -88,7 +105,7 @@ interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
|
|
|
88
105
|
type?: 'daterange' | 'date' | 'split-date';
|
|
89
106
|
};
|
|
90
107
|
}
|
|
91
|
-
export interface SdTableColumnValues<T =
|
|
108
|
+
export interface SdTableColumnValues<T = unknown, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
92
109
|
field: NestedKeyOf<T>;
|
|
93
110
|
type: 'values';
|
|
94
111
|
useBadge?: UseBadgeValuesFunc<T, K>;
|
|
@@ -99,7 +116,7 @@ export interface SdTableColumnValues<T = any, K = Record<string, any>> extends S
|
|
|
99
116
|
selection?: 'MULTIPLE';
|
|
100
117
|
};
|
|
101
118
|
}
|
|
102
|
-
export interface SdTableColumnLazyValues<T =
|
|
119
|
+
export interface SdTableColumnLazyValues<T = unknown, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
103
120
|
field: NestedKeyOf<T>;
|
|
104
121
|
type: 'lazy-values';
|
|
105
122
|
useBadge?: UseBadgeFunc<T>;
|
|
@@ -111,8 +128,8 @@ export interface SdTableColumnLazyValues<T = any, K = Record<string, any>> exten
|
|
|
111
128
|
selection?: 'MULTIPLE';
|
|
112
129
|
};
|
|
113
130
|
}
|
|
114
|
-
export type SdTableColumnNormal<T =
|
|
115
|
-
export interface SdTableColumnChildren<T =
|
|
131
|
+
export type SdTableColumnNormal<T = unknown> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;
|
|
132
|
+
export interface SdTableColumnChildren<T = unknown> extends SdTableColumnBase<T> {
|
|
116
133
|
field: string;
|
|
117
134
|
type: 'children';
|
|
118
135
|
children: SdTableColumnNormal<T>[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SdBadge } from '@sdcorejs/angular/components/badge';
|
|
2
2
|
import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
|
|
3
|
+
import type { SdTableGroupDefContext } from '../directives/sd-table-group-def.directive';
|
|
3
4
|
export interface SdTableMetaSelector {
|
|
4
5
|
selectable?: boolean;
|
|
5
6
|
isSelected?: boolean;
|
|
@@ -41,6 +42,12 @@ export interface SdTableDisplay {
|
|
|
41
42
|
export interface SdTableMetaGroup<T = any> {
|
|
42
43
|
/** Children items thuộc group này (chỉ set trên group header row). */
|
|
43
44
|
items?: SdTableItem<T>[];
|
|
45
|
+
/**
|
|
46
|
+
* Raw data của children (`items.map(i => i.data)`).
|
|
47
|
+
* why: precompute 1 lần lúc SdGroupPipe dựng header — trước đây `groupContext()`
|
|
48
|
+
* map lại mảng này ở MỖI change-detection pass cho MỖI group row.
|
|
49
|
+
*/
|
|
50
|
+
data?: T[];
|
|
44
51
|
/** true = row này là synthetic group header (sinh bởi SdGroupPipe). */
|
|
45
52
|
isGroupHeader?: boolean;
|
|
46
53
|
/** Hash key của group (= Utilities.hash(values)). */
|
|
@@ -49,6 +56,20 @@ export interface SdTableMetaGroup<T = any> {
|
|
|
49
56
|
values?: Record<string, any>;
|
|
50
57
|
/** Trạng thái expand. Chỉ ý nghĩa khi `option.group.collapsible = true`. */
|
|
51
58
|
isExpanded?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* true nếu MỌI selectable child trong group đã được chọn.
|
|
61
|
+
* why: cache thay cho `isGroupAllSelected(item)` gọi trong template — hàm đó duyệt
|
|
62
|
+
* toàn bộ children mỗi CD pass. Cập nhật ở selection sync path (`#updateSelectedItems`).
|
|
63
|
+
*/
|
|
64
|
+
isSelected?: boolean;
|
|
65
|
+
/** true nếu chỉ MỘT PHẦN children được chọn (partial). Cache — xem `isSelected`. */
|
|
66
|
+
indeterminate?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Context ổn định truyền cho template `sdTableGroupDef`.
|
|
69
|
+
* why: giữ NGUYÊN reference qua các CD pass để `ngTemplateOutlet` không phải
|
|
70
|
+
* dựng lại embedded view; giá trị bên trong được mutate tại chỗ khi selection đổi.
|
|
71
|
+
*/
|
|
72
|
+
context?: SdTableGroupDefContext<T>;
|
|
52
73
|
}
|
|
53
74
|
export interface SdTableMeta<T> {
|
|
54
75
|
id: string;
|
|
@@ -57,9 +78,17 @@ export interface SdTableMeta<T> {
|
|
|
57
78
|
expand?: SdTableMetaExpand;
|
|
58
79
|
group?: SdTableMetaGroup<T>;
|
|
59
80
|
tree?: SdTableMetaTree<T>;
|
|
81
|
+
/**
|
|
82
|
+
* Style inline của cả row, resolve từ `option.style.rowCss` MỘT LẦN mỗi lần render.
|
|
83
|
+
* why: template bind `[ngStyle]` trực tiếp vào đây; gọi `rowCss(...)` trong binding
|
|
84
|
+
* trả object MỚI mỗi CD pass → KeyValueDiffer phải diff lại toàn bộ row mỗi pass.
|
|
85
|
+
*/
|
|
86
|
+
rowStyle?: Record<string, string> | null;
|
|
60
87
|
}
|
|
61
88
|
export interface SdTableItem<T = any> {
|
|
62
89
|
meta: SdTableMeta<T>;
|
|
63
90
|
data: T;
|
|
64
91
|
}
|
|
65
|
-
|
|
92
|
+
/** Resolve id cho một row data. Xem chú thích ở `rowIdByData` để biết thứ tự ưu tiên. */
|
|
93
|
+
export declare const resolveTableItemId: <T = any>(item: T, rowKey?: string) => string;
|
|
94
|
+
export declare const MapToSdTableItem: <T = any>(item: T, rowKey?: string) => SdTableItem<T>;
|
|
@@ -27,14 +27,15 @@ export interface SdTableOptionSelector<T = any> {
|
|
|
27
27
|
*
|
|
28
28
|
* - Default (false): selection bị mất khi data items được re-fetch (server-side) hoặc
|
|
29
29
|
* item references thay đổi. Action bar chỉ hiển thị số item selected ở page hiện tại.
|
|
30
|
-
* - Enabled (true): table giữ map nội bộ selectedItems theo `meta.id
|
|
30
|
+
* - Enabled (true): table giữ map nội bộ selectedItems theo `meta.id`.
|
|
31
31
|
* Sau mỗi #render, restore `isSelected` cho item nào id đã có trong map.
|
|
32
32
|
* `selectedTableItems()` trả về TOÀN BỘ item đã chọn xuyên trang (kể cả off-page),
|
|
33
33
|
* nên action bar + callback `click(items)` nhận đầy đủ data đang được chọn.
|
|
34
34
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* ⚠️ Matching dựa trên `meta.id`. Không khai báo `option.rowKey` thì id được sinh theo
|
|
36
|
+
* IDENTITY của object data — sống qua filter/sort/paging phía client, nhưng KHÔNG sống
|
|
37
|
+
* qua một lần fetch mới của server (object mới → id mới). Với `type: 'server'`, HÃY
|
|
38
|
+
* khai báo `option.rowKey` trỏ vào field định danh của dòng.
|
|
38
39
|
*/
|
|
39
40
|
preserveSelection?: boolean;
|
|
40
41
|
}
|
|
@@ -20,6 +20,18 @@ interface SdTableBaseOption<T = any> {
|
|
|
20
20
|
* ví dụ các option có hỗ trợ cache/config theo key.
|
|
21
21
|
*/
|
|
22
22
|
key?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Field định danh của MỘT DÒNG (hỗ trợ dot-notation, vd `'id'` hoặc `'user.id'`).
|
|
25
|
+
*
|
|
26
|
+
* Table dùng giá trị này làm `SdTableItem.meta.id` — khoá cho `trackBy` của mat-table,
|
|
27
|
+
* cho `preserveSelection`, cho trạng thái bung của tree và cho các `data-autoid` theo dòng.
|
|
28
|
+
*
|
|
29
|
+
* Không truyền thì table tự sinh id theo IDENTITY của object data (ổn định trong suốt
|
|
30
|
+
* vòng đời object, nhưng KHÔNG sống sót qua một lần fetch mới của server). Vì vậy hãy
|
|
31
|
+
* khai báo `rowKey` khi dùng `preserveSelection`, `tree` với `type: 'server'`, hoặc khi
|
|
32
|
+
* cần autoId theo dòng ổn định cho E2E.
|
|
33
|
+
*/
|
|
34
|
+
rowKey?: string;
|
|
23
35
|
/**
|
|
24
36
|
* Cấu hình hiển thị/phục hồi config của table.
|
|
25
37
|
* Xem thêm kiểu chi tiết tại `TableOptionConfig`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import { SdTableOption } from '../models/table-option.model';
|
|
3
3
|
import { SdTableItem } from '../models/table-item.model';
|
|
4
|
+
import { SdGroupHeaderHost } from '../services/table-selection/table-selection.util';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class SdGroupPipe implements PipeTransform {
|
|
6
7
|
/**
|
|
@@ -14,10 +15,13 @@ export declare class SdGroupPipe implements PipeTransform {
|
|
|
14
15
|
* expand/collapse qua các lần transform. Pipe đọc state từ Map; nếu key chưa tồn tại,
|
|
15
16
|
* dùng `!option.group.defaultCollapsed`. Pipe ghi state về Map cho lần read sau.
|
|
16
17
|
*
|
|
18
|
+
* `host` (optional, owned by component) — nhận danh sách header vừa sinh (để component
|
|
19
|
+
* sync selection state) và cung cấp callback toggle cho template context.
|
|
20
|
+
*
|
|
17
21
|
* @example
|
|
18
|
-
* `_items | sdGroup: _tableOption : groupExpandState`
|
|
22
|
+
* `_items | sdGroup: _tableOption : groupExpandState : groupHost`
|
|
19
23
|
*/
|
|
20
|
-
transform(items: SdTableItem[], gridOption: SdTableOption, expandState?: Map<string, boolean
|
|
24
|
+
transform(items: SdTableItem[], gridOption: SdTableOption, expandState?: Map<string, boolean>, host?: SdGroupHeaderHost): SdTableItem[];
|
|
21
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdGroupPipe, never>;
|
|
22
26
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdGroupPipe, "sdGroup", true>;
|
|
23
27
|
}
|
|
@@ -2,7 +2,7 @@ import { TemplateRef } from '@angular/core';
|
|
|
2
2
|
import type { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
3
3
|
import { NestedKeyOf, Operator, Order, PagingReq } from '@sdcorejs/utils/models';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
|
-
import { SdTableColumn } from '../../models/table-column.model';
|
|
5
|
+
import { SdTableColumn, SdTableColumnAnyRow } from '../../models/table-column.model';
|
|
6
6
|
export interface SdTableQuickFilter {
|
|
7
7
|
code: string;
|
|
8
8
|
columnFilter: Record<string, any>;
|
|
@@ -18,7 +18,7 @@ export interface TableFilterValue {
|
|
|
18
18
|
notReload?: boolean;
|
|
19
19
|
filtered?: boolean;
|
|
20
20
|
}
|
|
21
|
-
export interface SdTableFilterRequest<T =
|
|
21
|
+
export interface SdTableFilterRequest<T = unknown> {
|
|
22
22
|
columnOperator: Record<NestedKeyOf<T>, Operator>;
|
|
23
23
|
rawColumnFilter: Record<NestedKeyOf<T>, any>;
|
|
24
24
|
rawExternalFilter: Record<string, any>;
|
|
@@ -29,7 +29,7 @@ export interface SdTableFilterRequest<T = any> {
|
|
|
29
29
|
isExported?: boolean;
|
|
30
30
|
visibledColumns?: SdTableColumn[];
|
|
31
31
|
}
|
|
32
|
-
export interface SdTableOptionFilter<T =
|
|
32
|
+
export interface SdTableOptionFilter<T = unknown> {
|
|
33
33
|
/** Key định danh nếu muốn lưu cache */
|
|
34
34
|
key?: string;
|
|
35
35
|
/** Có bật cache giá trị filter hay không */
|
|
@@ -54,13 +54,13 @@ export interface SdTableOptionFilter<T = any> {
|
|
|
54
54
|
onClearFilter?: () => void;
|
|
55
55
|
}
|
|
56
56
|
export declare const SdConvertToPagingReq: (filterRequest: SdTableFilterRequest, args: {
|
|
57
|
-
columns?:
|
|
57
|
+
columns?: SdTableColumnAnyRow[];
|
|
58
58
|
externalFilters?: SdTableExternalFilter[];
|
|
59
59
|
fieldMapping?: Record<string, string>;
|
|
60
60
|
orders?: Order[];
|
|
61
61
|
}) => PagingReq;
|
|
62
|
-
export declare type SdTableExternalFilter<TData =
|
|
63
|
-
interface BaseFilter<TData =
|
|
62
|
+
export declare type SdTableExternalFilter<TData = unknown> = TextFilter<TData> | DateFilter<TData> | DateTimeFilter<TData> | DateRangeFilter<TData> | NumberFilter<TData> | ValuesFilter<TData> | LazyValuesFilter<TData> | BooleanFilter<TData> | CustomFilter<TData>;
|
|
63
|
+
interface BaseFilter<TData = unknown> {
|
|
64
64
|
field: string;
|
|
65
65
|
title: string;
|
|
66
66
|
defaultShowing?: boolean;
|
|
@@ -70,23 +70,23 @@ interface BaseFilter<TData = any> {
|
|
|
70
70
|
data?: TData;
|
|
71
71
|
onChange?: (value: any) => void;
|
|
72
72
|
}
|
|
73
|
-
interface TextFilter<TData =
|
|
73
|
+
interface TextFilter<TData = unknown> extends BaseFilter<TData> {
|
|
74
74
|
type: 'string';
|
|
75
75
|
default?: string;
|
|
76
76
|
}
|
|
77
|
-
interface DateFilter<TData =
|
|
77
|
+
interface DateFilter<TData = unknown> extends BaseFilter<TData> {
|
|
78
78
|
type: 'date';
|
|
79
79
|
default?: Date | string;
|
|
80
80
|
minDate?: string | number | Date;
|
|
81
81
|
maxDate?: string | number | Date;
|
|
82
82
|
}
|
|
83
|
-
interface DateTimeFilter<TData =
|
|
83
|
+
interface DateTimeFilter<TData = unknown> extends BaseFilter<TData> {
|
|
84
84
|
type: 'datetime';
|
|
85
85
|
default?: Date | string;
|
|
86
86
|
minDate?: string | number | Date;
|
|
87
87
|
maxDate?: string | number | Date;
|
|
88
88
|
}
|
|
89
|
-
interface DateRangeFilter<TData =
|
|
89
|
+
interface DateRangeFilter<TData = unknown> extends BaseFilter<TData> {
|
|
90
90
|
type: 'daterange';
|
|
91
91
|
enableTime?: boolean;
|
|
92
92
|
minDate?: string | number | Date;
|
|
@@ -96,11 +96,11 @@ interface DateRangeFilter<TData = any> extends BaseFilter<TData> {
|
|
|
96
96
|
to?: Date | string;
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
-
interface NumberFilter<TData =
|
|
99
|
+
interface NumberFilter<TData = unknown> extends BaseFilter<TData> {
|
|
100
100
|
type: 'number';
|
|
101
101
|
default?: number;
|
|
102
102
|
}
|
|
103
|
-
interface ValuesFilter<TData =
|
|
103
|
+
interface ValuesFilter<TData = unknown> extends BaseFilter<TData> {
|
|
104
104
|
type: 'values';
|
|
105
105
|
option: {
|
|
106
106
|
valueField: string;
|
|
@@ -110,7 +110,7 @@ interface ValuesFilter<TData = any> extends BaseFilter<TData> {
|
|
|
110
110
|
};
|
|
111
111
|
default?: string | string[];
|
|
112
112
|
}
|
|
113
|
-
interface LazyValuesFilter<TData =
|
|
113
|
+
interface LazyValuesFilter<TData = unknown> extends BaseFilter<TData> {
|
|
114
114
|
type: 'lazy-values';
|
|
115
115
|
option: {
|
|
116
116
|
valueField: string;
|
|
@@ -120,7 +120,7 @@ interface LazyValuesFilter<TData = any> extends BaseFilter<TData> {
|
|
|
120
120
|
};
|
|
121
121
|
default?: string | string[];
|
|
122
122
|
}
|
|
123
|
-
interface BooleanFilter<TData =
|
|
123
|
+
interface BooleanFilter<TData = unknown> extends BaseFilter<TData> {
|
|
124
124
|
type: 'boolean';
|
|
125
125
|
option?: {
|
|
126
126
|
displayOnTrue?: string;
|
|
@@ -128,7 +128,7 @@ interface BooleanFilter<TData = any> extends BaseFilter<TData> {
|
|
|
128
128
|
};
|
|
129
129
|
default?: boolean;
|
|
130
130
|
}
|
|
131
|
-
interface CustomFilter<TData =
|
|
131
|
+
interface CustomFilter<TData = unknown> extends BaseFilter<TData> {
|
|
132
132
|
type: 'custom';
|
|
133
133
|
filterDef?: TemplateRef<any>;
|
|
134
134
|
default?: any;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Operator } from '@sdcorejs/utils/models';
|
|
2
2
|
import { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';
|
|
3
|
-
import {
|
|
3
|
+
import { SdTableColumnAnyRow } from '../../models/table-column.model';
|
|
4
4
|
import { SdTableExternalFilter, SdTableOptionFilter, TableFilterRegister } from './table-filter.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class SdTableFilterService {
|
|
@@ -10,7 +10,7 @@ export declare class SdTableFilterService {
|
|
|
10
10
|
constructor(...args: unknown[]);
|
|
11
11
|
register: (filter: SdTableOptionFilter | undefined, args: {
|
|
12
12
|
id: string;
|
|
13
|
-
columns:
|
|
13
|
+
columns: SdTableColumnAnyRow[] | undefined;
|
|
14
14
|
externalFilters: SdTableExternalFilter[] | undefined;
|
|
15
15
|
filterDefs: SdTableFilterDefDirective[] | undefined;
|
|
16
16
|
columnOperator?: Record<string, Operator>;
|
|
@@ -10,7 +10,7 @@ export declare class TableFormatService {
|
|
|
10
10
|
/**
|
|
11
11
|
* Chuyển đổi dữ liệu thô thành SdTableItem kèm các thiết lập hiển thị (Display Meta)
|
|
12
12
|
*/
|
|
13
|
-
format<T =
|
|
13
|
+
format<T = unknown>(rawItems: T[], columns: SdTableColumn<T>[], cacheValues: Record<string, any[]>, cacheObjValues: Record<string, Record<string, string>>, rowKey?: string): Promise<SdTableItem<T>[]>;
|
|
14
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableFormatService, never>;
|
|
15
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<TableFormatService>;
|
|
16
16
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SdTableItem } from '../../models/table-item.model';
|
|
2
|
+
import { SdTableOptionSelector } from '../../models/table-option-selector.model';
|
|
3
|
+
/**
|
|
4
|
+
* Thu thập danh sách action key khả dụng cho MỘT row.
|
|
5
|
+
*
|
|
6
|
+
* why: ghi thẳng vào 2 mảng do caller cấp (in-place) thay vì `return` mảng mới —
|
|
7
|
+
* hàm này chạy trong đường render (mỗi CD pass, mỗi row) nên không được cấp phát
|
|
8
|
+
* mảng mới mỗi lần gọi. Caller reset độ dài mảng trước khi gọi.
|
|
9
|
+
*
|
|
10
|
+
* Key = `Utilities.hash(action)`, khớp với `ActionFilterPipe` để action bar lọc
|
|
11
|
+
* đúng action chung của mọi item đang chọn.
|
|
12
|
+
*/
|
|
13
|
+
export declare const collectRowActionKeys: <T>(rowData: SdTableItem<T>, selection: SdTableOptionSelector | undefined, actions: string[], groupedActions: string[]) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Checkbox "chọn tất cả" ở header có hiển thị hay không.
|
|
16
|
+
*
|
|
17
|
+
* why: trước đây là pure pipe `async` với `await setTimeout(500)` bên trong. Sleep đó
|
|
18
|
+
* che một vấn đề THỨ TỰ change-detection: pipe đọc `meta.selector.actions` — mảng do
|
|
19
|
+
* `SdSelectionVisiblePipe` ghi ở cell BODY, mà CDK render header TRƯỚC body, nên ở pass
|
|
20
|
+
* đầu mảng luôn rỗng. Hệ quả: checkbox hiện trễ 500ms và mỗi lần re-eval lại đẻ thêm
|
|
21
|
+
* một timer không ai dọn. Ở đây tự tính key action từ `selection` nên không phụ thuộc
|
|
22
|
+
* pipe nào chạy trước → quyết định được ngay trong pass hiện tại, không cần timer.
|
|
23
|
+
*/
|
|
24
|
+
export declare const resolveSelectAllVisible: <T>(items: SdTableItem<T>[], selection: SdTableOptionSelector | undefined) => boolean;
|
|
@@ -1,8 +1,39 @@
|
|
|
1
1
|
import { SdTableItem } from '../../models/table-item.model';
|
|
2
2
|
import { SdTableOptionTree } from '../../models/table-option-tree.model';
|
|
3
|
+
import type { SdTableGroupDefContext } from '../../directives/sd-table-group-def.directive';
|
|
3
4
|
export declare const getSelectionRows: <T>(roots: SdTableItem<T>[], treeOpt?: SdTableOptionTree<T>) => SdTableItem<T>[];
|
|
4
5
|
export declare const getSelectedRowData: <T>(rows: SdTableItem<T>[]) => T[];
|
|
5
6
|
export declare const applyDefaultSelected: <T>(roots: SdTableItem<T>[], treeOpt: SdTableOptionTree<T> | undefined, defaultSelected?: (row: T) => boolean) => void;
|
|
6
7
|
export declare const resolveSelectAllState: <T>(visibleRows: SdTableItem<T>[]) => boolean;
|
|
7
8
|
export declare const restorePreservedSelection: <T>(visibleRows: SdTableItem<T>[], preservedSelectedMap: Map<string, SdTableItem<T>>) => void;
|
|
8
9
|
export declare const syncPreservedSelection: <T>(visibleRows: SdTableItem<T>[], preservedSelectedMap: Map<string, SdTableItem<T>>) => SdTableItem<T>[];
|
|
10
|
+
/**
|
|
11
|
+
* Cầu nối giữa `SdGroupPipe` (nơi group header được sinh ra) và `SdTable`.
|
|
12
|
+
*
|
|
13
|
+
* why: pipe dựng header nhưng KHÔNG biết method của component, còn component thì không
|
|
14
|
+
* giữ mảng output của pipe. Host là một object DUY NHẤT, ổn định do component sở hữu:
|
|
15
|
+
* pipe đổ header vào `headers` để component sync lại selection state sau này, và mượn
|
|
16
|
+
* `toggleExpand`/`toggleSelect` để gắn vào template context.
|
|
17
|
+
*/
|
|
18
|
+
export interface SdGroupHeaderHost<T = any> {
|
|
19
|
+
/** Sink các group header của lần transform gần nhất. Pipe clear + fill lại mỗi lần. */
|
|
20
|
+
headers: SdTableItem<T>[];
|
|
21
|
+
toggleExpand: (header: SdTableItem<T>) => void;
|
|
22
|
+
toggleSelect: (header: SdTableItem<T>) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Tính lại `isSelected` / `indeterminate` của một group header và ĐỒNG BỘ sang context.
|
|
26
|
+
*
|
|
27
|
+
* why: template trước đây bind `[checked]="isGroupAllSelected(item)"` +
|
|
28
|
+
* `[indeterminate]="isGroupIndeterminate(item)"` — mỗi binding duyệt toàn bộ children,
|
|
29
|
+
* mỗi CD pass, cho mỗi group row (và `groupContext()` duyệt thêm lần nữa). Giờ tính MỘT
|
|
30
|
+
* lần ở selection sync path rồi cache lên meta; template chỉ đọc property.
|
|
31
|
+
* Một vòng duyệt duy nhất thay cho cặp `every` + `some`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const syncGroupSelectionMeta: <T>(header: SdTableItem<T>) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Dựng context truyền cho template `sdTableGroupDef`.
|
|
36
|
+
* Chỉ gọi MỘT lần cho mỗi header (lúc pipe sinh header); sau đó reference được giữ
|
|
37
|
+
* nguyên và giá trị bên trong cập nhật qua `syncGroupSelectionMeta`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const buildGroupHeaderContext: <T>(header: SdTableItem<T>, host?: SdGroupHeaderHost<T>) => SdTableGroupDefContext<T>;
|
|
@@ -42,8 +42,9 @@ export declare const subtreeMatches: <T>(data: T, predicate: (data: T) => boolea
|
|
|
42
42
|
* Lọc mảng children: chỉ giữ child có subtree khớp `predicate`.
|
|
43
43
|
*
|
|
44
44
|
* Trả về MẢNG MỚI nhưng GIỮ NGUYÊN object reference của từng child (không clone)
|
|
45
|
-
* — nhờ vậy `meta.id` (
|
|
46
|
-
* bị mất khi từ khoá search đổi. Đây là
|
|
45
|
+
* — nhờ vậy `meta.id` (bám theo identity của object data, hoặc theo `option.rowKey`)
|
|
46
|
+
* ổn định, selection / trạng thái bung không bị mất khi từ khoá search đổi. Đây là
|
|
47
|
+
* bước "prune" của tính năng search-con.
|
|
47
48
|
*/
|
|
48
49
|
export declare const filterMatchingChildren: <T>(children: T[], predicate: (data: T) => boolean, option?: SdTableOptionTree) => T[];
|
|
49
50
|
export declare const getVisibleChildrenData: <T>(data: T, option: SdTableOptionTree<T>, predicate?: (data: T) => boolean) => T[];
|
|
@@ -9,7 +9,9 @@ import { SdTableGroupDefDirective, SdTableGroupDefContext } from './directives/s
|
|
|
9
9
|
import { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';
|
|
10
10
|
import { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';
|
|
11
11
|
import { SdTableTitleDefDirective } from './directives/sd-table-title-def.directive';
|
|
12
|
+
import { SdTableCommandHeaderDefDirective } from './directives/sd-table-command-header-def.directive';
|
|
12
13
|
import { SdTableColumn } from './models/table-column.model';
|
|
14
|
+
import { SdTableCommand } from './models/table-command.model';
|
|
13
15
|
import { SdTableOption } from './models/table-option.model';
|
|
14
16
|
import { SdTableFilterRequest, TableFilterRegister, TableFilterValue } from './services/table-filter/table-filter.model';
|
|
15
17
|
import { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';
|
|
@@ -22,8 +24,9 @@ import { SdPopupExport } from './components/popup-export/popup-export.component'
|
|
|
22
24
|
import { ISdTableConfiguration } from './configurations';
|
|
23
25
|
import { SdTableItem } from './models/table-item.model';
|
|
24
26
|
import { ConfiguredTableResult } from './models/table-option-config.model';
|
|
27
|
+
import { SdGroupHeaderHost } from './services/table-selection/table-selection.util';
|
|
25
28
|
import * as i0 from "@angular/core";
|
|
26
|
-
export declare class
|
|
29
|
+
export declare class SdTablePaginatorIntl extends MatPaginatorIntl {
|
|
27
30
|
#private;
|
|
28
31
|
firstPageLabel: string;
|
|
29
32
|
lastPageLabel: string;
|
|
@@ -31,8 +34,8 @@ export declare class MatPaginatorIntlCro extends MatPaginatorIntl {
|
|
|
31
34
|
nextPageLabel: string;
|
|
32
35
|
previousPageLabel: string;
|
|
33
36
|
getRangeLabel: (page: number, pageSize: number, length: number) => string;
|
|
34
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
35
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdTablePaginatorIntl, never>;
|
|
38
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdTablePaginatorIntl>;
|
|
36
39
|
}
|
|
37
40
|
export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
38
41
|
#private;
|
|
@@ -51,6 +54,8 @@ export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
|
51
54
|
sdSubInformation: import("@angular/core").Signal<SdTableExpandDefDirective<any> | undefined>;
|
|
52
55
|
sdGroupDef: import("@angular/core").Signal<SdTableGroupDefDirective<any> | undefined>;
|
|
53
56
|
sdCellDefs: import("@angular/core").Signal<readonly SdTableCellDefDirective<any>[]>;
|
|
57
|
+
/** Nội dung tuỳ chọn cho ô header của cột command (mặc định ô này để trống). */
|
|
58
|
+
sdCommandHeaderDef: import("@angular/core").Signal<SdTableCommandHeaderDefDirective | undefined>;
|
|
54
59
|
sdFooterDefs: import("@angular/core").Signal<readonly SdMaterialFooterDefDirective<any>[]>;
|
|
55
60
|
sdFilterDefs: import("@angular/core").Signal<readonly SdTableFilterDefDirective[]>;
|
|
56
61
|
sdTitleDefs: import("@angular/core").Signal<readonly SdTableTitleDefDirective<any>[]>;
|
|
@@ -65,6 +70,25 @@ export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
|
65
70
|
total: import("@angular/core").WritableSignal<number | undefined>;
|
|
66
71
|
loading: import("@angular/core").WritableSignal<boolean>;
|
|
67
72
|
isSelectAll: import("@angular/core").WritableSignal<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Checkbox "chọn tất cả" ở header có hiển thị không.
|
|
75
|
+
*
|
|
76
|
+
* why: trước đây là `_items | selectionVisibleSelectAll: … | async` — pipe `async`
|
|
77
|
+
* với `await setTimeout(500)` bên trong. Sleep đó CHE một vấn đề thứ tự
|
|
78
|
+
* change-detection: pipe đọc `meta.selector.actions`, mảng chỉ được `SdSelectionVisiblePipe`
|
|
79
|
+
* ghi khi cell BODY render, mà CDK dựng header TRƯỚC body → pass đầu luôn đọc ra rỗng.
|
|
80
|
+
* Hệ quả: checkbox hiện trễ 500ms, và vì `transform` là `async` nên MỖI lần re-eval lại
|
|
81
|
+
* trả một Promise mới + đặt thêm một timer không ai dọn. Computed tự tính từ
|
|
82
|
+
* `items()` + `selector` nên không phụ thuộc pipe nào chạy trước → bỏ hẳn timer.
|
|
83
|
+
*/
|
|
84
|
+
visibleSelectAll: import("@angular/core").Signal<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Danh sách command của row, memoize theo option.
|
|
87
|
+
* why: template cũ bind `_tableOption.command?.commands || _tableOption.commands || []`
|
|
88
|
+
* — nhánh `[]` cấp phát mảng MỚI mỗi CD pass và đẩy vào `input()` của `desktop-command`,
|
|
89
|
+
* làm child OnPush bị đánh dấu dirty mỗi pass cho từng dòng.
|
|
90
|
+
*/
|
|
91
|
+
rowCommands: import("@angular/core").Signal<SdTableCommand<T>[]>;
|
|
68
92
|
isFiltered: import("@angular/core").WritableSignal<boolean>;
|
|
69
93
|
requireFiltered: import("@angular/core").WritableSignal<boolean>;
|
|
70
94
|
filterRegister: TableFilterRegister;
|
|
@@ -98,6 +122,14 @@ export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
|
98
122
|
/** Toggle select-all cho 1 group: set isSelected cho mọi selectable child, sync state. */
|
|
99
123
|
onSelectGroup: (header: SdTableItem<T>, checked: boolean) => void;
|
|
100
124
|
groupExpandState: Map<string, boolean>;
|
|
125
|
+
/**
|
|
126
|
+
* Cầu nối tới SdGroupPipe (arg 4) — object DUY NHẤT, tạo một lần.
|
|
127
|
+
* why: pipe sinh group header nhưng component mới là nơi biết selection đổi. Pipe đổ
|
|
128
|
+
* header vào `headers` để `#syncGroupSelectionState` cập nhật `meta.group.isSelected` /
|
|
129
|
+
* `indeterminate`, thay cho việc template gọi `isGroupAllSelected()`/`isGroupIndeterminate()`
|
|
130
|
+
* (duyệt toàn bộ children) ở MỖI CD pass.
|
|
131
|
+
*/
|
|
132
|
+
readonly groupHost: SdGroupHeaderHost<T>;
|
|
101
133
|
/** Toggle expand/collapse cho 1 group (chỉ ý nghĩa khi option.group.collapsible). */
|
|
102
134
|
toggleGroupExpand: (header: SdTableItem<T>) => void;
|
|
103
135
|
/**
|
|
@@ -112,7 +144,21 @@ export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
|
112
144
|
* Span TOÀN BỘ width data row vì group row chỉ có 1 cell.
|
|
113
145
|
*/
|
|
114
146
|
sdGroupColspan: import("@angular/core").Signal<number>;
|
|
115
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Context truyền vào template `sdTableGroupDef`.
|
|
149
|
+
*
|
|
150
|
+
* why: bản cũ dựng object MỚI (kèm `items.map(i => i.data)` mới và 2 lần duyệt children
|
|
151
|
+
* qua `isGroupAllSelected`/`isGroupIndeterminate`) ở MỖI CD pass, cho MỖI group row —
|
|
152
|
+
* `ngTemplateOutlet` thấy context đổi reference nên phải dựng lại embedded view. Giờ
|
|
153
|
+
* context được `SdGroupPipe` precompute và cache trên `meta.group`; ở đây chỉ đọc ra
|
|
154
|
+
* (fallback `??=` cho header không do pipe sinh) nên reference ổn định qua các pass.
|
|
155
|
+
*
|
|
156
|
+
* why: 3 field selection/expand thì phải làm TƯƠI mỗi lần đọc — `SdGroupPipe` dựng context
|
|
157
|
+
* lúc header được sinh ra, thời điểm đó `selector.selectable` của children vẫn còn là mặc
|
|
158
|
+
* định `false` (chỉ `SdSelectionVisiblePipe` ở cell BODY mới đặt đúng, mà CDK dựng header
|
|
159
|
+
* trước body). Cache lại giá trị tính ở thời điểm đó là khoá cứng `isSelected = false`.
|
|
160
|
+
* Mutate TẠI CHỖ để `ngTemplateOutlet` vẫn thấy cùng một reference và không dựng lại view.
|
|
161
|
+
*/
|
|
116
162
|
groupContext: (header: SdTableItem<T>) => SdTableGroupDefContext<T>;
|
|
117
163
|
rowStyle: (row: SdTableItem<T>, index?: number) => Record<string, string> | null;
|
|
118
164
|
clearFilter: () => void;
|
|
@@ -128,5 +174,5 @@ export declare class SdTable<T = unknown> implements AfterViewInit, OnDestroy {
|
|
|
128
174
|
reorderSortPredicate: (index: number, drag: CdkDrag<SdTableItem<T>>, drop: CdkDropList<SdTableItem<T>[]>) => boolean;
|
|
129
175
|
onReorderDrop(event: CdkDragDrop<SdTableItem<T>[]>): void;
|
|
130
176
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTable<any>, never>;
|
|
131
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdTable<any>, "sd-table", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "option": { "alias": "option"; "required": true; "isSignal": true; }; }, {}, ["sdSubInformation", "sdGroupDef", "sdCellDefs", "sdFooterDefs", "sdFilterDefs", "sdTitleDefs"], ["[sdTableTop]"], true, never>;
|
|
177
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdTable<any>, "sd-table", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "option": { "alias": "option"; "required": true; "isSignal": true; }; }, {}, ["sdSubInformation", "sdGroupDef", "sdCellDefs", "sdCommandHeaderDef", "sdFooterDefs", "sdFilterDefs", "sdTitleDefs"], ["[sdTableTop]"], true, never>;
|
|
132
178
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TemplateRef } from '@angular/core';
|
|
2
2
|
import { SdTreeItemContext } from './tree.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class SdTreeItemDefDirective<T =
|
|
4
|
+
export declare class SdTreeItemDefDirective<T = unknown> {
|
|
5
5
|
static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T>;
|
|
6
6
|
readonly templateRef: TemplateRef<SdTreeItemContext<T>>;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTreeItemDefDirective<any>, never>;
|
|
@@ -11,7 +11,7 @@ export interface SdTreeNodeAutoIds {
|
|
|
11
11
|
label?: string;
|
|
12
12
|
command?: string;
|
|
13
13
|
}
|
|
14
|
-
export interface SdTreeViewCommand<T =
|
|
14
|
+
export interface SdTreeViewCommand<T = unknown> {
|
|
15
15
|
key: string;
|
|
16
16
|
command: SdTreeCommand<T>;
|
|
17
17
|
title: string;
|
|
@@ -22,7 +22,7 @@ export interface SdTreeViewCommand<T = any> {
|
|
|
22
22
|
autoId?: string;
|
|
23
23
|
defaultColor: boolean;
|
|
24
24
|
}
|
|
25
|
-
export interface SdTreeViewNode<T =
|
|
25
|
+
export interface SdTreeViewNode<T = unknown> extends SdTreeNode<T> {
|
|
26
26
|
icon?: string;
|
|
27
27
|
selected: boolean;
|
|
28
28
|
selectionDisabled: boolean;
|
|
@@ -35,11 +35,11 @@ export interface SdTreeViewNode<T = any> extends SdTreeNode<T> {
|
|
|
35
35
|
context: SdTreeItemContext<T>;
|
|
36
36
|
tabIndex: 0 | -1;
|
|
37
37
|
}
|
|
38
|
-
export interface SdTreeSelectionActionView<T =
|
|
38
|
+
export interface SdTreeSelectionActionView<T = unknown> {
|
|
39
39
|
action: SdTreeSelectionAction<T>;
|
|
40
40
|
autoId: string | null;
|
|
41
41
|
}
|
|
42
|
-
export declare class SdTree<T =
|
|
42
|
+
export declare class SdTree<T = unknown> {
|
|
43
43
|
#private;
|
|
44
44
|
readonly autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
|
|
45
45
|
readonly option: import("@angular/core").InputSignal<SdTreeComponentOption<T> | undefined>;
|
|
@@ -71,6 +71,12 @@ export declare class SdTree<T = any> {
|
|
|
71
71
|
readonly activeNodeId: import("@angular/core").WritableSignal<string | null>;
|
|
72
72
|
readonly normalizedFilterText: import("@angular/core").Signal<string>;
|
|
73
73
|
readonly selectionVisible: import("@angular/core").Signal<boolean>;
|
|
74
|
+
/**
|
|
75
|
+
* why: `selector.single` giới hạn đúng một node, nên ô chọn phải là radio — checkbox là ký hiệu
|
|
76
|
+
* của "chọn nhiều" và người dùng chỉ phát hiện ra giới hạn sau khi tick node thứ hai và thấy node
|
|
77
|
+
* đầu tự bỏ chọn. `<sd-tree-select>` không multiple sẽ tự rơi vào nhánh này.
|
|
78
|
+
*/
|
|
79
|
+
readonly selectionSingle: import("@angular/core").Signal<boolean>;
|
|
74
80
|
readonly selectedIdSet: import("@angular/core").Signal<Set<string>>;
|
|
75
81
|
readonly rootNodes: import("@angular/core").Signal<SdTreeNode<T>[]>;
|
|
76
82
|
readonly visibleNodes: import("@angular/core").Signal<SdTreeNode<T>[]>;
|
|
@@ -80,6 +86,12 @@ export declare class SdTree<T = any> {
|
|
|
80
86
|
readonly visibleSelectionActions: import("@angular/core").Signal<SdTreeSelectionAction<T>[]>;
|
|
81
87
|
readonly selectionActionViews: import("@angular/core").Signal<SdTreeSelectionActionView<T>[]>;
|
|
82
88
|
readonly clearSelectionAutoId: import("@angular/core").Signal<string | null>;
|
|
89
|
+
/**
|
|
90
|
+
* why: chọn node mà selector KHÔNG khai action nào thì thanh quick-action chỉ còn bộ đếm + nút ✕.
|
|
91
|
+
* Nó nổi đè lên cây để nói lại đúng thứ checkbox đã nói. Đó cũng là lý do `<sd-tree-select>` —
|
|
92
|
+
* vốn chỉ chọn rồi bấm "Áp dụng" ở footer modal, không có action nào — không còn thấy thanh này.
|
|
93
|
+
*/
|
|
94
|
+
readonly selectionQuickActionOpened: import("@angular/core").Signal<boolean>;
|
|
83
95
|
/**
|
|
84
96
|
* Template-facing row model. Expensive/variable values are resolved once per
|
|
85
97
|
* signal recomputation so the HTML does not call helper methods for every CD pass.
|