@sdcorejs/angular 19.1.3 → 19.1.5
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 +19 -14
- package/components/audit-diff/index.d.ts +2 -0
- package/components/audit-diff/src/audit-diff.component.d.ts +30 -0
- package/components/audit-diff/src/audit-diff.engine.d.ts +40 -0
- package/components/badge/src/badge.component.d.ts +1 -1
- package/components/breadcrumb/index.d.ts +1 -0
- package/components/breadcrumb/src/breadcrumb.component.d.ts +50 -0
- package/components/data-state/index.d.ts +1 -0
- package/components/data-state/src/data-state.component.d.ts +40 -0
- package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +1 -2
- package/components/document-builder/src/document-builder.component.d.ts +4 -4
- package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +7 -8
- package/components/form-generic/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +4 -5
- package/components/form-generic/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +1 -2
- package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +6 -5
- package/components/form-generic/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +4 -5
- package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +9 -9
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +8 -7
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +8 -7
- package/components/form-generic/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +3 -4
- package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +5 -6
- package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +1 -2
- package/components/form-generic/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +4 -5
- package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +6 -5
- package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +7 -6
- package/components/form-generic/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +7 -8
- package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +3 -4
- package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +6 -6
- package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +3 -3
- package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +7 -7
- package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +6 -6
- package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +6 -7
- package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +6 -7
- package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +8 -8
- package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +7 -6
- package/components/form-generic/src/components/form-render/components/item/item.component.d.ts +4 -4
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +8 -9
- package/components/form-generic/src/pipes/component-viewed.pipe.d.ts +2 -3
- package/components/form-generic/src/pipes/html.pipe.d.ts +2 -2
- package/components/form-generic/src/services/form-render.service.d.ts +2 -2
- package/components/import-excel/src/import-excel.component.d.ts +4 -7
- package/components/import-excel/src/pipes/column-transform.pipe.d.ts +3 -2
- package/components/index.d.ts +4 -0
- package/components/job-progress/index.d.ts +1 -0
- package/components/job-progress/src/job-progress.component.d.ts +34 -0
- package/components/mini-editor/src/mini-editor.component.d.ts +7 -7
- package/components/modal/src/modal.component.d.ts +6 -1
- package/components/preview/index.d.ts +3 -0
- package/components/preview/src/preview-pdf/preview-pdf.browser.d.ts +28 -0
- package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +61 -23
- package/components/preview/src/preview-pdf/preview-pdf.pdfjs.d.ts +77 -0
- package/components/preview/src/preview-pdf/preview-pdf.print.d.ts +10 -0
- package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +11 -9
- package/components/side-drawer/src/side-drawer.component.d.ts +6 -1
- package/components/tab/src/tab-group.component.d.ts +1 -0
- package/components/tab/src/tab.component.d.ts +7 -1
- package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +3 -4
- package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
- package/components/tab-router/src/services/tab-decorator.service.d.ts +2 -1
- package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +1 -1
- package/components/table/src/components/popup-export/popup-export.component.d.ts +6 -6
- package/components/table/src/models/table-column.model.d.ts +1 -1
- package/components/table/src/services/config.service.d.ts +3 -2
- package/components/table/src/services/table-filter/table-filter.model.d.ts +1 -1
- package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
- package/components/tree/src/tree.component.d.ts +13 -2
- package/components/tree/src/tree.model.d.ts +11 -0
- package/components/upload-file/src/components/preview/preview.component.d.ts +4 -4
- package/directives/src/sd-hover-copy.directive.d.ts +6 -5
- package/directives/src/sd-href.directive.d.ts +2 -2
- package/directives/src/sd-scroll.directive.d.ts +3 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +16 -21
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +463 -806
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +23 -33
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +9 -19
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +60 -3
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +1437 -217
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +38 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +16 -22
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +47 -3
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +94 -61
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +185 -16
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +14 -21
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +4 -0
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +7 -7
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -73
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +6 -3
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +289 -55
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -68
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -20
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -66
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +6 -5
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +279 -0
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs +309 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +375 -10
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +992 -166
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
- package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
- package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +3 -4
- package/forms/checkbox/src/checkbox.component.d.ts +4 -8
- package/forms/date/src/date.component.d.ts +3 -2
- package/forms/date-range/src/date-range.component.d.ts +5 -8
- package/forms/datetime/src/datetime.component.d.ts +3 -2
- package/forms/entity-picker/index.d.ts +1 -0
- package/forms/entity-picker/src/entity-picker.component.d.ts +123 -0
- package/forms/index.d.ts +6 -0
- package/forms/input/index.d.ts +1 -0
- package/forms/input/src/input-mask.d.ts +43 -0
- package/forms/input/src/input.component.d.ts +26 -9
- package/forms/input-number/src/input-number.component.d.ts +1 -1
- package/forms/models/index.d.ts +1 -0
- package/forms/models/src/sd-form-control-connector.d.ts +86 -0
- package/forms/radio/src/radio.component.d.ts +12 -8
- package/forms/src/forms.module.d.ts +9 -5
- package/forms/switch/src/switch.component.d.ts +4 -7
- package/forms/time/index.d.ts +3 -0
- package/forms/time/src/time-picker.adapter.d.ts +13 -0
- package/forms/time/src/time-value.d.ts +19 -0
- package/forms/time/src/time.component.d.ts +78 -0
- package/forms/time-range/index.d.ts +2 -0
- package/forms/time-range/src/time-range-value.d.ts +14 -0
- package/forms/time-range/src/time-range.component.d.ts +80 -0
- package/forms/tree-select/index.d.ts +1 -0
- package/forms/tree-select/src/tree-select.component.d.ts +71 -0
- package/i18n/src/en.d.ts +72 -2
- package/interceptors/no-internet/no-internet.interceptor.d.ts +2 -3
- package/interceptors/unauthorized/unauthorized.interceptor.d.ts +2 -2
- package/modules/layout/components/index.d.ts +6 -0
- package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -2
- package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +33 -0
- package/modules/layout/components/shared/search-field/search-field.component.d.ts +9 -0
- package/modules/layout/components/shared/user-menu/user-menu.component.d.ts +45 -0
- package/modules/layout/components/sidebar-mobile-v1/components/user/user.component.d.ts +3 -11
- package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +27 -0
- package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +28 -0
- package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +4 -4
- package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +3 -9
- package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -2
- package/modules/layout/components/sidebar-v2/main.component.d.ts +36 -0
- package/modules/layout/components/sidebar-v3/main.component.d.ts +29 -0
- package/modules/layout/configurations/layout.configuration.d.ts +78 -5
- package/modules/layout/index.d.ts +1 -0
- package/modules/layout/pipes/menu.pipe.d.ts +2 -2
- package/modules/layout/services/index.d.ts +3 -0
- package/modules/layout/services/layout.service.d.ts +2 -2
- package/modules/layout/services/menu/menu.utils.d.ts +6 -0
- package/modules/layout/services/navigation-state/navigation-state.service.d.ts +18 -0
- package/modules/layout/services/responsive/responsive.service.d.ts +12 -0
- package/modules/layout/services/storage/storage.service.d.ts +21 -8
- package/package.json +49 -1
- package/pipes/src/safe-html.pipe.d.ts +2 -2
- package/services/api/src/api.model.d.ts +54 -15
- package/services/api/src/api.service.d.ts +13 -8
- package/services/api/src/interceptors/api.interceptor.d.ts +1 -1
- package/services/cache/src/cache.model.d.ts +46 -13
- package/services/cache/src/cache.service.d.ts +5 -2
- package/services/confirm/src/lib/confirm.service.d.ts +2 -2
- package/services/docx/src/lib/docx.service.d.ts +2 -3
- package/services/index.d.ts +4 -0
- package/services/loading/src/loading.service.d.ts +15 -8
- package/services/notify/src/components/toast/toast.component.d.ts +2 -3
- package/services/persistence/index.d.ts +5 -0
- package/services/persistence/src/graph-serializer.d.ts +16 -0
- package/services/persistence/src/persistence-envelope.d.ts +28 -0
- package/services/persistence/src/persistence-key.d.ts +17 -0
- package/services/persistence/src/persistence.model.d.ts +63 -0
- package/services/persistence/src/storage-adapter.d.ts +29 -0
- package/services/storage/src/storage.model.d.ts +20 -5
- package/services/storage/src/storage.service.d.ts +6 -3
- package/services/task/index.d.ts +3 -0
- package/services/task/src/task.model.d.ts +75 -0
- package/services/task/src/task.service.d.ts +14 -0
- package/services/task/src/task.tokens.d.ts +12 -0
- package/services/unsaved-changes/index.d.ts +4 -0
- package/services/unsaved-changes/src/unsaved-changes.adapters.d.ts +15 -0
- package/services/unsaved-changes/src/unsaved-changes.model.d.ts +41 -0
- package/services/unsaved-changes/src/unsaved-changes.service.d.ts +16 -0
- package/services/unsaved-changes/src/unsaved-changes.tokens.d.ts +9 -0
- package/services/viewport/index.d.ts +3 -0
- package/services/viewport/src/viewport.model.d.ts +12 -0
- package/services/viewport/src/viewport.service.d.ts +18 -0
- package/services/viewport/src/viewport.tokens.d.ts +6 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SdLayoutUserInfo } from '../../../../configurations';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class LayoutUserComponent {
|
|
4
|
-
#private;
|
|
5
4
|
isMobileOrTablet: import("@angular/core").InputSignal<boolean>;
|
|
6
5
|
isMenuLock: import("@angular/core").InputSignal<boolean>;
|
|
7
6
|
isShowSidebar: import("@angular/core").InputSignal<boolean>;
|
|
@@ -9,14 +8,9 @@ export declare class LayoutUserComponent {
|
|
|
9
8
|
menuClosed: import("@angular/core").OutputEmitterRef<void>;
|
|
10
9
|
menuOpened: import("@angular/core").OutputEmitterRef<void>;
|
|
11
10
|
toggleMenuLock: import("@angular/core").OutputEmitterRef<Event>;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
onMenuClosed: () => void;
|
|
16
|
-
keepOpenWhenClickInsideMenu: (event: Event) => void;
|
|
17
|
-
logout: () => void;
|
|
18
|
-
changePassword: () => void;
|
|
19
|
-
onToggleMenuLock: (event: Event) => void;
|
|
11
|
+
onMenuOpened(): void;
|
|
12
|
+
onMenuClosed(): void;
|
|
13
|
+
onToggleMenuLock(event: Event): void;
|
|
20
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<LayoutUserComponent, never>;
|
|
21
15
|
static ɵcmp: i0.ɵɵComponentDeclaration<LayoutUserComponent, "lib-layout-user", never, { "isMobileOrTablet": { "alias": "isMobileOrTablet"; "required": false; "isSignal": true; }; "isMenuLock": { "alias": "isMenuLock"; "required": false; "isSignal": true; }; "isShowSidebar": { "alias": "isShowSidebar"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; }, { "menuClosed": "menuClosed"; "menuOpened": "menuOpened"; "toggleMenuLock": "toggleMenuLock"; }, never, never, true, never>;
|
|
22
16
|
}
|
|
@@ -8,7 +8,7 @@ export declare class SidebarV1Component {
|
|
|
8
8
|
menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
|
|
9
9
|
userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
|
|
10
10
|
sidebar: import("@angular/core").InputSignal<SidebarConfigurationV1>;
|
|
11
|
-
|
|
11
|
+
isMobile: import("@angular/core").InputSignal<boolean>;
|
|
12
12
|
isMenuLock: import("@angular/core").WritableSignal<boolean>;
|
|
13
13
|
isShowSidebar: import("@angular/core").WritableSignal<boolean>;
|
|
14
14
|
onhover: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -18,7 +18,8 @@ export declare class SidebarV1Component {
|
|
|
18
18
|
onPopupOfSideBarClosed: () => void;
|
|
19
19
|
onExpandSideBar: () => void;
|
|
20
20
|
onMouseleaveSideBar: () => void;
|
|
21
|
+
onSidenavOpenedChange: (opened: boolean) => void;
|
|
21
22
|
onToggle: (data: boolean | null) => void;
|
|
22
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV1Component, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV1Component, "sidebar-v1", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV1Component, "sidebar-v1", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
25
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SdLayoutUserInfo, SidebarConfigurationV2 } from '../../configurations';
|
|
2
|
+
import { SdLayoutMenu } from '../../services';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
interface SidebarV2RailItem {
|
|
5
|
+
menu: SdLayoutMenu;
|
|
6
|
+
key: string;
|
|
7
|
+
title: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class SidebarV2Component {
|
|
10
|
+
#private;
|
|
11
|
+
menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
|
|
12
|
+
userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
|
|
13
|
+
sidebar: import("@angular/core").InputSignal<SidebarConfigurationV2>;
|
|
14
|
+
activeGroupKey: import("@angular/core").WritableSignal<string>;
|
|
15
|
+
isFlyoutOpen: import("@angular/core").WritableSignal<boolean>;
|
|
16
|
+
isFlyoutLocked: import("@angular/core").WritableSignal<boolean>;
|
|
17
|
+
searchText: import("@angular/core").WritableSignal<string>;
|
|
18
|
+
activePath: import("@angular/core").WritableSignal<string>;
|
|
19
|
+
interaction: import("@angular/core").Signal<"click" | "hover-lock">;
|
|
20
|
+
railItems: import("@angular/core").Signal<SidebarV2RailItem[]>;
|
|
21
|
+
activeGroup: import("@angular/core").Signal<SdLayoutMenu | undefined>;
|
|
22
|
+
contextMenus: import("@angular/core").Signal<SdLayoutMenu[]>;
|
|
23
|
+
pinnedKeys: import("@angular/core").WritableSignal<string[]>;
|
|
24
|
+
constructor();
|
|
25
|
+
selectGroup(menu: SdLayoutMenu): void;
|
|
26
|
+
previewGroup(menu: SdLayoutMenu): void;
|
|
27
|
+
leaveFlyout(): void;
|
|
28
|
+
closeFromBackdrop(): void;
|
|
29
|
+
closeFromEscape(): void;
|
|
30
|
+
closeFromNavigation(): void;
|
|
31
|
+
onNavigate(menu: SdLayoutMenu): void;
|
|
32
|
+
onTogglePinned(menu: SdLayoutMenu): void;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV2Component, never>;
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV2Component, "sidebar-v2", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SdLayoutUserInfo, SidebarConfigurationV3 } from '../../configurations';
|
|
2
|
+
import { SdLayoutMenu, SdLayoutRootMenu } from '../../services';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class SidebarV3Component {
|
|
5
|
+
#private;
|
|
6
|
+
menus: import("@angular/core").InputSignal<SdLayoutMenu[]>;
|
|
7
|
+
userInfo: import("@angular/core").InputSignal<SdLayoutUserInfo>;
|
|
8
|
+
sidebar: import("@angular/core").InputSignal<SidebarConfigurationV3>;
|
|
9
|
+
isCollapsed: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
searchText: import("@angular/core").WritableSignal<string>;
|
|
11
|
+
activePath: import("@angular/core").WritableSignal<string>;
|
|
12
|
+
searchResults: import("@angular/core").Signal<SdLayoutRootMenu[]>;
|
|
13
|
+
recentConfiguration: import("@angular/core").Signal<import("@sdcorejs/angular/modules/layout").ResolvedSidebarRecentConfiguration>;
|
|
14
|
+
pinnedKeys: import("@angular/core").WritableSignal<string[]>;
|
|
15
|
+
pinnedMenus: import("@angular/core").Signal<(SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
|
|
16
|
+
recentMenus: import("@angular/core").Signal<(SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
|
|
17
|
+
collapsedItems: import("@angular/core").Signal<{
|
|
18
|
+
menu: SdLayoutMenu;
|
|
19
|
+
key: string;
|
|
20
|
+
title: string;
|
|
21
|
+
}[]>;
|
|
22
|
+
constructor();
|
|
23
|
+
toggleCollapsed(): void;
|
|
24
|
+
activateCollapsedMenu(menu: SdLayoutMenu): void;
|
|
25
|
+
navigateMenu(menu: SdLayoutMenu): void;
|
|
26
|
+
onTogglePinned(menu: SdLayoutMenu): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SidebarV3Component, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarV3Component, "sidebar-v3", never, { "menus": { "alias": "menus"; "required": false; "isSignal": true; }; "userInfo": { "alias": "userInfo"; "required": true; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
29
|
+
}
|
|
@@ -1,11 +1,46 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
1
|
+
import { InjectionToken, Signal } from '@angular/core';
|
|
2
2
|
import { MaybeAsync } from '@sdcorejs/utils/models';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
/** Consumer-owned account action invoked without arguments by the shared user menu. */
|
|
5
|
+
export type SdLayoutAccountAction = () => void | Promise<void>;
|
|
6
|
+
/** Notification badge source and the action that opens the consumer's notification experience. */
|
|
7
|
+
export interface SdLayoutNotificationConfiguration {
|
|
8
|
+
/**
|
|
9
|
+
* Số lượng thông báo chưa đọc. Hỗ trợ giá trị tĩnh hoặc nguồn reactive dài hạn.
|
|
10
|
+
*/
|
|
11
|
+
count: number | Signal<number> | Observable<number>;
|
|
12
|
+
/**
|
|
13
|
+
* Tác vụ do consumer xử lý khi người dùng chọn thông báo.
|
|
14
|
+
*/
|
|
15
|
+
action: SdLayoutAccountAction;
|
|
16
|
+
}
|
|
3
17
|
export interface ISdLayoutConfiguration {
|
|
4
18
|
homeUrl?: string;
|
|
19
|
+
mobileBreakpoint?: number;
|
|
5
20
|
sidebar: ISdSidebarConfiguration | (() => MaybeAsync<ISdSidebarConfiguration>);
|
|
6
21
|
userInfo: SdLayoutUserInfo | (() => MaybeAsync<SdLayoutUserInfo>);
|
|
7
|
-
signout:
|
|
8
|
-
changePassword?:
|
|
22
|
+
signout: SdLayoutAccountAction;
|
|
23
|
+
changePassword?: SdLayoutAccountAction;
|
|
24
|
+
/**
|
|
25
|
+
* Tác vụ chỉnh sửa hồ sơ do consumer cung cấp.
|
|
26
|
+
*/
|
|
27
|
+
updateProfile?: SdLayoutAccountAction;
|
|
28
|
+
/**
|
|
29
|
+
* Tác vụ mở thiết lập tài khoản do consumer cung cấp.
|
|
30
|
+
*/
|
|
31
|
+
setting?: SdLayoutAccountAction;
|
|
32
|
+
/**
|
|
33
|
+
* Cấu hình số lượng và tác vụ thông báo của tài khoản.
|
|
34
|
+
*/
|
|
35
|
+
notification?: SdLayoutNotificationConfiguration;
|
|
36
|
+
}
|
|
37
|
+
/** Optional role metadata rendered below the user's email when `text` is non-empty. */
|
|
38
|
+
export interface SdLayoutUserRole {
|
|
39
|
+
text: string;
|
|
40
|
+
/** Icon name resolved by `SdIcon`. */
|
|
41
|
+
icon?: string;
|
|
42
|
+
/** CSS color applied to the role metadata. */
|
|
43
|
+
color?: string;
|
|
9
44
|
}
|
|
10
45
|
export interface SdLayoutUserInfo {
|
|
11
46
|
/**
|
|
@@ -29,9 +64,24 @@ export interface SdLayoutUserInfo {
|
|
|
29
64
|
* Hỗ trợ các định dạng: URL (http/https), chuỗi base64 (data:image), hoặc đường dẫn nội bộ.
|
|
30
65
|
*/
|
|
31
66
|
avatar?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Chức vụ hoặc vai trò hiển thị cùng thông tin người dùng.
|
|
69
|
+
* Không render khi `text` rỗng.
|
|
70
|
+
*/
|
|
71
|
+
role?: SdLayoutUserRole;
|
|
32
72
|
}
|
|
33
|
-
export
|
|
34
|
-
export interface
|
|
73
|
+
export declare const DEFAULT_LAYOUT_MOBILE_BREAKPOINT = 1024;
|
|
74
|
+
export interface SidebarConfigurationBase {
|
|
75
|
+
brandColor?: string;
|
|
76
|
+
brandLightColor?: string;
|
|
77
|
+
logoUrl?: string;
|
|
78
|
+
defaultTitle?: string;
|
|
79
|
+
pin?: {
|
|
80
|
+
enabled?: boolean;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export type ISdSidebarConfiguration = SidebarConfigurationV1 | SidebarConfigurationV2 | SidebarConfigurationV3;
|
|
84
|
+
export interface SidebarConfigurationV1 extends SidebarConfigurationBase {
|
|
35
85
|
version: 1;
|
|
36
86
|
/**
|
|
37
87
|
* Màu brand chính.
|
|
@@ -64,4 +114,27 @@ export interface SidebarConfigurationV1 {
|
|
|
64
114
|
enabled?: boolean;
|
|
65
115
|
};
|
|
66
116
|
}
|
|
117
|
+
export interface SidebarConfigurationV2 extends SidebarConfigurationBase {
|
|
118
|
+
version: 2;
|
|
119
|
+
interaction?: 'click' | 'hover-lock';
|
|
120
|
+
primaryMenuIds?: string[];
|
|
121
|
+
}
|
|
122
|
+
export interface SidebarConfigurationV3 extends SidebarConfigurationBase {
|
|
123
|
+
version: 3;
|
|
124
|
+
defaultCollapsed?: boolean;
|
|
125
|
+
recent?: {
|
|
126
|
+
enabled?: boolean;
|
|
127
|
+
maxItems?: number;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export interface ResolvedSidebarRecentConfiguration {
|
|
131
|
+
enabled: boolean;
|
|
132
|
+
maxItems: number;
|
|
133
|
+
}
|
|
134
|
+
export declare function normalizeLayoutMobileBreakpoint(value: number | undefined): number;
|
|
135
|
+
export declare function resolveSidebarV2Interaction(sidebar: SidebarConfigurationV2): 'click' | 'hover-lock';
|
|
136
|
+
export declare function resolveSidebarV3Recent(sidebar: SidebarConfigurationV3): ResolvedSidebarRecentConfiguration;
|
|
137
|
+
export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV1): SidebarConfigurationV1;
|
|
138
|
+
export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV2): SidebarConfigurationV2;
|
|
139
|
+
export declare function normalizeSidebarConfiguration(_sidebar: SidebarConfigurationV3): SidebarConfigurationV3;
|
|
67
140
|
export declare const SD_LAYOUT_CONFIGURATION: InjectionToken<ISdLayoutConfiguration>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import { SdLayoutMenu } from '../services/menu/menu.model';
|
|
3
|
-
import { SdPermissionService } from '@sdcorejs/angular/modules/permission';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class MenuPipe implements PipeTransform {
|
|
6
5
|
#private;
|
|
7
6
|
private permissionService;
|
|
8
|
-
|
|
7
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
8
|
+
constructor(...args: unknown[]);
|
|
9
9
|
transform(menus: SdLayoutMenu[]): SdLayoutMenu[];
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<MenuPipe, never>;
|
|
11
11
|
static ɵpipe: i0.ɵɵPipeDeclaration<MenuPipe, "menu", true>;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export type * from './menu/menu.model';
|
|
2
2
|
export * from './storage/storage.service';
|
|
3
|
+
export * from './responsive/responsive.service';
|
|
4
|
+
export * from './navigation-state/navigation-state.service';
|
|
5
|
+
export * from './menu/menu.utils';
|
|
3
6
|
export * from './layout.service';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { SdLayoutUserInfo } from '../configurations';
|
|
1
|
+
import { ISdSidebarConfiguration, SdLayoutUserInfo } from '../configurations';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class SdLayoutService {
|
|
4
4
|
#private;
|
|
5
5
|
userInfo: import("@angular/core").WritableSignal<SdLayoutUserInfo | undefined>;
|
|
6
|
-
sidebar: import("@angular/core").WritableSignal<
|
|
6
|
+
sidebar: import("@angular/core").WritableSignal<ISdSidebarConfiguration | undefined>;
|
|
7
7
|
constructor();
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutService, never>;
|
|
9
9
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutService>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SdLayoutChildrenMenu, SdLayoutMenu, SdLayoutRootMenu } from './menu.model';
|
|
2
|
+
export declare function getMenuStableKey(menu: SdLayoutMenu | null | undefined, ancestors?: string[]): string;
|
|
3
|
+
export declare function searchMenuLeaves(menus: SdLayoutMenu[], query: string): SdLayoutRootMenu[];
|
|
4
|
+
export declare function selectPrimaryMenuGroups(menus: SdLayoutMenu[], requestedIds: string[] | undefined, maximum?: number): SdLayoutMenu[];
|
|
5
|
+
export declare function resolveMenuKeys(menus: SdLayoutMenu[], keys: string[]): (SdLayoutRootMenu | SdLayoutChildrenMenu)[];
|
|
6
|
+
export declare function flattenMenuLeaves(menus: SdLayoutMenu[]): SdLayoutRootMenu[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ResolvedSidebarRecentConfiguration } from '../../configurations';
|
|
2
|
+
import { SdLayoutMenu } from '../menu/menu.model';
|
|
3
|
+
import { SdLayoutVersionState } from '../storage/storage.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class SdLayoutNavigationStateService {
|
|
6
|
+
#private;
|
|
7
|
+
readonly pinnedKeys: import("@angular/core").WritableSignal<string[]>;
|
|
8
|
+
readonly recentKeys: import("@angular/core").WritableSignal<string[]>;
|
|
9
|
+
readonly pinnedMenus: import("@angular/core").Signal<(import("@sdcorejs/angular/modules/layout").SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
|
|
10
|
+
readonly recentMenus: import("@angular/core").Signal<(import("@sdcorejs/angular/modules/layout").SdLayoutRootMenu | import("@sdcorejs/angular/modules/layout").SdLayoutChildrenMenu)[]>;
|
|
11
|
+
hydrate(menus: SdLayoutMenu[], recentMaximum?: number): void;
|
|
12
|
+
togglePinned(menu: SdLayoutMenu): void;
|
|
13
|
+
recordRecent(menu: SdLayoutMenu, configuration: ResolvedSidebarRecentConfiguration): void;
|
|
14
|
+
patchVersionState(version: 1 | 2 | 3, patch: SdLayoutVersionState): void;
|
|
15
|
+
versionState(version: 1 | 2 | 3): SdLayoutVersionState;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutNavigationStateService, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutNavigationStateService>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SdViewport } from '@sdcorejs/angular/services/viewport';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type SdLayoutViewport = SdViewport;
|
|
4
|
+
export declare const SD_LAYOUT_VIEWPORT: import("@angular/core").InjectionToken<SdViewport | null>;
|
|
5
|
+
/** @deprecated Prefer `SdViewportService` from `@sdcorejs/angular/services/viewport`. */
|
|
6
|
+
export declare class SdLayoutResponsiveService {
|
|
7
|
+
#private;
|
|
8
|
+
readonly viewportWidth: import("@angular/core").Signal<number>;
|
|
9
|
+
isMobile(breakpoint: number): boolean;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutResponsiveService, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutResponsiveService>;
|
|
12
|
+
}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
import { SdStorage
|
|
2
|
-
import { SdLayoutChildrenMenu } from '../menu/menu.model';
|
|
1
|
+
import { SdStorage } from '@sdcorejs/angular/services';
|
|
2
|
+
import { SdLayoutChildrenMenu, SdLayoutMenu } from '../menu/menu.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SdLayoutStorageService {
|
|
5
|
-
private
|
|
6
|
-
isShowSidebar: SdStorage<boolean>;
|
|
7
|
-
menuLockStatus: SdStorage<boolean>;
|
|
8
|
-
lastActiveMenuGroupId: SdStorage<string>;
|
|
9
|
-
pinnedMenuGroup: SdStorage<SdLayoutChildrenMenu>;
|
|
10
|
-
|
|
5
|
+
#private;
|
|
6
|
+
readonly isShowSidebar: SdStorage<boolean>;
|
|
7
|
+
readonly menuLockStatus: SdStorage<boolean>;
|
|
8
|
+
readonly lastActiveMenuGroupId: SdStorage<string>;
|
|
9
|
+
readonly pinnedMenuGroup: SdStorage<SdLayoutChildrenMenu>;
|
|
10
|
+
readonly pinnedMenuKeys: SdStorage<string[]>;
|
|
11
|
+
readonly recentMenuKeys: SdStorage<string[]>;
|
|
12
|
+
readonly versionStates: SdStorage<Record<string, SdLayoutVersionState>>;
|
|
13
|
+
readPinnedMenuKeys(menus: SdLayoutMenu[]): string[];
|
|
14
|
+
writePinnedMenuKeys(keys: string[]): void;
|
|
15
|
+
readRecentMenuKeys(menus: SdLayoutMenu[], maximum?: number): string[];
|
|
16
|
+
writeRecentMenuKeys(keys: string[]): void;
|
|
17
|
+
readVersionState(version: 1 | 2 | 3): SdLayoutVersionState;
|
|
18
|
+
patchVersionState(version: 1 | 2 | 3, patch: SdLayoutVersionState): SdLayoutVersionState;
|
|
11
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdLayoutStorageService, never>;
|
|
12
20
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdLayoutStorageService>;
|
|
13
21
|
}
|
|
22
|
+
export interface SdLayoutVersionState {
|
|
23
|
+
activeGroupKey?: string;
|
|
24
|
+
locked?: boolean;
|
|
25
|
+
collapsed?: boolean;
|
|
26
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdcorejs/angular",
|
|
3
|
-
"version": "19.1.
|
|
3
|
+
"version": "19.1.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
@@ -87,6 +87,10 @@
|
|
|
87
87
|
"types": "./components/anchor/index.d.ts",
|
|
88
88
|
"default": "./fesm2022/sdcorejs-angular-components-anchor.mjs"
|
|
89
89
|
},
|
|
90
|
+
"./components/audit-diff": {
|
|
91
|
+
"types": "./components/audit-diff/index.d.ts",
|
|
92
|
+
"default": "./fesm2022/sdcorejs-angular-components-audit-diff.mjs"
|
|
93
|
+
},
|
|
90
94
|
"./components/autoid-inspector": {
|
|
91
95
|
"types": "./components/autoid-inspector/index.d.ts",
|
|
92
96
|
"default": "./fesm2022/sdcorejs-angular-components-autoid-inspector.mjs"
|
|
@@ -103,6 +107,10 @@
|
|
|
103
107
|
"types": "./components/base/index.d.ts",
|
|
104
108
|
"default": "./fesm2022/sdcorejs-angular-components-base.mjs"
|
|
105
109
|
},
|
|
110
|
+
"./components/breadcrumb": {
|
|
111
|
+
"types": "./components/breadcrumb/index.d.ts",
|
|
112
|
+
"default": "./fesm2022/sdcorejs-angular-components-breadcrumb.mjs"
|
|
113
|
+
},
|
|
106
114
|
"./components/button": {
|
|
107
115
|
"types": "./components/button/index.d.ts",
|
|
108
116
|
"default": "./fesm2022/sdcorejs-angular-components-button.mjs"
|
|
@@ -119,6 +127,10 @@
|
|
|
119
127
|
"types": "./components/code-editor/index.d.ts",
|
|
120
128
|
"default": "./fesm2022/sdcorejs-angular-components-code-editor.mjs"
|
|
121
129
|
},
|
|
130
|
+
"./components/data-state": {
|
|
131
|
+
"types": "./components/data-state/index.d.ts",
|
|
132
|
+
"default": "./fesm2022/sdcorejs-angular-components-data-state.mjs"
|
|
133
|
+
},
|
|
122
134
|
"./components/document-builder": {
|
|
123
135
|
"types": "./components/document-builder/index.d.ts",
|
|
124
136
|
"default": "./fesm2022/sdcorejs-angular-components-document-builder.mjs"
|
|
@@ -143,6 +155,10 @@
|
|
|
143
155
|
"types": "./components/inform/index.d.ts",
|
|
144
156
|
"default": "./fesm2022/sdcorejs-angular-components-inform.mjs"
|
|
145
157
|
},
|
|
158
|
+
"./components/job-progress": {
|
|
159
|
+
"types": "./components/job-progress/index.d.ts",
|
|
160
|
+
"default": "./fesm2022/sdcorejs-angular-components-job-progress.mjs"
|
|
161
|
+
},
|
|
146
162
|
"./components/mini-editor": {
|
|
147
163
|
"types": "./components/mini-editor/index.d.ts",
|
|
148
164
|
"default": "./fesm2022/sdcorejs-angular-components-mini-editor.mjs"
|
|
@@ -251,6 +267,10 @@
|
|
|
251
267
|
"types": "./forms/directives/index.d.ts",
|
|
252
268
|
"default": "./fesm2022/sdcorejs-angular-forms-directives.mjs"
|
|
253
269
|
},
|
|
270
|
+
"./forms/entity-picker": {
|
|
271
|
+
"types": "./forms/entity-picker/index.d.ts",
|
|
272
|
+
"default": "./fesm2022/sdcorejs-angular-forms-entity-picker.mjs"
|
|
273
|
+
},
|
|
254
274
|
"./forms/inline-text": {
|
|
255
275
|
"types": "./forms/inline-text/index.d.ts",
|
|
256
276
|
"default": "./fesm2022/sdcorejs-angular-forms-inline-text.mjs"
|
|
@@ -291,6 +311,18 @@
|
|
|
291
311
|
"types": "./forms/textarea/index.d.ts",
|
|
292
312
|
"default": "./fesm2022/sdcorejs-angular-forms-textarea.mjs"
|
|
293
313
|
},
|
|
314
|
+
"./forms/time": {
|
|
315
|
+
"types": "./forms/time/index.d.ts",
|
|
316
|
+
"default": "./fesm2022/sdcorejs-angular-forms-time.mjs"
|
|
317
|
+
},
|
|
318
|
+
"./forms/time-range": {
|
|
319
|
+
"types": "./forms/time-range/index.d.ts",
|
|
320
|
+
"default": "./fesm2022/sdcorejs-angular-forms-time-range.mjs"
|
|
321
|
+
},
|
|
322
|
+
"./forms/tree-select": {
|
|
323
|
+
"types": "./forms/tree-select/index.d.ts",
|
|
324
|
+
"default": "./fesm2022/sdcorejs-angular-forms-tree-select.mjs"
|
|
325
|
+
},
|
|
294
326
|
"./modules/auth": {
|
|
295
327
|
"types": "./modules/auth/index.d.ts",
|
|
296
328
|
"default": "./fesm2022/sdcorejs-angular-modules-auth.mjs"
|
|
@@ -343,10 +375,26 @@
|
|
|
343
375
|
"types": "./services/notify/index.d.ts",
|
|
344
376
|
"default": "./fesm2022/sdcorejs-angular-services-notify.mjs"
|
|
345
377
|
},
|
|
378
|
+
"./services/persistence": {
|
|
379
|
+
"types": "./services/persistence/index.d.ts",
|
|
380
|
+
"default": "./fesm2022/sdcorejs-angular-services-persistence.mjs"
|
|
381
|
+
},
|
|
346
382
|
"./services/storage": {
|
|
347
383
|
"types": "./services/storage/index.d.ts",
|
|
348
384
|
"default": "./fesm2022/sdcorejs-angular-services-storage.mjs"
|
|
349
385
|
},
|
|
386
|
+
"./services/task": {
|
|
387
|
+
"types": "./services/task/index.d.ts",
|
|
388
|
+
"default": "./fesm2022/sdcorejs-angular-services-task.mjs"
|
|
389
|
+
},
|
|
390
|
+
"./services/unsaved-changes": {
|
|
391
|
+
"types": "./services/unsaved-changes/index.d.ts",
|
|
392
|
+
"default": "./fesm2022/sdcorejs-angular-services-unsaved-changes.mjs"
|
|
393
|
+
},
|
|
394
|
+
"./services/viewport": {
|
|
395
|
+
"types": "./services/viewport/index.d.ts",
|
|
396
|
+
"default": "./fesm2022/sdcorejs-angular-services-viewport.mjs"
|
|
397
|
+
},
|
|
350
398
|
"./utilities/data-state": {
|
|
351
399
|
"types": "./utilities/data-state/index.d.ts",
|
|
352
400
|
"default": "./fesm2022/sdcorejs-angular-utilities-data-state.mjs"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class SdSafeHtmlPipe implements PipeTransform {
|
|
5
4
|
private sanitizer;
|
|
6
|
-
|
|
5
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
6
|
+
constructor(...args: unknown[]);
|
|
7
7
|
transform(html: string | number | undefined | null): import("@angular/platform-browser").SafeHtml | undefined;
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSafeHtmlPipe, never>;
|
|
9
9
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdSafeHtmlPipe, "sdSafeHtml", true>;
|
|
@@ -1,36 +1,75 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpContext, HttpErrorResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';
|
|
2
2
|
import { InjectionToken } from '@angular/core';
|
|
3
3
|
import { SdCacheOption } from '@sdcorejs/angular/services/cache';
|
|
4
|
+
export type SdApiResponseType = 'arraybuffer' | 'blob' | 'json' | 'text';
|
|
5
|
+
type SdApiBivariantCallback<TArgument, TResult> = {
|
|
6
|
+
bivarianceHack(argument: TArgument): TResult;
|
|
7
|
+
}['bivarianceHack'];
|
|
8
|
+
export interface SdApiHttpOption {
|
|
9
|
+
headers?: HttpHeaders | Record<string, string | string[]>;
|
|
10
|
+
context?: HttpContext;
|
|
11
|
+
params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>;
|
|
12
|
+
observe?: 'body';
|
|
13
|
+
reportProgress?: boolean;
|
|
14
|
+
responseType?: SdApiResponseType;
|
|
15
|
+
withCredentials?: boolean;
|
|
16
|
+
transferCache?: {
|
|
17
|
+
includeHeaders?: string[];
|
|
18
|
+
} | boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface SdApiRetryOption {
|
|
21
|
+
/** Number of retries after the initial request. Values are clamped to a finite safe limit. */
|
|
22
|
+
attempts: number;
|
|
23
|
+
/** Delay before the first retry. Defaults to 0. */
|
|
24
|
+
delayMs?: number;
|
|
25
|
+
/** Multiplier applied to each subsequent delay. Defaults to 1. */
|
|
26
|
+
backoff?: number;
|
|
27
|
+
/** Overrides the default transient HTTP-status predicate. `attempt` is one-based. */
|
|
28
|
+
retryWhen?: (error: unknown, attempt: number) => boolean;
|
|
29
|
+
/** Required to retry POST, PUT, PATCH, or DELETE. */
|
|
30
|
+
mutations?: boolean;
|
|
31
|
+
}
|
|
4
32
|
export interface SdApiOption {
|
|
5
33
|
cacheOption?: SdCacheOption;
|
|
6
34
|
timeout?: number;
|
|
35
|
+
/** Cancels only this caller; a shared HTTP request continues while another caller remains. */
|
|
36
|
+
signal?: AbortSignal;
|
|
37
|
+
/** Enables request deduplication. Defaults to true for GET and false for mutations. */
|
|
38
|
+
dedupe?: boolean;
|
|
39
|
+
/** Keeps a successful dedupe result replayable for this duration. Defaults to 1000ms. */
|
|
40
|
+
dedupeWindowMs?: number;
|
|
41
|
+
/** Opt-in bounded retry policy. The default is no retries. */
|
|
42
|
+
retry?: SdApiRetryOption;
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated Use `dedupe`. When both are provided, `dedupe` takes precedence.
|
|
45
|
+
* Explicit `true` remains a compatibility opt-in for mutation deduplication.
|
|
46
|
+
*/
|
|
7
47
|
autoCache?: boolean;
|
|
8
48
|
}
|
|
9
|
-
type
|
|
10
|
-
export type
|
|
11
|
-
type
|
|
12
|
-
export type
|
|
13
|
-
type
|
|
14
|
-
export type
|
|
15
|
-
type HttpDeleteOption = Parameters<HttpClient['delete']>[1];
|
|
16
|
-
export type SdDeleteOption = HttpDeleteOption & SdApiOption;
|
|
49
|
+
export type SdGetOption = SdApiHttpOption & SdApiOption;
|
|
50
|
+
export type SdPostOption = SdApiHttpOption & SdApiOption;
|
|
51
|
+
export type SdPutOption = SdApiHttpOption & SdApiOption;
|
|
52
|
+
export type SdPatchOption = SdApiHttpOption & SdApiOption;
|
|
53
|
+
export type SdDeleteOption = SdApiHttpOption & SdApiOption;
|
|
54
|
+
export type SdApiRequestUpdate = Parameters<HttpRequest<unknown>['clone']>[0];
|
|
17
55
|
export interface SdApiHandler {
|
|
18
56
|
/** Danh sách host URL mà handler này sẽ xử lý */
|
|
19
57
|
hosts: string[];
|
|
20
58
|
/** Can thiệp request: gắn header, token, transform body... */
|
|
21
|
-
intercept?:
|
|
59
|
+
intercept?: SdApiBivariantCallback<HttpRequest<unknown>, HttpRequest<unknown> | SdApiRequestUpdate>;
|
|
22
60
|
/** Hook chạy TRƯỚC khi gửi request (dùng để log, tracking...) */
|
|
23
|
-
beforeRemote?:
|
|
61
|
+
beforeRemote?: SdApiBivariantCallback<HttpRequest<unknown>, void | Promise<void>>;
|
|
24
62
|
/** Hook chạy SAU khi nhận response (xử lý lỗi, notify...) */
|
|
25
|
-
afterRemote?:
|
|
63
|
+
afterRemote?: SdApiBivariantCallback<HttpResponse<unknown> | HttpErrorResponse | Error, void | Promise<void>>;
|
|
26
64
|
/** Transform response body thành kiểu dữ liệu mong muốn */
|
|
27
|
-
mapResponse?: <
|
|
28
|
-
/** Timeout tính bằng milliseconds. Mặc định:
|
|
65
|
+
mapResponse?: SdApiBivariantCallback<unknown, unknown>;
|
|
66
|
+
/** Timeout tính bằng milliseconds. Mặc định: 60000 (60 giây) */
|
|
29
67
|
timeout?: number;
|
|
30
68
|
}
|
|
31
69
|
export interface ISdApiConfiguration {
|
|
32
|
-
handlers
|
|
70
|
+
handlers?: SdApiHandler[];
|
|
33
71
|
}
|
|
34
72
|
export declare const SD_API_CONFIG: InjectionToken<ISdApiConfiguration>;
|
|
73
|
+
/** @deprecated Use `SD_API_CONFIG`. This is the same injection token. */
|
|
35
74
|
export declare const SD_API_CONFIGURATION: InjectionToken<ISdApiConfiguration>;
|
|
36
75
|
export {};
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { SdDeleteOption, SdGetOption, SdPostOption, SdPutOption } from './api.model';
|
|
2
|
+
import { SdDeleteOption, SdGetOption, SdPatchOption, SdPostOption, SdPutOption } from './api.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Response generics intentionally default to `unknown` for type safety.
|
|
6
|
+
* Callers should specify `T`; migration guidance is tracked for Task 13.
|
|
7
|
+
*/
|
|
4
8
|
export declare class SdApiService {
|
|
5
9
|
#private;
|
|
6
10
|
constructor();
|
|
7
11
|
get http(): HttpClient;
|
|
8
|
-
get: <T =
|
|
9
|
-
post: <T =
|
|
10
|
-
put: <T =
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
get: <T = unknown>(url: string, option?: SdGetOption) => Promise<T>;
|
|
13
|
+
post: <T = unknown>(url: string, body?: unknown, option?: SdPostOption) => Promise<T>;
|
|
14
|
+
put: <T = unknown>(url: string, body?: unknown, option?: SdPutOption) => Promise<T>;
|
|
15
|
+
patch: <T = unknown>(url: string, body?: unknown, option?: SdPatchOption) => Promise<T>;
|
|
16
|
+
delete: <T = unknown>(url: string, option?: SdDeleteOption) => Promise<T>;
|
|
17
|
+
upload: <T = unknown>(url: string, option?: {
|
|
13
18
|
extensions?: string[];
|
|
14
19
|
maxSizeInMb?: number;
|
|
15
|
-
}) => Promise<
|
|
16
|
-
uploadFile: (url: string, file: File) => Promise<
|
|
20
|
+
}) => Promise<T | null | undefined>;
|
|
21
|
+
uploadFile: <T = unknown>(url: string, file: File | null | undefined) => Promise<T | null>;
|
|
17
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiService, never>;
|
|
18
23
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdApiService>;
|
|
19
24
|
}
|
|
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SdHttpInterceptor implements HttpInterceptor {
|
|
5
5
|
#private;
|
|
6
|
-
intercept(request: HttpRequest<
|
|
6
|
+
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdHttpInterceptor, never>;
|
|
8
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdHttpInterceptor>;
|
|
9
9
|
}
|