@sd-angular/core 19.0.0-beta.99 → 19.0.4
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 +9 -11
- package/assets/images/coming-soon.svg +23 -0
- package/assets/images/data-empty.svg +21 -0
- package/assets/images/expired.svg +22 -0
- package/assets/images/file-error.svg +28 -0
- package/assets/images/filter-empty.svg +20 -0
- package/assets/images/filter-required.svg +21 -0
- package/assets/images/forbidden.svg +15 -0
- package/assets/images/image-error.svg +27 -0
- package/assets/images/maintenance.svg +23 -0
- package/assets/images/not-found.svg +20 -0
- package/assets/images/offline.svg +20 -0
- package/assets/images/submitted.svg +18 -0
- package/assets/images/success.svg +18 -0
- package/assets/images/unauthorized.svg +22 -0
- package/assets/images/unknown-error.svg +18 -0
- package/assets/scss/README.md +433 -353
- package/assets/scss/core/_inline-edit.scss +105 -0
- package/assets/scss/core/form.scss +58 -1
- package/assets/scss/core/image.scss +35 -0
- package/assets/scss/core/utilities/_base.scss +6 -6
- package/assets/scss/core/utilities/_grid.scss +4 -3
- package/assets/scss/core/utilities/_index.scss +1 -1
- package/assets/scss/core/utilities/_sizing.scss +2 -2
- package/assets/scss/sd-core.scss +1 -2
- package/components/autoid-inspector/src/autoid-inspector.component.d.ts +18 -0
- package/components/autoid-inspector/src/models/autoid-element.model.d.ts +45 -1
- package/components/autoid-inspector/src/models/autoid-export-format.model.d.ts +19 -0
- package/components/autoid-inspector/src/services/autoid-export.service.d.ts +10 -2
- package/components/autoid-inspector/src/services/autoid-scanner.service.d.ts +26 -3
- package/components/badge/src/badge.component.d.ts +20 -3
- package/components/button/src/button.component.d.ts +3 -3
- package/components/ckeditor-styles/index.d.ts +1 -0
- package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +25 -0
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +13 -15
- package/components/form-generic/src/components/form-render/form-render.component.d.ts +1 -2
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -2
- package/components/form-generic/src/models/form-generic-component.model.d.ts +5 -6
- package/components/form-generic/src/models/form-generic-expression.model.d.ts +1 -1
- package/components/history/models/history.model.d.ts +2 -2
- package/components/index.d.ts +2 -0
- package/components/inform/index.d.ts +2 -0
- package/components/inform/src/inform-action.directive.d.ts +9 -0
- package/components/inform/src/inform.component.d.ts +59 -0
- package/components/modal/src/modal.component.d.ts +2 -1
- package/components/modal-resizable/index.d.ts +1 -0
- package/components/modal-resizable/src/modal-resizable.component.d.ts +29 -0
- package/components/operator/index.d.ts +1 -0
- package/components/operator/src/operator.component.d.ts +34 -0
- package/components/query-bar/index.d.ts +2 -0
- package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +28 -0
- package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +67 -0
- package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +73 -0
- package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +37 -0
- package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +76 -0
- package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +67 -0
- package/components/query-bar/src/components/popover-chip/popover-chip.component.d.ts +35 -0
- package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +39 -0
- package/components/query-bar/src/query-bar.component.d.ts +137 -0
- package/components/query-bar/src/query-bar.model.d.ts +136 -0
- package/components/query-builder/index.d.ts +2 -0
- package/components/query-builder/src/query-builder.component.d.ts +98 -22
- package/components/query-builder/src/query-builder.model.d.ts +118 -0
- package/components/query-builder/src/query-builder.serializer.d.ts +32 -0
- package/components/section/src/section.component.d.ts +3 -3
- package/components/side-drawer/src/side-drawer.component.d.ts +1 -2
- package/components/stepper/index.d.ts +2 -0
- package/components/stepper/src/step.component.d.ts +17 -0
- package/components/stepper/src/stepper.component.d.ts +32 -0
- package/components/tab/index.d.ts +2 -0
- package/components/tab/src/tab-group.component.d.ts +36 -0
- package/components/tab/src/tab.component.d.ts +13 -0
- package/components/tab-router/src/decorators/tab.decorator.d.ts +2 -2
- package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
- package/components/table/index.d.ts +1 -0
- package/components/table/src/components/column-title/column-title.component.d.ts +1 -1
- package/components/table/src/components/config/config.component.d.ts +3 -1
- package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +3 -3
- package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +3 -7
- package/components/table/src/components/selector-action/selector-action.component.d.ts +3 -1
- package/components/table/src/configurations/table.configuration.d.ts +3 -3
- package/components/table/src/directives/index.d.ts +1 -0
- package/components/table/src/directives/sd-table-cell-def.directive.d.ts +12 -4
- package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +12 -4
- package/components/table/src/directives/sd-table-expand-def.directive.d.ts +10 -4
- package/components/table/src/directives/sd-table-filter-def.directive.d.ts +3 -3
- package/components/table/src/directives/sd-table-footer-def.directive.d.ts +12 -4
- package/components/table/src/directives/sd-table-group-def.directive.d.ts +44 -0
- package/components/table/src/directives/sd-table-title-def.directive.d.ts +10 -4
- package/components/table/src/models/index.d.ts +1 -0
- package/components/table/src/models/table-column.model.d.ts +13 -13
- package/components/table/src/models/table-command.model.d.ts +3 -2
- package/components/table/src/models/table-item.model.d.ts +19 -4
- package/components/table/src/models/table-option-export.model.d.ts +3 -3
- package/components/table/src/models/table-option-group.model.d.ts +19 -2
- package/components/table/src/models/table-option-selector.model.d.ts +17 -1
- package/components/table/src/models/table-option-tree.model.d.ts +96 -8
- package/components/table/src/models/table-option.model.d.ts +11 -2
- package/components/table/src/pipes/sd-group.pipe.d.ts +15 -1
- package/components/table/src/services/table-filter/table-filter.model.d.ts +9 -9
- package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
- package/components/table/src/services/tree/tree.util.d.ts +43 -2
- package/components/table/src/table.component.d.ts +37 -13
- package/components/upload-file/src/upload-file.component.d.ts +2 -0
- package/components/view/src/view.component.d.ts +35 -1
- package/directives/src/sd-desktop.directive.d.ts +2 -4
- package/directives/src/sd-mobile.directive.d.ts +2 -4
- package/fesm2022/sd-angular-core-components-anchor.mjs +75 -49
- package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +254 -29
- package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-avatar.mjs +2 -2
- package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-badge.mjs +18 -3
- package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-button.mjs +3 -5
- package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs +38 -0
- package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-document-builder.mjs +10 -8
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-editor.mjs +3 -2
- package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-form-generic.mjs +153 -243
- package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs +3 -2
- package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-inform.mjs +190 -0
- package/fesm2022/sd-angular-core-components-inform.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-mini-editor.mjs +4 -3
- package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-modal-resizable.mjs +158 -0
- package/fesm2022/sd-angular-core-components-modal-resizable.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-modal.mjs +2 -2
- package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-operator.mjs +77 -0
- package/fesm2022/sd-angular-core-components-operator.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-preview.mjs +4 -4
- package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-query-bar.mjs +1384 -0
- package/fesm2022/sd-angular-core-components-query-bar.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-query-builder.mjs +669 -57
- package/fesm2022/sd-angular-core-components-query-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-quick-action.mjs +2 -2
- package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-section.mjs +2 -4
- package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-side-drawer.mjs +3 -5
- package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-splitter.mjs +5 -2
- package/fesm2022/sd-angular-core-components-splitter.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-stepper.mjs +138 -0
- package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-tab-router.mjs +3 -3
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab.mjs +143 -0
- package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-table.mjs +577 -225
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +36 -25
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-view.mjs +44 -9
- package/fesm2022/sd-angular-core-components-view.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components.mjs +2 -0
- package/fesm2022/sd-angular-core-components.mjs.map +1 -1
- package/fesm2022/sd-angular-core-directives.mjs +19 -21
- package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +45 -16
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-checkbox.mjs +97 -87
- package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +92 -61
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip.mjs +89 -52
- package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date-range.mjs +63 -10
- package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date.mjs +39 -15
- package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-datetime.mjs +33 -14
- package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-directives.mjs +18 -24
- package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-inline-text.mjs +167 -0
- package/fesm2022/sd-angular-core-forms-inline-text.mjs.map +1 -0
- package/fesm2022/sd-angular-core-forms-input-color.mjs +119 -0
- package/fesm2022/sd-angular-core-forms-input-color.mjs.map +1 -0
- package/fesm2022/sd-angular-core-forms-input-number.mjs +73 -15
- package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input.mjs +86 -29
- package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-models.mjs +44 -2
- package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-radio.mjs +130 -175
- package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +66 -23
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-switch.mjs +95 -98
- package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-textarea.mjs +33 -12
- package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
- package/fesm2022/sd-angular-core-i18n.mjs +65 -0
- package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-auth.mjs +4 -4
- package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-layout.mjs +23 -23
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-permission.mjs +3 -3
- package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
- package/fesm2022/sd-angular-core-pipes.mjs +2 -2
- package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs +3 -3
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-cache.mjs +3 -2
- package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-excel.mjs +6 -5
- package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-notify.mjs +43 -12
- package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-storage.mjs +2 -2
- package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +24 -10
- package/forms/checkbox/src/checkbox.component.d.ts +21 -20
- package/forms/chip/src/chip.component.d.ts +25 -20
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +27 -22
- package/forms/date/src/date.component.d.ts +23 -9
- package/forms/date-range/src/date-range.component.d.ts +28 -5
- package/forms/datetime/src/datetime.component.d.ts +21 -8
- package/forms/directives/src/item-def.directive.d.ts +10 -5
- package/forms/directives/src/label-def.directive.d.ts +3 -2
- package/forms/directives/src/suffix-def.directive.d.ts +3 -2
- package/forms/directives/src/view-def.directive.d.ts +9 -9
- package/forms/inline-text/index.d.ts +1 -0
- package/forms/inline-text/src/inline-text.component.d.ts +76 -0
- package/forms/input/src/input.component.d.ts +31 -13
- package/forms/input-color/index.d.ts +1 -0
- package/forms/input-color/src/input-color.component.d.ts +34 -0
- package/forms/input-number/src/input-number.component.d.ts +25 -9
- package/forms/models/index.d.ts +1 -0
- package/forms/models/src/sd-custom-validator.model.d.ts +13 -1
- package/forms/models/src/sd-viewed.d.ts +38 -0
- package/forms/radio/src/radio.component.d.ts +37 -38
- package/forms/select/src/select.component.d.ts +36 -14
- package/forms/switch/src/switch.component.d.ts +22 -23
- package/forms/textarea/src/textarea.component.d.ts +18 -8
- package/i18n/src/en.d.ts +11 -0
- package/modules/auth/configurations/auth.configuration.d.ts +4 -4
- package/modules/layout/configurations/layout.configuration.d.ts +3 -3
- package/modules/permission/src/configurations/permission.configuration.d.ts +3 -3
- package/package.json +77 -41
- package/sd-angular-core-19.0.4.tgz +0 -0
- package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +3 -3
- package/services/confirm/src/lib/confirm.service.d.ts +9 -9
- package/services/notify/src/components/toast/toast.component.d.ts +16 -1
- package/services/notify/src/notify.model.d.ts +17 -0
- package/utilities/models/src/icon.model.d.ts +1 -1
- package/assets/scss/bootstrap-4.6.2/_alert.scss +0 -52
- package/assets/scss/bootstrap-4.6.2/_badge.scss +0 -54
- package/assets/scss/bootstrap-4.6.2/_breadcrumb.scss +0 -42
- package/assets/scss/bootstrap-4.6.2/_button-group.scss +0 -163
- package/assets/scss/bootstrap-4.6.2/_buttons.scss +0 -142
- package/assets/scss/bootstrap-4.6.2/_card.scss +0 -286
- package/assets/scss/bootstrap-4.6.2/_carousel.scss +0 -200
- package/assets/scss/bootstrap-4.6.2/_close.scss +0 -40
- package/assets/scss/bootstrap-4.6.2/_code.scss +0 -48
- package/assets/scss/bootstrap-4.6.2/_custom-forms.scss +0 -526
- package/assets/scss/bootstrap-4.6.2/_dropdown.scss +0 -192
- package/assets/scss/bootstrap-4.6.2/_forms.scss +0 -347
- package/assets/scss/bootstrap-4.6.2/_functions.scss +0 -190
- package/assets/scss/bootstrap-4.6.2/_grid.scss +0 -73
- package/assets/scss/bootstrap-4.6.2/_images.scss +0 -42
- package/assets/scss/bootstrap-4.6.2/_input-group.scss +0 -211
- package/assets/scss/bootstrap-4.6.2/_jumbotron.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/_list-group.scss +0 -154
- package/assets/scss/bootstrap-4.6.2/_media.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/_mixins.scss +0 -47
- package/assets/scss/bootstrap-4.6.2/_modal.scss +0 -240
- package/assets/scss/bootstrap-4.6.2/_nav.scss +0 -125
- package/assets/scss/bootstrap-4.6.2/_navbar.scss +0 -332
- package/assets/scss/bootstrap-4.6.2/_pagination.scss +0 -74
- package/assets/scss/bootstrap-4.6.2/_popover.scss +0 -170
- package/assets/scss/bootstrap-4.6.2/_print.scss +0 -132
- package/assets/scss/bootstrap-4.6.2/_progress.scss +0 -47
- package/assets/scss/bootstrap-4.6.2/_reboot.scss +0 -484
- package/assets/scss/bootstrap-4.6.2/_root.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/_spinners.scss +0 -65
- package/assets/scss/bootstrap-4.6.2/_tables.scss +0 -185
- package/assets/scss/bootstrap-4.6.2/_toasts.scss +0 -46
- package/assets/scss/bootstrap-4.6.2/_tooltip.scss +0 -115
- package/assets/scss/bootstrap-4.6.2/_transitions.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/_type.scss +0 -125
- package/assets/scss/bootstrap-4.6.2/_utilities.scss +0 -18
- package/assets/scss/bootstrap-4.6.2/_variables.scss +0 -1150
- package/assets/scss/bootstrap-4.6.2/bootstrap-grid.scss +0 -30
- package/assets/scss/bootstrap-4.6.2/bootstrap-reboot.scss +0 -12
- package/assets/scss/bootstrap-4.6.2/bootstrap.scss +0 -44
- package/assets/scss/bootstrap-4.6.2/mixins/_alert.scss +0 -13
- package/assets/scss/bootstrap-4.6.2/mixins/_background-variant.scss +0 -23
- package/assets/scss/bootstrap-4.6.2/mixins/_badge.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_border-radius.scss +0 -76
- package/assets/scss/bootstrap-4.6.2/mixins/_box-shadow.scss +0 -20
- package/assets/scss/bootstrap-4.6.2/mixins/_breakpoints.scss +0 -123
- package/assets/scss/bootstrap-4.6.2/mixins/_buttons.scss +0 -110
- package/assets/scss/bootstrap-4.6.2/mixins/_caret.scss +0 -62
- package/assets/scss/bootstrap-4.6.2/mixins/_clearfix.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_deprecate.scss +0 -10
- package/assets/scss/bootstrap-4.6.2/mixins/_float.scss +0 -14
- package/assets/scss/bootstrap-4.6.2/mixins/_forms.scss +0 -195
- package/assets/scss/bootstrap-4.6.2/mixins/_gradients.scss +0 -45
- package/assets/scss/bootstrap-4.6.2/mixins/_grid-framework.scss +0 -80
- package/assets/scss/bootstrap-4.6.2/mixins/_grid.scss +0 -69
- package/assets/scss/bootstrap-4.6.2/mixins/_hover.scss +0 -37
- package/assets/scss/bootstrap-4.6.2/mixins/_image.scss +0 -36
- package/assets/scss/bootstrap-4.6.2/mixins/_list-group.scss +0 -21
- package/assets/scss/bootstrap-4.6.2/mixins/_lists.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_nav-divider.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_pagination.scss +0 -22
- package/assets/scss/bootstrap-4.6.2/mixins/_reset-text.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_resize.scss +0 -6
- package/assets/scss/bootstrap-4.6.2/mixins/_screen-reader.scss +0 -34
- package/assets/scss/bootstrap-4.6.2/mixins/_size.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_table-row.scss +0 -39
- package/assets/scss/bootstrap-4.6.2/mixins/_text-emphasis.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_text-hide.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_text-truncate.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/mixins/_transition.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/mixins/_visibility.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_align.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_background.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_borders.scss +0 -75
- package/assets/scss/bootstrap-4.6.2/utilities/_clearfix.scss +0 -3
- package/assets/scss/bootstrap-4.6.2/utilities/_display.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/utilities/_embed.scss +0 -39
- package/assets/scss/bootstrap-4.6.2/utilities/_flex.scss +0 -51
- package/assets/scss/bootstrap-4.6.2/utilities/_float.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_interactions.scss +0 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_overflow.scss +0 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_position.scss +0 -32
- package/assets/scss/bootstrap-4.6.2/utilities/_screenreaders.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_shadows.scss +0 -6
- package/assets/scss/bootstrap-4.6.2/utilities/_sizing.scss +0 -20
- package/assets/scss/bootstrap-4.6.2/utilities/_spacing.scss +0 -73
- package/assets/scss/bootstrap-4.6.2/utilities/_stretched-link.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_text.scss +0 -72
- package/assets/scss/bootstrap-4.6.2/utilities/_visibility.scss +0 -13
- package/assets/scss/bootstrap-4.6.2/vendor/_rfs.scss +0 -228
- package/assets/scss/core/bootstrap.scss +0 -13
- package/components/table/index.d.ts.map +0 -1
- package/components/table/sd-angular-core-components-table.d.ts.map +0 -1
- package/components/table/src/components/column-title/column-title.component.d.ts.map +0 -1
- package/components/table/src/components/command/desktop-command.component.d.ts.map +0 -1
- package/components/table/src/components/command/pipes/command.pipe.d.ts.map +0 -1
- package/components/table/src/components/command/pipes/filter.pipe.d.ts.map +0 -1
- package/components/table/src/components/config/config.component.d.ts.map +0 -1
- package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts.map +0 -1
- package/components/table/src/components/desktop-cell/view/view.component.d.ts.map +0 -1
- package/components/table/src/components/filter/column-filter/column-filter.component.d.ts.map +0 -1
- package/components/table/src/components/filter/external-filter/external-filter.component.d.ts.map +0 -1
- package/components/table/src/components/filter/index.d.ts.map +0 -1
- package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts.map +0 -1
- package/components/table/src/components/index.d.ts.map +0 -1
- package/components/table/src/components/popup-export/popup-export.component.d.ts.map +0 -1
- package/components/table/src/components/selector-action/action-filter.pipe.d.ts.map +0 -1
- package/components/table/src/components/selector-action/selector-action.component.d.ts.map +0 -1
- package/components/table/src/configurations/index.d.ts.map +0 -1
- package/components/table/src/configurations/table.configuration.d.ts.map +0 -1
- package/components/table/src/directives/index.d.ts.map +0 -1
- package/components/table/src/directives/sd-column-resize.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-cell-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-expand-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-filter-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-footer-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sd-table-title-def.directive.d.ts.map +0 -1
- package/components/table/src/directives/sticky-shadow.directive.d.ts.map +0 -1
- package/components/table/src/models/index.d.ts.map +0 -1
- package/components/table/src/models/table-column.model.d.ts.map +0 -1
- package/components/table/src/models/table-command.model.d.ts.map +0 -1
- package/components/table/src/models/table-item.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-config.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-expand.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-export.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-group.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-paginate.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-reload.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-selector.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-sort.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-style.model.d.ts.map +0 -1
- package/components/table/src/models/table-option-tree.model.d.ts.map +0 -1
- package/components/table/src/models/table-option.model.d.ts.map +0 -1
- package/components/table/src/pipes/filter-values.pipe.d.ts.map +0 -1
- package/components/table/src/pipes/index.d.ts.map +0 -1
- package/components/table/src/pipes/sd-group.pipe.d.ts.map +0 -1
- package/components/table/src/pipes/sd-tree.pipe.d.ts.map +0 -1
- package/components/table/src/pipes/selection-disabled.pipe.d.ts.map +0 -1
- package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts.map +0 -1
- package/components/table/src/pipes/selection-visible.pipe.d.ts.map +0 -1
- package/components/table/src/services/column-width.util.d.ts.map +0 -1
- package/components/table/src/services/config.service.d.ts.map +0 -1
- package/components/table/src/services/index.d.ts.map +0 -1
- package/components/table/src/services/table-export/table-export.service.d.ts.map +0 -1
- package/components/table/src/services/table-filter/table-filter.model.d.ts.map +0 -1
- package/components/table/src/services/table-filter/table-filter.service.d.ts.map +0 -1
- package/components/table/src/services/table-format/table-format.service.d.ts.map +0 -1
- package/components/table/src/services/tree/tree.util.d.ts.map +0 -1
- package/components/table/src/table.component.d.ts.map +0 -1
- package/sd-angular-core-19.0.0-beta.99.tgz +0 -0
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { SdTableColumn } from '../models/table-column.model';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
|
|
4
|
+
interface Context<T = any> {
|
|
5
|
+
column: SdTableColumn<T>;
|
|
6
|
+
}
|
|
7
|
+
export declare class SdTableTitleDefDirective<T = any> {
|
|
8
|
+
static ngTemplateContextGuard<T>(_dir: SdTableTitleDefDirective<T>, _ctx: unknown): _ctx is Context<T>;
|
|
4
9
|
sdTableTitleDef: import("@angular/core").InputSignal<string>;
|
|
5
|
-
templateRef: TemplateRef<
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdTableTitleDefDirective
|
|
7
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SdTableTitleDefDirective
|
|
10
|
+
templateRef: TemplateRef<Context<T>>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdTableTitleDefDirective<any>, never>;
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SdTableTitleDefDirective<any>, "[sdTableTitleDef]", never, { "sdTableTitleDef": { "alias": "sdTableTitleDef"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
8
13
|
}
|
|
14
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Signal, TemplateRef } from '@angular/core';
|
|
2
2
|
import { SdBadge } from '@sd-angular/core/components/badge';
|
|
3
3
|
import { SdSearch } from '@sd-angular/core/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { NestedKeyOf, Operator } from '@sdcorejs/utils/models';
|
|
5
5
|
import { SdUnwrapSignal } from '@sd-angular/core/utilities/models';
|
|
6
6
|
export type SdTableColumn<T = any> = SdTableColumnText<T> | SdTableColumnNumber<T> | SdTableColumnBool<T> | SdTableColumnDate<T> | SdTableColumnValues<T> | SdTableColumnLazyValues<T> | SdTableColumnChildren<T>;
|
|
7
7
|
export type SdTableColumnTransformFunc<T = any> = (value: any, rowData: T, args?: {
|
|
@@ -46,9 +46,9 @@ interface SdTableColumnBase<T = any> {
|
|
|
46
46
|
disabled?: boolean;
|
|
47
47
|
default?: any;
|
|
48
48
|
operator?: {
|
|
49
|
-
default?:
|
|
49
|
+
default?: Operator;
|
|
50
50
|
enable?: boolean;
|
|
51
|
-
list?:
|
|
51
|
+
list?: Operator[];
|
|
52
52
|
};
|
|
53
53
|
filterDef?: TemplateRef<any>;
|
|
54
54
|
};
|
|
@@ -58,12 +58,12 @@ interface SdTableColumnBase<T = any> {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
interface SdTableColumnText<T = any> extends SdTableColumnBase<T> {
|
|
61
|
-
field:
|
|
61
|
+
field: NestedKeyOf<T>;
|
|
62
62
|
type: 'string';
|
|
63
63
|
useBadge?: UseBadgeFunc<T>;
|
|
64
64
|
}
|
|
65
65
|
interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
|
|
66
|
-
field:
|
|
66
|
+
field: NestedKeyOf<T>;
|
|
67
67
|
type: 'number';
|
|
68
68
|
useBadge?: UseBadgeFunc<T>;
|
|
69
69
|
filter?: SdTableColumnBase['filter'] & {
|
|
@@ -71,7 +71,7 @@ interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
|
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
|
|
74
|
-
field:
|
|
74
|
+
field: NestedKeyOf<T>;
|
|
75
75
|
type: 'boolean';
|
|
76
76
|
useBadge?: UseBadgeFunc<T>;
|
|
77
77
|
option?: {
|
|
@@ -80,7 +80,7 @@ interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
|
|
83
|
-
field:
|
|
83
|
+
field: NestedKeyOf<T>;
|
|
84
84
|
type: 'date' | 'datetime' | 'time';
|
|
85
85
|
useBadge?: UseBadgeFunc<T>;
|
|
86
86
|
filter?: SdTableColumnBase['filter'] & {
|
|
@@ -88,24 +88,24 @@ interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
export interface SdTableColumnValues<T = any, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
91
|
-
field:
|
|
91
|
+
field: NestedKeyOf<T>;
|
|
92
92
|
type: 'values';
|
|
93
93
|
useBadge?: UseBadgeValuesFunc<T, K>;
|
|
94
94
|
option: {
|
|
95
95
|
items: K[] | Signal<K[]> | (() => Promise<K[]>);
|
|
96
|
-
valueField:
|
|
97
|
-
displayField:
|
|
96
|
+
valueField: NestedKeyOf<K>;
|
|
97
|
+
displayField: NestedKeyOf<K>;
|
|
98
98
|
selection?: 'MULTIPLE';
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
export interface SdTableColumnLazyValues<T = any, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
102
|
-
field:
|
|
102
|
+
field: NestedKeyOf<T>;
|
|
103
103
|
type: 'lazy-values';
|
|
104
104
|
useBadge?: UseBadgeFunc<T>;
|
|
105
105
|
option: {
|
|
106
106
|
items: SdSearch<K>;
|
|
107
|
-
valueField:
|
|
108
|
-
displayField:
|
|
107
|
+
valueField: NestedKeyOf<K>;
|
|
108
|
+
displayField: NestedKeyOf<K>;
|
|
109
109
|
views?: (values: string[]) => Promise<K[]>;
|
|
110
110
|
selection?: 'MULTIPLE';
|
|
111
111
|
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { MaterialIconFontSet
|
|
1
|
+
import { MaterialIconFontSet } from '@sd-angular/core/utilities/models';
|
|
2
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
2
3
|
export interface SdTableCommandOption<T = any> {
|
|
3
4
|
align?: 'left' | 'right';
|
|
4
5
|
commands?: SdTableCommand<T>[];
|
|
5
6
|
}
|
|
6
7
|
export type SdTableCommand<T = any> = SdTableCommandNormal<T> | SdTableCommandChildren<T>;
|
|
7
8
|
export interface SdTableCommandNormal<T = any> {
|
|
8
|
-
color?:
|
|
9
|
+
color?: Color;
|
|
9
10
|
icon?: string | ((rowData: T) => string);
|
|
10
11
|
fontSet?: MaterialIconFontSet;
|
|
11
12
|
title?: string | ((rowData: T) => string);
|
|
@@ -18,6 +18,12 @@ export interface SdTableMetaTree<T = any> {
|
|
|
18
18
|
parentId?: string;
|
|
19
19
|
/** Cached formatted child SdTableItem[] — populated on first expand/format */
|
|
20
20
|
childItems?: SdTableItem<T>[];
|
|
21
|
+
/**
|
|
22
|
+
* Hierarchical index path từ root tới row hiện tại — sibling-index (1-based) per level.
|
|
23
|
+
* Vd root thứ nhất = [1], child thứ 2 của root đó = [1, 2], grandchild thứ 1 = [1, 2, 1].
|
|
24
|
+
* Template STT join('.') → "1", "1.2", "1.2.1". Populate trong `flattenTree`.
|
|
25
|
+
*/
|
|
26
|
+
indexPath?: number[];
|
|
21
27
|
}
|
|
22
28
|
export interface SdTableDisplay {
|
|
23
29
|
tooltip?: string;
|
|
@@ -32,15 +38,24 @@ export interface SdTableDisplay {
|
|
|
32
38
|
isHtml: boolean;
|
|
33
39
|
click?: () => void;
|
|
34
40
|
}
|
|
41
|
+
export interface SdTableMetaGroup<T = any> {
|
|
42
|
+
/** Children items thuộc group này (chỉ set trên group header row). */
|
|
43
|
+
items?: SdTableItem<T>[];
|
|
44
|
+
/** true = row này là synthetic group header (sinh bởi SdGroupPipe). */
|
|
45
|
+
isGroupHeader?: boolean;
|
|
46
|
+
/** Hash key của group (= Utilities.hash(values)). */
|
|
47
|
+
key?: string;
|
|
48
|
+
/** Resolved group-field values (vd `{ customerId: 1, customerName: 'A' }`). */
|
|
49
|
+
values?: Record<string, any>;
|
|
50
|
+
/** Trạng thái expand. Chỉ ý nghĩa khi `option.group.collapsible = true`. */
|
|
51
|
+
isExpanded?: boolean;
|
|
52
|
+
}
|
|
35
53
|
export interface SdTableMeta<T> {
|
|
36
54
|
id: string;
|
|
37
55
|
display: Record<string, SdTableDisplay>;
|
|
38
56
|
selector?: SdTableMetaSelector;
|
|
39
57
|
expand?: SdTableMetaExpand;
|
|
40
|
-
group?:
|
|
41
|
-
htmlTemplate?: string;
|
|
42
|
-
items?: SdTableItem<T>[];
|
|
43
|
-
};
|
|
58
|
+
group?: SdTableMetaGroup<T>;
|
|
44
59
|
tree?: SdTableMetaTree<T>;
|
|
45
60
|
}
|
|
46
61
|
export interface SdTableItem<T = any> {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NestedKeyOf } from '@sdcorejs/utils/models';
|
|
2
2
|
import { SdTableFilterRequest } from '../services/table-filter/table-filter.model';
|
|
3
3
|
export type SdTableOptionExport<T = any> = SdTableOptionExportDefault<T> | SdTableOptionExportCustom;
|
|
4
4
|
export interface SdTableOptionExportDefault<T = any> {
|
|
@@ -23,7 +23,7 @@ export interface SdTableOptionExportCustom {
|
|
|
23
23
|
onExport: (filterRequest: SdTableFilterRequest) => Promise<void>;
|
|
24
24
|
}
|
|
25
25
|
export interface SdTableOptionExportColumn<T = any> {
|
|
26
|
-
field:
|
|
26
|
+
field: NestedKeyOf<T>;
|
|
27
27
|
title: string;
|
|
28
28
|
description?: string;
|
|
29
29
|
width?: string;
|
|
@@ -36,7 +36,7 @@ export interface SdTableOptionExportSheet<T = any> {
|
|
|
36
36
|
name: string;
|
|
37
37
|
items: T[] | (() => T[] | Promise<T[]>);
|
|
38
38
|
headers: {
|
|
39
|
-
value:
|
|
39
|
+
value: NestedKeyOf<T>;
|
|
40
40
|
display: string;
|
|
41
41
|
}[];
|
|
42
42
|
}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
+
import { NestedKeyOf } from '@sdcorejs/utils/models';
|
|
1
2
|
export interface SdTableOptionGroup<T = any> {
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Danh sách field dùng để nhóm. Item có cùng giá trị tất cả `fields` sẽ vào cùng group.
|
|
5
|
+
* Ví dụ `['customerId']` group orders theo khách hàng.
|
|
6
|
+
* Type-safe qua `NestedKeyOf<T>` — hỗ trợ dot-notation cho nested object (vd `'customer.id'`).
|
|
7
|
+
*/
|
|
8
|
+
fields: NestedKeyOf<T>[];
|
|
9
|
+
/**
|
|
10
|
+
* Mặc định group có collapse được không. true = render với UI có thể expand/collapse;
|
|
11
|
+
* false = luôn show toàn bộ children (mặc định).
|
|
12
|
+
*/
|
|
13
|
+
collapsible?: boolean;
|
|
14
|
+
/** Nếu collapsible, mặc định trạng thái ban đầu: true = collapsed, false = expanded (default). */
|
|
15
|
+
defaultCollapsed?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Predicate tùy chọn cho selection. Khi check `selectable` của group header.
|
|
18
|
+
* Mặc định: chỉ nhóm có >=1 child `selectable` mới hiển thị checkbox.
|
|
19
|
+
*/
|
|
20
|
+
selectable?: (children: T[]) => boolean;
|
|
4
21
|
}
|
|
@@ -21,6 +21,22 @@ export interface SdTableOptionSelector<T = any> {
|
|
|
21
21
|
* Dùng khi cần programmatically set selected items từ bên ngoài.
|
|
22
22
|
*/
|
|
23
23
|
defaultSelected?: (rowData: T) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Giữ lại selection khi user chuyển trang / filter / sort / reload.
|
|
26
|
+
* Selection chỉ bị clear khi user bấm nút X (onClearSelection) hoặc bỏ chọn từng item.
|
|
27
|
+
*
|
|
28
|
+
* - Default (false): selection bị mất khi data items được re-fetch (server-side) hoặc
|
|
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` (hash của data).
|
|
31
|
+
* Sau mỗi #render, restore `isSelected` cho item nào id đã có trong map.
|
|
32
|
+
* `selectedTableItems()` trả về TOÀN BỘ item đã chọn xuyên trang (kể cả off-page),
|
|
33
|
+
* nên action bar + callback `click(items)` nhận đầy đủ data đang được chọn.
|
|
34
|
+
*
|
|
35
|
+
* Lưu ý: matching dựa trên `Utilities.hash(data)` — hai item có cùng data shape sẽ
|
|
36
|
+
* trùng id (mong muốn). Nếu data có timestamp/random field thay đổi giữa các lần fetch,
|
|
37
|
+
* id sẽ khác và selection không restore được.
|
|
38
|
+
*/
|
|
39
|
+
preserveSelection?: boolean;
|
|
24
40
|
}
|
|
25
41
|
export type SdTableAction<T = any> = SdTableActionNormal<T> | SdTableActionChildren<T>;
|
|
26
42
|
export interface SdTableActionNormal<T = any> {
|
|
@@ -34,7 +50,7 @@ export interface SdTableActionNormal<T = any> {
|
|
|
34
50
|
* Font set của Material icon.
|
|
35
51
|
* Kiểu thực tế lấy từ `SdButton['fontSet']` và chỉ hỗ trợ các giá trị thuộc `MaterialIconFontSet`,
|
|
36
52
|
* ví dụ: `material-icons`, `material-icons-outlined`, `material-icons-round`,
|
|
37
|
-
* `material-icons-sharp
|
|
53
|
+
* `material-icons-sharp`.
|
|
38
54
|
* Nếu không truyền, `SdButton` sẽ dùng font set mặc định của nó.
|
|
39
55
|
*/
|
|
40
56
|
fontSet?: SdUnwrapSignal<SdButton['fontSet']>;
|
|
@@ -1,12 +1,100 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { NestedKeyOf } from '@sdcorejs/utils/models';
|
|
2
|
+
/**
|
|
3
|
+
* Cấu hình tree-rows cho `<sd-table>` — render dòng con inline dưới dòng cha
|
|
4
|
+
* kèm expand/collapse.
|
|
5
|
+
*
|
|
6
|
+
* Đây là discriminated union theo `loadType`:
|
|
7
|
+
* - `'static'` ({@link TableOptionTreeStatic}) — children đã nằm sẵn trong data
|
|
8
|
+
* (embedded array tại `childrenKey`). Không gọi API khi bung.
|
|
9
|
+
* - `'lazy'` ({@link TableOptionTreeLazy}) — children nạp theo yêu cầu qua
|
|
10
|
+
* `onExpandChildren` khi người dùng bung dòng lần đầu.
|
|
11
|
+
*
|
|
12
|
+
* `loadType` là discriminant: TypeScript dựa vào nó để narrow union (vd chỉ
|
|
13
|
+
* `static` mới có `childrenKey`/`defaultExpanded`, chỉ `lazy` mới có
|
|
14
|
+
* `onExpandChildren`). Dùng type-guard `isLazyTree()` trong `tree.util.ts` để
|
|
15
|
+
* narrow an toàn thay vì truy cập field trực tiếp trên union.
|
|
16
|
+
*
|
|
17
|
+
* @example Static (children embedded)
|
|
18
|
+
* ```ts
|
|
19
|
+
* tree: { loadType: 'static', childrenKey: 'children', defaultExpanded: 1 }
|
|
20
|
+
* ```
|
|
21
|
+
* @example Lazy (nạp theo yêu cầu)
|
|
22
|
+
* ```ts
|
|
23
|
+
* tree: { loadType: 'lazy', onExpandChildren: row => api.getChildren(row.id) }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export type SdTableOptionTree<T = any> = TableOptionTreeStatic<T> | TableOptionTreeLazy<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Tree với dữ liệu children **embedded** sẵn trong mỗi row.
|
|
29
|
+
*
|
|
30
|
+
* Table đọc mảng con tại `childrenKey` ngay trên object data; không có lời gọi
|
|
31
|
+
* bất đồng bộ nào khi bung dòng. Đây cũng là chế độ hỗ trợ **search ở cấp con**
|
|
32
|
+
* cho table `type: 'local'` (xem `tree.util.ts#subtreeMatches` /
|
|
33
|
+
* `filterMatchingChildren`): khi lọc, một nhánh được giữ lại nếu chính nó hoặc
|
|
34
|
+
* bất kỳ hậu duệ nào khớp từ khoá, và nhánh khớp sẽ tự bung.
|
|
35
|
+
*/
|
|
36
|
+
export interface TableOptionTreeStatic<T = any> {
|
|
37
|
+
/** Chế độ nạp children: dữ liệu đã embedded sẵn trong row. */
|
|
38
|
+
loadType: 'static';
|
|
39
|
+
/**
|
|
40
|
+
* Key trên object row chứa mảng children.
|
|
41
|
+
* Mặc định: `'children'`.
|
|
42
|
+
*/
|
|
43
|
+
childrenKey?: NestedKeyOf<T> | 'children';
|
|
44
|
+
/**
|
|
45
|
+
* Giới hạn độ sâu cây (level gốc = 0).
|
|
46
|
+
* `undefined` = không giới hạn.
|
|
47
|
+
*/
|
|
5
48
|
maxDepth?: number;
|
|
6
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Trạng thái bung mặc định khi load:
|
|
51
|
+
* - `false` — thu gọn hết (mặc định)
|
|
52
|
+
* - `true` — bung toàn bộ
|
|
53
|
+
* - `number N` — bung tới cấp `N` (row có `level < N` được bung)
|
|
54
|
+
*/
|
|
7
55
|
defaultExpanded?: boolean | number;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Số pixel thụt lề (indent) cho mỗi cấp sâu.
|
|
58
|
+
* Mặc định: `20`.
|
|
59
|
+
*/
|
|
60
|
+
indentSize?: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Tree với children **nạp lười (lazy)** theo yêu cầu.
|
|
64
|
+
*
|
|
65
|
+
* Khi người dùng bung một dòng lần đầu mà dòng đó chưa có children embedded,
|
|
66
|
+
* table gọi `onExpandChildren(row)` để nạp; kết quả được cache lại trên row
|
|
67
|
+
* (ghi vào key `'children'`) nên các lần bung sau không gọi lại.
|
|
68
|
+
*
|
|
69
|
+
* Lazy tree **không hỗ trợ** `childrenKey` tuỳ biến (luôn dùng `'children'` làm
|
|
70
|
+
* nơi lưu kết quả) và **không hỗ trợ** `defaultExpanded` (không thể bung mặc
|
|
71
|
+
* định nhánh chưa nạp).
|
|
72
|
+
*/
|
|
73
|
+
export interface TableOptionTreeLazy<T = any> {
|
|
74
|
+
/** Chế độ nạp children: nạp lười theo yêu cầu khi bung. */
|
|
75
|
+
loadType: 'lazy';
|
|
76
|
+
/**
|
|
77
|
+
* Giới hạn độ sâu cây (level gốc = 0).
|
|
78
|
+
* `undefined` = không giới hạn.
|
|
79
|
+
*/
|
|
80
|
+
maxDepth?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Hàm nạp children khi bung dòng chưa có children embedded.
|
|
83
|
+
* Trả về `Promise<T[]>`; kết quả được ghi vào key `'children'` của row data
|
|
84
|
+
* và cache cho các lần bung sau.
|
|
85
|
+
*/
|
|
86
|
+
onExpandChildren: (rowData: T) => Promise<T[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Xác định một row có con hay không — để quyết định có hiển thị icon expand.
|
|
89
|
+
* - Không truyền: MỌI lazy node đều hiện icon expand (không biết trước được).
|
|
90
|
+
* - Truyền: chỉ hiện icon khi trả `true`; trả `false` ⇒ row là lá (ẩn icon,
|
|
91
|
+
* không gọi `onExpandChildren`).
|
|
92
|
+
* Lưu ý: nếu row đã có children embedded sẵn thì luôn coi là có con (bỏ qua hàm này).
|
|
93
|
+
*/
|
|
94
|
+
hasChildren?: (rowData: T) => boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Số pixel thụt lề (indent) cho mỗi cấp sâu.
|
|
97
|
+
* Mặc định: `20`.
|
|
98
|
+
*/
|
|
11
99
|
indentSize?: number;
|
|
12
100
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PagingReq } from '@sdcorejs/utils/models';
|
|
2
2
|
import { SdTableFilterRequest, SdTableOptionFilter } from '../services/table-filter/table-filter.model';
|
|
3
3
|
import { SdTableColumn } from './table-column.model';
|
|
4
4
|
import { SdTableCommand, SdTableCommandOption } from './table-command.model';
|
|
@@ -86,6 +86,15 @@ interface SdTableBaseOption<T = any> {
|
|
|
86
86
|
/** Width của cột (mặc định '50px'). */
|
|
87
87
|
width?: string;
|
|
88
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Bật cột filler ở cuối row để hấp thụ leftover width khi tổng width các cột data < container.
|
|
91
|
+
* Khi enabled = true, các cột utility (selection / STT / command) không bị browser stretch trên màn rộng.
|
|
92
|
+
* Mặc định off — table tự stretch cột data theo `width: 100%` như cũ.
|
|
93
|
+
*/
|
|
94
|
+
filler?: {
|
|
95
|
+
/** Bật/tắt cột filler. */
|
|
96
|
+
enabled?: boolean;
|
|
97
|
+
};
|
|
89
98
|
/**
|
|
90
99
|
* Cấu hình kéo-thả đổi thứ tự dòng.
|
|
91
100
|
* Chỉ bật khi table cho phép reorder dữ liệu phía client.
|
|
@@ -155,7 +164,7 @@ interface SdTableServerOption<T = any> extends SdTableBaseOption<T> {
|
|
|
155
164
|
* `pagingReq` là dữ liệu paging đã được chuẩn hóa để dễ map sang API backend.
|
|
156
165
|
* Hàm cần trả về `{ items, total }` để table render và tính phân trang.
|
|
157
166
|
*/
|
|
158
|
-
items: (filterRequest: SdTableFilterRequest<T>, pagingReq:
|
|
167
|
+
items: (filterRequest: SdTableFilterRequest<T>, pagingReq: PagingReq<T>) => Promise<{
|
|
159
168
|
items: T[];
|
|
160
169
|
total: number;
|
|
161
170
|
}>;
|
|
@@ -3,7 +3,21 @@ import { SdTableOption } from '../models/table-option.model';
|
|
|
3
3
|
import { SdTableItem } from '../models/table-item.model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class SdGroupPipe implements PipeTransform {
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Nhóm items theo `option.group.fields`. Mỗi group sinh ra 1 synthetic SdTableItem
|
|
8
|
+
* (group header) đặt trước children. Header có `meta.group.isGroupHeader = true` + `key`
|
|
9
|
+
* + `values` + `items` + `isExpanded` để template + table consume.
|
|
10
|
+
*
|
|
11
|
+
* Khi `option.group.collapsible = true` + group đang collapse → children bị lọc khỏi output.
|
|
12
|
+
*
|
|
13
|
+
* `expandState` (optional, owned by component) — Map<key, expanded> giữ trạng thái
|
|
14
|
+
* expand/collapse qua các lần transform. Pipe đọc state từ Map; nếu key chưa tồn tại,
|
|
15
|
+
* dùng `!option.group.defaultCollapsed`. Pipe ghi state về Map cho lần read sau.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* `_items | sdGroup: _tableOption : groupExpandState`
|
|
19
|
+
*/
|
|
20
|
+
transform(items: SdTableItem[], gridOption: SdTableOption, expandState?: Map<string, boolean>): SdTableItem[];
|
|
7
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdGroupPipe, never>;
|
|
8
22
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdGroupPipe, "sdGroup", true>;
|
|
9
23
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TemplateRef } from '@angular/core';
|
|
2
2
|
import { SdSearch } from '@sd-angular/core/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { NestedKeyOf, Operator, Order, PagingReq } from '@sdcorejs/utils/models';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import { SdTableColumn } from '../../models/table-column.model';
|
|
6
6
|
export interface SdTableQuickFilter {
|
|
@@ -12,20 +12,20 @@ export interface TableFilterConfiguration {
|
|
|
12
12
|
inlineExternal: Record<string, boolean>;
|
|
13
13
|
}
|
|
14
14
|
export interface TableFilterValue {
|
|
15
|
-
columnOperator?: Record<string,
|
|
15
|
+
columnOperator?: Record<string, Operator>;
|
|
16
16
|
columnFilter?: Record<string, any>;
|
|
17
17
|
externalFilter?: Record<string, any>;
|
|
18
18
|
notReload?: boolean;
|
|
19
19
|
filtered?: boolean;
|
|
20
20
|
}
|
|
21
21
|
export interface SdTableFilterRequest<T = any> {
|
|
22
|
-
columnOperator: Record<
|
|
23
|
-
rawColumnFilter: Record<
|
|
22
|
+
columnOperator: Record<NestedKeyOf<T>, Operator>;
|
|
23
|
+
rawColumnFilter: Record<NestedKeyOf<T>, any>;
|
|
24
24
|
rawExternalFilter: Record<string, any>;
|
|
25
25
|
pageNumber: number;
|
|
26
26
|
pageSize: number;
|
|
27
27
|
orderBy?: string;
|
|
28
|
-
orderDirection?:
|
|
28
|
+
orderDirection?: Order['direction'];
|
|
29
29
|
isExported?: boolean;
|
|
30
30
|
visibledColumns?: SdTableColumn[];
|
|
31
31
|
}
|
|
@@ -39,7 +39,7 @@ export interface SdTableOptionFilter<T = any> {
|
|
|
39
39
|
/** Ẩn tất cả inline filter (chỉ còn external), nếu chọn auto thì sẽ ẩn khi total row <= 10, phù hợp cho các màn detail có ít dữ liệu */
|
|
40
40
|
hideInlineFilter?: boolean | 'auto';
|
|
41
41
|
/** Hàm xử lý khi đổi Operator của filter column */
|
|
42
|
-
operatorChange?: (column?: SdTableColumn, operator?:
|
|
42
|
+
operatorChange?: (column?: SdTableColumn, operator?: Operator) => void;
|
|
43
43
|
/** Danh sách external filter */
|
|
44
44
|
externalFilters?: SdTableExternalFilter[];
|
|
45
45
|
/** Số lượng cột external filter trên mỗi hàng (mặc định: 6) */
|
|
@@ -57,8 +57,8 @@ export declare const SdConvertToPagingReq: (filterRequest: SdTableFilterRequest,
|
|
|
57
57
|
columns?: SdTableColumn[];
|
|
58
58
|
externalFilters?: SdTableExternalFilter[];
|
|
59
59
|
fieldMapping?: Record<string, string>;
|
|
60
|
-
orders?:
|
|
61
|
-
}) =>
|
|
60
|
+
orders?: Order[];
|
|
61
|
+
}) => PagingReq;
|
|
62
62
|
export declare type SdTableExternalFilter<TData = any> = TextFilter<TData> | DateFilter<TData> | DateTimeFilter<TData> | DateRangeFilter<TData> | NumberFilter<TData> | ValuesFilter<TData> | LazyValuesFilter<TData> | BooleanFilter<TData> | CustomFilter<TData>;
|
|
63
63
|
interface BaseFilter<TData = any> {
|
|
64
64
|
field: string;
|
|
@@ -66,7 +66,7 @@ interface BaseFilter<TData = any> {
|
|
|
66
66
|
defaultShowing?: boolean;
|
|
67
67
|
required?: boolean;
|
|
68
68
|
hidden?: boolean;
|
|
69
|
-
defaultOperator?:
|
|
69
|
+
defaultOperator?: Operator;
|
|
70
70
|
data?: TData;
|
|
71
71
|
onChange?: (value: any) => void;
|
|
72
72
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SdStorageService } from '@sd-angular/core/services';
|
|
2
|
-
import {
|
|
2
|
+
import { Operator } from '@sdcorejs/utils/models';
|
|
3
3
|
import { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';
|
|
4
4
|
import { SdTableColumn } from '../../models/table-column.model';
|
|
5
5
|
import { SdTableExternalFilter, SdTableOptionFilter, TableFilterRegister } from './table-filter.model';
|
|
@@ -13,7 +13,7 @@ export declare class SdTableFilterService {
|
|
|
13
13
|
columns: SdTableColumn[] | undefined;
|
|
14
14
|
externalFilters: SdTableExternalFilter[] | undefined;
|
|
15
15
|
filterDefs: SdTableFilterDefDirective[] | undefined;
|
|
16
|
-
columnOperator?: Record<string,
|
|
16
|
+
columnOperator?: Record<string, Operator>;
|
|
17
17
|
}) => TableFilterRegister;
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTableFilterService, never>;
|
|
19
19
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdTableFilterService>;
|
|
@@ -1,10 +1,51 @@
|
|
|
1
|
-
import { SdTableOptionTree } from '../../models/table-option-tree.model';
|
|
1
|
+
import { SdTableOptionTree, TableOptionTreeLazy } from '../../models/table-option-tree.model';
|
|
2
2
|
import { SdTableItem } from '../../models/table-item.model';
|
|
3
|
+
/**
|
|
4
|
+
* Type-guard: tree có nạp children lười (lazy) hay không.
|
|
5
|
+
* Dùng để narrow discriminated union `SdTableOptionTree` một cách an toàn —
|
|
6
|
+
* thay vì truy cập `option.onExpandChildren` trực tiếp trên union (chỉ tồn tại
|
|
7
|
+
* ở nhánh lazy).
|
|
8
|
+
*/
|
|
9
|
+
export declare const isLazyTree: <T = any>(option?: SdTableOptionTree<T>) => option is TableOptionTreeLazy<T>;
|
|
10
|
+
/**
|
|
11
|
+
* Key chứa mảng children trên object row.
|
|
12
|
+
* - `static`: lấy `childrenKey` đã cấu hình, mặc định `'children'`.
|
|
13
|
+
* - `lazy`: không có `childrenKey` riêng → luôn dùng `'children'` làm nơi lưu
|
|
14
|
+
* kết quả nạp lười.
|
|
15
|
+
*/
|
|
3
16
|
export declare const getChildrenKey: (option?: SdTableOptionTree) => string;
|
|
4
17
|
export declare const getChildrenFromData: <T>(data: T, option?: SdTableOptionTree) => T[];
|
|
18
|
+
/**
|
|
19
|
+
* Trạng thái bung mặc định cho một cấp.
|
|
20
|
+
* Chỉ `static` mới có `defaultExpanded`; lazy luôn trả `false` (không thể bung
|
|
21
|
+
* mặc định nhánh chưa nạp).
|
|
22
|
+
*/
|
|
5
23
|
export declare const resolveDefaultExpanded: (level: number, option?: SdTableOptionTree) => boolean;
|
|
6
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Row có khả năng có children hay không (để hiện nút bung).
|
|
26
|
+
* - Có children embedded → true.
|
|
27
|
+
* - Lazy tree: dùng `hasChildren(row.data)` nếu được cấu hình; không thì luôn
|
|
28
|
+
* true (chưa biết cho tới khi nạp).
|
|
29
|
+
*/
|
|
30
|
+
export declare const resolveHasChildren: <T>(row: SdTableItem<T>, option?: SdTableOptionTree<T>) => boolean;
|
|
31
|
+
/** Row cần nạp lười (lazy) khi bung: là lazy tree và chưa có children embedded. */
|
|
7
32
|
export declare const hasLazyChildren: <T>(row: SdTableItem<T>, option?: SdTableOptionTree) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* True nếu `data` HOẶC bất kỳ hậu duệ nào (theo `childrenKey`) thoả `predicate`.
|
|
35
|
+
*
|
|
36
|
+
* Dùng cho search ở cấp con (static tree, table `type: 'local'`): một nhánh
|
|
37
|
+
* gốc được giữ lại trong kết quả lọc nếu subtree của nó có ít nhất một node
|
|
38
|
+
* khớp từ khoá. `visited` chống đệ quy vô hạn khi data có circular reference.
|
|
39
|
+
*/
|
|
40
|
+
export declare const subtreeMatches: <T>(data: T, predicate: (data: T) => boolean, option?: SdTableOptionTree, visited?: Set<unknown>) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Lọc mảng children: chỉ giữ child có subtree khớp `predicate`.
|
|
43
|
+
*
|
|
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` (hash từ data) ổn định, selection / trạng thái bung không
|
|
46
|
+
* bị mất khi từ khoá search đổi. Đây là bước "prune" của tính năng search-con.
|
|
47
|
+
*/
|
|
48
|
+
export declare const filterMatchingChildren: <T>(children: T[], predicate: (data: T) => boolean, option?: SdTableOptionTree) => T[];
|
|
8
49
|
export declare const flattenTree: <T>(roots: SdTableItem<T>[], option?: SdTableOptionTree, visited?: Set<string>) => SdTableItem<T>[];
|
|
9
50
|
/** Thu thập mọi SdTableItem đã format trong cây (kể cả node đang collapse). */
|
|
10
51
|
export declare const collectFormattedTreeRows: <T>(roots: SdTableItem<T>[]) => SdTableItem<T>[];
|