@abp/ng.core 4.4.3 → 5.0.0-beta.3
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/abp-ng.core.d.ts +1 -41
- package/bundles/abp-ng.core-locale.umd.js +1 -1
- package/bundles/abp-ng.core-locale.umd.js.map +1 -1
- package/bundles/abp-ng.core-testing.umd.js +37 -34
- package/bundles/abp-ng.core-testing.umd.js.map +1 -1
- package/bundles/abp-ng.core.umd.js +1403 -1897
- package/bundles/abp-ng.core.umd.js.map +1 -1
- package/esm2015/abp-ng.core.js +1 -40
- package/esm2015/abp-ng.core.js.map +1 -0
- package/esm2015/lib/abstracts/index.js +1 -1
- package/esm2015/lib/abstracts/index.js.map +1 -0
- package/esm2015/lib/abstracts/ng-model.component.js +18 -16
- package/esm2015/lib/abstracts/ng-model.component.js.map +1 -0
- package/esm2015/lib/components/dynamic-layout.component.js +28 -16
- package/esm2015/lib/components/dynamic-layout.component.js.map +1 -0
- package/esm2015/lib/components/index.js +1 -1
- package/esm2015/lib/components/index.js.map +1 -0
- package/esm2015/lib/components/replaceable-route-container.component.js +19 -15
- package/esm2015/lib/components/replaceable-route-container.component.js.map +1 -0
- package/esm2015/lib/components/router-outlet.component.js +12 -9
- package/esm2015/lib/components/router-outlet.component.js.map +1 -0
- package/esm2015/lib/constants/different-locales.js +1 -1
- package/esm2015/lib/constants/different-locales.js.map +1 -0
- package/esm2015/lib/constants/index.js +1 -1
- package/esm2015/lib/constants/index.js.map +1 -0
- package/esm2015/lib/core.module.js +151 -83
- package/esm2015/lib/core.module.js.map +1 -0
- package/esm2015/lib/directives/autofocus.directive.js +14 -13
- package/esm2015/lib/directives/autofocus.directive.js.map +1 -0
- package/esm2015/lib/directives/debounce.directive.js +18 -16
- package/esm2015/lib/directives/debounce.directive.js.map +1 -0
- package/esm2015/lib/directives/for.directive.js +39 -25
- package/esm2015/lib/directives/for.directive.js.map +1 -0
- package/esm2015/lib/directives/form-submit.directive.js +22 -19
- package/esm2015/lib/directives/form-submit.directive.js.map +1 -0
- package/esm2015/lib/directives/index.js +1 -2
- package/esm2015/lib/directives/index.js.map +1 -0
- package/esm2015/lib/directives/init.directive.js +11 -10
- package/esm2015/lib/directives/init.directive.js.map +1 -0
- package/esm2015/lib/directives/permission.directive.js +19 -34
- package/esm2015/lib/directives/permission.directive.js.map +1 -0
- package/esm2015/lib/directives/replaceable-template.directive.js +24 -20
- package/esm2015/lib/directives/replaceable-template.directive.js.map +1 -0
- package/esm2015/lib/directives/stop-propagation.directive.js +16 -15
- package/esm2015/lib/directives/stop-propagation.directive.js.map +1 -0
- package/esm2015/lib/enums/common.js +1 -1
- package/esm2015/lib/enums/common.js.map +1 -0
- package/esm2015/lib/enums/index.js +1 -1
- package/esm2015/lib/enums/index.js.map +1 -0
- package/esm2015/lib/guards/auth.guard.js +9 -11
- package/esm2015/lib/guards/auth.guard.js.map +1 -0
- package/esm2015/lib/guards/index.js +1 -1
- package/esm2015/lib/guards/index.js.map +1 -0
- package/esm2015/lib/guards/permission.guard.js +16 -21
- package/esm2015/lib/guards/permission.guard.js.map +1 -0
- package/esm2015/lib/handlers/oauth-configuration.handler.js +12 -13
- package/esm2015/lib/handlers/oauth-configuration.handler.js.map +1 -0
- package/esm2015/lib/handlers/routes.handler.js +11 -11
- package/esm2015/lib/handlers/routes.handler.js.map +1 -0
- package/esm2015/lib/interceptors/api.interceptor.js +12 -14
- package/esm2015/lib/interceptors/api.interceptor.js.map +1 -0
- package/esm2015/lib/interceptors/index.js +1 -1
- package/esm2015/lib/interceptors/index.js.map +1 -0
- package/esm2015/lib/localization.module.js +12 -7
- package/esm2015/lib/localization.module.js.map +1 -0
- package/esm2015/lib/models/auth.js +1 -1
- package/esm2015/lib/models/auth.js.map +1 -0
- package/esm2015/lib/models/common.js +1 -1
- package/esm2015/lib/models/common.js.map +1 -0
- package/esm2015/lib/models/dtos.js +6 -5
- package/esm2015/lib/models/dtos.js.map +1 -0
- package/esm2015/lib/models/environment.js +1 -1
- package/esm2015/lib/models/environment.js.map +1 -0
- package/esm2015/lib/models/index.js +1 -4
- package/esm2015/lib/models/index.js.map +1 -0
- package/esm2015/lib/models/localization.js +1 -1
- package/esm2015/lib/models/localization.js.map +1 -0
- package/esm2015/lib/models/replaceable-components.js +1 -1
- package/esm2015/lib/models/replaceable-components.js.map +1 -0
- package/esm2015/lib/models/rest.js +1 -1
- package/esm2015/lib/models/rest.js.map +1 -0
- package/esm2015/lib/models/session.js +1 -1
- package/esm2015/lib/models/session.js.map +1 -0
- package/esm2015/lib/models/utility.js +1 -1
- package/esm2015/lib/models/utility.js.map +1 -0
- package/esm2015/lib/pipes/index.js +1 -1
- package/esm2015/lib/pipes/index.js.map +1 -0
- package/esm2015/lib/pipes/localization.pipe.js +14 -10
- package/esm2015/lib/pipes/localization.pipe.js.map +1 -0
- package/esm2015/lib/pipes/sort.pipe.js +13 -7
- package/esm2015/lib/pipes/sort.pipe.js.map +1 -0
- package/esm2015/lib/providers/cookie-language.provider.js +22 -0
- package/esm2015/lib/providers/cookie-language.provider.js.map +1 -0
- package/esm2015/lib/providers/locale.provider.js +1 -1
- package/esm2015/lib/providers/locale.provider.js.map +1 -0
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.js +9 -10
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.js.map +1 -0
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/index.js +1 -1
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.js +9 -10
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.js +9 -10
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.js +2 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/http/modeling/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/http/modeling/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/http/modeling/models.js +2 -1
- package/esm2015/lib/proxy/volo/abp/http/modeling/models.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/localization/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/localization/index.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/localization/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/localization/models.js.map +1 -0
- package/esm2015/lib/proxy/volo/abp/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/models.js.map +1 -0
- package/esm2015/lib/services/auth.service.js +9 -16
- package/esm2015/lib/services/auth.service.js.map +1 -0
- package/esm2015/lib/services/config-state.service.js +12 -20
- package/esm2015/lib/services/config-state.service.js.map +1 -0
- package/esm2015/lib/services/content-projection.service.js +7 -8
- package/esm2015/lib/services/content-projection.service.js.map +1 -0
- package/esm2015/lib/services/dom-insertion.service.js +7 -5
- package/esm2015/lib/services/dom-insertion.service.js.map +1 -0
- package/esm2015/lib/services/environment.service.js +7 -7
- package/esm2015/lib/services/environment.service.js.map +1 -0
- package/esm2015/lib/services/http-error-reporter.service.js +29 -0
- package/esm2015/lib/services/http-error-reporter.service.js.map +1 -0
- package/esm2015/lib/services/http-wait.service.js +9 -10
- package/esm2015/lib/services/http-wait.service.js.map +1 -0
- package/esm2015/lib/services/index.js +2 -4
- package/esm2015/lib/services/index.js.map +1 -0
- package/esm2015/lib/services/lazy-load.service.js +9 -10
- package/esm2015/lib/services/lazy-load.service.js.map +1 -0
- package/esm2015/lib/services/list.service.js +7 -7
- package/esm2015/lib/services/list.service.js.map +1 -0
- package/esm2015/lib/services/localization.service.js +11 -11
- package/esm2015/lib/services/localization.service.js.map +1 -0
- package/esm2015/lib/services/multi-tenancy.service.js +15 -34
- package/esm2015/lib/services/multi-tenancy.service.js.map +1 -0
- package/esm2015/lib/services/permission.service.js +10 -11
- package/esm2015/lib/services/permission.service.js.map +1 -0
- package/esm2015/lib/services/replaceable-components.service.js +7 -9
- package/esm2015/lib/services/replaceable-components.service.js.map +1 -0
- package/esm2015/lib/services/resource-wait.service.js +9 -7
- package/esm2015/lib/services/resource-wait.service.js.map +1 -0
- package/esm2015/lib/services/rest.service.js +19 -23
- package/esm2015/lib/services/rest.service.js.map +1 -0
- package/esm2015/lib/services/router-events.service.js +7 -8
- package/esm2015/lib/services/router-events.service.js.map +1 -0
- package/esm2015/lib/services/router-wait.service.js +9 -11
- package/esm2015/lib/services/router-wait.service.js.map +1 -0
- package/esm2015/lib/services/routes.service.js +13 -17
- package/esm2015/lib/services/routes.service.js.map +1 -0
- package/esm2015/lib/services/session-state.service.js +9 -10
- package/esm2015/lib/services/session-state.service.js.map +1 -0
- package/esm2015/lib/services/subscription.service.js +7 -4
- package/esm2015/lib/services/subscription.service.js.map +1 -0
- package/esm2015/lib/services/track-by.service.js +12 -8
- package/esm2015/lib/services/track-by.service.js.map +1 -0
- package/esm2015/lib/strategies/auth-flow.strategy.js +9 -7
- package/esm2015/lib/strategies/auth-flow.strategy.js.map +1 -0
- package/esm2015/lib/strategies/container.strategy.js +1 -1
- package/esm2015/lib/strategies/container.strategy.js.map +1 -0
- package/esm2015/lib/strategies/content-security.strategy.js +1 -1
- package/esm2015/lib/strategies/content-security.strategy.js.map +1 -0
- package/esm2015/lib/strategies/content.strategy.js +14 -10
- package/esm2015/lib/strategies/content.strategy.js.map +1 -0
- package/esm2015/lib/strategies/context.strategy.js +1 -2
- package/esm2015/lib/strategies/context.strategy.js.map +1 -0
- package/esm2015/lib/strategies/cross-origin.strategy.js +1 -1
- package/esm2015/lib/strategies/cross-origin.strategy.js.map +1 -0
- package/esm2015/lib/strategies/dom.strategy.js +1 -1
- package/esm2015/lib/strategies/dom.strategy.js.map +1 -0
- package/esm2015/lib/strategies/index.js +1 -1
- package/esm2015/lib/strategies/index.js.map +1 -0
- package/esm2015/lib/strategies/loading.strategy.js +1 -1
- package/esm2015/lib/strategies/loading.strategy.js.map +1 -0
- package/esm2015/lib/strategies/projection.strategy.js +1 -1
- package/esm2015/lib/strategies/projection.strategy.js.map +1 -0
- package/esm2015/lib/tokens/app-config.token.js +1 -1
- package/esm2015/lib/tokens/app-config.token.js.map +1 -0
- package/esm2015/lib/tokens/cookie-language-key.token.js +5 -0
- package/esm2015/lib/tokens/cookie-language-key.token.js.map +1 -0
- package/esm2015/lib/tokens/index.js +3 -2
- package/esm2015/lib/tokens/index.js.map +1 -0
- package/esm2015/lib/tokens/list.token.js +1 -1
- package/esm2015/lib/tokens/list.token.js.map +1 -0
- package/esm2015/lib/tokens/lodaer-delay.token.js +1 -1
- package/esm2015/lib/tokens/lodaer-delay.token.js.map +1 -0
- package/esm2015/lib/tokens/manage-profile.token.js +1 -1
- package/esm2015/lib/tokens/manage-profile.token.js.map +1 -0
- package/esm2015/lib/tokens/options.token.js +1 -1
- package/esm2015/lib/tokens/options.token.js.map +1 -0
- package/esm2015/lib/tokens/tenant-key.token.js +1 -1
- package/esm2015/lib/tokens/tenant-key.token.js.map +1 -0
- package/esm2015/lib/utils/array-utils.js +1 -1
- package/esm2015/lib/utils/array-utils.js.map +1 -0
- package/esm2015/lib/utils/auth-utils.js +1 -1
- package/esm2015/lib/utils/auth-utils.js.map +1 -0
- package/esm2015/lib/utils/common-utils.js +1 -2
- package/esm2015/lib/utils/common-utils.js.map +1 -0
- package/esm2015/lib/utils/date-extensions.js +1 -1
- package/esm2015/lib/utils/date-extensions.js.map +1 -0
- package/esm2015/lib/utils/date-utils.js +1 -1
- package/esm2015/lib/utils/date-utils.js.map +1 -0
- package/esm2015/lib/utils/environment-utils.js +8 -5
- package/esm2015/lib/utils/environment-utils.js.map +1 -0
- package/esm2015/lib/utils/factory-utils.js +1 -1
- package/esm2015/lib/utils/factory-utils.js.map +1 -0
- package/esm2015/lib/utils/file-utils.js +1 -1
- package/esm2015/lib/utils/file-utils.js.map +1 -0
- package/esm2015/lib/utils/form-utils.js +1 -1
- package/esm2015/lib/utils/form-utils.js.map +1 -0
- package/esm2015/lib/utils/generator-utils.js +1 -2
- package/esm2015/lib/utils/generator-utils.js.map +1 -0
- package/esm2015/lib/utils/http-utils.js +1 -1
- package/esm2015/lib/utils/http-utils.js.map +1 -0
- package/esm2015/lib/utils/index.js +1 -2
- package/esm2015/lib/utils/index.js.map +1 -0
- package/esm2015/lib/utils/initial-utils.js +1 -1
- package/esm2015/lib/utils/initial-utils.js.map +1 -0
- package/esm2015/lib/utils/internal-store-utils.js +1 -1
- package/esm2015/lib/utils/internal-store-utils.js.map +1 -0
- package/esm2015/lib/utils/lazy-load-utils.js +1 -2
- package/esm2015/lib/utils/lazy-load-utils.js.map +1 -0
- package/esm2015/lib/utils/localization-utils.js +3 -3
- package/esm2015/lib/utils/localization-utils.js.map +1 -0
- package/esm2015/lib/utils/multi-tenancy-utils.js +1 -1
- package/esm2015/lib/utils/multi-tenancy-utils.js.map +1 -0
- package/esm2015/lib/utils/number-utils.js +1 -2
- package/esm2015/lib/utils/number-utils.js.map +1 -0
- package/esm2015/lib/utils/object-utils.js +1 -1
- package/esm2015/lib/utils/object-utils.js.map +1 -0
- package/esm2015/lib/utils/route-utils.js +1 -1
- package/esm2015/lib/utils/route-utils.js.map +1 -0
- package/esm2015/lib/utils/string-utils.js +1 -1
- package/esm2015/lib/utils/string-utils.js.map +1 -0
- package/esm2015/lib/utils/tree-utils.js +2 -1
- package/esm2015/lib/utils/tree-utils.js.map +1 -0
- package/esm2015/lib/validators/age.validator.js +1 -1
- package/esm2015/lib/validators/age.validator.js.map +1 -0
- package/esm2015/lib/validators/credit-card.validator.js +1 -2
- package/esm2015/lib/validators/credit-card.validator.js.map +1 -0
- package/esm2015/lib/validators/index.js +2 -4
- package/esm2015/lib/validators/index.js.map +1 -0
- package/esm2015/lib/validators/range.validator.js +1 -1
- package/esm2015/lib/validators/range.validator.js.map +1 -0
- package/esm2015/lib/validators/required.validator.js +1 -1
- package/esm2015/lib/validators/required.validator.js.map +1 -0
- package/esm2015/lib/validators/string-length.validator.js +1 -1
- package/esm2015/lib/validators/string-length.validator.js.map +1 -0
- package/esm2015/lib/validators/url.validator.js +1 -1
- package/esm2015/lib/validators/url.validator.js.map +1 -0
- package/esm2015/locale/abp-ng.core-locale.js +1 -1
- package/esm2015/locale/abp-ng.core-locale.js.map +1 -0
- package/esm2015/locale/public-api.js +1 -1
- package/esm2015/locale/public-api.js.map +1 -0
- package/esm2015/locale/utils/register-locale.js +1 -1
- package/esm2015/locale/utils/register-locale.js.map +1 -0
- package/esm2015/public-api.js +10 -15
- package/esm2015/public-api.js.map +1 -0
- package/esm2015/testing/abp-ng.core-testing.js +1 -3
- package/esm2015/testing/abp-ng.core-testing.js.map +1 -0
- package/esm2015/testing/lib/core-testing.module.js +12 -7
- package/esm2015/testing/lib/core-testing.module.js.map +1 -0
- package/esm2015/testing/lib/services/index.js +1 -1
- package/esm2015/testing/lib/services/index.js.map +1 -0
- package/esm2015/testing/lib/services/mock-permission.service.js +9 -10
- package/esm2015/testing/lib/services/mock-permission.service.js.map +1 -0
- package/esm2015/testing/lib/services/mock-rest.service.js +14 -14
- package/esm2015/testing/lib/services/mock-rest.service.js.map +1 -0
- package/esm2015/testing/lib/utils/clear-page.util.js +1 -1
- package/esm2015/testing/lib/utils/clear-page.util.js.map +1 -0
- package/esm2015/testing/lib/utils/index.js +1 -1
- package/esm2015/testing/lib/utils/index.js.map +1 -0
- package/esm2015/testing/lib/utils/wait.util.js +1 -1
- package/esm2015/testing/lib/utils/wait.util.js.map +1 -0
- package/esm2015/testing/public-api.js +1 -1
- package/esm2015/testing/public-api.js.map +1 -0
- package/fesm2015/abp-ng.core-locale.js.map +1 -1
- package/fesm2015/abp-ng.core-testing.js +32 -30
- package/fesm2015/abp-ng.core-testing.js.map +1 -1
- package/fesm2015/abp-ng.core.js +723 -1138
- package/fesm2015/abp-ng.core.js.map +1 -1
- package/lib/abstracts/ng-model.component.d.ts +6 -3
- package/lib/components/dynamic-layout.component.d.ts +3 -0
- package/lib/components/replaceable-route-container.component.d.ts +3 -0
- package/lib/components/router-outlet.component.d.ts +3 -0
- package/lib/core.module.d.ts +29 -0
- package/lib/directives/autofocus.directive.d.ts +4 -1
- package/lib/directives/debounce.directive.d.ts +3 -0
- package/lib/directives/for.directive.d.ts +3 -0
- package/lib/directives/form-submit.directive.d.ts +3 -0
- package/lib/directives/index.d.ts +0 -1
- package/lib/directives/init.directive.d.ts +3 -0
- package/lib/directives/permission.directive.d.ts +3 -5
- package/lib/directives/replaceable-template.directive.d.ts +3 -0
- package/lib/directives/stop-propagation.directive.d.ts +3 -0
- package/lib/guards/auth.guard.d.ts +3 -0
- package/lib/guards/permission.guard.d.ts +7 -4
- package/lib/handlers/oauth-configuration.handler.d.ts +3 -0
- package/lib/handlers/routes.handler.d.ts +3 -0
- package/lib/interceptors/api.interceptor.d.ts +3 -0
- package/lib/localization.module.d.ts +5 -0
- package/lib/models/index.d.ts +0 -3
- package/lib/models/replaceable-components.d.ts +2 -2
- package/lib/models/session.d.ts +0 -14
- package/lib/pipes/localization.pipe.d.ts +6 -2
- package/lib/pipes/sort.pipe.d.ts +4 -0
- package/lib/providers/cookie-language.provider.d.ts +3 -0
- package/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.d.ts +3 -0
- package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.d.ts +3 -0
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.d.ts +3 -0
- package/lib/services/auth.service.d.ts +3 -4
- package/lib/services/config-state.service.d.ts +14 -16
- package/lib/services/content-projection.service.d.ts +3 -0
- package/lib/services/dom-insertion.service.d.ts +3 -0
- package/lib/services/environment.service.d.ts +4 -0
- package/lib/services/http-error-reporter.service.d.ts +12 -0
- package/lib/services/http-wait.service.d.ts +3 -0
- package/lib/services/index.d.ts +1 -3
- package/lib/services/lazy-load.service.d.ts +3 -0
- package/lib/services/list.service.d.ts +4 -1
- package/lib/services/localization.service.d.ts +6 -3
- package/lib/services/multi-tenancy.service.d.ts +7 -14
- package/lib/services/permission.service.d.ts +4 -1
- package/lib/services/replaceable-components.service.d.ts +3 -0
- package/lib/services/resource-wait.service.d.ts +3 -0
- package/lib/services/rest.service.d.ts +6 -3
- package/lib/services/router-events.service.d.ts +3 -0
- package/lib/services/router-wait.service.d.ts +3 -0
- package/lib/services/routes.service.d.ts +5 -2
- package/lib/services/session-state.service.d.ts +3 -0
- package/lib/services/subscription.service.d.ts +3 -0
- package/lib/services/track-by.service.d.ts +3 -0
- package/lib/strategies/auth-flow.strategy.d.ts +12 -12
- package/lib/strategies/content.strategy.d.ts +9 -5
- package/lib/tokens/cookie-language-key.token.d.ts +2 -0
- package/lib/tokens/index.d.ts +2 -1
- package/lib/utils/auth-utils.d.ts +5 -5
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/initial-utils.d.ts +5 -5
- package/lib/utils/tree-utils.d.ts +1 -1
- package/locale/abp-ng.core-locale.d.ts +1 -0
- package/locale/package.json +0 -1
- package/package.json +5 -9
- package/public-api.d.ts +9 -11
- package/testing/abp-ng.core-testing.d.ts +1 -2
- package/testing/lib/core-testing.module.d.ts +7 -0
- package/testing/lib/services/mock-permission.service.d.ts +3 -0
- package/testing/lib/services/mock-rest.service.d.ts +3 -0
- package/testing/package.json +0 -1
- package/abp-ng.core.metadata.json +0 -1
- package/bundles/abp-ng.core-locale.umd.min.js +0 -16
- package/bundles/abp-ng.core-locale.umd.min.js.map +0 -1
- package/bundles/abp-ng.core-testing.umd.min.js +0 -2
- package/bundles/abp-ng.core-testing.umd.min.js.map +0 -1
- package/bundles/abp-ng.core.umd.min.js +0 -17
- package/bundles/abp-ng.core.umd.min.js.map +0 -1
- package/esm2015/lib/actions/config.actions.js +0 -25
- package/esm2015/lib/actions/index.js +0 -5
- package/esm2015/lib/actions/loader.actions.js +0 -13
- package/esm2015/lib/actions/profile.actions.js +0 -16
- package/esm2015/lib/actions/rest.actions.js +0 -7
- package/esm2015/lib/directives/visibility.directive.js +0 -62
- package/esm2015/lib/models/application-configuration.js +0 -2
- package/esm2015/lib/models/config.js +0 -2
- package/esm2015/lib/models/profile.js +0 -2
- package/esm2015/lib/services/application-configuration.service.js +0 -29
- package/esm2015/lib/services/profile-state.service.js +0 -33
- package/esm2015/lib/services/profile.service.js +0 -48
- package/esm2015/lib/states/config.state.js +0 -230
- package/esm2015/lib/states/index.js +0 -3
- package/esm2015/lib/states/profile.state.js +0 -53
- package/esm2015/lib/utils/rxjs-utils.js +0 -26
- package/lib/actions/config.actions.d.ts +0 -23
- package/lib/actions/index.d.ts +0 -4
- package/lib/actions/loader.actions.d.ts +0 -11
- package/lib/actions/profile.actions.d.ts +0 -14
- package/lib/actions/rest.actions.d.ts +0 -6
- package/lib/directives/visibility.directive.d.ts +0 -16
- package/lib/models/application-configuration.d.ts +0 -108
- package/lib/models/config.d.ts +0 -52
- package/lib/models/profile.d.ts +0 -25
- package/lib/services/application-configuration.service.d.ts +0 -11
- package/lib/services/profile-state.service.d.ts +0 -11
- package/lib/services/profile.service.d.ts +0 -11
- package/lib/states/config.state.d.ts +0 -191
- package/lib/states/index.d.ts +0 -2
- package/lib/states/profile.state.d.ts +0 -12
- package/lib/utils/rxjs-utils.d.ts +0 -5
- package/locale/abp-ng.core-locale.metadata.json +0 -1
- package/testing/abp-ng.core-testing.metadata.json +0 -1
|
@@ -3,6 +3,9 @@ import { FormGroupDirective } from '@angular/forms';
|
|
|
3
3
|
import { fromEvent } from 'rxjs';
|
|
4
4
|
import { debounceTime, filter } from 'rxjs/operators';
|
|
5
5
|
import { SubscriptionService } from '../services/subscription.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "../services/subscription.service";
|
|
6
9
|
export class FormSubmitDirective {
|
|
7
10
|
constructor(formGroupDirective, host, cdRef, subscription) {
|
|
8
11
|
this.formGroupDirective = formGroupDirective;
|
|
@@ -33,24 +36,24 @@ export class FormSubmitDirective {
|
|
|
33
36
|
this.cdRef.detectChanges();
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
|
-
FormSubmitDirective
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
39
|
+
FormSubmitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: FormSubmitDirective, deps: [{ token: i1.FormGroupDirective, self: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
40
|
+
FormSubmitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: { debounce: "debounce", notValidateOnSubmit: "notValidateOnSubmit" }, outputs: { ngSubmit: "ngSubmit" }, providers: [SubscriptionService], ngImport: i0 });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: FormSubmitDirective, decorators: [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
45
|
+
selector: 'form[ngSubmit][formGroup]',
|
|
46
|
+
providers: [SubscriptionService],
|
|
47
|
+
}]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.FormGroupDirective, decorators: [{
|
|
49
|
+
type: Self
|
|
50
|
+
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.SubscriptionService }]; }, propDecorators: { debounce: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], notValidateOnSubmit: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], ngSubmit: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}] } });
|
|
54
57
|
function setDirty(controls) {
|
|
55
58
|
if (Array.isArray(controls)) {
|
|
56
59
|
controls.forEach(group => {
|
|
@@ -63,4 +66,4 @@ function setDirty(controls) {
|
|
|
63
66
|
controls[key].updateValueAndValidity();
|
|
64
67
|
});
|
|
65
68
|
}
|
|
66
|
-
//# sourceMappingURL=
|
|
69
|
+
//# sourceMappingURL=form-submit.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-submit.directive.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/form-submit.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Self,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { SubscriptionService } from '../services/subscription.service';\n\ntype Controls = { [key: string]: FormControl } | FormGroup[];\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'form[ngSubmit][formGroup]',\n providers: [SubscriptionService],\n})\nexport class FormSubmitDirective implements OnInit {\n @Input()\n debounce = 200;\n\n @Input()\n notValidateOnSubmit: string | boolean;\n\n @Output() readonly ngSubmit = new EventEmitter();\n\n executedNgSubmit = false;\n\n constructor(\n @Self() private formGroupDirective: FormGroupDirective,\n private host: ElementRef<HTMLFormElement>,\n private cdRef: ChangeDetectorRef,\n private subscription: SubscriptionService,\n ) {}\n\n ngOnInit() {\n this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {\n this.markAsDirty();\n this.executedNgSubmit = true;\n });\n\n const keyup$ = fromEvent(this.host.nativeElement as HTMLElement, 'keyup').pipe(\n debounceTime(this.debounce),\n filter(event => !(event.target instanceof HTMLTextAreaElement)),\n filter((event: KeyboardEvent) => event && event.key === 'Enter'),\n );\n\n this.subscription.addOne(keyup$, () => {\n if (!this.executedNgSubmit) {\n this.host.nativeElement.dispatchEvent(\n new Event('submit', { bubbles: true, cancelable: true }),\n );\n }\n\n this.executedNgSubmit = false;\n });\n }\n\n markAsDirty() {\n const { form } = this.formGroupDirective;\n\n setDirty(form.controls as { [key: string]: FormControl });\n form.markAsDirty();\n\n this.cdRef.detectChanges();\n }\n}\n\nfunction setDirty(controls: Controls) {\n if (Array.isArray(controls)) {\n controls.forEach(group => {\n setDirty(group.controls as { [key: string]: FormControl });\n });\n return;\n }\n\n Object.keys(controls).forEach(key => {\n controls[key].markAsDirty();\n controls[key].updateValueAndValidity();\n });\n}\n"]}
|
|
@@ -6,5 +6,4 @@ export * from './init.directive';
|
|
|
6
6
|
export * from './permission.directive';
|
|
7
7
|
export * from './replaceable-template.directive';
|
|
8
8
|
export * from './stop-propagation.directive';
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0b2ZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RlYm91bmNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbml0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwbGFjZWFibGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi92aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG4iXX0=
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC","sourcesContent":["export * from './autofocus.directive';\nexport * from './debounce.directive';\nexport * from './for.directive';\nexport * from './form-submit.directive';\nexport * from './init.directive';\nexport * from './permission.directive';\nexport * from './replaceable-template.directive';\nexport * from './stop-propagation.directive';\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Directive, Output, EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
2
3
|
export class InitDirective {
|
|
3
4
|
constructor(elRef) {
|
|
4
5
|
this.elRef = elRef;
|
|
@@ -8,13 +9,13 @@ export class InitDirective {
|
|
|
8
9
|
this.init.emit(this.elRef);
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
|
-
InitDirective
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=
|
|
12
|
+
InitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: InitDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
InitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: InitDirective, selector: "[abpInit]", outputs: { init: "abpInit" }, ngImport: i0 });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: InitDirective, decorators: [{
|
|
15
|
+
type: Directive,
|
|
16
|
+
args: [{ selector: '[abpInit]' }]
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { init: [{
|
|
18
|
+
type: Output,
|
|
19
|
+
args: ['abpInit']
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=init.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.directive.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/init.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;;AAG3F,MAAM,OAAO,aAAa;IAGxB,YAAoB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QAFT,SAAI,GAAG,IAAI,YAAY,EAAmB,CAAC;IAE/B,CAAC;IAEzC,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;;0GAPU,aAAa;8FAAb,aAAa;2FAAb,aAAa;kBADzB,SAAS;mBAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;iGAEN,IAAI;sBAA/B,MAAM;uBAAC,SAAS","sourcesContent":["import { Directive, Output, EventEmitter, ElementRef, AfterViewInit } from '@angular/core';\n\n@Directive({ selector: '[abpInit]' })\nexport class InitDirective implements AfterViewInit {\n @Output('abpInit') readonly init = new EventEmitter<ElementRef<any>>();\n\n constructor(private elRef: ElementRef) {}\n\n ngAfterViewInit() {\n this.init.emit(this.elRef);\n }\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Directive, ElementRef, Input, Optional, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import { distinctUntilChanged } from 'rxjs/operators';
|
|
3
3
|
import { PermissionService } from '../services/permission.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/permission.service";
|
|
4
6
|
export class PermissionDirective {
|
|
5
7
|
constructor(elRef, renderer, templateRef, vcRef, permissionService, cdRef) {
|
|
6
8
|
this.elRef = elRef;
|
|
@@ -18,26 +20,12 @@ export class PermissionDirective {
|
|
|
18
20
|
.getGrantedPolicy$(this.condition)
|
|
19
21
|
.pipe(distinctUntilChanged())
|
|
20
22
|
.subscribe(isGranted => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.initAttribute(isGranted);
|
|
23
|
+
this.vcRef.clear();
|
|
24
|
+
if (isGranted)
|
|
25
|
+
this.vcRef.createEmbeddedView(this.templateRef);
|
|
25
26
|
this.cdRef.detectChanges();
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
|
-
initStructural(isGranted) {
|
|
29
|
-
this.vcRef.clear();
|
|
30
|
-
if (isGranted)
|
|
31
|
-
this.vcRef.createEmbeddedView(this.templateRef);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @deprecated Will be deleted in v5.0
|
|
35
|
-
*/
|
|
36
|
-
initAttribute(isGranted) {
|
|
37
|
-
if (!isGranted) {
|
|
38
|
-
this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
29
|
ngOnDestroy() {
|
|
42
30
|
if (this.subscription)
|
|
43
31
|
this.subscription.unsubscribe();
|
|
@@ -46,20 +34,17 @@ export class PermissionDirective {
|
|
|
46
34
|
this.check();
|
|
47
35
|
}
|
|
48
36
|
}
|
|
49
|
-
PermissionDirective
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
];
|
|
62
|
-
|
|
63
|
-
condition: [{ type: Input, args: ['abpPermission',] }]
|
|
64
|
-
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUtuRSxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1UsS0FBOEIsRUFDOUIsUUFBbUIsRUFDUCxXQUE2QixFQUN6QyxLQUF1QixFQUN2QixpQkFBb0MsRUFDcEMsS0FBd0I7UUFMeEIsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNQLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUN6QyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBQy9CLENBQUM7SUFFSSxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDdkMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNqQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVztnQkFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFrQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRW5CLElBQUksU0FBUztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWEsQ0FBQyxTQUFrQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzs7O1lBdERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7WUFmQyxVQUFVO1lBS1YsU0FBUztZQUNULFdBQVcsdUJBa0JSLFFBQVE7WUFqQlgsZ0JBQWdCO1lBSVQsaUJBQWlCO1lBYnhCLGlCQUFpQjs7O3dCQW1CaEIsS0FBSyxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thYnBQZXJtaXNzaW9uXScsXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgnYWJwUGVybWlzc2lvbicpIGNvbmRpdGlvbjogc3RyaW5nO1xuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgdmNSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBwcml2YXRlIGNoZWNrKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucGVybWlzc2lvblNlcnZpY2VcbiAgICAgIC5nZXRHcmFudGVkUG9saWN5JCh0aGlzLmNvbmRpdGlvbilcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKGlzR3JhbnRlZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlUmVmKSB0aGlzLmluaXRTdHJ1Y3R1cmFsKGlzR3JhbnRlZCk7XG4gICAgICAgIGVsc2UgdGhpcy5pbml0QXR0cmlidXRlKGlzR3JhbnRlZCk7XG5cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0cnVjdHVyYWwoaXNHcmFudGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy52Y1JlZi5jbGVhcigpO1xuXG4gICAgaWYgKGlzR3JhbnRlZCkgdGhpcy52Y1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSBkZWxldGVkIGluIHY1LjBcbiAgICovXG4gIHByaXZhdGUgaW5pdEF0dHJpYnV0ZShpc0dyYW50ZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWlzR3JhbnRlZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==
|
|
37
|
+
PermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: i1.PermissionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
+
PermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: PermissionDirective, selector: "[abpPermission]", inputs: { condition: ["abpPermission", "condition"] }, usesOnChanges: true, ngImport: i0 });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PermissionDirective, decorators: [{
|
|
40
|
+
type: Directive,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: '[abpPermission]',
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.TemplateRef, decorators: [{
|
|
45
|
+
type: Optional
|
|
46
|
+
}] }, { type: i0.ViewContainerRef }, { type: i1.PermissionService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { condition: [{
|
|
47
|
+
type: Input,
|
|
48
|
+
args: ['abpPermission']
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=permission.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.directive.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/permission.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,KAAK,EAGL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;;;AAKnE,MAAM,OAAO,mBAAmB;IAK9B,YACU,KAA8B,EAC9B,QAAmB,EACP,WAA6B,EACzC,KAAuB,EACvB,iBAAoC,EACpC,KAAwB;QALxB,UAAK,GAAL,KAAK,CAAyB;QAC9B,aAAQ,GAAR,QAAQ,CAAW;QACP,gBAAW,GAAX,WAAW,CAAkB;QACzC,UAAK,GAAL,KAAK,CAAkB;QACvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,UAAK,GAAL,KAAK,CAAmB;IAC/B,CAAC;IAEI,KAAK;QACX,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB;aACvC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;aACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC5B,SAAS,CAAC,SAAS,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;;gHAnCU,mBAAmB;oGAAnB,mBAAmB;2FAAnB,mBAAmB;kBAH/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;iBAC5B;;0BASI,QAAQ;2IAPa,SAAS;sBAAhC,KAAK;uBAAC,eAAe","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { PermissionService } from '../services/permission.service';\n\n@Directive({\n selector: '[abpPermission]',\n})\nexport class PermissionDirective implements OnDestroy, OnChanges {\n @Input('abpPermission') condition: string;\n\n subscription: Subscription;\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Optional() private templateRef: TemplateRef<any>,\n private vcRef: ViewContainerRef,\n private permissionService: PermissionService,\n private cdRef: ChangeDetectorRef,\n ) {}\n\n private check() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n\n this.subscription = this.permissionService\n .getGrantedPolicy$(this.condition)\n .pipe(distinctUntilChanged())\n .subscribe(isGranted => {\n this.vcRef.clear();\n if (isGranted) this.vcRef.createEmbeddedView(this.templateRef);\n this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (this.subscription) this.subscription.unsubscribe();\n }\n\n ngOnChanges() {\n this.check();\n }\n}\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ComponentFactoryResolver, Directive, Injector, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import compare from 'just-compare';
|
|
3
3
|
import { filter } from 'rxjs/operators';
|
|
4
|
-
import snq from 'snq';
|
|
5
4
|
import { ReplaceableComponentsService } from '../services/replaceable-components.service';
|
|
6
5
|
import { SubscriptionService } from '../services/subscription.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../services/replaceable-components.service";
|
|
8
|
+
import * as i2 from "../services/subscription.service";
|
|
7
9
|
export class ReplaceableTemplateDirective {
|
|
8
10
|
constructor(injector, templateRef, cfRes, vcRef, replaceableComponents, subscription) {
|
|
9
11
|
this.injector = injector;
|
|
@@ -12,7 +14,10 @@ export class ReplaceableTemplateDirective {
|
|
|
12
14
|
this.vcRef = vcRef;
|
|
13
15
|
this.replaceableComponents = replaceableComponents;
|
|
14
16
|
this.subscription = subscription;
|
|
15
|
-
this.providedData = {
|
|
17
|
+
this.providedData = {
|
|
18
|
+
inputs: {},
|
|
19
|
+
outputs: {},
|
|
20
|
+
};
|
|
16
21
|
this.context = {};
|
|
17
22
|
this.defaultComponentSubscriptions = {};
|
|
18
23
|
this.initialized = false;
|
|
@@ -49,7 +54,8 @@ export class ReplaceableTemplateDirective {
|
|
|
49
54
|
});
|
|
50
55
|
}
|
|
51
56
|
ngOnChanges(changes) {
|
|
52
|
-
|
|
57
|
+
var _a, _b;
|
|
58
|
+
if (((_b = (_a = changes === null || changes === void 0 ? void 0 : changes.data) === null || _a === void 0 ? void 0 : _a.currentValue) === null || _b === void 0 ? void 0 : _b.inputs) && this.defaultComponentRef) {
|
|
53
59
|
this.setDefaultComponentInputs();
|
|
54
60
|
}
|
|
55
61
|
}
|
|
@@ -58,7 +64,7 @@ export class ReplaceableTemplateDirective {
|
|
|
58
64
|
return;
|
|
59
65
|
if (this.data.inputs) {
|
|
60
66
|
for (const key in this.data.inputs) {
|
|
61
|
-
if (this.data.inputs
|
|
67
|
+
if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {
|
|
62
68
|
if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {
|
|
63
69
|
this.defaultComponentRef[key] = this.data.inputs[key].value;
|
|
64
70
|
}
|
|
@@ -67,7 +73,7 @@ export class ReplaceableTemplateDirective {
|
|
|
67
73
|
}
|
|
68
74
|
if (this.data.outputs) {
|
|
69
75
|
for (const key in this.data.outputs) {
|
|
70
|
-
if (this.data.outputs
|
|
76
|
+
if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {
|
|
71
77
|
if (!this.defaultComponentSubscriptions[key]) {
|
|
72
78
|
this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(value => {
|
|
73
79
|
this.data.outputs[key](value);
|
|
@@ -96,18 +102,16 @@ export class ReplaceableTemplateDirective {
|
|
|
96
102
|
this.defaultComponentRef = null;
|
|
97
103
|
}
|
|
98
104
|
}
|
|
99
|
-
ReplaceableTemplateDirective
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
]
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvcmVwbGFjZWFibGUtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBSUwsV0FBVyxFQUVYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUd0QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd2RSxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxZQUNVLFFBQWtCLEVBQ2xCLFdBQTZCLEVBQzdCLEtBQStCLEVBQy9CLEtBQXVCLEVBQ3ZCLHFCQUFtRCxFQUNuRCxZQUFpQztRQUxqQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQXJCM0MsaUJBQVksR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFHdkMsQ0FBQztRQUVGLFlBQU8sR0FBRyxFQUFTLENBQUM7UUFNcEIsa0NBQTZCLEdBQUcsRUFBa0MsQ0FBQztRQUVuRSxnQkFBVyxHQUFHLEtBQUssQ0FB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UmVzb2x2ZXIsXG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XG5pbXBvcnQgeyBSZXBsYWNlYWJsZUNvbXBvbmVudHMgfSBmcm9tICcuLi9tb2RlbHMvcmVwbGFjZWFibGUtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBSZXBsYWNlYWJsZUNvbXBvbmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVwbGFjZWFibGUtY29tcG9uZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1thYnBSZXBsYWNlYWJsZVRlbXBsYXRlXScsIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdIH0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZWFibGVUZW1wbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCdhYnBSZXBsYWNlYWJsZVRlbXBsYXRlJylcbiAgZGF0YTogUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlVGVtcGxhdGVEaXJlY3RpdmVJbnB1dDxhbnksIGFueT47XG5cbiAgcHJvdmlkZWREYXRhID0geyBpbnB1dHM6IHt9LCBvdXRwdXRzOiB7fSB9IGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZVRlbXBsYXRlRGF0YTxcbiAgICBhbnksXG4gICAgYW55XG4gID47XG5cbiAgY29udGV4dCA9IHt9IGFzIGFueTtcblxuICBleHRlcm5hbENvbXBvbmVudDogVHlwZTxhbnk+O1xuXG4gIGRlZmF1bHRDb21wb25lbnRSZWY6IGFueTtcblxuICBkZWZhdWx0Q29tcG9uZW50U3Vic2NyaXB0aW9ucyA9IHt9IGFzIEFCUC5EaWN0aW9uYXJ5PFN1YnNjcmlwdGlvbj47XG5cbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgY2ZSZXM6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVwbGFjZWFibGVDb21wb25lbnRzOiBSZXBsYWNlYWJsZUNvbXBvbmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25TZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICBpbml0VGVtcGxhdGU6IHJlZiA9PiB7XG4gICAgICAgIHRoaXMucmVzZXREZWZhdWx0Q29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZiA9IHJlZjtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0Q29tcG9uZW50SW5wdXRzKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb21wb25lbnQkID0gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHNcbiAgICAgIC5nZXQkKHRoaXMuZGF0YS5jb21wb25lbnRLZXkpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChyZXMgPSB7fSBhcyBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQpID0+XG4gICAgICAgICAgICAhdGhpcy5pbml0aWFsaXplZCB8fCAhY29tcGFyZShyZXMuY29tcG9uZW50LCB0aGlzLmV4dGVybmFsQ29tcG9uZW50KSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUoXG4gICAgICBjb21wb25lbnQkLFxuICAgICAgKHJlcyA9IHt9IGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudCkgPT4ge1xuICAgICAgICB0aGlzLnZjUmVmLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxDb21wb25lbnQgPSByZXMuY29tcG9uZW50O1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgdGhpcy5yZXNldERlZmF1bHRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXMuY29tcG9uZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXRQcm92aWRlZERhdGEoKTtcbiAgICAgICAgICBjb25zdCBjdXN0b21JbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdSRVBMQUNFQUJMRV9EQVRBJywgdXNlVmFsdWU6IHRoaXMucHJvdmlkZWREYXRhIH1dLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudmNSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICAgICAgdGhpcy5jZlJlcy5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShyZXMuY29tcG9uZW50KSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjdXN0b21JbmplY3RvcixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHRoaXMuY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoc25xKCgpID0+IGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUuaW5wdXRzKSAmJiB0aGlzLmRlZmF1bHRDb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdENvbXBvbmVudElucHV0cygpO1xuICAgIH1cbiAgfVxuXG4gIHNldERlZmF1bHRDb21wb25lbnRJbnB1dHMoKSB7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHRDb21wb25lbnRSZWYgfHwgKCF0aGlzLmRhdGEuaW5wdXRzICYmICF0aGlzLmRhdGEub3V0cHV0cykpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmRhdGEuaW5wdXRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGEuaW5wdXRzKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuaW5wdXRzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBpZiAoIWNvbXBhcmUodGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmW2tleV0sIHRoaXMuZGF0YS5pbnB1dHNba2V5XS52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZltrZXldID0gdGhpcy5kYXRhLmlucHV0c1trZXldLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEub3V0cHV0cykge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kYXRhLm91dHB1dHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5vdXRwdXRzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdENvbXBvbmVudFN1YnNjcmlwdGlvbnNba2V5XSkge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29tcG9uZW50U3Vic2NyaXB0aW9uc1trZXldID0gdGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmW2tleV0uc3Vic2NyaWJlKFxuICAgICAgICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLm91dHB1dHNba2V5XSh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFByb3ZpZGVkRGF0YSgpIHtcbiAgICB0aGlzLnByb3ZpZGVkRGF0YSA9IHsgLi4udGhpcy5kYXRhLCBpbnB1dHM6IHt9IH07XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5pbnB1dHMpIHJldHVybjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLnByb3ZpZGVkRGF0YS5pbnB1dHMsIHtcbiAgICAgIC4uLk9iamVjdC5rZXlzKHRoaXMuZGF0YS5pbnB1dHMpLnJlZHVjZShcbiAgICAgICAgKGFjYywga2V5KSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBba2V5XToge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy5kYXRhLmlucHV0c1trZXldLnZhbHVlLFxuICAgICAgICAgICAgLi4uKHRoaXMuZGF0YS5pbnB1dHNba2V5XS50d29XYXkgJiYge1xuICAgICAgICAgICAgICBzZXQ6IG5ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuaW5wdXRzW2tleV0udmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEub3V0cHV0c1tgJHtrZXl9Q2hhbmdlYF0obmV3VmFsdWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHt9LFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0RGVmYXVsdENvbXBvbmVudCgpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRDb21wb25lbnRTdWJzY3JpcHRpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRTdWJzY3JpcHRpb25zW2tleV0udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRTdWJzY3JpcHRpb25zID0ge30gYXMgQUJQLkRpY3Rpb25hcnk8U3Vic2NyaXB0aW9uPjtcbiAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRSZWYgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
105
|
+
ReplaceableTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ReplaceableTemplateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: i1.ReplaceableComponentsService }, { token: i2.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
106
|
+
ReplaceableTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: { data: ["abpReplaceableTemplate", "data"] }, providers: [SubscriptionService], usesOnChanges: true, ngImport: i0 });
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ReplaceableTemplateDirective, decorators: [{
|
|
108
|
+
type: Directive,
|
|
109
|
+
args: [{
|
|
110
|
+
selector: '[abpReplaceableTemplate]',
|
|
111
|
+
providers: [SubscriptionService],
|
|
112
|
+
}]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i1.ReplaceableComponentsService }, { type: i2.SubscriptionService }]; }, propDecorators: { data: [{
|
|
114
|
+
type: Input,
|
|
115
|
+
args: ['abpReplaceableTemplate']
|
|
116
|
+
}] } });
|
|
117
|
+
//# sourceMappingURL=replaceable-template.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceable-template.directive.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/replaceable-template.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ComponentFactoryResolver,\n Directive,\n Injector,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport compare from 'just-compare';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ABP } from '../models/common';\nimport { ReplaceableComponents } from '../models/replaceable-components';\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\nimport { SubscriptionService } from '../services/subscription.service';\n\n@Directive({\n selector: '[abpReplaceableTemplate]',\n providers: [SubscriptionService],\n})\nexport class ReplaceableTemplateDirective implements OnInit, OnChanges {\n @Input('abpReplaceableTemplate')\n data: ReplaceableComponents.ReplaceableTemplateDirectiveInput<any, any>;\n\n providedData = {\n inputs: {},\n outputs: {},\n } as ReplaceableComponents.ReplaceableTemplateData<any, any>;\n\n context = {} as any;\n\n externalComponent: Type<any>;\n\n defaultComponentRef: any;\n\n defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\n\n initialized = false;\n\n constructor(\n private injector: Injector,\n private templateRef: TemplateRef<any>,\n private cfRes: ComponentFactoryResolver,\n private vcRef: ViewContainerRef,\n private replaceableComponents: ReplaceableComponentsService,\n private subscription: SubscriptionService,\n ) {\n this.context = {\n initTemplate: ref => {\n this.resetDefaultComponent();\n this.defaultComponentRef = ref;\n this.setDefaultComponentInputs();\n },\n };\n }\n\n ngOnInit() {\n const component$ = this.replaceableComponents\n .get$(this.data.componentKey)\n .pipe(\n filter(\n (res = {} as ReplaceableComponents.ReplaceableComponent) =>\n !this.initialized || !compare(res.component, this.externalComponent),\n ),\n );\n\n this.subscription.addOne(\n component$,\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\n this.vcRef.clear();\n this.externalComponent = res.component;\n if (this.defaultComponentRef) {\n this.resetDefaultComponent();\n }\n\n if (res.component) {\n this.setProvidedData();\n const customInjector = Injector.create({\n providers: [{ provide: 'REPLACEABLE_DATA', useValue: this.providedData }],\n parent: this.injector,\n });\n this.vcRef.createComponent(\n this.cfRes.resolveComponentFactory(res.component),\n 0,\n customInjector,\n );\n } else {\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\n }\n\n this.initialized = true;\n },\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes?.data?.currentValue?.inputs && this.defaultComponentRef) {\n this.setDefaultComponentInputs();\n }\n }\n\n setDefaultComponentInputs() {\n if (!this.defaultComponentRef || (!this.data.inputs && !this.data.outputs)) return;\n\n if (this.data.inputs) {\n for (const key in this.data.inputs) {\n if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {\n if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {\n this.defaultComponentRef[key] = this.data.inputs[key].value;\n }\n }\n }\n }\n\n if (this.data.outputs) {\n for (const key in this.data.outputs) {\n if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {\n if (!this.defaultComponentSubscriptions[key]) {\n this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(\n value => {\n this.data.outputs[key](value);\n },\n );\n }\n }\n }\n }\n }\n\n setProvidedData() {\n this.providedData = { ...this.data, inputs: {} };\n\n if (!this.data.inputs) return;\n Object.defineProperties(this.providedData.inputs, {\n ...Object.keys(this.data.inputs).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n enumerable: true,\n configurable: true,\n get: () => this.data.inputs[key].value,\n ...(this.data.inputs[key].twoWay && {\n set: newValue => {\n this.data.inputs[key].value = newValue;\n this.data.outputs[`${key}Change`](newValue);\n },\n }),\n },\n }),\n {},\n ),\n });\n }\n\n resetDefaultComponent() {\n Object.keys(this.defaultComponentSubscriptions).forEach(key => {\n this.defaultComponentSubscriptions[key].unsubscribe();\n });\n this.defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\n this.defaultComponentRef = null;\n }\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Directive, ElementRef, EventEmitter, Output } from '@angular/core';
|
|
2
2
|
import { fromEvent } from 'rxjs';
|
|
3
3
|
import { SubscriptionService } from '../services/subscription.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/subscription.service";
|
|
4
6
|
export class StopPropagationDirective {
|
|
5
7
|
constructor(el, subscription) {
|
|
6
8
|
this.el = el;
|
|
@@ -14,18 +16,17 @@ export class StopPropagationDirective {
|
|
|
14
16
|
});
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
|
-
StopPropagationDirective
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
]
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zdG9wLXByb3BhZ2F0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFPdkUsTUFBTSxPQUFPLHdCQUF3QjtJQUduQyxZQUFvQixFQUFjLEVBQVUsWUFBaUM7UUFBekQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUY5QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFRSxDQUFDO0lBRWpGLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDeEYsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBZkYsU0FBUyxTQUFDO2dCQUNULCtDQUErQztnQkFDL0MsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQ2pDOzs7WUFSbUIsVUFBVTtZQUVyQixtQkFBbUI7Ozs0QkFRekIsTUFBTSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2NsaWNrLnN0b3BdJyxcbiAgcHJvdmlkZXJzOiBbU3Vic2NyaXB0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoJ2NsaWNrLnN0b3AnKSByZWFkb25seSBzdG9wUHJvcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnY2xpY2snKSwgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcFByb3BFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
19
|
+
StopPropagationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: StopPropagationDirective, deps: [{ token: i0.ElementRef }, { token: i1.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
StopPropagationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: StopPropagationDirective, selector: "[click.stop]", outputs: { stopPropEvent: "click.stop" }, providers: [SubscriptionService], ngImport: i0 });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: StopPropagationDirective, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
25
|
+
selector: '[click.stop]',
|
|
26
|
+
providers: [SubscriptionService],
|
|
27
|
+
}]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SubscriptionService }]; }, propDecorators: { stopPropEvent: [{
|
|
29
|
+
type: Output,
|
|
30
|
+
args: ['click.stop']
|
|
31
|
+
}] } });
|
|
32
|
+
//# sourceMappingURL=stop-propagation.directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-propagation.directive.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/directives/stop-propagation.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;;AAOvE,MAAM,OAAO,wBAAwB;IAGnC,YAAoB,EAAc,EAAU,YAAiC;QAAzD,OAAE,GAAF,EAAE,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAqB;QAF9C,kBAAa,GAAG,IAAI,YAAY,EAAc,CAAC;IAEE,CAAC;IAEjF,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,KAAiB,EAAE,EAAE;YACxF,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;;qHAVU,wBAAwB;yGAAxB,wBAAwB,iFAFxB,CAAC,mBAAmB,CAAC;2FAErB,wBAAwB;kBALpC,SAAS;mBAAC;oBACT,8DAA8D;oBAC9D,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;mIAEgC,aAAa;sBAA3C,MAAM;uBAAC,YAAY","sourcesContent":["import { Directive, ElementRef, EventEmitter, OnInit, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { SubscriptionService } from '../services/subscription.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[click.stop]',\n providers: [SubscriptionService],\n})\nexport class StopPropagationDirective implements OnInit {\n @Output('click.stop') readonly stopPropEvent = new EventEmitter<MouseEvent>();\n\n constructor(private el: ElementRef, private subscription: SubscriptionService) {}\n\n ngOnInit(): void {\n this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), (event: MouseEvent) => {\n event.stopPropagation();\n this.stopPropEvent.emit(event);\n });\n }\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/enums/common.ts"],"names":[],"mappings":"","sourcesContent":["export const enum eLayoutType {\n account = 'account',\n application = 'application',\n empty = 'empty',\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './common';
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC","sourcesContent":["export * from './common';\n"]}
|
|
@@ -18,14 +18,12 @@ export class AuthGuard {
|
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
AuthGuard.ɵ
|
|
22
|
-
AuthGuard
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
];
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLFNBQVM7SUFDcEIsWUFBb0IsWUFBMEIsRUFBVSxXQUF3QjtRQUE1RCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVwRixXQUFXO1FBQ1QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEUsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7WUFkRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQU5RLFlBQVk7WUFFWixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7fVxuXG4gIGNhbkFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgY29uc3QgaGFzVmFsaWRBY2Nlc3NUb2tlbiA9IHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcbiAgICBpZiAoaGFzVmFsaWRBY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoU2VydmljZS5uYXZpZ2F0ZVRvTG9naW4oKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
21
|
+
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AuthGuard, deps: [{ token: i1.OAuthService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AuthGuard, providedIn: 'root' });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AuthGuard, decorators: [{
|
|
24
|
+
type: Injectable,
|
|
25
|
+
args: [{
|
|
26
|
+
providedIn: 'root',
|
|
27
|
+
}]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.AuthService }]; } });
|
|
29
|
+
//# sourceMappingURL=auth.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/guards/auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;;;;AAKvD,MAAM,OAAO,SAAS;IACpB,YAAoB,YAA0B,EAAU,WAAwB;QAA5D,iBAAY,GAAZ,YAAY,CAAc;QAAU,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEpF,WAAW;QACT,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACpE,IAAI,mBAAmB,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;;sGAXU,SAAS;0GAAT,SAAS,cAFR,MAAM;2FAEP,SAAS;kBAHrB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { CanActivate, UrlTree } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(private oauthService: OAuthService, private authService: AuthService) {}\n\n canActivate(): Observable<boolean> | boolean | UrlTree {\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return true;\n }\n\n this.authService.navigateToLogin();\n return false;\n }\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './auth.guard';
|
|
2
2
|
export * from './permission.guard';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC","sourcesContent":["export * from './auth.guard';\nexport * from './permission.guard';\n"]}
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
|
-
import { Store } from '@ngxs/store';
|
|
4
3
|
import { of } from 'rxjs';
|
|
5
4
|
import { tap } from 'rxjs/operators';
|
|
6
|
-
import {
|
|
5
|
+
import { HttpErrorReporterService } from '../services/http-error-reporter.service';
|
|
6
|
+
import { PermissionService } from '../services/permission.service';
|
|
7
7
|
import { RoutesService } from '../services/routes.service';
|
|
8
8
|
import { findRoute, getRoutePath } from '../utils/route-utils';
|
|
9
|
-
import { PermissionService } from '../services/permission.service';
|
|
10
9
|
import * as i0 from "@angular/core";
|
|
11
10
|
import * as i1 from "@angular/router";
|
|
12
11
|
import * as i2 from "../services/routes.service";
|
|
13
|
-
import * as i3 from "
|
|
14
|
-
import * as i4 from "../services/
|
|
12
|
+
import * as i3 from "../services/permission.service";
|
|
13
|
+
import * as i4 from "../services/http-error-reporter.service";
|
|
15
14
|
export class PermissionGuard {
|
|
16
|
-
constructor(router, routesService,
|
|
15
|
+
constructor(router, routesService, permissionService, httpErrorReporter) {
|
|
17
16
|
this.router = router;
|
|
18
17
|
this.routesService = routesService;
|
|
19
|
-
this.store = store;
|
|
20
18
|
this.permissionService = permissionService;
|
|
19
|
+
this.httpErrorReporter = httpErrorReporter;
|
|
21
20
|
}
|
|
22
21
|
canActivate(route, state) {
|
|
23
22
|
let { requiredPolicy } = route.data || {};
|
|
@@ -29,21 +28,17 @@ export class PermissionGuard {
|
|
|
29
28
|
return of(true);
|
|
30
29
|
return this.permissionService.getGrantedPolicy$(requiredPolicy).pipe(tap(access => {
|
|
31
30
|
if (!access) {
|
|
32
|
-
this.
|
|
31
|
+
this.httpErrorReporter.reportError({ status: 403 });
|
|
33
32
|
}
|
|
34
33
|
}));
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
|
-
PermissionGuard.ɵ
|
|
38
|
-
PermissionGuard
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
{ type: Store },
|
|
47
|
-
{ type: PermissionService }
|
|
48
|
-
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUMsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFLbkUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDVSxNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsS0FBWSxFQUNaLGlCQUFvQztRQUhwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDM0MsQ0FBQztJQUVKLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ25FLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUUxQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLGNBQWMsR0FBRyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsY0FBYyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7WUE1QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYNkMsTUFBTTtZQUszQyxhQUFhO1lBSmIsS0FBSztZQU1MLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzdE9jY3VyRXJyb3IgfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3QuYWN0aW9ucyc7XG5pbXBvcnQgeyBSb3V0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmluZFJvdXRlLCBnZXRSb3V0ZVBhdGggfSBmcm9tICcuLi91dGlscy9yb3V0ZS11dGlscyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXNTZXJ2aWNlOiBSb3V0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgbGV0IHsgcmVxdWlyZWRQb2xpY3kgfSA9IHJvdXRlLmRhdGEgfHwge307XG5cbiAgICBpZiAoIXJlcXVpcmVkUG9saWN5KSB7XG4gICAgICBjb25zdCByb3V0ZUZvdW5kID0gZmluZFJvdXRlKHRoaXMucm91dGVzU2VydmljZSwgZ2V0Um91dGVQYXRoKHRoaXMucm91dGVyLCBzdGF0ZS51cmwpKTtcbiAgICAgIHJlcXVpcmVkUG9saWN5ID0gcm91dGVGb3VuZD8ucmVxdWlyZWRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1aXJlZFBvbGljeSkgcmV0dXJuIG9mKHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvblNlcnZpY2UuZ2V0R3JhbnRlZFBvbGljeSQocmVxdWlyZWRQb2xpY3kpLnBpcGUoXG4gICAgICB0YXAoYWNjZXNzID0+IHtcbiAgICAgICAgaWYgKCFhY2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXN0T2NjdXJFcnJvcih7IHN0YXR1czogNDAzIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
36
|
+
PermissionGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PermissionGuard, deps: [{ token: i1.Router }, { token: i2.RoutesService }, { token: i3.PermissionService }, { token: i4.HttpErrorReporterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
PermissionGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PermissionGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PermissionGuard, decorators: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{
|
|
41
|
+
providedIn: 'root',
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.RoutesService }, { type: i3.PermissionService }, { type: i4.HttpErrorReporterService }]; } });
|
|
44
|
+
//# sourceMappingURL=permission.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/guards/permission.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAuC,MAAM,EAAuB,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAc,EAAE,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;;;;;;AAK/D,MAAM,OAAO,eAAe;IAC1B,YACU,MAAc,EACd,aAA4B,EAC5B,iBAAoC,EACpC,iBAA2C;QAH3C,WAAM,GAAN,MAAM,CAAQ;QACd,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,sBAAiB,GAAjB,iBAAiB,CAA0B;IAClD,CAAC;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,cAAc,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,CAAC;SAC7C;QAED,IAAI,CAAC,cAAc;YAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,MAAM,CAAC,EAAE;YACX,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAuB,CAAC,CAAC;aAC1E;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;;4GAzBU,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB","sourcesContent":["import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\nimport { PermissionService } from '../services/permission.service';\nimport { RoutesService } from '../services/routes.service';\nimport { findRoute, getRoutePath } from '../utils/route-utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(\n private router: Router,\n private routesService: RoutesService,\n private permissionService: PermissionService,\n private httpErrorReporter: HttpErrorReporterService,\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n let { requiredPolicy } = route.data || {};\n\n if (!requiredPolicy) {\n const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url));\n requiredPolicy = routeFound?.requiredPolicy;\n }\n\n if (!requiredPolicy) return of(true);\n\n return this.permissionService.getGrantedPolicy$(requiredPolicy).pipe(\n tap(access => {\n if (!access) {\n this.httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse);\n }\n }),\n );\n }\n}\n"]}
|