@sdcorejs/angular 19.1.3 → 19.1.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 +17 -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 +355 -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 +859 -78
- 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 +68 -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 +28 -0
- package/modules/layout/components/shared/user-menu/user-menu.component.d.ts +25 -0
- 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 +3 -4
- package/modules/layout/components/sidebar-v1/main.component.d.ts +2 -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 +36 -2
- 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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SdGraphSerializerLimits, SdPersistenceErrorCode, SdPersistenceSerializer } from './persistence.model';
|
|
2
|
+
export declare const SD_GRAPH_HARD_LIMITS: Readonly<SdGraphSerializerLimits>;
|
|
3
|
+
export declare class SdPersistenceError extends Error {
|
|
4
|
+
readonly code: SdPersistenceErrorCode;
|
|
5
|
+
readonly name = "SdPersistenceError";
|
|
6
|
+
constructor(code: SdPersistenceErrorCode, message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class SdGraphSerializer implements SdPersistenceSerializer {
|
|
9
|
+
#private;
|
|
10
|
+
readonly format = "sdcorejs.graph@1";
|
|
11
|
+
readonly limits: Readonly<SdGraphSerializerLimits>;
|
|
12
|
+
constructor(limits?: Partial<SdGraphSerializerLimits>);
|
|
13
|
+
stringify<T>(value: T): string;
|
|
14
|
+
parse<T = unknown>(serialized: string): T;
|
|
15
|
+
clone<T>(value: T): T;
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const SD_PERSISTENCE_ENVELOPE_FORMAT = "sdcorejs.persistence-envelope";
|
|
2
|
+
export declare const SD_PERSISTENCE_ENVELOPE_VERSION = 1;
|
|
3
|
+
export interface SdPersistenceEnvelopeLimits {
|
|
4
|
+
maxDocumentCharacters: number;
|
|
5
|
+
maxPayloadCharacters: number;
|
|
6
|
+
maxSerializerCharacters: number;
|
|
7
|
+
maxIdentityCharacters: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const SD_PERSISTENCE_ENVELOPE_HARD_LIMITS: Readonly<SdPersistenceEnvelopeLimits>;
|
|
10
|
+
export interface SdPersistenceValueEnvelope {
|
|
11
|
+
format: typeof SD_PERSISTENCE_ENVELOPE_FORMAT;
|
|
12
|
+
version: typeof SD_PERSISTENCE_ENVELOPE_VERSION;
|
|
13
|
+
kind: 'value';
|
|
14
|
+
identity: string;
|
|
15
|
+
serializer: string;
|
|
16
|
+
payload: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SdPersistenceTombstoneEnvelope {
|
|
19
|
+
format: typeof SD_PERSISTENCE_ENVELOPE_FORMAT;
|
|
20
|
+
version: typeof SD_PERSISTENCE_ENVELOPE_VERSION;
|
|
21
|
+
kind: 'tombstone';
|
|
22
|
+
identity: string;
|
|
23
|
+
serializer: string;
|
|
24
|
+
}
|
|
25
|
+
export type SdPersistenceEnvelope = SdPersistenceValueEnvelope | SdPersistenceTombstoneEnvelope;
|
|
26
|
+
export declare function stringifySdPersistenceValueEnvelope(identity: string, serializer: string, payload: string, limits?: Partial<SdPersistenceEnvelopeLimits>): string;
|
|
27
|
+
export declare function stringifySdPersistenceTombstoneEnvelope(identity: string, serializer: string, limits?: Partial<SdPersistenceEnvelopeLimits>): string;
|
|
28
|
+
export declare function parseSdPersistenceEnvelope(serialized: string, expectedIdentity: string, expectedSerializer: string, limits?: Partial<SdPersistenceEnvelopeLimits>): SdPersistenceEnvelope | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SdPersistenceIdentityCanonicalizer } from './persistence.model';
|
|
2
|
+
export interface SdPersistenceKeyField {
|
|
3
|
+
tag: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SdPersistenceIdentityError extends Error {
|
|
7
|
+
readonly name = "SdPersistenceIdentityError";
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export declare function buildSdPersistenceKey(baseKey: string, fields: readonly SdPersistenceKeyField[]): string;
|
|
11
|
+
export declare class SdGraphIdentityCanonicalizer implements SdPersistenceIdentityCanonicalizer {
|
|
12
|
+
#private;
|
|
13
|
+
readonly format = "sdcorejs.graph-identity@1";
|
|
14
|
+
canonicalize(value: unknown): string;
|
|
15
|
+
}
|
|
16
|
+
export declare function canonicalizeSdPersistenceValue(canonicalizer: SdPersistenceIdentityCanonicalizer, value: unknown, label: string): string;
|
|
17
|
+
export declare function digestSdPersistenceKey(value: string): string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export declare const SD_GRAPH_FORMAT = "sdcorejs.graph";
|
|
2
|
+
export declare const SD_GRAPH_VERSION = 1;
|
|
3
|
+
export type SdPersistenceErrorCode = 'INVALID_DOCUMENT' | 'UNKNOWN_FORMAT' | 'UNKNOWN_VERSION' | 'INVALID_NODE' | 'INVALID_REFERENCE' | 'UNSUPPORTED_VALUE' | 'LIMIT_EXCEEDED';
|
|
4
|
+
export interface SdGraphSerializerLimits {
|
|
5
|
+
maxDocumentCharacters: number;
|
|
6
|
+
maxDepth: number;
|
|
7
|
+
maxNodes: number;
|
|
8
|
+
maxEntries: number;
|
|
9
|
+
maxStringCharacters: number;
|
|
10
|
+
maxKeyCharacters: number;
|
|
11
|
+
maxBigIntDigits: number;
|
|
12
|
+
}
|
|
13
|
+
export interface SdPersistenceSerializer {
|
|
14
|
+
readonly format: string;
|
|
15
|
+
stringify<T>(value: T): string;
|
|
16
|
+
parse<T = unknown>(serialized: string): T;
|
|
17
|
+
clone<T>(value: T): T;
|
|
18
|
+
}
|
|
19
|
+
/** Deterministic, versioned canonicalization used only for persistence identity. */
|
|
20
|
+
export interface SdPersistenceIdentityCanonicalizer {
|
|
21
|
+
readonly format: string;
|
|
22
|
+
canonicalize(value: unknown): string;
|
|
23
|
+
}
|
|
24
|
+
export type SdGraphSpecialNumber = 'NaN' | 'Infinity' | '-Infinity' | '-0';
|
|
25
|
+
export type SdGraphValue = null | boolean | string | number | {
|
|
26
|
+
$ref: number;
|
|
27
|
+
} | {
|
|
28
|
+
$type: 'undefined';
|
|
29
|
+
} | {
|
|
30
|
+
$type: 'number';
|
|
31
|
+
value: SdGraphSpecialNumber;
|
|
32
|
+
} | {
|
|
33
|
+
$type: 'bigint';
|
|
34
|
+
value: string;
|
|
35
|
+
};
|
|
36
|
+
export interface SdGraphArrayNode {
|
|
37
|
+
type: 'array';
|
|
38
|
+
values: SdGraphValue[];
|
|
39
|
+
}
|
|
40
|
+
export interface SdGraphObjectNode {
|
|
41
|
+
type: 'object';
|
|
42
|
+
prototype: 'object' | 'null';
|
|
43
|
+
entries: [string, SdGraphValue][];
|
|
44
|
+
}
|
|
45
|
+
export interface SdGraphDateNode {
|
|
46
|
+
type: 'date';
|
|
47
|
+
value: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SdGraphMapNode {
|
|
50
|
+
type: 'map';
|
|
51
|
+
entries: [SdGraphValue, SdGraphValue][];
|
|
52
|
+
}
|
|
53
|
+
export interface SdGraphSetNode {
|
|
54
|
+
type: 'set';
|
|
55
|
+
values: SdGraphValue[];
|
|
56
|
+
}
|
|
57
|
+
export type SdGraphNode = SdGraphArrayNode | SdGraphObjectNode | SdGraphDateNode | SdGraphMapNode | SdGraphSetNode;
|
|
58
|
+
export interface SdGraphEnvelope {
|
|
59
|
+
format: typeof SD_GRAPH_FORMAT;
|
|
60
|
+
version: typeof SD_GRAPH_VERSION;
|
|
61
|
+
root: SdGraphValue;
|
|
62
|
+
nodes: SdGraphNode[];
|
|
63
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type SdPersistenceStorageArea = 'local' | 'session';
|
|
4
|
+
export type SdPersistenceStorageRead = {
|
|
5
|
+
status: 'found';
|
|
6
|
+
value: string;
|
|
7
|
+
} | {
|
|
8
|
+
status: 'absent';
|
|
9
|
+
} | {
|
|
10
|
+
status: 'unavailable';
|
|
11
|
+
};
|
|
12
|
+
export interface SdPersistenceStorageAdapter {
|
|
13
|
+
/** Optional tri-state read. Legacy adapters may continue to implement only `getItem`. */
|
|
14
|
+
readItem?(area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
|
|
15
|
+
getItem(area: SdPersistenceStorageArea, key: string): string | null;
|
|
16
|
+
setItem(area: SdPersistenceStorageArea, key: string, value: string): boolean;
|
|
17
|
+
removeItem(area: SdPersistenceStorageArea, key: string): boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare class SdBrowserStorageAdapter implements SdPersistenceStorageAdapter {
|
|
20
|
+
#private;
|
|
21
|
+
readItem(area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
|
|
22
|
+
getItem(area: SdPersistenceStorageArea, key: string): string | null;
|
|
23
|
+
setItem(area: SdPersistenceStorageArea, key: string, value: string): boolean;
|
|
24
|
+
removeItem(area: SdPersistenceStorageArea, key: string): boolean;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdBrowserStorageAdapter, never>;
|
|
26
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdBrowserStorageAdapter>;
|
|
27
|
+
}
|
|
28
|
+
export declare function readSdPersistenceStorageItem(adapter: SdPersistenceStorageAdapter, area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
|
|
29
|
+
export declare const SD_PERSISTENCE_STORAGE_ADAPTER: InjectionToken<SdPersistenceStorageAdapter>;
|
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { SdPersistenceIdentityCanonicalizer, SdPersistenceSerializer } from '@sdcorejs/angular/services/persistence';
|
|
2
3
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
|
-
export interface SdStorageOption<T =
|
|
4
|
-
type?: 'session';
|
|
4
|
+
export interface SdStorageOption<T = unknown> {
|
|
5
|
+
type?: 'local' | 'session';
|
|
5
6
|
default?: T;
|
|
6
|
-
args?: Record<string,
|
|
7
|
+
args?: Readonly<Record<string, unknown>>;
|
|
8
|
+
namespace?: string;
|
|
9
|
+
version?: string | number;
|
|
10
|
+
serializer?: SdPersistenceSerializer;
|
|
11
|
+
identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
|
|
7
12
|
}
|
|
8
|
-
export interface SdStorage<T =
|
|
9
|
-
get: () => T;
|
|
13
|
+
export interface SdStorage<T = unknown> {
|
|
14
|
+
get: () => T | undefined;
|
|
10
15
|
set: (data: T) => void;
|
|
11
16
|
setSilent: (data: T) => void;
|
|
12
17
|
has: () => boolean;
|
|
13
18
|
remove: () => void;
|
|
19
|
+
destroy: () => void;
|
|
20
|
+
subject: BehaviorSubject<T | undefined>;
|
|
21
|
+
observer: Observable<T | undefined>;
|
|
22
|
+
}
|
|
23
|
+
export interface SdStorageWithDefault<T> extends Omit<SdStorage<T>, 'get' | 'subject' | 'observer'> {
|
|
24
|
+
get: () => T;
|
|
14
25
|
subject: BehaviorSubject<T>;
|
|
15
26
|
observer: Observable<T>;
|
|
16
27
|
}
|
|
17
28
|
export interface ISdStorageConfiguration {
|
|
18
29
|
key?: (key: string) => string;
|
|
30
|
+
namespace?: string;
|
|
31
|
+
version?: string | number;
|
|
32
|
+
serializer?: SdPersistenceSerializer;
|
|
33
|
+
identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
|
|
19
34
|
}
|
|
20
35
|
export declare const SD_STORAGE_CONFIG: InjectionToken<ISdStorageConfiguration>;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { SdStorage, SdStorageOption } from './storage.model';
|
|
1
|
+
import { SdStorage, SdStorageOption, SdStorageWithDefault } from './storage.model';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class SdStorageService {
|
|
4
4
|
#private;
|
|
5
|
-
|
|
6
|
-
create<T
|
|
5
|
+
constructor();
|
|
6
|
+
create<T>(key: string | object, option: SdStorageOption<T> & {
|
|
7
|
+
default: T;
|
|
8
|
+
}): SdStorageWithDefault<T>;
|
|
9
|
+
create<T = unknown>(key: string | object, option?: SdStorageOption<unknown>): SdStorage<T>;
|
|
7
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService, never>;
|
|
8
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdStorageService>;
|
|
9
12
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
export type SdTaskMaybeAsync<T> = T | PromiseLike<T>;
|
|
3
|
+
export type SdTaskStatus = 'idle' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';
|
|
4
|
+
export type SdTaskConnectionState = 'idle' | 'connecting' | 'open' | 'reconnecting' | 'closed' | 'error';
|
|
5
|
+
export interface SdTaskState<TResult = unknown> {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly status: SdTaskStatus;
|
|
8
|
+
readonly progress?: number;
|
|
9
|
+
readonly title?: string;
|
|
10
|
+
readonly message?: string;
|
|
11
|
+
readonly error?: unknown;
|
|
12
|
+
readonly result?: TResult;
|
|
13
|
+
readonly updatedAt?: number | Date;
|
|
14
|
+
}
|
|
15
|
+
export interface SdTaskRetryPolicy {
|
|
16
|
+
readonly maxAttempts?: number;
|
|
17
|
+
readonly initialDelayMs?: number;
|
|
18
|
+
readonly backoff?: number;
|
|
19
|
+
readonly maxDelayMs?: number;
|
|
20
|
+
readonly jitter?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface SdTaskLoadContext<TResult = unknown> {
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly signal: AbortSignal;
|
|
25
|
+
readonly attempt: number;
|
|
26
|
+
readonly state: SdTaskState<TResult>;
|
|
27
|
+
}
|
|
28
|
+
export interface SdTaskActionContext<TResult = unknown> {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly state: SdTaskState<TResult>;
|
|
31
|
+
}
|
|
32
|
+
export type SdTaskCancelResult<TResult = unknown> = void | boolean | SdTaskState<TResult>;
|
|
33
|
+
export type SdTaskCancelHandler<TResult = unknown> = (context: SdTaskActionContext<TResult>) => SdTaskMaybeAsync<SdTaskCancelResult<TResult>>;
|
|
34
|
+
interface SdTaskSourceBase<TResult> {
|
|
35
|
+
readonly cancel?: SdTaskCancelHandler<TResult>;
|
|
36
|
+
}
|
|
37
|
+
export interface SdTaskManualSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
|
|
38
|
+
readonly mode: 'manual';
|
|
39
|
+
}
|
|
40
|
+
export interface SdTaskPollingSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
|
|
41
|
+
readonly mode: 'poll';
|
|
42
|
+
readonly load: (context: SdTaskLoadContext<TResult>) => SdTaskMaybeAsync<SdTaskState<TResult>>;
|
|
43
|
+
readonly intervalMs?: number;
|
|
44
|
+
readonly retry?: SdTaskRetryPolicy;
|
|
45
|
+
}
|
|
46
|
+
export interface SdTaskSseSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
|
|
47
|
+
readonly mode: 'sse';
|
|
48
|
+
readonly url: string | (() => string);
|
|
49
|
+
readonly eventSourceInit?: EventSourceInit;
|
|
50
|
+
readonly parse?: (event: MessageEvent<string>) => SdTaskMaybeAsync<SdTaskState<TResult>>;
|
|
51
|
+
readonly retry?: SdTaskRetryPolicy;
|
|
52
|
+
}
|
|
53
|
+
export type SdTaskSource<TResult = unknown> = SdTaskManualSource<TResult> | SdTaskPollingSource<TResult> | SdTaskSseSource<TResult>;
|
|
54
|
+
export interface SdTaskWatchOptions<TResult = unknown> {
|
|
55
|
+
readonly id: string;
|
|
56
|
+
readonly initialState?: SdTaskState<TResult>;
|
|
57
|
+
readonly source: SdTaskSource<TResult>;
|
|
58
|
+
}
|
|
59
|
+
export interface SdTaskView<TResult = unknown> {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly state: Signal<SdTaskState<TResult>>;
|
|
62
|
+
readonly connection: Signal<SdTaskConnectionState>;
|
|
63
|
+
readonly error: Signal<unknown | null>;
|
|
64
|
+
readonly subscriberCount: Signal<number>;
|
|
65
|
+
readonly canCancel: Signal<boolean>;
|
|
66
|
+
readonly canRetry: Signal<boolean>;
|
|
67
|
+
cancel(): Promise<boolean>;
|
|
68
|
+
retry(): void;
|
|
69
|
+
}
|
|
70
|
+
export interface SdTaskSubscription<TResult = unknown> extends SdTaskView<TResult> {
|
|
71
|
+
readonly destroyed: Signal<boolean>;
|
|
72
|
+
destroy(): void;
|
|
73
|
+
}
|
|
74
|
+
export declare function isSdTaskTerminal(status: SdTaskStatus): boolean;
|
|
75
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SdTaskState, SdTaskSubscription, SdTaskView, SdTaskWatchOptions } from './task.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdTaskService {
|
|
4
|
+
#private;
|
|
5
|
+
readonly tasks: import("@angular/core").Signal<SdTaskView<unknown>[]>;
|
|
6
|
+
constructor();
|
|
7
|
+
watch<TResult = unknown>(options: SdTaskWatchOptions<TResult>): SdTaskSubscription<TResult>;
|
|
8
|
+
get<TResult = unknown>(id: string): SdTaskView<TResult> | undefined;
|
|
9
|
+
update<TResult = unknown>(id: string, patch: Partial<Omit<SdTaskState<TResult>, 'id'>>): boolean;
|
|
10
|
+
cancel(id: string): Promise<boolean>;
|
|
11
|
+
retry(id: string): boolean;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdTaskService, never>;
|
|
13
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdTaskService>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export interface SdTaskEventSource {
|
|
3
|
+
onopen: ((event: Event) => void) | null;
|
|
4
|
+
onmessage: ((event: MessageEvent<string>) => void) | null;
|
|
5
|
+
onerror: ((event: Event) => void) | null;
|
|
6
|
+
close(): void;
|
|
7
|
+
}
|
|
8
|
+
export interface SdTaskEventSourceFactory {
|
|
9
|
+
create(url: string, init?: EventSourceInit): SdTaskEventSource;
|
|
10
|
+
}
|
|
11
|
+
export declare const SD_TASK_EVENT_SOURCE_FACTORY: InjectionToken<SdTaskEventSourceFactory | null>;
|
|
12
|
+
export declare const SD_TASK_RANDOM: InjectionToken<() => number>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import { CanDeactivateFn } from '@angular/router';
|
|
3
|
+
import { SdUnsavedChangesConfirmOptions, SdUnsavedChangesMaybeAsync, SdUnsavedChangesRegistration } from './unsaved-changes.model';
|
|
4
|
+
import { SdUnsavedChangesService } from './unsaved-changes.service';
|
|
5
|
+
export interface SdUnsavedChangesFormOptions<TValue> {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly scope?: unknown;
|
|
8
|
+
readonly message?: string;
|
|
9
|
+
readonly save?: (value: TValue) => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
10
|
+
readonly reset?: (form: FormGroup) => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
11
|
+
readonly discard?: (form: FormGroup) => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
12
|
+
}
|
|
13
|
+
export declare function registerSdUnsavedChangesForm<TValue extends Record<string, unknown>>(service: SdUnsavedChangesService, form: FormGroup, options: SdUnsavedChangesFormOptions<TValue>): SdUnsavedChangesRegistration;
|
|
14
|
+
export declare function createSdUnsavedChangesCloseGuard(service: SdUnsavedChangesService, options?: Omit<SdUnsavedChangesConfirmOptions, 'reason'>): () => Promise<boolean>;
|
|
15
|
+
export declare const sdUnsavedChangesGuard: CanDeactivateFn<unknown>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
export type SdUnsavedChangesMaybeAsync<T> = T | PromiseLike<T>;
|
|
3
|
+
export type SdUnsavedChangesDirtySource = boolean | Signal<boolean> | (() => boolean);
|
|
4
|
+
export type SdUnsavedChangesDecision = 'save' | 'discard' | 'cancel';
|
|
5
|
+
export type SdUnsavedChangesReason = 'navigation' | 'close' | 'manual';
|
|
6
|
+
export interface SdUnsavedChangesWatcher {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly scope?: unknown;
|
|
9
|
+
readonly isDirty: SdUnsavedChangesDirtySource;
|
|
10
|
+
readonly message?: string;
|
|
11
|
+
readonly save?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
12
|
+
readonly reset?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
13
|
+
readonly discard?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
|
|
14
|
+
readonly cleanup?: () => void;
|
|
15
|
+
}
|
|
16
|
+
export interface SdUnsavedChangesPromptContext {
|
|
17
|
+
readonly reason: SdUnsavedChangesReason;
|
|
18
|
+
readonly scope?: unknown;
|
|
19
|
+
readonly message: string;
|
|
20
|
+
readonly watchers: readonly SdUnsavedChangesRegistration[];
|
|
21
|
+
}
|
|
22
|
+
export interface SdUnsavedChangesConfirmationAdapter {
|
|
23
|
+
confirm(context: SdUnsavedChangesPromptContext): SdUnsavedChangesMaybeAsync<SdUnsavedChangesDecision | boolean>;
|
|
24
|
+
}
|
|
25
|
+
export interface SdUnsavedChangesRegistration {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly scope?: unknown;
|
|
28
|
+
readonly message?: string;
|
|
29
|
+
readonly destroyed: Signal<boolean>;
|
|
30
|
+
readonly dirty: Signal<boolean>;
|
|
31
|
+
markDirty(): void;
|
|
32
|
+
markPristine(): void;
|
|
33
|
+
save(): Promise<boolean>;
|
|
34
|
+
reset(): Promise<boolean>;
|
|
35
|
+
discard(): Promise<boolean>;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface SdUnsavedChangesConfirmOptions {
|
|
39
|
+
readonly scope?: unknown;
|
|
40
|
+
readonly reason?: SdUnsavedChangesReason;
|
|
41
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SdUnsavedChangesConfirmOptions, SdUnsavedChangesRegistration, SdUnsavedChangesWatcher } from './unsaved-changes.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdUnsavedChangesService {
|
|
4
|
+
#private;
|
|
5
|
+
readonly registrations: import("@angular/core").Signal<SdUnsavedChangesRegistration[]>;
|
|
6
|
+
readonly dirty: import("@angular/core").Signal<boolean>;
|
|
7
|
+
constructor();
|
|
8
|
+
register(watcher: SdUnsavedChangesWatcher): SdUnsavedChangesRegistration;
|
|
9
|
+
hasChanges(scope?: unknown): boolean;
|
|
10
|
+
confirmLeave(options?: SdUnsavedChangesConfirmOptions): Promise<boolean>;
|
|
11
|
+
saveAll(scope?: unknown): Promise<boolean>;
|
|
12
|
+
resetAll(scope?: unknown): Promise<boolean>;
|
|
13
|
+
discardAll(scope?: unknown): Promise<boolean>;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdUnsavedChangesService, never>;
|
|
15
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdUnsavedChangesService>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { SdUnsavedChangesConfirmationAdapter } from './unsaved-changes.model';
|
|
3
|
+
export interface SdUnsavedChangesWindow {
|
|
4
|
+
addEventListener(type: 'beforeunload', listener: (event: BeforeUnloadEvent) => void): void;
|
|
5
|
+
removeEventListener(type: 'beforeunload', listener: (event: BeforeUnloadEvent) => void): void;
|
|
6
|
+
confirm?(message?: string): boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const SD_UNSAVED_CHANGES_WINDOW: InjectionToken<SdUnsavedChangesWindow | null>;
|
|
9
|
+
export declare const SD_UNSAVED_CHANGES_CONFIRMATION_ADAPTER: InjectionToken<SdUnsavedChangesConfirmationAdapter>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface SdViewportBreakpoints {
|
|
2
|
+
mobile: number;
|
|
3
|
+
tablet: number;
|
|
4
|
+
desktop: number;
|
|
5
|
+
}
|
|
6
|
+
export type SdViewportBreakpoint = keyof SdViewportBreakpoints;
|
|
7
|
+
export interface SdViewport {
|
|
8
|
+
innerWidth: number;
|
|
9
|
+
innerHeight?: number;
|
|
10
|
+
addEventListener(type: 'resize', listener: EventListenerOrEventListenerObject): void;
|
|
11
|
+
removeEventListener(type: 'resize', listener: EventListenerOrEventListenerObject): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Exposes one SSR-safe, signal-based viewport state for the application.
|
|
4
|
+
* Breakpoints use min-width semantics and can be configured through `SD_VIEWPORT_BREAKPOINTS`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SdViewportService {
|
|
7
|
+
#private;
|
|
8
|
+
readonly breakpoints: Readonly<import("@sdcorejs/angular/services/viewport").SdViewportBreakpoints>;
|
|
9
|
+
readonly width: import("@angular/core").Signal<number>;
|
|
10
|
+
readonly height: import("@angular/core").Signal<number>;
|
|
11
|
+
readonly currentBreakpoint: import("@angular/core").Signal<keyof import("@sdcorejs/angular/services/viewport").SdViewportBreakpoints>;
|
|
12
|
+
readonly isMobile: import("@angular/core").Signal<boolean>;
|
|
13
|
+
readonly isTablet: import("@angular/core").Signal<boolean>;
|
|
14
|
+
readonly isDesktop: import("@angular/core").Signal<boolean>;
|
|
15
|
+
constructor();
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdViewportService, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdViewportService>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { SdViewport, SdViewportBreakpoints } from './viewport.model';
|
|
3
|
+
export declare const SD_VIEWPORT_DEFAULT_BREAKPOINTS: Readonly<SdViewportBreakpoints>;
|
|
4
|
+
export declare const SD_VIEWPORT: InjectionToken<SdViewport | null>;
|
|
5
|
+
export declare const SD_VIEWPORT_BREAKPOINTS: InjectionToken<Readonly<SdViewportBreakpoints>>;
|
|
6
|
+
export declare function sdNormalizeViewportBreakpoints(value: Readonly<SdViewportBreakpoints>): Readonly<SdViewportBreakpoints>;
|