diff --git a/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts b/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
index 28a70067ef..97f1d14b32 100644
--- a/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
@@ -1,17 +1,18 @@
import { AuthService } from '@abp/ng.core';
-import { Component } from '@angular/core';
+import { Component, inject } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
})
export class HomeComponent {
+ protected readonly authService = inject(AuthService);
+
loading = false;
get hasLoggedIn(): boolean {
return this.authService.isAuthenticated;
}
- constructor(private authService: AuthService) {}
login() {
this.loading = true;
this.authService.navigateToLogin();
diff --git a/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts
index 4ea5401092..81636eef03 100644
--- a/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts
@@ -1,6 +1,6 @@
import { AuthService, ConfigStateService } from '@abp/ng.core';
import { ToasterService } from '@abp/ng.theme.shared';
-import { Component, Injector, OnInit } from '@angular/core';
+import { Component, Injector, OnInit, inject } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { throwError } from 'rxjs';
import { catchError, finalize } from 'rxjs/operators';
@@ -14,6 +14,12 @@ const { maxLength, required } = Validators;
templateUrl: './login.component.html',
})
export class LoginComponent implements OnInit {
+ protected injector = inject(Injector);
+ protected fb = inject(UntypedFormBuilder);
+ protected toasterService = inject(ToasterService);
+ protected authService = inject(AuthService);
+ protected configState = inject(ConfigStateService);
+
form!: UntypedFormGroup;
inProgress?: boolean;
@@ -22,14 +28,6 @@ export class LoginComponent implements OnInit {
authWrapperKey = eAccountComponents.AuthWrapper;
- constructor(
- protected injector: Injector,
- protected fb: UntypedFormBuilder,
- protected toasterService: ToasterService,
- protected authService: AuthService,
- protected configState: ConfigStateService,
- ) {}
-
ngOnInit() {
this.init();
this.buildForm();
diff --git a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts
index 5118f7ec42..da29147d9b 100644
--- a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts
+++ b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts
@@ -1,49 +1,39 @@
-import {
- Component,
- inject,
- isDevMode,
- OnInit,
- Optional,
- SkipSelf,
- Type
-} from '@angular/core';
-import {ActivatedRoute, Router} from '@angular/router';
-import {eLayoutType} from '../enums/common';
-import {ABP} from '../models';
-import {ReplaceableComponents} from '../models/replaceable-components';
-import {LocalizationService} from '../services/localization.service';
-import {ReplaceableComponentsService} from '../services/replaceable-components.service';
-import {RouterEvents} from '../services/router-events.service';
-import {RoutesService} from '../services/routes.service';
-import {SubscriptionService} from '../services/subscription.service';
-import {findRoute, getRoutePath} from '../utils/route-utils';
-import {TreeNode} from '../utils/tree-utils';
-import {DYNAMIC_LAYOUTS_TOKEN} from "../tokens/dynamic-layout.token";
+import { Component, inject, isDevMode, OnInit, Optional, SkipSelf, Type } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { eLayoutType } from '../enums/common';
+import { ABP } from '../models';
+import { ReplaceableComponents } from '../models/replaceable-components';
+import { LocalizationService } from '../services/localization.service';
+import { ReplaceableComponentsService } from '../services/replaceable-components.service';
+import { RouterEvents } from '../services/router-events.service';
+import { RoutesService } from '../services/routes.service';
+import { SubscriptionService } from '../services/subscription.service';
+import { findRoute, getRoutePath } from '../utils/route-utils';
+import { TreeNode } from '../utils/tree-utils';
+import { DYNAMIC_LAYOUTS_TOKEN } from '../tokens/dynamic-layout.token';
+import { EnvironmentService } from '../services';
@Component({
selector: 'abp-dynamic-layout',
- template: `
- `,
+ template: ` `,
providers: [SubscriptionService],
})
export class DynamicLayoutComponent implements OnInit {
layout?: Type;
layoutKey?: eLayoutType;
- readonly layouts = inject(DYNAMIC_LAYOUTS_TOKEN)
+ readonly layouts = inject(DYNAMIC_LAYOUTS_TOKEN);
isLayoutVisible = true;
- private readonly router = inject(Router);
- private readonly route = inject(ActivatedRoute);
- private readonly routes = inject(RoutesService);
- private localizationService = inject(LocalizationService)
- private replaceableComponents = inject(ReplaceableComponentsService)
- private subscription = inject(SubscriptionService)
- private routerEvents = inject(RouterEvents)
+ protected readonly router = inject(Router);
+ protected readonly route = inject(ActivatedRoute);
+ protected readonly routes = inject(RoutesService);
+ protected readonly localizationService = inject(LocalizationService);
+ protected readonly replaceableComponents = inject(ReplaceableComponentsService);
+ protected readonly subscription = inject(SubscriptionService);
+ protected readonly routerEvents = inject(RouterEvents);
+ protected readonly environment = inject(EnvironmentService);
-
- constructor(
- @Optional() @SkipSelf() dynamicLayoutComponent: DynamicLayoutComponent,
- ) {
+ constructor(@Optional() @SkipSelf() dynamicLayoutComponent: DynamicLayoutComponent) {
if (dynamicLayoutComponent) {
if (isDevMode()) console.warn('DynamicLayoutComponent must be used only in AppComponent.');
return;
@@ -51,12 +41,16 @@ export class DynamicLayoutComponent implements OnInit {
this.checkLayoutOnNavigationEnd();
this.listenToLanguageChange();
}
-
+
ngOnInit(): void {
if (this.layout) {
return;
}
- this.getLayout()
+
+ const { oAuthConfig } = this.environment.getEnvironment();
+ if (oAuthConfig.responseType === 'code') {
+ this.getLayout();
+ }
}
private checkLayoutOnNavigationEnd() {
@@ -64,11 +58,9 @@ export class DynamicLayoutComponent implements OnInit {
this.subscription.addOne(navigationEnd$, () => this.getLayout());
}
-
private getLayout() {
let expectedLayout = this.getExtractedLayout();
-
if (!expectedLayout) expectedLayout = eLayoutType.empty;
if (this.layoutKey === expectedLayout) return;
@@ -84,15 +76,11 @@ export class DynamicLayoutComponent implements OnInit {
}
private getExtractedLayout() {
- const routeData = (this.route.snapshot.data || {});
+ const routeData = this.route.snapshot.data || {};
let expectedLayout = routeData['layout'] as eLayoutType;
- if (expectedLayout) {
- return expectedLayout;
- }
-
let node = findRoute(this.routes, getRoutePath(this.router));
- node = {parent: node} as TreeNode;
+ node = { parent: node } as TreeNode;
while (node.parent) {
node = node.parent;
@@ -108,12 +96,12 @@ export class DynamicLayoutComponent implements OnInit {
showLayoutNotFoundError(layoutName: string) {
let message = `Layout ${layoutName} not found.`;
if (layoutName === 'account') {
- message = 'Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added "AccountLayoutModule.forRoot()" to your app.module configuration.';
+ message =
+ 'Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added "AccountLayoutModule.forRoot()" to your app.module configuration.';
}
console.warn(message);
}
-
private listenToLanguageChange() {
this.subscription.addOne(this.localizationService.languageChange$, () => {
this.isLayoutVisible = false;
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts
index 32dd47bad6..a8084a3513 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts
@@ -1,9 +1,8 @@
-import {eLayoutType, SubscriptionService} from '@abp/ng.core';
+import { eLayoutType, SubscriptionService } from '@abp/ng.core';
import { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';
-import {AfterViewInit, Component} from '@angular/core';
+import { AfterViewInit, Component, inject } from '@angular/core';
import { LayoutService } from '../../services/layout.service';
-
@Component({
selector: 'abp-layout-application',
templateUrl: './application-layout.component.html',
@@ -11,11 +10,10 @@ import { LayoutService } from '../../services/layout.service';
providers: [LayoutService, SubscriptionService],
})
export class ApplicationLayoutComponent implements AfterViewInit {
+ public readonly service = inject(LayoutService);
// required for dynamic component
static type = eLayoutType.application;
- constructor(public service: LayoutService) {}
-
ngAfterViewInit() {
this.service.subscribeWindowSize();
}