@sdcorejs/angular 19.1.5 → 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 +12 -4
- 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/preview/src/preview-pdf/pdf-worker-inline.generated.d.ts +7 -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-export/table-export.service.d.ts +3 -1
- 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 +52 -6
- 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 +58 -19
- 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 +556 -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 +233 -63
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +208 -41
- 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 +279 -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 +510 -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 +441 -135
- 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-input.util.d.ts +18 -0
- package/forms/date/src/date.component.d.ts +21 -3
- 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 +4 -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-strict-date-adapter.d.ts +26 -0
- 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 +94 -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/index.d.ts +1 -0
- 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/layout/utils/index.d.ts +1 -0
- package/modules/layout/utils/tab-name.util.d.ts +8 -0
- 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 +48 -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
|
@@ -11,17 +11,21 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
* immediately before Search so the user sees one filter-cluster on the right.
|
|
12
12
|
*/
|
|
13
13
|
export declare class SdQueryActionsBar {
|
|
14
|
+
#private;
|
|
14
15
|
readonly showLogicToggle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
15
16
|
readonly logic: import("@angular/core").ModelSignal<SdQueryLogic>;
|
|
16
17
|
readonly filtersCount: import("@angular/core").InputSignal<number>;
|
|
17
18
|
readonly showSavedFilters: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
18
19
|
readonly savedFiltersKey: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
-
readonly query: import("@angular/core").InputSignal<SdQuery<
|
|
20
|
-
readonly applyFilter: import("@angular/core").OutputEmitterRef<SdSavedFilter<
|
|
20
|
+
readonly query: import("@angular/core").InputSignal<SdQuery<unknown>>;
|
|
21
|
+
readonly applyFilter: import("@angular/core").OutputEmitterRef<SdSavedFilter<unknown>>;
|
|
21
22
|
readonly showClearAll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
22
23
|
readonly clear: import("@angular/core").OutputEmitterRef<void>;
|
|
23
24
|
readonly canSearch: import("@angular/core").InputSignal<boolean>;
|
|
24
25
|
readonly search: import("@angular/core").OutputEmitterRef<void>;
|
|
26
|
+
readonly logicGroupLabel: import("@angular/core").Signal<string>;
|
|
27
|
+
readonly clearAllLabel: import("@angular/core").Signal<string>;
|
|
28
|
+
readonly searchLabel: import("@angular/core").Signal<string>;
|
|
25
29
|
setLogic(value: SdQueryLogic): void;
|
|
26
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdQueryActionsBar, never>;
|
|
27
31
|
static ɵcmp: i0.ɵɵComponentDeclaration<SdQueryActionsBar, "sd-query-actions-bar", never, { "showLogicToggle": { "alias": "showLogicToggle"; "required": false; "isSignal": true; }; "logic": { "alias": "logic"; "required": false; "isSignal": true; }; "filtersCount": { "alias": "filtersCount"; "required": false; "isSignal": true; }; "showSavedFilters": { "alias": "showSavedFilters"; "required": false; "isSignal": true; }; "savedFiltersKey": { "alias": "savedFiltersKey"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "showClearAll": { "alias": "showClearAll"; "required": false; "isSignal": true; }; "canSearch": { "alias": "canSearch"; "required": false; "isSignal": true; }; }, { "logic": "logicChange"; "applyFilter": "applyFilter"; "clear": "clear"; "search": "search"; }, never, never, true, never>;
|
|
@@ -17,8 +17,11 @@ type Density = 'compact' | 'comfortable';
|
|
|
17
17
|
* operator step, disabled badge in value step) + the per-type picker + × cancel.
|
|
18
18
|
*/
|
|
19
19
|
export declare class SdQueryBuildChip {
|
|
20
|
+
#private;
|
|
21
|
+
readonly booleanTrueLabel: import("@angular/core").Signal<string>;
|
|
22
|
+
readonly booleanFalseLabel: import("@angular/core").Signal<string>;
|
|
20
23
|
/** Current build state — drives every visual branch. */
|
|
21
|
-
readonly building: import("@angular/core").InputSignal<BuildingChip<
|
|
24
|
+
readonly building: import("@angular/core").InputSignal<BuildingChip<unknown>>;
|
|
22
25
|
/** Density preset — forwarded to the seamless chip + sizes the .c-token row. */
|
|
23
26
|
readonly density: import("@angular/core").InputSignal<Density>;
|
|
24
27
|
/** Operator set offered in the operator-step menu (parent's `allowedOperatorsFor(field)`). */
|
|
@@ -18,6 +18,14 @@ import * as i0 from "@angular/core";
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class SdQueryChipPopover {
|
|
20
20
|
#private;
|
|
21
|
+
readonly swapFieldTooltip: import("@angular/core").Signal<string>;
|
|
22
|
+
readonly fromPlaceholder: import("@angular/core").Signal<string>;
|
|
23
|
+
readonly toPlaceholder: import("@angular/core").Signal<string>;
|
|
24
|
+
readonly booleanTrueLabel: import("@angular/core").Signal<string>;
|
|
25
|
+
readonly booleanFalseLabel: import("@angular/core").Signal<string>;
|
|
26
|
+
readonly selectValuePlaceholder: import("@angular/core").Signal<string>;
|
|
27
|
+
readonly enterValuePlaceholder: import("@angular/core").Signal<string>;
|
|
28
|
+
readonly loadingValuesLabel: import("@angular/core").Signal<string>;
|
|
21
29
|
/** Resolved field of the currently editing chip — parent passes from `fieldByKey()`. */
|
|
22
30
|
readonly field: import("@angular/core").InputSignal<SdQueryField | undefined>;
|
|
23
31
|
/** The chip's current Filter — used by `seed()` for initial staging values. */
|
|
@@ -14,6 +14,8 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
* chosen field through `(pick)`.
|
|
15
15
|
*/
|
|
16
16
|
export declare class SdQueryFieldPicker {
|
|
17
|
+
#private;
|
|
18
|
+
readonly emptyLabel: import("@angular/core").Signal<string>;
|
|
17
19
|
/** Field list shown in the menu (caller-supplied; rendered in input order). */
|
|
18
20
|
readonly fields: import("@angular/core").InputSignal<SdQueryField[]>;
|
|
19
21
|
/** Single key disabled with a trailing check — used in the chip-popover "Đổi field" flow. */
|
|
@@ -20,6 +20,8 @@ type Density = 'compact' | 'comfortable';
|
|
|
20
20
|
*/
|
|
21
21
|
export declare class SdQueryInlineChip {
|
|
22
22
|
#private;
|
|
23
|
+
readonly booleanTrueLabel: import("@angular/core").Signal<string>;
|
|
24
|
+
readonly booleanFalseLabel: import("@angular/core").Signal<string>;
|
|
23
25
|
/** Resolved field — parent passes it (no lookup needed inside). */
|
|
24
26
|
readonly field: import("@angular/core").InputSignal<SdQueryField>;
|
|
25
27
|
/** The chip's Filter — used for `data` + `operator`. */
|
package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts
CHANGED
|
@@ -43,9 +43,9 @@ export declare class SdQueryInlineValueChip {
|
|
|
43
43
|
readonly isBetween: import("@angular/core").Signal<boolean>;
|
|
44
44
|
readonly isNoData: import("@angular/core").Signal<boolean>;
|
|
45
45
|
readonly icon: import("@angular/core").Signal<string>;
|
|
46
|
-
readonly ph: import("@angular/core").Signal<
|
|
47
|
-
readonly phFrom: import("@angular/core").Signal<
|
|
48
|
-
readonly phTo: import("@angular/core").Signal<
|
|
46
|
+
readonly ph: import("@angular/core").Signal<string>;
|
|
47
|
+
readonly phFrom: import("@angular/core").Signal<string>;
|
|
48
|
+
readonly phTo: import("@angular/core").Signal<string>;
|
|
49
49
|
readonly hasValue: import("@angular/core").Signal<boolean>;
|
|
50
50
|
readonly state: import("@angular/core").Signal<ChipState>;
|
|
51
51
|
constructor();
|
package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts
CHANGED
|
@@ -17,19 +17,24 @@ import * as i0 from "@angular/core";
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class SdQuerySavedFiltersMenu {
|
|
19
19
|
#private;
|
|
20
|
+
readonly tooltipLabel: import("@angular/core").Signal<string>;
|
|
21
|
+
readonly tooltipDisabledLabel: import("@angular/core").Signal<string>;
|
|
22
|
+
readonly deleteLabel: import("@angular/core").Signal<string>;
|
|
23
|
+
readonly emptyLabel: import("@angular/core").Signal<string>;
|
|
24
|
+
readonly saveLabel: import("@angular/core").Signal<string>;
|
|
20
25
|
/** Namespace key used to scope localStorage. `undefined` → menu disabled. */
|
|
21
26
|
readonly key: import("@angular/core").InputSignal<string | undefined>;
|
|
22
27
|
/** Current query the host wants to snapshot when the user clicks "Save current". */
|
|
23
|
-
readonly query: import("@angular/core").InputSignal<SdQuery<
|
|
28
|
+
readonly query: import("@angular/core").InputSignal<SdQuery<unknown>>;
|
|
24
29
|
/** Fired when the user picks a saved filter from the list. */
|
|
25
|
-
readonly apply: import("@angular/core").OutputEmitterRef<SdSavedFilter<
|
|
26
|
-
readonly savedFilters: import("@angular/core").WritableSignal<SdSavedFilter<
|
|
30
|
+
readonly apply: import("@angular/core").OutputEmitterRef<SdSavedFilter<unknown>>;
|
|
31
|
+
readonly savedFilters: import("@angular/core").WritableSignal<SdSavedFilter<unknown>[]>;
|
|
27
32
|
/**
|
|
28
33
|
* Prompt for a name and append a snapshot of the current query as a new
|
|
29
34
|
* saved filter. Public so the parent toolbar can wire its external "save"
|
|
30
35
|
* button to this method without re-implementing persistence.
|
|
31
36
|
*/
|
|
32
|
-
promptSave(): void
|
|
37
|
+
promptSave(): Promise<void>;
|
|
33
38
|
/** Apply a saved filter — host re-installs filters/logic/search via `(apply)`. */
|
|
34
39
|
pick(filter: SdSavedFilter): void;
|
|
35
40
|
/** Delete a saved filter by id. Stops propagation so the parent button doesn't fire `pick`. */
|
|
@@ -13,7 +13,7 @@ export declare class SdQueryBar {
|
|
|
13
13
|
/** The extracted chip popover — owns operator+value staging + commit-on-close. */
|
|
14
14
|
readonly chipPopover: import("@angular/core").Signal<SdQueryChipPopover | undefined>;
|
|
15
15
|
/** Main option object. Prefer this API for new usage; individual inputs stay as a migration bridge. */
|
|
16
|
-
readonly option: import("@angular/core").InputSignal<SdQueryBarOption<
|
|
16
|
+
readonly option: import("@angular/core").InputSignal<SdQueryBarOption<unknown> | undefined>;
|
|
17
17
|
/** Prefix for auto-generated `data-autoid` on inner controls (chips, operator/value editors, buttons). */
|
|
18
18
|
readonly autoIdInput: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
19
19
|
/** Available fields the user can filter by. Required for the field picker. */
|
|
@@ -54,7 +54,7 @@ export declare class SdQueryBar {
|
|
|
54
54
|
* Snapshot of the current query — fed into `<sd-query-saved-filters-menu [query]>` so
|
|
55
55
|
* saving a filter captures live filters/logic/search.
|
|
56
56
|
*/
|
|
57
|
-
readonly currentQuery: import("@angular/core").Signal<SdQuery<
|
|
57
|
+
readonly currentQuery: import("@angular/core").Signal<SdQuery<unknown>>;
|
|
58
58
|
/** Receive an applied filter from the saved-filters menu — re-install bar state + trigger apply. */
|
|
59
59
|
onApplyFilter(saved: SdSavedFilter): void;
|
|
60
60
|
/** Show AND/OR segmented toggle (renders only when there are ≥2 filters). */
|
|
@@ -64,9 +64,15 @@ export declare class SdQueryBar {
|
|
|
64
64
|
/** Render the operator label on the chip face (default: hidden — operator only visible in popover). */
|
|
65
65
|
readonly showOperatorOnChip: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
66
66
|
/** Composite payload — emitted whenever filters / logic / search change. */
|
|
67
|
-
readonly queryChange: import("@angular/core").OutputEmitterRef<SdQuery<
|
|
67
|
+
readonly queryChange: import("@angular/core").OutputEmitterRef<SdQuery<unknown>>;
|
|
68
68
|
/** Fires when the user presses "Áp dụng" inside a chip popover — host should reload data. */
|
|
69
|
-
readonly apply: import("@angular/core").OutputEmitterRef<SdQuery<
|
|
69
|
+
readonly apply: import("@angular/core").OutputEmitterRef<SdQuery<unknown>>;
|
|
70
|
+
/** Placeholder của ô tìm kiếm tự do bên trái. */
|
|
71
|
+
readonly searchPlaceholder: import("@angular/core").Signal<string>;
|
|
72
|
+
/** Tooltip nút "+" khi consumer chưa khai `fields`. */
|
|
73
|
+
readonly noFieldsLabel: import("@angular/core").Signal<string>;
|
|
74
|
+
/** Tooltip nút "+" ở trạng thái bình thường. */
|
|
75
|
+
readonly addFilterLabel: import("@angular/core").Signal<string>;
|
|
70
76
|
/** Map of `field.key` → `SdQueryField` for fast lookup from filters[]. */
|
|
71
77
|
readonly resolvedAutoId: import("@angular/core").Signal<string | undefined>;
|
|
72
78
|
readonly resolvedFields: import("@angular/core").Signal<SdQueryField[]>;
|
|
@@ -96,13 +102,34 @@ export declare class SdQueryBar {
|
|
|
96
102
|
* popover-mode chips read `multiple()` from the child popover directly.
|
|
97
103
|
*/
|
|
98
104
|
multiple(op: Operator): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Stable track key of a filter row. Assigned lazily on first read.
|
|
107
|
+
*
|
|
108
|
+
* ⚠️ Hai ràng buộc với `filters`, đều là hợp đồng của consumer:
|
|
109
|
+
*
|
|
110
|
+
* 1. KHÔNG được chứa cùng một object `Filter` ở hai vị trí. Khoá theo identity nên hai vị trí sẽ
|
|
111
|
+
* cho hai track key trùng nhau và Angular ném NG0955. Đã thử khử trùng bằng hậu tố `$index`
|
|
112
|
+
* và HỎNG: Angular đánh giá biểu thức `track` trên CẢ collection cũ khi diff, nên một filter
|
|
113
|
+
* vừa bị xoá cho `indexOf === -1`, key đổi, và MỌI chip bị huỷ rồi dựng lại. Để Angular báo
|
|
114
|
+
* NG0955 là đúng — thông điệp của nó đã chỉ rõ vấn đề.
|
|
115
|
+
* 2. Object phải ỔN ĐỊNH giữa các lần change detection. Sinh lại object mới mỗi pass
|
|
116
|
+
* (vd `[option]="{ filters: buildFilters() }"`) sẽ khiến mọi chip nhận id mới mỗi pass và bị
|
|
117
|
+
* huỷ + dựng lại — tệ hơn cả `track $index` cũ.
|
|
118
|
+
*/
|
|
119
|
+
rowId(filter: Filter): string;
|
|
99
120
|
readonly iconFor: typeof sdQueryFieldIcon;
|
|
100
121
|
/** Chip is "active" when it has a non-empty value OR a no-data operator (NULL/NOT_NULL). */
|
|
101
122
|
isFilterActive(filter: Filter): boolean;
|
|
102
123
|
/** Rendered value text on a chip. */
|
|
103
124
|
chipValueText(filter: Filter): string;
|
|
104
125
|
isNoDataOperator(op: Operator | string): boolean;
|
|
105
|
-
readonly building: import("@angular/core").Signal<BuildingChip<
|
|
126
|
+
readonly building: import("@angular/core").Signal<BuildingChip<unknown> | null>;
|
|
127
|
+
/**
|
|
128
|
+
* Allowed operators of `field` — safe to call from a template binding: `sdQueryAllowedOperators`
|
|
129
|
+
* memo hoá theo object field nên ref trả về ổn định giữa các chu kỳ CD.
|
|
130
|
+
* why: `<sd-query-build-chip [allowedOperators]>` là OnPush; ref mới mỗi CD sẽ dirty child liên
|
|
131
|
+
* tục (bug class cấp-phát-mỗi-CD).
|
|
132
|
+
*/
|
|
106
133
|
allowedOperatorsFor(field: SdQueryField): Operator[];
|
|
107
134
|
inlineAutoId(index: number, role: string): string;
|
|
108
135
|
/** Entry point from the field picker — start building a chip for `field`. */
|
|
@@ -2,7 +2,7 @@ import { Signal } from '@angular/core';
|
|
|
2
2
|
import { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
3
3
|
import { Filter, NestedKeyOf, Operator } from '@sdcorejs/utils/models';
|
|
4
4
|
export type SdQueryFieldType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'values' | 'lazy-values';
|
|
5
|
-
interface SdQueryFieldBase<T =
|
|
5
|
+
interface SdQueryFieldBase<T = unknown> {
|
|
6
6
|
/** Dot-notation field path (matches `Filter.field`). */
|
|
7
7
|
key: NestedKeyOf<T>;
|
|
8
8
|
/** Human-readable label shown on chip + field picker. */
|
|
@@ -27,10 +27,10 @@ interface SdQueryFieldBase<T = any> {
|
|
|
27
27
|
/** Field is offered in picker but not interactive (read-only badge in chip). */
|
|
28
28
|
disabled?: boolean;
|
|
29
29
|
}
|
|
30
|
-
export interface SdQueryFieldString<T =
|
|
30
|
+
export interface SdQueryFieldString<T = unknown> extends SdQueryFieldBase<T> {
|
|
31
31
|
type: 'string';
|
|
32
32
|
}
|
|
33
|
-
export interface SdQueryFieldNumber<T =
|
|
33
|
+
export interface SdQueryFieldNumber<T = unknown> extends SdQueryFieldBase<T> {
|
|
34
34
|
type: 'number';
|
|
35
35
|
/** Bounds for the input control inside the chip popover. */
|
|
36
36
|
min?: number;
|
|
@@ -38,13 +38,13 @@ export interface SdQueryFieldNumber<T = any> extends SdQueryFieldBase<T> {
|
|
|
38
38
|
/** Step for the number input. */
|
|
39
39
|
step?: number;
|
|
40
40
|
}
|
|
41
|
-
export interface SdQueryFieldBoolean<T =
|
|
41
|
+
export interface SdQueryFieldBoolean<T = unknown> extends SdQueryFieldBase<T> {
|
|
42
42
|
type: 'boolean';
|
|
43
43
|
/** Labels rendered for the true/false buttons. Default: "Có" / "Không". */
|
|
44
44
|
trueLabel?: string;
|
|
45
45
|
falseLabel?: string;
|
|
46
46
|
}
|
|
47
|
-
export interface SdQueryFieldDate<T =
|
|
47
|
+
export interface SdQueryFieldDate<T = unknown> extends SdQueryFieldBase<T> {
|
|
48
48
|
type: 'date' | 'datetime';
|
|
49
49
|
/** Restrict the picker calendar to this range. */
|
|
50
50
|
min?: Date | string;
|
|
@@ -54,7 +54,7 @@ export interface SdQueryFieldDate<T = any> extends SdQueryFieldBase<T> {
|
|
|
54
54
|
* Statically-known options (sync array, signal, or one-shot promise).
|
|
55
55
|
* Mirrors `SdTableColumnValues.option`.
|
|
56
56
|
*/
|
|
57
|
-
export interface SdQueryFieldValues<T =
|
|
57
|
+
export interface SdQueryFieldValues<T = unknown, K = Record<string, any>> extends SdQueryFieldBase<T> {
|
|
58
58
|
type: 'values';
|
|
59
59
|
option: {
|
|
60
60
|
items: K[] | Signal<K[]> | (() => Promise<K[]>);
|
|
@@ -68,7 +68,7 @@ export interface SdQueryFieldValues<T = any, K = Record<string, any>> extends Sd
|
|
|
68
68
|
* `{ type: 'SEARCH', searchText }` for live queries and `{ type: 'VALUE', value }` for
|
|
69
69
|
* resolving chip-display labels of already-selected IDs.
|
|
70
70
|
*/
|
|
71
|
-
export interface SdQueryFieldLazyValues<T =
|
|
71
|
+
export interface SdQueryFieldLazyValues<T = unknown, K = Record<string, any>> extends SdQueryFieldBase<T> {
|
|
72
72
|
type: 'lazy-values';
|
|
73
73
|
option: {
|
|
74
74
|
search: SdSearch<K>;
|
|
@@ -76,16 +76,16 @@ export interface SdQueryFieldLazyValues<T = any, K = Record<string, any>> extend
|
|
|
76
76
|
displayField: NestedKeyOf<K>;
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
|
-
export type SdQueryField<T =
|
|
79
|
+
export type SdQueryField<T = unknown> = SdQueryFieldString<T> | SdQueryFieldNumber<T> | SdQueryFieldBoolean<T> | SdQueryFieldDate<T> | SdQueryFieldValues<T> | SdQueryFieldLazyValues<T>;
|
|
80
80
|
export type SdQueryLogic = 'AND' | 'OR';
|
|
81
|
-
export interface SdQuery<T =
|
|
81
|
+
export interface SdQuery<T = unknown> {
|
|
82
82
|
filters: Filter<T>[];
|
|
83
83
|
/** Global connector between filters. Defaults to `'AND'`. */
|
|
84
84
|
logic?: SdQueryLogic;
|
|
85
85
|
/** Free-text search box (only present when `showSearch=true`). */
|
|
86
86
|
search?: string;
|
|
87
87
|
}
|
|
88
|
-
export interface SdQueryBarOption<T =
|
|
88
|
+
export interface SdQueryBarOption<T = unknown> {
|
|
89
89
|
/** Prefix for auto-generated `data-autoid` on inner controls. */
|
|
90
90
|
autoId?: string;
|
|
91
91
|
/** Available fields the user can filter by. */
|
|
@@ -108,7 +108,7 @@ export interface SdQueryBarOption<T = any> {
|
|
|
108
108
|
onApply?: (query: SdQuery<T>) => void;
|
|
109
109
|
}
|
|
110
110
|
/** Persisted bookmark of a query (filters + logic + search) — managed by `[savedFiltersKey]`. */
|
|
111
|
-
export interface SdSavedFilter<T =
|
|
111
|
+
export interface SdSavedFilter<T = unknown> {
|
|
112
112
|
id: string;
|
|
113
113
|
name: string;
|
|
114
114
|
query: SdQuery<T>;
|
|
@@ -120,7 +120,7 @@ export interface SdSavedFilter<T = any> {
|
|
|
120
120
|
* - 'operator' — operator menu open, waiting for the user to pick a condition
|
|
121
121
|
* - 'value' — operator locked, value picker / seamless input is the focus
|
|
122
122
|
*/
|
|
123
|
-
export interface BuildingChip<T =
|
|
123
|
+
export interface BuildingChip<T = unknown> {
|
|
124
124
|
field: SdQueryField<T>;
|
|
125
125
|
operator?: Operator;
|
|
126
126
|
step: 'operator' | 'value';
|
|
@@ -148,6 +148,9 @@ export declare function sdQueryDefaultOperator(field: SdQueryField): Operator;
|
|
|
148
148
|
* - `operators === true` → full set for the type
|
|
149
149
|
* - `operators` is an array → that array (deduped against the type set is the caller's job)
|
|
150
150
|
* - otherwise (simple mode) → just the single default operator (no real choice)
|
|
151
|
+
*
|
|
152
|
+
* The returned array is referentially stable for a given `field` object, so it is safe to call
|
|
153
|
+
* straight from a template binding.
|
|
151
154
|
*/
|
|
152
155
|
export declare function sdQueryAllowedOperators(field: SdQueryField): Operator[];
|
|
153
156
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Filter, Operator } from '@sdcorejs/utils/models';
|
|
2
|
-
import {
|
|
2
|
+
import { sdIsQbGroup, SdQbComparisonMode, SdQbDateMode, SdQbGroup, SdQbRule, SdQbToken, SdQbValueSource, sdQbFieldIcon, SdQueryBuilderField, SdQueryBuilderFieldOption, SdQueryBuilderOption } from './query-builder.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Visual filter / rule builder. Compose nested AND / OR groups of
|
|
@@ -17,7 +17,7 @@ export declare class SdQueryBuilder {
|
|
|
17
17
|
/** `'edit'` (default) = interactive tree · `'view'` = read-only raw-query string. */
|
|
18
18
|
readonly mode: import("@angular/core").InputSignal<"edit" | "view">;
|
|
19
19
|
/** `value-only` = literal operands only · `value-or-field` = each rule may compare against another field. */
|
|
20
|
-
readonly comparisonMode: import("@angular/core").InputSignal<
|
|
20
|
+
readonly comparisonMode: import("@angular/core").InputSignal<SdQbComparisonMode>;
|
|
21
21
|
/** Disable all editing controls. */
|
|
22
22
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
23
23
|
/** Prefix for `data-autoid` on inner controls (E2E selectors). */
|
|
@@ -28,42 +28,64 @@ export declare class SdQueryBuilder {
|
|
|
28
28
|
readonly filters: import("@angular/core").ModelSignal<Filter[]>;
|
|
29
29
|
/** Root group's logical connector. `[(rootLogic)]`. */
|
|
30
30
|
readonly rootLogic: import("@angular/core").ModelSignal<"AND" | "OR">;
|
|
31
|
-
readonly tree: import("@angular/core").Signal<
|
|
31
|
+
readonly tree: import("@angular/core").Signal<SdQbGroup>;
|
|
32
32
|
/** `field.key` → field, for fast lookup from a rule. */
|
|
33
33
|
readonly resolvedFields: import("@angular/core").Signal<SdQueryBuilderField[]>;
|
|
34
34
|
readonly resolvedMode: import("@angular/core").Signal<"edit" | "view">;
|
|
35
|
-
readonly resolvedComparisonMode: import("@angular/core").Signal<
|
|
35
|
+
readonly resolvedComparisonMode: import("@angular/core").Signal<SdQbComparisonMode>;
|
|
36
36
|
readonly resolvedDisabled: import("@angular/core").Signal<boolean>;
|
|
37
37
|
readonly resolvedAutoId: import("@angular/core").Signal<string | undefined>;
|
|
38
38
|
readonly fieldByKey: import("@angular/core").Signal<Record<string, SdQueryBuilderField>>;
|
|
39
39
|
/** Stable option list for the date-mode select. */
|
|
40
|
-
readonly dateModes: import("@
|
|
40
|
+
readonly dateModes: import("@angular/core").Signal<{
|
|
41
|
+
display: string;
|
|
42
|
+
value: SdQbDateMode;
|
|
43
|
+
labelKey: string;
|
|
44
|
+
icon: string;
|
|
45
|
+
}[]>;
|
|
41
46
|
/** Stable option list for the literal-vs-field operand select. */
|
|
42
|
-
readonly valueSourceOptions: import("@
|
|
47
|
+
readonly valueSourceOptions: import("@angular/core").Signal<{
|
|
48
|
+
display: string;
|
|
49
|
+
value: SdQbValueSource;
|
|
50
|
+
labelKey: string;
|
|
51
|
+
icon: string;
|
|
52
|
+
}[]>;
|
|
43
53
|
/** Stable combined unit×direction option list for the relative select. */
|
|
44
|
-
readonly relativeUnitOptions: {
|
|
45
|
-
value: string;
|
|
54
|
+
readonly relativeUnitOptions: import("@angular/core").Signal<{
|
|
46
55
|
display: string;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
value: string;
|
|
57
|
+
labelKey: string;
|
|
58
|
+
}[]>;
|
|
59
|
+
readonly selectFieldLabel: import("@angular/core").Signal<string>;
|
|
60
|
+
readonly valueLabel: import("@angular/core").Signal<string>;
|
|
61
|
+
readonly fromLabel: import("@angular/core").Signal<string>;
|
|
62
|
+
readonly toLabel: import("@angular/core").Signal<string>;
|
|
63
|
+
readonly addLabel: import("@angular/core").Signal<string>;
|
|
64
|
+
readonly addNodeLabel: import("@angular/core").Signal<string>;
|
|
65
|
+
readonly conditionLabel: import("@angular/core").Signal<string>;
|
|
66
|
+
readonly groupLabel: import("@angular/core").Signal<string>;
|
|
67
|
+
readonly removeGroupLabel: import("@angular/core").Signal<string>;
|
|
68
|
+
readonly removeConditionLabel: import("@angular/core").Signal<string>;
|
|
69
|
+
readonly emptyLabel: import("@angular/core").Signal<string>;
|
|
70
|
+
/** View-mode token stream — recomputed from the emitted value (and from the active language). */
|
|
71
|
+
readonly tokens: import("@angular/core").Signal<SdQbToken[]>;
|
|
50
72
|
readonly isView: import("@angular/core").Signal<boolean>;
|
|
51
73
|
/** Expose the type-guard to the template. */
|
|
52
|
-
readonly isGroup: typeof
|
|
74
|
+
readonly isGroup: typeof sdIsQbGroup;
|
|
53
75
|
/** Resolve the leading icon for a field (own `icon` → per-type → `'tune'`) — used by the field picker. */
|
|
54
|
-
readonly fieldIcon: typeof
|
|
76
|
+
readonly fieldIcon: typeof sdQbFieldIcon;
|
|
55
77
|
constructor();
|
|
56
78
|
/** Switch a group's AND/OR connector and re-emit. No-op when disabled or unchanged. */
|
|
57
|
-
setGroupLogic(group:
|
|
79
|
+
setGroupLogic(group: SdQbGroup, logic: 'AND' | 'OR'): void;
|
|
58
80
|
/** Open this group's "+" menu (closing any other open one). UI-only — does not emit. */
|
|
59
|
-
toggleDropdown(group:
|
|
81
|
+
toggleDropdown(group: SdQbGroup, event: Event): void;
|
|
60
82
|
closeAllDropdowns(): void;
|
|
61
83
|
/** Append a blank rule to `group`. */
|
|
62
|
-
addRule(group:
|
|
84
|
+
addRule(group: SdQbGroup): void;
|
|
63
85
|
/** Append a nested sub-group (seeded with one blank rule) to `group`. */
|
|
64
|
-
addGroup(group:
|
|
86
|
+
addGroup(group: SdQbGroup): void;
|
|
65
87
|
/** Remove the child at `index` from `parent` (a rule or a whole sub-group). */
|
|
66
|
-
removeNode(parent:
|
|
88
|
+
removeNode(parent: SdQbGroup, index: number): void;
|
|
67
89
|
/**
|
|
68
90
|
* Point `rule` at a new field. Resets operator to the field's default and the value
|
|
69
91
|
* to that operator's empty shape — the old operator/value rarely fit the new type.
|
|
@@ -72,46 +94,61 @@ export declare class SdQueryBuilder {
|
|
|
72
94
|
* @param key - the chosen field key (from the field picker). Swap-only: a null / undefined
|
|
73
95
|
* key is a no-op — the field can be changed but never cleared (issue #2).
|
|
74
96
|
*/
|
|
75
|
-
setField(rule:
|
|
97
|
+
setField(rule: SdQbRule, key: any): void;
|
|
76
98
|
/** Change `rule`'s operator and reshape its value to fit the new operator (array / range / none). */
|
|
77
|
-
setOperator(rule:
|
|
99
|
+
setOperator(rule: SdQbRule, op: Operator | undefined): void;
|
|
78
100
|
/** Set a single-value rule's value (coercing numeric fields to `number`). */
|
|
79
|
-
setScalar(rule:
|
|
101
|
+
setScalar(rule: SdQbRule, raw: any): void;
|
|
80
102
|
/** Set the lower bound of a BETWEEN rule's `{ from, to }` value. */
|
|
81
|
-
setBetweenFrom(rule:
|
|
103
|
+
setBetweenFrom(rule: SdQbRule, raw: any): void;
|
|
82
104
|
/** Set the upper bound of a BETWEEN rule's `{ from, to }` value. */
|
|
83
|
-
setBetweenTo(rule:
|
|
84
|
-
setValueSource(rule:
|
|
85
|
-
setCompareField(rule:
|
|
105
|
+
setBetweenTo(rule: SdQbRule, raw: any): void;
|
|
106
|
+
setValueSource(rule: SdQbRule, source: unknown): void;
|
|
107
|
+
setCompareField(rule: SdQbRule, key: any): void;
|
|
86
108
|
/** The field metadata for a rule's current `field` key (or undefined if unset). */
|
|
87
|
-
fieldOf(rule:
|
|
109
|
+
fieldOf(rule: SdQbRule): SdQueryBuilderField | undefined;
|
|
88
110
|
/** Operators allowed for a rule, derived from its field's type / override. */
|
|
89
|
-
allowedOperators(rule:
|
|
111
|
+
allowedOperators(rule: SdQbRule): Operator[];
|
|
90
112
|
/** Whether to render the operator picker — hidden when only one operator is allowed. */
|
|
91
|
-
showOperatorSelector(rule:
|
|
92
|
-
compareFields(rule:
|
|
93
|
-
canCompareWithField(rule:
|
|
94
|
-
showValueSourceSelector(rule:
|
|
95
|
-
valueSourceOf(rule:
|
|
96
|
-
isFieldSource(rule:
|
|
113
|
+
showOperatorSelector(rule: SdQbRule): boolean;
|
|
114
|
+
compareFields(rule: SdQbRule): SdQueryBuilderField[];
|
|
115
|
+
canCompareWithField(rule: SdQbRule): boolean;
|
|
116
|
+
showValueSourceSelector(rule: SdQbRule): boolean;
|
|
117
|
+
valueSourceOf(rule: SdQbRule): SdQbValueSource;
|
|
118
|
+
isFieldSource(rule: SdQbRule): boolean;
|
|
97
119
|
/** True for NULL / NOT_NULL — the template then renders no value editor. */
|
|
98
120
|
isNoData(op: Operator | undefined): boolean;
|
|
99
121
|
/** True for IN / NOT_IN — the template then renders a multi-select value editor. */
|
|
100
122
|
isMulti(op: Operator | undefined): boolean;
|
|
101
123
|
/** `[true/false]` option list for a boolean field's value select (stable reference). */
|
|
102
124
|
booleanItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
|
|
125
|
+
/**
|
|
126
|
+
* Option list cho field `type:'values'`.
|
|
127
|
+
*
|
|
128
|
+
* why: template cũ bind thẳng `[items]="fieldOf(rule)!.values || []"`. `values` là OPTIONAL trên
|
|
129
|
+
* `SdQueryBuilderField`, nên với field khai thiếu `values`, nhánh `|| []` cấp phát một mảng MỚI
|
|
130
|
+
* mỗi lần change detection chạy — đúng nguyên nhân OOM đã ghi ở `#booleanOptionsByKey`:
|
|
131
|
+
* `sd-select` có `toObservable(items)` → `markForCheck()` → CD mới → mảng mới → lặp vô hạn.
|
|
132
|
+
*
|
|
133
|
+
* why: KHÔNG memo hoá qua `computed<Map>` snapshot. `field.values` vốn ĐÃ là mảng của consumer
|
|
134
|
+
* nên tự nó ổn định; snapshot vào Map chỉ thêm một tầng cache không bao giờ invalidate khi
|
|
135
|
+
* consumer nạp option bất đồng bộ bằng cách gán tại chỗ (`fields[0].values = loaded`) — reference
|
|
136
|
+
* `fields` không đổi nên `computed` giữ nguyên list cũ vĩnh viễn. Chỉ nhánh RỖNG cần hằng số
|
|
137
|
+
* dùng chung để tránh literal mới mỗi CD.
|
|
138
|
+
*/
|
|
139
|
+
valueItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
|
|
103
140
|
/** Current date-value mode of a rule, derived from its value (no separate state). */
|
|
104
|
-
dateMode(rule:
|
|
141
|
+
dateMode(rule: SdQbRule): SdQbDateMode;
|
|
105
142
|
/** Switch a date/datetime rule's value mode, reseeding the value for the new mode. */
|
|
106
|
-
setDateMode(rule:
|
|
143
|
+
setDateMode(rule: SdQbRule, mode: unknown): void;
|
|
107
144
|
/** Read the offset amount of a relative rule (default 1). */
|
|
108
|
-
relativeAmount(rule:
|
|
145
|
+
relativeAmount(rule: SdQbRule): number;
|
|
109
146
|
/** Set the offset amount (clamped to an integer >= 1). */
|
|
110
|
-
setRelativeAmount(rule:
|
|
147
|
+
setRelativeAmount(rule: SdQbRule, raw: any): void;
|
|
111
148
|
/** Read the `'unit:direction'` token of a relative rule (default `'day:previous'`). */
|
|
112
|
-
relativeUnitDirValue(rule:
|
|
149
|
+
relativeUnitDirValue(rule: SdQbRule): string;
|
|
113
150
|
/** Set the offset unit + direction from a `'unit:direction'` token. */
|
|
114
|
-
setRelativeUnitDir(rule:
|
|
151
|
+
setRelativeUnitDir(rule: SdQbRule, token: unknown): void;
|
|
115
152
|
/** Build a `data-autoid` for an inner control under this builder's `autoId` prefix. */
|
|
116
153
|
autoIdFor(suffix: string): string;
|
|
117
154
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdQueryBuilder, never>;
|