@abp/ng.theme.shared 7.2.2 → 7.3.0-rc.2
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 +129 -2
- package/{esm2020 → esm2022}/abp-ng.theme.shared.mjs +4 -4
- package/{esm2020 → esm2022}/extensions/abp-ng.theme.shared-extensions.mjs +4 -4
- package/esm2022/extensions/lib/adapters/date-time.adapter.mjs +45 -0
- package/esm2022/extensions/lib/adapters/date.adapter.mjs +42 -0
- package/esm2022/extensions/lib/adapters/time.adapter.mjs +37 -0
- package/esm2022/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +26 -0
- package/esm2022/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +110 -0
- package/esm2022/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +199 -0
- package/esm2022/extensions/lib/components/extensible-form/extensible-form.component.mjs +74 -0
- package/esm2022/extensions/lib/components/extensible-table/extensible-table.component.mjs +137 -0
- package/esm2022/extensions/lib/components/grid-actions/grid-actions.component.mjs +40 -0
- package/esm2022/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +39 -0
- package/{esm2020 → esm2022}/extensions/lib/constants/extra-properties.mjs +1 -1
- package/esm2022/extensions/lib/directives/disabled.directive.mjs +30 -0
- package/esm2022/extensions/lib/directives/prop-data.directive.mjs +42 -0
- package/{esm2020 → esm2022}/extensions/lib/enums/components.mjs +1 -1
- package/{esm2020 → esm2022}/extensions/lib/enums/props.enum.mjs +1 -1
- package/{esm2020 → esm2022}/extensions/lib/models/actions.mjs +46 -46
- package/{esm2020 → esm2022}/extensions/lib/models/entity-actions.mjs +28 -28
- package/esm2022/extensions/lib/models/entity-props.mjs +44 -0
- package/esm2022/extensions/lib/models/form-props.mjs +76 -0
- package/{esm2020 → esm2022}/extensions/lib/models/internal/object-extensions.mjs +2 -2
- package/{esm2020 → esm2022}/extensions/lib/models/object-extensions.mjs +2 -2
- package/esm2022/extensions/lib/models/props.mjs +54 -0
- package/{esm2020 → esm2022}/extensions/lib/models/toolbar-actions.mjs +43 -43
- package/esm2022/extensions/lib/pipes/create-injector.pipe.mjs +37 -0
- package/esm2022/extensions/lib/services/extensions.service.mjs +25 -0
- package/{esm2020 → esm2022}/extensions/lib/tokens/extensible-form-view-provider.token.mjs +2 -2
- package/{esm2020 → esm2022}/extensions/lib/tokens/extensions.token.mjs +11 -11
- package/esm2022/extensions/lib/ui-extensions.module.mjs +100 -0
- package/{esm2020 → esm2022}/extensions/lib/utils/actions.util.mjs +8 -8
- package/{esm2020 → esm2022}/extensions/lib/utils/enum.util.mjs +41 -41
- package/{esm2020 → esm2022}/extensions/lib/utils/factory.util.mjs +3 -3
- package/esm2022/extensions/lib/utils/form-props.util.mjs +51 -0
- package/{esm2020 → esm2022}/extensions/lib/utils/localization.util.mjs +12 -12
- package/{esm2020 → esm2022}/extensions/lib/utils/props.util.mjs +13 -13
- package/esm2022/extensions/lib/utils/state.util.mjs +126 -0
- package/{esm2020 → esm2022}/extensions/lib/utils/typeahead.util.mjs +51 -51
- package/{esm2020 → esm2022}/extensions/lib/utils/validation.util.mjs +10 -10
- package/{esm2020 → esm2022}/extensions/public-api.mjs +30 -30
- package/{esm2020 → esm2022}/lib/animations/bounce.animations.mjs +16 -16
- package/{esm2020 → esm2022}/lib/animations/collapse.animations.mjs +49 -49
- package/{esm2020 → esm2022}/lib/animations/fade.animations.mjs +37 -37
- package/{esm2020 → esm2022}/lib/animations/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/animations/modal.animations.mjs +10 -10
- package/{esm2020 → esm2022}/lib/animations/slide.animations.mjs +7 -7
- package/{esm2020 → esm2022}/lib/animations/toast.animations.mjs +12 -12
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +44 -0
- package/esm2022/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +20 -0
- package/esm2022/lib/components/button/button.component.mjs +103 -0
- package/{esm2020 → esm2022}/lib/components/card/card-body.component.mjs +27 -26
- package/esm2022/lib/components/card/card-footer.component.mjs +31 -0
- package/esm2022/lib/components/card/card-header.component.mjs +31 -0
- package/esm2022/lib/components/card/card-header.directive.mjs +20 -0
- package/esm2022/lib/components/card/card-img-top.directive.mjs +20 -0
- package/esm2022/lib/components/card/card-subtitle.directive.mjs +20 -0
- package/esm2022/lib/components/card/card-title.directive.mjs +20 -0
- package/esm2022/lib/components/card/card.component.mjs +24 -0
- package/esm2022/lib/components/card/card.module.mjs +50 -0
- package/{esm2020 → esm2022}/lib/components/card/index.mjs +9 -9
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +89 -0
- package/esm2022/lib/components/confirmation/confirmation.component.mjs +46 -0
- package/esm2022/lib/components/form-input/form-input.component.mjs +95 -0
- package/esm2022/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +60 -0
- package/{esm2020 → esm2022}/lib/components/index.mjs +16 -16
- package/esm2022/lib/components/loader-bar/loader-bar.component.mjs +122 -0
- package/esm2022/lib/components/loading/loading.component.mjs +20 -0
- package/esm2022/lib/components/modal/modal-close.directive.mjs +28 -0
- package/esm2022/lib/components/modal/modal-ref.service.mjs +27 -0
- package/esm2022/lib/components/modal/modal.component.mjs +190 -0
- package/esm2022/lib/components/password/password.component.mjs +39 -0
- package/esm2022/lib/components/toast/toast.component.mjs +56 -0
- package/esm2022/lib/components/toast-container/toast-container.component.mjs +59 -0
- package/{esm2020 → esm2022}/lib/constants/styles.mjs +1 -1
- package/{esm2020 → esm2022}/lib/constants/validation.mjs +19 -19
- package/esm2022/lib/directives/ellipsis.directive.mjs +65 -0
- package/{esm2020 → esm2022}/lib/directives/index.mjs +5 -5
- package/esm2022/lib/directives/loading.directive.mjs +90 -0
- package/esm2022/lib/directives/ngx-datatable-default.directive.mjs +76 -0
- package/esm2022/lib/directives/ngx-datatable-list.directive.mjs +95 -0
- package/esm2022/lib/directives/visible.directive.mjs +63 -0
- package/{esm2020 → esm2022}/lib/enums/form.mjs +5 -5
- package/{esm2020 → esm2022}/lib/enums/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/enums/route-names.mjs +1 -1
- package/esm2022/lib/handlers/document-dir.handler.mjs +32 -0
- package/esm2022/lib/handlers/error.handler.mjs +294 -0
- package/{esm2020 → esm2022}/lib/handlers/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/common.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/confirmation.mjs +9 -9
- package/{esm2020 → esm2022}/lib/models/index.mjs +7 -7
- package/{esm2020 → esm2022}/lib/models/nav-item.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/statistics.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/toaster.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/user-menu.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/validation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/providers/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/providers/ng-bootstrap-config.provider.mjs +16 -16
- package/{esm2020 → esm2022}/lib/providers/route.provider.mjs +17 -17
- package/{esm2020 → esm2022}/lib/services/abstract-menu.service.mjs +49 -49
- package/esm2022/lib/services/confirmation.service.mjs +69 -0
- package/{esm2020 → esm2022}/lib/services/index.mjs +5 -5
- package/esm2022/lib/services/nav-items.service.mjs +18 -0
- package/esm2022/lib/services/page-alert.service.mjs +29 -0
- package/esm2022/lib/services/toaster.service.mjs +104 -0
- package/esm2022/lib/services/user-menu.service.mjs +18 -0
- package/esm2022/lib/theme-shared.module.mjs +202 -0
- package/{esm2020 → esm2022}/lib/tokens/append-content.token.mjs +10 -10
- package/{esm2020 → esm2022}/lib/tokens/confirmation-icons.token.mjs +10 -10
- package/{esm2020 → esm2022}/lib/tokens/http-error.token.mjs +13 -13
- package/{esm2020 → esm2022}/lib/tokens/index.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tokens/ngx-datatable-messages.token.mjs +7 -7
- package/{esm2020 → esm2022}/lib/tokens/suppress-unsaved-changes-warning.token.mjs +2 -2
- package/esm2022/lib/utils/date-parser-formatter.mjs +59 -0
- package/{esm2020 → esm2022}/lib/utils/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/utils/validation-utils.mjs +61 -61
- package/{esm2020 → esm2022}/public-api.mjs +15 -15
- package/{esm2020 → esm2022}/testing/abp-ng.theme.shared-testing.mjs +4 -4
- package/{esm2020 → esm2022}/testing/lib/models/config.mjs +1 -1
- package/{esm2020 → esm2022}/testing/lib/models/index.mjs +1 -1
- package/esm2022/testing/lib/theme-shared-testing.module.mjs +47 -0
- package/{esm2020 → esm2022}/testing/public-api.mjs +3 -3
- package/extensions/index.d.ts +5 -5
- package/extensions/lib/adapters/date-time.adapter.d.ts +11 -11
- package/extensions/lib/adapters/date.adapter.d.ts +9 -9
- package/extensions/lib/adapters/time.adapter.d.ts +8 -8
- package/extensions/lib/components/abstract-actions/abstract-actions.component.d.ts +12 -12
- package/extensions/lib/components/date-time-picker/date-time-picker.component.d.ts +16 -16
- package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +43 -43
- package/extensions/lib/components/extensible-form/extensible-form.component.d.ts +25 -25
- package/extensions/lib/components/extensible-table/extensible-table.component.d.ts +38 -38
- package/extensions/lib/components/grid-actions/grid-actions.component.d.ts +13 -13
- package/extensions/lib/components/page-toolbar/page-toolbar.component.d.ts +20 -20
- package/extensions/lib/constants/extra-properties.d.ts +1 -1
- package/extensions/lib/directives/disabled.directive.d.ts +11 -11
- package/extensions/lib/directives/prop-data.directive.d.ts +19 -19
- package/extensions/lib/enums/components.d.ts +3 -3
- package/extensions/lib/enums/props.enum.d.ts +16 -16
- package/extensions/lib/models/actions.d.ts +36 -36
- package/extensions/lib/models/entity-actions.d.ts +22 -22
- package/extensions/lib/models/entity-props.d.ts +30 -29
- package/extensions/lib/models/form-props.d.ts +59 -58
- package/extensions/lib/models/internal/object-extensions.d.ts +86 -85
- package/extensions/lib/models/object-extensions.d.ts +2 -2
- package/extensions/lib/models/props.d.ts +45 -44
- package/extensions/lib/models/toolbar-actions.d.ts +38 -38
- package/extensions/lib/pipes/create-injector.pipe.d.ts +8 -8
- package/extensions/lib/services/extensions.service.d.ts +14 -14
- package/extensions/lib/tokens/extensible-form-view-provider.token.d.ts +5 -5
- package/extensions/lib/tokens/extensions.token.d.ts +20 -24
- package/extensions/lib/ui-extensions.module.d.ts +24 -24
- package/extensions/lib/utils/actions.util.d.ts +7 -7
- package/extensions/lib/utils/enum.util.d.ts +7 -7
- package/extensions/lib/utils/factory.util.d.ts +1 -1
- package/extensions/lib/utils/form-props.util.d.ts +3 -3
- package/extensions/lib/utils/localization.util.d.ts +3 -3
- package/extensions/lib/utils/props.util.d.ts +9 -9
- package/extensions/lib/utils/state.util.d.ts +5 -5
- package/extensions/lib/utils/typeahead.util.d.ts +11 -11
- package/extensions/lib/utils/validation.util.d.ts +3 -3
- package/extensions/public-api.d.ts +30 -30
- package/{fesm2020 → fesm2022}/abp-ng.theme.shared-extensions.mjs +1340 -1331
- package/fesm2022/abp-ng.theme.shared-extensions.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/abp-ng.theme.shared-testing.mjs +40 -40
- package/{fesm2015 → fesm2022}/abp-ng.theme.shared-testing.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/abp-ng.theme.shared.mjs +2292 -2290
- package/fesm2022/abp-ng.theme.shared.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/animations/bounce.animations.d.ts +1 -1
- package/lib/animations/collapse.animations.d.ts +9 -9
- package/lib/animations/fade.animations.d.ts +10 -10
- package/lib/animations/index.d.ts +6 -6
- package/lib/animations/modal.animations.d.ts +2 -2
- package/lib/animations/slide.animations.d.ts +1 -1
- package/lib/animations/toast.animations.d.ts +1 -1
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +16 -16
- package/lib/components/breadcrumb-items/breadcrumb-items.component.d.ts +7 -7
- package/lib/components/button/button.component.d.ts +26 -26
- package/lib/components/card/card-body.component.d.ts +8 -8
- package/lib/components/card/card-footer.component.d.ts +8 -8
- package/lib/components/card/card-header.component.d.ts +8 -8
- package/lib/components/card/card-header.directive.d.ts +6 -6
- package/lib/components/card/card-img-top.directive.d.ts +6 -6
- package/lib/components/card/card-subtitle.directive.d.ts +6 -6
- package/lib/components/card/card-title.directive.d.ts +6 -6
- package/lib/components/card/card.component.d.ts +7 -7
- package/lib/components/card/card.module.d.ts +15 -15
- package/lib/components/card/index.d.ts +9 -9
- package/lib/components/checkbox/checkbox.component.d.ts +18 -18
- package/lib/components/confirmation/confirmation.component.d.ts +19 -19
- package/lib/components/form-input/form-input.component.d.ts +19 -19
- package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +27 -27
- package/lib/components/index.d.ts +16 -16
- package/lib/components/loader-bar/loader-bar.component.d.ts +33 -33
- package/lib/components/loading/loading.component.d.ts +5 -5
- package/lib/components/modal/modal-close.directive.d.ts +9 -9
- package/lib/components/modal/modal-ref.service.d.ts +13 -13
- package/lib/components/modal/modal.component.d.ts +50 -50
- package/lib/components/password/password.component.d.ts +12 -12
- package/lib/components/toast/toast.component.d.ts +14 -14
- package/lib/components/toast-container/toast-container.component.d.ts +22 -22
- package/lib/constants/styles.d.ts +2 -2
- package/lib/constants/validation.d.ts +19 -19
- package/lib/directives/ellipsis.directive.d.ts +21 -21
- package/lib/directives/index.d.ts +5 -5
- package/lib/directives/loading.directive.d.ts +25 -25
- package/lib/directives/ngx-datatable-default.directive.d.ts +30 -30
- package/lib/directives/ngx-datatable-list.directive.d.ts +24 -24
- package/lib/directives/visible.directive.d.ts +18 -18
- package/lib/enums/form.d.ts +4 -4
- package/lib/enums/index.d.ts +2 -2
- package/lib/enums/route-names.d.ts +3 -3
- package/lib/handlers/document-dir.handler.d.ts +13 -13
- package/lib/handlers/error.handler.d.ts +83 -83
- package/lib/handlers/index.d.ts +2 -2
- package/lib/models/common.d.ts +21 -21
- package/lib/models/confirmation.d.ts +27 -27
- package/lib/models/index.d.ts +7 -7
- package/lib/models/nav-item.d.ts +13 -13
- package/lib/models/statistics.d.ts +12 -12
- package/lib/models/toaster.d.ts +30 -30
- package/lib/models/user-menu.d.ts +8 -8
- package/lib/models/validation.d.ts +1 -1
- package/lib/providers/index.d.ts +2 -2
- package/lib/providers/ng-bootstrap-config.provider.d.ts +8 -8
- package/lib/providers/route.provider.d.ts +8 -8
- package/lib/services/abstract-menu.service.d.ts +13 -13
- package/lib/services/confirmation.service.d.ts +21 -21
- package/lib/services/index.d.ts +5 -5
- package/lib/services/nav-items.service.d.ts +8 -8
- package/lib/services/page-alert.service.d.ts +18 -18
- package/lib/services/toaster.service.d.ts +60 -60
- package/lib/services/user-menu.service.d.ts +8 -8
- package/lib/theme-shared.module.d.ts +38 -38
- package/lib/tokens/append-content.token.d.ts +2 -2
- package/lib/tokens/confirmation-icons.token.d.ts +11 -11
- package/lib/tokens/http-error.token.d.ts +5 -5
- package/lib/tokens/index.d.ts +4 -4
- package/lib/tokens/ngx-datatable-messages.token.d.ts +12 -12
- package/lib/tokens/suppress-unsaved-changes-warning.token.d.ts +2 -2
- package/lib/utils/date-parser-formatter.d.ts +12 -12
- package/lib/utils/index.d.ts +2 -2
- package/lib/utils/validation-utils.d.ts +5 -5
- package/package.json +28 -24
- package/public-api.d.ts +12 -12
- package/testing/index.d.ts +5 -5
- package/testing/lib/models/config.d.ts +4 -4
- package/testing/lib/models/index.d.ts +1 -1
- package/testing/lib/theme-shared-testing.module.d.ts +14 -14
- package/testing/public-api.d.ts +3 -3
- package/esm2020/extensions/lib/adapters/date-time.adapter.mjs +0 -44
- package/esm2020/extensions/lib/adapters/date.adapter.mjs +0 -41
- package/esm2020/extensions/lib/adapters/time.adapter.mjs +0 -36
- package/esm2020/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +0 -25
- package/esm2020/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +0 -109
- package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +0 -198
- package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +0 -73
- package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +0 -135
- package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +0 -39
- package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +0 -38
- package/esm2020/extensions/lib/directives/disabled.directive.mjs +0 -29
- package/esm2020/extensions/lib/directives/prop-data.directive.mjs +0 -41
- package/esm2020/extensions/lib/models/entity-props.mjs +0 -43
- package/esm2020/extensions/lib/models/form-props.mjs +0 -75
- package/esm2020/extensions/lib/models/props.mjs +0 -53
- package/esm2020/extensions/lib/pipes/create-injector.pipe.mjs +0 -36
- package/esm2020/extensions/lib/services/extensions.service.mjs +0 -24
- package/esm2020/extensions/lib/ui-extensions.module.mjs +0 -95
- package/esm2020/extensions/lib/utils/form-props.util.mjs +0 -51
- package/esm2020/extensions/lib/utils/state.util.mjs +0 -123
- package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +0 -43
- package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +0 -19
- package/esm2020/lib/components/button/button.component.mjs +0 -102
- package/esm2020/lib/components/card/card-footer.component.mjs +0 -30
- package/esm2020/lib/components/card/card-header.component.mjs +0 -30
- package/esm2020/lib/components/card/card-header.directive.mjs +0 -19
- package/esm2020/lib/components/card/card-img-top.directive.mjs +0 -19
- package/esm2020/lib/components/card/card-subtitle.directive.mjs +0 -19
- package/esm2020/lib/components/card/card-title.directive.mjs +0 -19
- package/esm2020/lib/components/card/card.component.mjs +0 -23
- package/esm2020/lib/components/card/card.module.mjs +0 -49
- package/esm2020/lib/components/checkbox/checkbox.component.mjs +0 -88
- package/esm2020/lib/components/confirmation/confirmation.component.mjs +0 -45
- package/esm2020/lib/components/form-input/form-input.component.mjs +0 -94
- package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +0 -59
- package/esm2020/lib/components/loader-bar/loader-bar.component.mjs +0 -121
- package/esm2020/lib/components/loading/loading.component.mjs +0 -19
- package/esm2020/lib/components/modal/modal-close.directive.mjs +0 -27
- package/esm2020/lib/components/modal/modal-ref.service.mjs +0 -26
- package/esm2020/lib/components/modal/modal.component.mjs +0 -189
- package/esm2020/lib/components/password/password.component.mjs +0 -38
- package/esm2020/lib/components/toast/toast.component.mjs +0 -55
- package/esm2020/lib/components/toast-container/toast-container.component.mjs +0 -58
- package/esm2020/lib/directives/ellipsis.directive.mjs +0 -63
- package/esm2020/lib/directives/loading.directive.mjs +0 -89
- package/esm2020/lib/directives/ngx-datatable-default.directive.mjs +0 -75
- package/esm2020/lib/directives/ngx-datatable-list.directive.mjs +0 -94
- package/esm2020/lib/directives/visible.directive.mjs +0 -62
- package/esm2020/lib/handlers/document-dir.handler.mjs +0 -31
- package/esm2020/lib/handlers/error.handler.mjs +0 -291
- package/esm2020/lib/services/confirmation.service.mjs +0 -68
- package/esm2020/lib/services/nav-items.service.mjs +0 -17
- package/esm2020/lib/services/page-alert.service.mjs +0 -28
- package/esm2020/lib/services/toaster.service.mjs +0 -103
- package/esm2020/lib/services/user-menu.service.mjs +0 -17
- package/esm2020/lib/theme-shared.module.mjs +0 -200
- package/esm2020/lib/utils/date-parser-formatter.mjs +0 -58
- package/esm2020/testing/lib/theme-shared-testing.module.mjs +0 -46
- package/fesm2015/abp-ng.theme.shared-extensions.mjs +0 -1460
- package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +0 -1
- package/fesm2015/abp-ng.theme.shared-testing.mjs +0 -54
- package/fesm2015/abp-ng.theme.shared.mjs +0 -2767
- package/fesm2015/abp-ng.theme.shared.mjs.map +0 -1
- package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +0 -1
- package/fesm2020/abp-ng.theme.shared-testing.mjs.map +0 -1
- package/fesm2020/abp-ng.theme.shared.mjs.map +0 -1
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core';
|
|
2
|
-
import { EMPTY, from, Observable, of } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class AbpVisibleDirective {
|
|
5
|
-
constructor(viewContainerRef, templateRef) {
|
|
6
|
-
this.viewContainerRef = viewContainerRef;
|
|
7
|
-
this.templateRef = templateRef;
|
|
8
|
-
this.condition$ = of(false);
|
|
9
|
-
}
|
|
10
|
-
set abpVisible(value) {
|
|
11
|
-
this.condition$ = checkType(value);
|
|
12
|
-
this.subscribeToCondition();
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
this.updateVisibility();
|
|
16
|
-
}
|
|
17
|
-
ngOnDestroy() {
|
|
18
|
-
this.conditionSubscription?.unsubscribe();
|
|
19
|
-
}
|
|
20
|
-
subscribeToCondition() {
|
|
21
|
-
this.conditionSubscription = this.condition$.subscribe(value => {
|
|
22
|
-
this.isVisible = value;
|
|
23
|
-
this.updateVisibility();
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
updateVisibility() {
|
|
27
|
-
this.viewContainerRef.clear();
|
|
28
|
-
// it should be false not falsy
|
|
29
|
-
if (this.isVisible === false) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
AbpVisibleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
36
|
-
AbpVisibleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: { abpVisible: "abpVisible" }, ngImport: i0 });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, decorators: [{
|
|
38
|
-
type: Directive,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: '[abpVisible]',
|
|
41
|
-
}]
|
|
42
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { abpVisible: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}] } });
|
|
45
|
-
function checkType(value) {
|
|
46
|
-
if (value instanceof Promise) {
|
|
47
|
-
return from(value);
|
|
48
|
-
}
|
|
49
|
-
else if (value instanceof Observable) {
|
|
50
|
-
return value;
|
|
51
|
-
}
|
|
52
|
-
else if (typeof value === 'boolean') {
|
|
53
|
-
return of(value);
|
|
54
|
-
}
|
|
55
|
-
else if (value === undefined || value === null) {
|
|
56
|
-
return of(true);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return EMPTY;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL3Zpc2libGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxTQUFTLEVBQWEsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLGdCQUFrQyxFQUNsQyxXQUFpQztRQURqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUpuQyxlQUFVLEdBQXdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUtqRCxDQUFDO0lBWkosSUFBYSxVQUFVLENBQ3JCLEtBQTBFO1FBRTFFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ08sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QiwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7O2dIQXJDVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6QjtpSUFLYyxVQUFVO3NCQUF0QixLQUFLOztBQW9DUixTQUFTLFNBQVMsQ0FBQyxLQUEwRTtJQUMzRixJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUU7UUFDNUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDcEI7U0FBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7UUFDdEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xCO1NBQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDaEQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakI7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thYnBWaXNpYmxlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBWaXNpYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGNvbmRpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGFicFZpc2libGUoXHJcbiAgICB2YWx1ZTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkIHwgbnVsbCxcclxuICApIHtcclxuICAgIHRoaXMuY29uZGl0aW9uJCA9IGNoZWNrVHlwZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQ29uZGl0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4sXHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25kaXRpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQ29uZGl0aW9uKCkge1xyXG4gICAgdGhpcy5jb25kaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmRpdGlvbiQuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICAvLyBpdCBzaG91bGQgYmUgZmFsc2Ugbm90IGZhbHN5XHJcbiAgICBpZiAodGhpcy5pc1Zpc2libGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja1R5cGUodmFsdWU6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICByZXR1cm4gZnJvbSh2YWx1ZSk7XHJcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICByZXR1cm4gb2YodmFsdWUpO1xyXG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gRU1QVFk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { getLocaleDirection, LocalizationService } from '@abp/ng.core';
|
|
2
|
-
import { Injectable, Injector } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import { map } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class DocumentDirHandlerService {
|
|
7
|
-
constructor(injector) {
|
|
8
|
-
this.injector = injector;
|
|
9
|
-
this.dir = new BehaviorSubject('ltr');
|
|
10
|
-
this.dir$ = this.dir.asObservable();
|
|
11
|
-
this.listenToLanguageChanges();
|
|
12
|
-
}
|
|
13
|
-
listenToLanguageChanges() {
|
|
14
|
-
const l10n = this.injector.get(LocalizationService);
|
|
15
|
-
// will always listen, no need to unsubscribe
|
|
16
|
-
l10n.currentLang$.pipe(map(locale => getLocaleDirection(locale))).subscribe(dir => {
|
|
17
|
-
this.dir.next(dir);
|
|
18
|
-
this.setBodyDir(dir);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
setBodyDir(dir) {
|
|
22
|
-
document.body.dir = dir;
|
|
23
|
-
document.dir = dir;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
DocumentDirHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27
|
-
DocumentDirHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, decorators: [{
|
|
29
|
-
type: Injectable
|
|
30
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlyLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9oYW5kbGVycy9kb2N1bWVudC1kaXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSXJDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZoQyxRQUFHLEdBQUcsSUFBSSxlQUFlLENBQWtCLEtBQUssQ0FBQyxDQUFDO1FBQzFELFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoRixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFvQjtRQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDeEIsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQzs7c0hBbkJVLHlCQUF5QjswSEFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhbGVEaXJlY3Rpb24sIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBMb2NhbGVEaXJlY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50RGlySGFuZGxlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMb2NhbGVEaXJlY3Rpb24+KCdsdHInKTtcclxuICBkaXIkID0gdGhpcy5kaXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5saXN0ZW5Ub0xhbmd1YWdlQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub0xhbmd1YWdlQ2hhbmdlcygpIHtcclxuICAgIGNvbnN0IGwxMG4gPSB0aGlzLmluamVjdG9yLmdldChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICAgIC8vIHdpbGwgYWx3YXlzIGxpc3Rlbiwgbm8gbmVlZCB0byB1bnN1YnNjcmliZVxyXG4gICAgbDEwbi5jdXJyZW50TGFuZyQucGlwZShtYXAobG9jYWxlID0+IGdldExvY2FsZURpcmVjdGlvbihsb2NhbGUpKSkuc3Vic2NyaWJlKGRpciA9PiB7XHJcbiAgICAgIHRoaXMuZGlyLm5leHQoZGlyKTtcclxuICAgICAgdGhpcy5zZXRCb2R5RGlyKGRpcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Qm9keURpcihkaXI6IExvY2FsZURpcmVjdGlvbikge1xyXG4gICAgZG9jdW1lbnQuYm9keS5kaXIgPSBkaXI7XHJcbiAgICBkb2N1bWVudC5kaXIgPSBkaXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { AuthService, HttpErrorReporterService, RouterEvents, } from '@abp/ng.core';
|
|
2
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, RendererFactory2, } from '@angular/core';
|
|
4
|
-
import { ResolveEnd } from '@angular/router';
|
|
5
|
-
import { Observable, of, Subject, throwError } from 'rxjs';
|
|
6
|
-
import { catchError, filter, switchMap } from 'rxjs/operators';
|
|
7
|
-
import { HttpErrorWrapperComponent } from '../components/http-error-wrapper/http-error-wrapper.component';
|
|
8
|
-
import { ConfirmationService } from '../services/confirmation.service';
|
|
9
|
-
import { HTTP_ERROR_HANDLER } from '../tokens/http-error.token';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export const DEFAULT_ERROR_MESSAGES = {
|
|
12
|
-
defaultError: {
|
|
13
|
-
title: 'An error has occurred!',
|
|
14
|
-
details: 'Error detail not sent by server.',
|
|
15
|
-
},
|
|
16
|
-
defaultError401: {
|
|
17
|
-
title: 'You are not authenticated!',
|
|
18
|
-
details: 'You should be authenticated (sign in) in order to perform this operation.',
|
|
19
|
-
},
|
|
20
|
-
defaultError403: {
|
|
21
|
-
title: 'You are not authorized!',
|
|
22
|
-
details: 'You are not allowed to perform this operation.',
|
|
23
|
-
},
|
|
24
|
-
defaultError404: {
|
|
25
|
-
title: 'Resource not found!',
|
|
26
|
-
details: 'The resource requested could not found on the server.',
|
|
27
|
-
},
|
|
28
|
-
defaultError500: {
|
|
29
|
-
title: 'Internal server error',
|
|
30
|
-
details: 'Error detail not sent by server.',
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
export const DEFAULT_ERROR_LOCALIZATIONS = {
|
|
34
|
-
defaultError: {
|
|
35
|
-
title: 'AbpUi::DefaultErrorMessage',
|
|
36
|
-
details: 'AbpUi::DefaultErrorMessageDetail',
|
|
37
|
-
},
|
|
38
|
-
defaultError401: {
|
|
39
|
-
title: 'AbpUi::DefaultErrorMessage401',
|
|
40
|
-
details: 'AbpUi::DefaultErrorMessage401Detail',
|
|
41
|
-
},
|
|
42
|
-
defaultError403: {
|
|
43
|
-
title: 'AbpUi::DefaultErrorMessage403',
|
|
44
|
-
details: 'AbpUi::DefaultErrorMessage403Detail',
|
|
45
|
-
},
|
|
46
|
-
defaultError404: {
|
|
47
|
-
title: 'AbpUi::DefaultErrorMessage404',
|
|
48
|
-
details: 'AbpUi::DefaultErrorMessage404Detail',
|
|
49
|
-
},
|
|
50
|
-
defaultError500: {
|
|
51
|
-
title: 'AbpUi::500Message',
|
|
52
|
-
details: 'AbpUi::DefaultErrorMessage',
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
export class ErrorHandler {
|
|
56
|
-
constructor(injector) {
|
|
57
|
-
this.injector = injector;
|
|
58
|
-
this.componentRef = null;
|
|
59
|
-
this.httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err) => throwError(err));
|
|
60
|
-
this.executeErrorHandler = (error) => {
|
|
61
|
-
const returnValue = this.httpErrorHandler(this.injector, error);
|
|
62
|
-
return (returnValue instanceof Observable ? returnValue : of(null)).pipe(catchError(err => {
|
|
63
|
-
this.handleError(err);
|
|
64
|
-
return of(null);
|
|
65
|
-
}));
|
|
66
|
-
};
|
|
67
|
-
this.filterRestErrors = ({ status }) => {
|
|
68
|
-
if (typeof status !== 'number')
|
|
69
|
-
return false;
|
|
70
|
-
return (!!this.httpErrorConfig.skipHandledErrorCodes &&
|
|
71
|
-
this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0);
|
|
72
|
-
};
|
|
73
|
-
this.filterRouteErrors = (navigationError) => {
|
|
74
|
-
return (navigationError.error?.message?.indexOf('Cannot match') > -1 &&
|
|
75
|
-
!!this.httpErrorConfig.skipHandledErrorCodes &&
|
|
76
|
-
this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === 404) < 0);
|
|
77
|
-
};
|
|
78
|
-
this.httpErrorReporter = injector.get(HttpErrorReporterService);
|
|
79
|
-
this.routerEvents = injector.get(RouterEvents);
|
|
80
|
-
this.confirmationService = injector.get(ConfirmationService);
|
|
81
|
-
this.cfRes = injector.get(ComponentFactoryResolver);
|
|
82
|
-
this.rendererFactory = injector.get(RendererFactory2);
|
|
83
|
-
this.httpErrorConfig = injector.get('HTTP_ERROR_CONFIG');
|
|
84
|
-
this.authService = this.injector.get(AuthService);
|
|
85
|
-
this.listenToRestError();
|
|
86
|
-
this.listenToRouterError();
|
|
87
|
-
this.listenToRouterDataResolved();
|
|
88
|
-
}
|
|
89
|
-
listenToRouterError() {
|
|
90
|
-
this.routerEvents
|
|
91
|
-
.getNavigationEvents('Error')
|
|
92
|
-
.pipe(filter(this.filterRouteErrors))
|
|
93
|
-
.subscribe(() => this.show404Page());
|
|
94
|
-
}
|
|
95
|
-
listenToRouterDataResolved() {
|
|
96
|
-
this.routerEvents
|
|
97
|
-
.getEvents(ResolveEnd)
|
|
98
|
-
.pipe(filter(() => !!this.componentRef))
|
|
99
|
-
.subscribe(() => {
|
|
100
|
-
this.componentRef?.destroy();
|
|
101
|
-
this.componentRef = null;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
listenToRestError() {
|
|
105
|
-
this.httpErrorReporter.reporter$
|
|
106
|
-
.pipe(filter(this.filterRestErrors), switchMap(this.executeErrorHandler))
|
|
107
|
-
.subscribe();
|
|
108
|
-
}
|
|
109
|
-
handleError(err) {
|
|
110
|
-
const body = err?.error?.error || {
|
|
111
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
|
|
112
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
|
|
113
|
-
};
|
|
114
|
-
if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
|
|
115
|
-
const confirmation$ = this.showErrorWithRequestBody(body);
|
|
116
|
-
if (err.status === 401) {
|
|
117
|
-
confirmation$.subscribe(() => {
|
|
118
|
-
this.navigateToLogin();
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
|
|
123
|
-
this.authService.logout().subscribe();
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
switch (err.status) {
|
|
127
|
-
case 401:
|
|
128
|
-
this.canCreateCustomError(401)
|
|
129
|
-
? this.show401Page()
|
|
130
|
-
: this.showError({
|
|
131
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
|
|
132
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
|
|
133
|
-
}, {
|
|
134
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.details,
|
|
135
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.details,
|
|
136
|
-
}).subscribe(() => this.navigateToLogin());
|
|
137
|
-
break;
|
|
138
|
-
case 403:
|
|
139
|
-
this.createErrorComponent({
|
|
140
|
-
title: {
|
|
141
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.title,
|
|
142
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.title,
|
|
143
|
-
},
|
|
144
|
-
details: {
|
|
145
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.details,
|
|
146
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.details,
|
|
147
|
-
},
|
|
148
|
-
status: 403,
|
|
149
|
-
});
|
|
150
|
-
break;
|
|
151
|
-
case 404: {
|
|
152
|
-
this.canCreateCustomError(404)
|
|
153
|
-
? this.show404Page()
|
|
154
|
-
: this.showError({
|
|
155
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.details,
|
|
156
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.details,
|
|
157
|
-
}, {
|
|
158
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
|
|
159
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
|
|
160
|
-
});
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
case 500:
|
|
164
|
-
this.createErrorComponent({
|
|
165
|
-
title: {
|
|
166
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.title,
|
|
167
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.title,
|
|
168
|
-
},
|
|
169
|
-
details: {
|
|
170
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.details,
|
|
171
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.details,
|
|
172
|
-
},
|
|
173
|
-
status: 500,
|
|
174
|
-
});
|
|
175
|
-
break;
|
|
176
|
-
case 0:
|
|
177
|
-
if (err.statusText === 'Unknown Error') {
|
|
178
|
-
this.createErrorComponent({
|
|
179
|
-
title: {
|
|
180
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
|
|
181
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
|
|
182
|
-
},
|
|
183
|
-
details: err.message,
|
|
184
|
-
isHomeShow: false,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
break;
|
|
188
|
-
default:
|
|
189
|
-
this.showError({
|
|
190
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.details,
|
|
191
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.details,
|
|
192
|
-
}, {
|
|
193
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
|
|
194
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
|
|
195
|
-
});
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
show401Page() {
|
|
201
|
-
this.createErrorComponent({
|
|
202
|
-
title: {
|
|
203
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
|
|
204
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
|
|
205
|
-
},
|
|
206
|
-
status: 401,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
show404Page() {
|
|
210
|
-
this.createErrorComponent({
|
|
211
|
-
title: {
|
|
212
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
|
|
213
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
|
|
214
|
-
},
|
|
215
|
-
status: 404,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
showErrorWithRequestBody(body) {
|
|
219
|
-
let message;
|
|
220
|
-
let title;
|
|
221
|
-
if (body.details) {
|
|
222
|
-
message = body.details;
|
|
223
|
-
title = body.message;
|
|
224
|
-
}
|
|
225
|
-
else if (body.message) {
|
|
226
|
-
title = {
|
|
227
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
|
|
228
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
|
|
229
|
-
};
|
|
230
|
-
message = body.message;
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
message = body.message || {
|
|
234
|
-
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
|
|
235
|
-
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
|
|
236
|
-
};
|
|
237
|
-
title = '';
|
|
238
|
-
}
|
|
239
|
-
return this.showError(message, title);
|
|
240
|
-
}
|
|
241
|
-
showError(message, title) {
|
|
242
|
-
return this.confirmationService.error(message, title, {
|
|
243
|
-
hideCancelBtn: true,
|
|
244
|
-
yesText: 'AbpAccount::Close',
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
navigateToLogin() {
|
|
248
|
-
this.authService.navigateToLogin();
|
|
249
|
-
}
|
|
250
|
-
createErrorComponent(instance) {
|
|
251
|
-
const renderer = this.rendererFactory.createRenderer(null, null);
|
|
252
|
-
const host = renderer.selectRootElement(document.body, true);
|
|
253
|
-
this.componentRef = this.cfRes
|
|
254
|
-
.resolveComponentFactory(HttpErrorWrapperComponent)
|
|
255
|
-
.create(this.injector);
|
|
256
|
-
for (const key in instance) {
|
|
257
|
-
/* istanbul ignore else */
|
|
258
|
-
if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
|
|
259
|
-
this.componentRef.instance[key] = instance[key];
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
this.componentRef.instance.hideCloseIcon = !!this.httpErrorConfig.errorScreen?.hideCloseIcon;
|
|
263
|
-
const appRef = this.injector.get(ApplicationRef);
|
|
264
|
-
if (this.canCreateCustomError(instance.status)) {
|
|
265
|
-
this.componentRef.instance.cfRes = this.cfRes;
|
|
266
|
-
this.componentRef.instance.appRef = appRef;
|
|
267
|
-
this.componentRef.instance.injector = this.injector;
|
|
268
|
-
this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
|
|
269
|
-
}
|
|
270
|
-
appRef.attachView(this.componentRef.hostView);
|
|
271
|
-
renderer.appendChild(host, this.componentRef.hostView.rootNodes[0]);
|
|
272
|
-
const destroy$ = new Subject();
|
|
273
|
-
this.componentRef.instance.destroy$ = destroy$;
|
|
274
|
-
destroy$.subscribe(() => {
|
|
275
|
-
this.componentRef?.destroy();
|
|
276
|
-
this.componentRef = null;
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
canCreateCustomError(status) {
|
|
280
|
-
return !!(this.httpErrorConfig?.errorScreen?.component &&
|
|
281
|
-
this.httpErrorConfig?.errorScreen?.forWhichErrors &&
|
|
282
|
-
this.httpErrorConfig?.errorScreen?.forWhichErrors.indexOf(status) > -1);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
ErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
286
|
-
ErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, providedIn: 'root' });
|
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, decorators: [{
|
|
288
|
-
type: Injectable,
|
|
289
|
-
args: [{ providedIn: 'root' }]
|
|
290
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCx3QkFBd0IsRUFFeEIsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUcxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixPQUFPLEVBQUUsa0NBQWtDO0tBQzVDO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLDRCQUE0QjtRQUNuQyxPQUFPLEVBQUUsMkVBQTJFO0tBQ3JGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxPQUFPLEVBQUUsZ0RBQWdE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LGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUztZQUM1QyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDOzt5R0F6UVUsWUFBWTs2R0FBWixZQUFZLGNBREMsTUFBTTsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSxcclxuICBMb2NhbGl6YXRpb25QYXJhbSxcclxuICBSb3V0ZXJFdmVudHMsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3RvcixcclxuICBSZW5kZXJlckZhY3RvcnkyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXJyb3IsIFJlc29sdmVFbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaHR0cC1lcnJvci13cmFwcGVyL2h0dHAtZXJyb3Itd3JhcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvclNjcmVlbkVycm9yQ29kZXMsIEh0dHBFcnJvckNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSFRUUF9FUlJPUl9IQU5ETEVSIH0gZnJvbSAnLi4vdG9rZW5zL2h0dHAtZXJyb3IudG9rZW4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgPSB7XHJcbiAgZGVmYXVsdEVycm9yOiB7XHJcbiAgICB0aXRsZTogJ0FuIGVycm9yIGhhcyBvY2N1cnJlZCEnLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdZb3UgYXJlIG5vdCBhdXRoZW50aWNhdGVkIScsXHJcbiAgICBkZXRhaWxzOiAnWW91IHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIChzaWduIGluKSBpbiBvcmRlciB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLicsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDM6IHtcclxuICAgIHRpdGxlOiAnWW91IGFyZSBub3QgYXV0aG9yaXplZCEnLFxyXG4gICAgZGV0YWlsczogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDA0OiB7XHJcbiAgICB0aXRsZTogJ1Jlc291cmNlIG5vdCBmb3VuZCEnLFxyXG4gICAgZGV0YWlsczogJ1RoZSByZXNvdXJjZSByZXF1ZXN0ZWQgY291bGQgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUyA9IHtcclxuICBkZWZhdWx0RXJyb3I6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlRGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwMScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDFEZXRhaWwnLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDAzOiB7XHJcbiAgICB0aXRsZTogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDAzJyxcclxuICAgIGRldGFpbHM6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwM0RldGFpbCcsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDQ6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDQnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDA0RGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6NTAwTWVzc2FnZScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gIH0sXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyIHtcclxuICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9ySGFuZGxlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBfRVJST1JfSEFORExFUiwgKF8sIGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+XHJcbiAgICB0aHJvd0Vycm9yKGVyciksXHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlckV2ZW50czogUm91dGVyRXZlbnRzO1xyXG4gIHByb3RlY3RlZCBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBjZlJlczogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG4gIHByb3RlY3RlZCByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTI7XHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvckNvbmZpZzogSHR0cEVycm9yQ29uZmlnO1xyXG4gIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0b3IuZ2V0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcbiAgICB0aGlzLnJvdXRlckV2ZW50cyA9IGluamVjdG9yLmdldChSb3V0ZXJFdmVudHMpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbmZpcm1hdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5jZlJlcyA9IGluamVjdG9yLmdldChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xyXG4gICAgdGhpcy5yZW5kZXJlckZhY3RvcnkgPSBpbmplY3Rvci5nZXQoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICB0aGlzLmh0dHBFcnJvckNvbmZpZyA9IGluamVjdG9yLmdldCgnSFRUUF9FUlJPUl9DT05GSUcnKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5Ub1Jlc3RFcnJvcigpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub1JvdXRlckVycm9yKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVG9Sb3V0ZXJFcnJvcigpIHtcclxuICAgIHRoaXMucm91dGVyRXZlbnRzXHJcbiAgICAgIC5nZXROYXZpZ2F0aW9uRXZlbnRzKCdFcnJvcicpXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJvdXRlRXJyb3JzKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3c0MDRQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJFdmVudHNcclxuICAgICAgLmdldEV2ZW50cyhSZXNvbHZlRW5kKVxyXG4gICAgICAucGlwZShmaWx0ZXIoKCkgPT4gISF0aGlzLmNvbXBvbmVudFJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub1Jlc3RFcnJvcigpIHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0ZXIkXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJlc3RFcnJvcnMpLCBzd2l0Y2hNYXAodGhpcy5leGVjdXRlRXJyb3JIYW5kbGVyKSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlRXJyb3JIYW5kbGVyID0gKGVycm9yOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gdGhpcy5odHRwRXJyb3JIYW5kbGVyKHRoaXMuaW5qZWN0b3IsIGVycm9yKTtcclxuXHJcbiAgICByZXR1cm4gKHJldHVyblZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHJldHVyblZhbHVlIDogb2YobnVsbCkpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSkge1xyXG4gICAgY29uc3QgYm9keSA9IGVycj8uZXJyb3I/LmVycm9yIHx8IHtcclxuICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyLmhlYWRlcnMuZ2V0KCdfQWJwRXJyb3JGb3JtYXQnKSkge1xyXG4gICAgICBjb25zdCBjb25maXJtYXRpb24kID0gdGhpcy5zaG93RXJyb3JXaXRoUmVxdWVzdEJvZHkoYm9keSk7XHJcblxyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBpZihlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnIuaGVhZGVycy5nZXQoJ0FicC1UZW5hbnQtUmVzb2x2ZS1FcnJvcicpKXtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAoZXJyLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgdGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcig0MDEpXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93NDAxUGFnZSgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDAxLmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDMudGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMy50aXRsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV0YWlsczoge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMy5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDMuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiA0MDMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDA0OntcclxuICAgICAgICAgIHRoaXMuY2FuQ3JlYXRlQ3VzdG9tRXJyb3IoNDA0KVxyXG4gICAgICAgICAgICA/IHRoaXMuc2hvdzQwNFBhZ2UoKVxyXG4gICAgICAgICAgICA6IHRoaXMuc2hvd0Vycm9yKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDQuZGV0YWlscyxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwNC5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgdGhpcy5jcmVhdGVFcnJvckNvbXBvbmVudCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNTAwLnRpdGxlLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I1MDAudGl0bGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRldGFpbHM6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I1MDAuZGV0YWlscyxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNTAwLmRldGFpbHMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YXR1czogNTAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1c1RleHQgPT09ICdVbmtub3duIEVycm9yJykge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGRldGFpbHM6IGVyci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgIGlzSG9tZVNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcihcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2hvdzQwMVBhZ2UoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDEudGl0bGUsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgfSxcclxuICAgICAgc3RhdHVzOiA0MDEsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93NDA0UGFnZSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xyXG4gICAgICB0aXRsZToge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwNC50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICB9LFxyXG4gICAgICBzdGF0dXM6IDQwNCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvcldpdGhSZXF1ZXN0Qm9keShib2R5OiBhbnkpIHtcclxuICAgIGxldCBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbTtcclxuICAgIGxldCB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW07XHJcblxyXG4gICAgaWYgKGJvZHkuZGV0YWlscykge1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5kZXRhaWxzO1xyXG4gICAgICB0aXRsZSA9IGJvZHkubWVzc2FnZTtcclxuICAgIH0gZWxzZSBpZiAoYm9keS5tZXNzYWdlKSB7XHJcbiAgICAgIHRpdGxlID0ge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICB9O1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5tZXNzYWdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWVzc2FnZSA9IGJvZHkubWVzc2FnZSB8fCB7XHJcbiAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRpdGxlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UsIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93RXJyb3IoXHJcbiAgICBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIHRpdGxlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuZXJyb3IobWVzc2FnZSwgdGl0bGUsIHtcclxuICAgICAgaGlkZUNhbmNlbEJ0bjogdHJ1ZSxcclxuICAgICAgeWVzVGV4dDogJ0FicEFjY291bnQ6OkNsb3NlJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvTG9naW4oKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbigpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRXJyb3JDb21wb25lbnQoaW5zdGFuY2U6IFBhcnRpYWw8SHR0cEVycm9yV3JhcHBlckNvbXBvbmVudD4pIHtcclxuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICBjb25zdCBob3N0ID0gcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoZG9jdW1lbnQuYm9keSwgdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmUmVzXHJcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50KVxyXG4gICAgICAuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluc3RhbmNlKSB7XHJcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIGtleSkpIHtcclxuICAgICAgICAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KVtrZXldID0gKGluc3RhbmNlIGFzIGFueSlba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVDbG9zZUljb24gPSAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5oaWRlQ2xvc2VJY29uO1xyXG4gICAgY29uc3QgYXBwUmVmID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUN1c3RvbUVycm9yKGluc3RhbmNlLnN0YXR1cyBhcyBFcnJvclNjcmVlbkVycm9yQ29kZXMpKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNmUmVzID0gdGhpcy5jZlJlcztcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXBwUmVmID0gYXBwUmVmO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbmplY3RvciA9IHRoaXMuaW5qZWN0b3I7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmN1c3RvbUNvbXBvbmVudCA9IHRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5jb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoaG9zdCwgKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0pO1xyXG5cclxuICAgIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmRlc3Ryb3kkID0gZGVzdHJveSQ7XHJcbiAgICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZUN1c3RvbUVycm9yKHN0YXR1czogRXJyb3JTY3JlZW5FcnJvckNvZGVzKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uY29tcG9uZW50ICYmXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uZm9yV2hpY2hFcnJvcnMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWc/LmVycm9yU2NyZWVuPy5mb3JXaGljaEVycm9ycy5pbmRleE9mKHN0YXR1cykgPiAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBmaWx0ZXJSZXN0RXJyb3JzID0gKHsgc3RhdHVzIH06IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodHlwZW9mIHN0YXR1cyAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLnNraXBIYW5kbGVkRXJyb3JDb2RlcyAmJlxyXG4gICAgICB0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMuZmluZEluZGV4KGNvZGUgPT4gY29kZSA9PT0gc3RhdHVzKSA8IDBcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGZpbHRlclJvdXRlRXJyb3JzID0gKG5hdmlnYXRpb25FcnJvcjogTmF2aWdhdGlvbkVycm9yKTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBuYXZpZ2F0aW9uRXJyb3IuZXJyb3I/Lm1lc3NhZ2U/LmluZGV4T2YoJ0Nhbm5vdCBtYXRjaCcpID4gLTEgJiZcclxuICAgICAgISF0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWcuc2tpcEhhbmRsZWRFcnJvckNvZGVzLmZpbmRJbmRleChjb2RlID0+IGNvZGUgPT09IDQwNCkgPCAwXHJcbiAgICApO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ContentProjectionService, PROJECTION_STRATEGY } from '@abp/ng.core';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { fromEvent, ReplaySubject, Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime, filter, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { ConfirmationComponent } from '../components/confirmation/confirmation.component';
|
|
6
|
-
import { Confirmation } from '../models/confirmation';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@abp/ng.core";
|
|
9
|
-
export class ConfirmationService {
|
|
10
|
-
constructor(contentProjectionService) {
|
|
11
|
-
this.contentProjectionService = contentProjectionService;
|
|
12
|
-
this.confirmation$ = new ReplaySubject(1);
|
|
13
|
-
this.clear = (status = Confirmation.Status.dismiss) => {
|
|
14
|
-
this.confirmation$.next(null);
|
|
15
|
-
this.status$.next(status);
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
setContainer() {
|
|
19
|
-
this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ConfirmationComponent, {
|
|
20
|
-
confirmation$: this.confirmation$,
|
|
21
|
-
clear: this.clear,
|
|
22
|
-
}));
|
|
23
|
-
setTimeout(() => {
|
|
24
|
-
this.containerComponentRef.changeDetectorRef.detectChanges();
|
|
25
|
-
}, 0);
|
|
26
|
-
}
|
|
27
|
-
info(message, title, options) {
|
|
28
|
-
return this.show(message, title, 'info', options);
|
|
29
|
-
}
|
|
30
|
-
success(message, title, options) {
|
|
31
|
-
return this.show(message, title, 'success', options);
|
|
32
|
-
}
|
|
33
|
-
warn(message, title, options) {
|
|
34
|
-
return this.show(message, title, 'warning', options);
|
|
35
|
-
}
|
|
36
|
-
error(message, title, options) {
|
|
37
|
-
return this.show(message, title, 'error', options);
|
|
38
|
-
}
|
|
39
|
-
show(message, title, severity, options = {}) {
|
|
40
|
-
if (!this.containerComponentRef)
|
|
41
|
-
this.setContainer();
|
|
42
|
-
this.confirmation$.next({
|
|
43
|
-
message,
|
|
44
|
-
title,
|
|
45
|
-
severity: severity || 'neutral',
|
|
46
|
-
options,
|
|
47
|
-
});
|
|
48
|
-
this.status$ = new Subject();
|
|
49
|
-
const { dismissible = true } = options;
|
|
50
|
-
if (dismissible)
|
|
51
|
-
this.listenToEscape();
|
|
52
|
-
return this.status$;
|
|
53
|
-
}
|
|
54
|
-
listenToEscape() {
|
|
55
|
-
fromEvent(document, 'keyup')
|
|
56
|
-
.pipe(takeUntil(this.status$), debounceTime(150), filter((key) => key && key.key === 'Escape'))
|
|
57
|
-
.subscribe(() => {
|
|
58
|
-
this.clear();
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, deps: [{ token: i1.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
63
|
-
ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, decorators: [{
|
|
65
|
-
type: Injectable,
|
|
66
|
-
args: [{ providedIn: 'root' }]
|
|
67
|
-
}], ctorParameters: function () { return [{ type: i1.ContentProjectionService }]; } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hHLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUd0RCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQW9CLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBVHRFLGtCQUFhLEdBQUcsSUFBSSxhQUFhLENBQWlDLENBQUMsQ0FBQyxDQUFDO1FBSXJFLFVBQUssR0FBRyxDQUFDLFNBQThCLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBRXVFLENBQUM7SUFFbEUsWUFBWTtRQUNsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FDdkUsbUJBQW1CLENBQUMscUJBQXFCLENBQUMscUJBQXFCLEVBQUU7WUFDL0QsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDLENBQ0gsQ0FBQztRQUVGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FDTCxPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FDSCxPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixRQUFnQyxFQUNoQyxVQUFVLEVBQW1DO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLE9BQU87WUFDUCxLQUFLO1lBQ0wsUUFBUSxFQUFFLFFBQVEsSUFBSSxTQUFTO1lBQy9CLE9BQU87U0FDUixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsTUFBTSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDdkMsSUFBSSxXQUFXO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU8sY0FBYztRQUNwQixTQUFTLENBQWdCLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDeEMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ3ZCLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQzVEO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBMUZVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRQcm9qZWN0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uUGFyYW0sIFBST0pFQ1RJT05fU1RSQVRFR1kgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIHtcclxuICBzdGF0dXMkITogU3ViamVjdDxDb25maXJtYXRpb24uU3RhdHVzPjtcclxuICBjb25maXJtYXRpb24kID0gbmV3IFJlcGxheVN1YmplY3Q8Q29uZmlybWF0aW9uLkRpYWxvZ0RhdGEgfCBudWxsPigxKTtcclxuXHJcbiAgcHJpdmF0ZSBjb250YWluZXJDb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8Q29uZmlybWF0aW9uQ29tcG9uZW50PjtcclxuXHJcbiAgY2xlYXIgPSAoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzID0gQ29uZmlybWF0aW9uLlN0YXR1cy5kaXNtaXNzKSA9PiB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvbiQubmV4dChudWxsKTtcclxuICAgIHRoaXMuc3RhdHVzJC5uZXh0KHN0YXR1cyk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZW50UHJvamVjdGlvblNlcnZpY2U6IENvbnRlbnRQcm9qZWN0aW9uU2VydmljZSkge31cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb250YWluZXIoKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lckNvbXBvbmVudFJlZiA9IHRoaXMuY29udGVudFByb2plY3Rpb25TZXJ2aWNlLnByb2plY3RDb250ZW50KFxyXG4gICAgICBQUk9KRUNUSU9OX1NUUkFURUdZLkFwcGVuZENvbXBvbmVudFRvQm9keShDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjb25maXJtYXRpb24kOiB0aGlzLmNvbmZpcm1hdGlvbiQsXHJcbiAgICAgICAgY2xlYXI6IHRoaXMuY2xlYXIsXHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb250YWluZXJDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBpbmZvKFxyXG4gICAgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICBvcHRpb25zPzogUGFydGlhbDxDb25maXJtYXRpb24uT3B0aW9ucz4sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb25maXJtYXRpb24uU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHRpdGxlLCAnaW5mbycsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3VjY2VzcyhcclxuICAgIG1lc3NhZ2U6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgdGl0bGU6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+LFxyXG4gICk6IE9ic2VydmFibGU8Q29uZmlybWF0aW9uLlN0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ3N1Y2Nlc3MnLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHdhcm4oXHJcbiAgICBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIHRpdGxlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIG9wdGlvbnM/OiBQYXJ0aWFsPENvbmZpcm1hdGlvbi5PcHRpb25zPixcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICd3YXJuaW5nJywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBlcnJvcihcclxuICAgIG1lc3NhZ2U6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgdGl0bGU6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+LFxyXG4gICk6IE9ic2VydmFibGU8Q29uZmlybWF0aW9uLlN0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ2Vycm9yJywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzaG93KFxyXG4gICAgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICBzZXZlcml0eT86IENvbmZpcm1hdGlvbi5TZXZlcml0eSxcclxuICAgIG9wdGlvbnMgPSB7fSBhcyBQYXJ0aWFsPENvbmZpcm1hdGlvbi5PcHRpb25zPixcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIGlmICghdGhpcy5jb250YWluZXJDb21wb25lbnRSZWYpIHRoaXMuc2V0Q29udGFpbmVyKCk7XHJcblxyXG4gICAgdGhpcy5jb25maXJtYXRpb24kLm5leHQoe1xyXG4gICAgICBtZXNzYWdlLFxyXG4gICAgICB0aXRsZSxcclxuICAgICAgc2V2ZXJpdHk6IHNldmVyaXR5IHx8ICduZXV0cmFsJyxcclxuICAgICAgb3B0aW9ucyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3RhdHVzJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBjb25zdCB7IGRpc21pc3NpYmxlID0gdHJ1ZSB9ID0gb3B0aW9ucztcclxuICAgIGlmIChkaXNtaXNzaWJsZSkgdGhpcy5saXN0ZW5Ub0VzY2FwZSgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlblRvRXNjYXBlKCkge1xyXG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5zdGF0dXMkKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMTUwKSxcclxuICAgICAgICBmaWx0ZXIoKGtleTogS2V5Ym9hcmRFdmVudCkgPT4ga2V5ICYmIGtleS5rZXkgPT09ICdFc2NhcGUnKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { NavItem } from '../models/nav-item';
|
|
3
|
-
import { AbstractMenuService } from './abstract-menu.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NavItemsService extends AbstractMenuService {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.baseClass = NavItem;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
NavItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
-
NavItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, providedIn: 'root' });
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, decorators: [{
|
|
14
|
-
type: Injectable,
|
|
15
|
-
args: [{ providedIn: 'root' }]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9uYXYtaXRlbXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQTRCO0lBRGpFOztRQUVZLGNBQVMsR0FBRyxPQUFPLENBQUM7S0FDL0I7OzRHQUZZLGVBQWU7Z0hBQWYsZUFBZSxjQURGLE1BQU07MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL25hdi1pdGVtJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNZW51U2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtbWVudS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBOYXZJdGVtc1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdE1lbnVTZXJ2aWNlPE5hdkl0ZW0+IHtcclxuICBwcm90ZWN0ZWQgYmFzZUNsYXNzID0gTmF2SXRlbTtcclxufVxyXG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { InternalStore } from '@abp/ng.core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class PageAlertService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.alerts = new InternalStore([]);
|
|
7
|
-
this.alerts$ = this.alerts.sliceState(state => state);
|
|
8
|
-
}
|
|
9
|
-
show(alert) {
|
|
10
|
-
const newAlert = {
|
|
11
|
-
...alert,
|
|
12
|
-
dismissible: alert.dismissible ?? true,
|
|
13
|
-
};
|
|
14
|
-
this.alerts.set([newAlert, ...this.alerts.state]);
|
|
15
|
-
}
|
|
16
|
-
remove(index) {
|
|
17
|
-
const alerts = [...this.alerts.state];
|
|
18
|
-
alerts.splice(index, 1);
|
|
19
|
-
this.alerts.set(alerts);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
PageAlertService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
-
PageAlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, providedIn: 'root' });
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, decorators: [{
|
|
25
|
-
type: Injectable,
|
|
26
|
-
args: [{ providedIn: 'root' }]
|
|
27
|
-
}], ctorParameters: function () { return []; } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1hbGVydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvc2VydmljZXMvcGFnZS1hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFZN0MsTUFBTSxPQUFPLGdCQUFnQjtJQUszQjtRQUpRLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUVwRCxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsQyxDQUFDO0lBRWhCLElBQUksQ0FBQyxLQUFnQjtRQUNuQixNQUFNLFFBQVEsR0FBYztZQUMxQixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJO1NBQ3ZDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7NkdBbkJVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VBbGVydCB7XHJcbiAgdHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdsaWdodCcgfCAnZGFyayc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGRpc21pc3NpYmxlPzogYm9vbGVhbjtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zPzogc3RyaW5nW107XHJcbiAgdGl0bGVMb2NhbGl6YXRpb25QYXJhbXM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VBbGVydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgYWxlcnRzID0gbmV3IEludGVybmFsU3RvcmU8UGFnZUFsZXJ0W10+KFtdKTtcclxuXHJcbiAgYWxlcnRzJCA9IHRoaXMuYWxlcnRzLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHNob3coYWxlcnQ6IFBhZ2VBbGVydCkge1xyXG4gICAgY29uc3QgbmV3QWxlcnQ6IFBhZ2VBbGVydCA9IHtcclxuICAgICAgLi4uYWxlcnQsXHJcbiAgICAgIGRpc21pc3NpYmxlOiBhbGVydC5kaXNtaXNzaWJsZSA/PyB0cnVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYWxlcnRzLnNldChbbmV3QWxlcnQsIC4uLnRoaXMuYWxlcnRzLnN0YXRlXSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgYWxlcnRzID0gWy4uLnRoaXMuYWxlcnRzLnN0YXRlXTtcclxuICAgIGFsZXJ0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hbGVydHMuc2V0KGFsZXJ0cyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|