diff --git a/npm/ng-packs/apps/dev-app/src/app/app.component.ts b/npm/ng-packs/apps/dev-app/src/app/app.component.ts
index 44a504b978..1b0993cd2f 100644
--- a/npm/ng-packs/apps/dev-app/src/app/app.component.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/app.component.ts
@@ -1,6 +1,7 @@
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-root',
template: `
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 97f1d14b32..ad791cabec 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
@@ -2,6 +2,7 @@ import { AuthService } from '@abp/ng.core';
import { Component, inject } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-home',
templateUrl: './home.component.html',
})
diff --git a/npm/ng-packs/apps/dev-app/src/app/route.provider.ts b/npm/ng-packs/apps/dev-app/src/app/route.provider.ts
index a03945ada0..baf7f3c6d3 100644
--- a/npm/ng-packs/apps/dev-app/src/app/route.provider.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/route.provider.ts
@@ -1,20 +1,21 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
export const APP_ROUTE_PROVIDER = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: '/',
- name: '::Menu:Home',
- iconClass: 'fas fa-home',
- order: 1,
- layout: eLayoutType.application,
- },
- ]);
- };
+function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: '/',
+ name: '::Menu:Home',
+ iconClass: 'fas fa-home',
+ order: 1,
+ layout: eLayoutType.application,
+ },
+ ]);
}
diff --git a/npm/ng-packs/jest.config.ts b/npm/ng-packs/jest.config.ts
index d0dbd1b889..6b3f2d6e24 100644
--- a/npm/ng-packs/jest.config.ts
+++ b/npm/ng-packs/jest.config.ts
@@ -1,5 +1,5 @@
-import { getJestProjects } from '@nx/jest';
+import { getJestProjectsAsync } from '@nx/jest';
-export default {
- projects: getJestProjects(),
-};
+export default async () => ({
+ projects: await getJestProjectsAsync(),
+});
diff --git a/npm/ng-packs/migrations.json b/npm/ng-packs/migrations.json
index c7f89c3394..6fb305ede9 100644
--- a/npm/ng-packs/migrations.json
+++ b/npm/ng-packs/migrations.json
@@ -1,84 +1,159 @@
{
"migrations": [
{
- "cli": "nx",
- "version": "19.2.0-beta.2",
- "description": "Updates the default workspace data directory to .nx/workspace-data",
- "implementation": "./src/migrations/update-19-2-0/move-workspace-data-directory",
+ "version": "20.0.0-beta.7",
+ "description": "Migration for v20.0.0-beta.7",
+ "implementation": "./src/migrations/update-20-0-0/move-use-daemon-process",
"package": "nx",
- "name": "19-2-0-move-graph-cache-directory"
+ "name": "move-use-daemon-process"
},
{
- "cli": "nx",
- "version": "19.2.2-beta.0",
- "description": "Updates the nx wrapper.",
- "implementation": "./src/migrations/update-17-3-0/update-nxw",
+ "version": "20.0.1",
+ "description": "Set `useLegacyCache` to true for migrating workspaces",
+ "implementation": "./src/migrations/update-20-0-1/use-legacy-cache",
+ "x-repair-skip": true,
"package": "nx",
- "name": "19-2-2-update-nx-wrapper"
+ "name": "use-legacy-cache"
},
{
- "version": "19.2.4-beta.0",
- "description": "Set project name in nx.json explicitly",
- "implementation": "./src/migrations/update-19-2-4/set-project-name",
- "x-repair-skip": true,
- "package": "nx",
- "name": "19-2-4-set-project-name"
+ "version": "20.2.0-beta.5",
+ "description": "Update TypeScript ESLint packages to v8.13.0 if they are already on v8",
+ "implementation": "./src/migrations/update-20-2-0/update-typescript-eslint-v8-13-0",
+ "package": "@nx/eslint",
+ "name": "update-typescript-eslint-v8.13.0"
+ },
+ {
+ "cli": "nx",
+ "version": "19.6.0-beta.4",
+ "description": "Update ciWebServerCommand to use static serve for the application.",
+ "implementation": "./src/migrations/update-19-6-0/update-ci-webserver-for-static-serve",
+ "package": "@nx/cypress",
+ "name": "update-19-6-0-update-ci-webserver-for-vite"
+ },
+ {
+ "cli": "nx",
+ "version": "20.0.0-beta.5",
+ "description": "replace getJestProjects with getJestProjectsAsync",
+ "implementation": "./src/migrations/update-20-0-0/replace-getJestProjects-with-getJestProjectsAsync",
+ "package": "@nx/jest",
+ "name": "replace-getJestProjects-with-getJestProjectsAsync"
+ },
+ {
+ "cli": "nx",
+ "version": "19.6.0-beta.4",
+ "description": "Ensure Module Federation DTS is turned off by default.",
+ "factory": "./src/migrations/update-19-6-0/turn-off-dts-by-default",
+ "package": "@nx/angular",
+ "name": "update-19-6-0"
+ },
+ {
+ "cli": "nx",
+ "version": "19.6.0-beta.7",
+ "requires": { "@angular/core": ">=18.2.0" },
+ "description": "Update the @angular/cli package version to ~18.2.0.",
+ "factory": "./src/migrations/update-19-6-0/update-angular-cli",
+ "package": "@nx/angular",
+ "name": "update-angular-cli-version-18-2-0"
+ },
+ {
+ "cli": "nx",
+ "version": "19.6.1-beta.0",
+ "description": "Ensure Target Defaults are set correctly for Module Federation.",
+ "factory": "./src/migrations/update-19-6-1/ensure-depends-on-for-mf",
+ "package": "@nx/angular",
+ "name": "update-19-6-1-ensure-module-federation-target-defaults"
+ },
+ {
+ "cli": "nx",
+ "version": "20.2.0-beta.2",
+ "description": "Update the ModuleFederationConfig import use @nx/module-federation.",
+ "factory": "./src/migrations/update-20-2-0/migrate-mf-imports-to-new-package",
+ "package": "@nx/angular",
+ "name": "update-20-2-0-update-module-federation-config-import"
+ },
+ {
+ "cli": "nx",
+ "version": "20.2.0-beta.2",
+ "description": "Update the withModuleFederation import use @nx/module-federation/angular.",
+ "factory": "./src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package",
+ "package": "@nx/angular",
+ "name": "update-20-2-0-update-with-module-federation-import"
+ },
+ {
+ "cli": "nx",
+ "version": "20.2.0-beta.5",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Update the @angular/cli package version to ~19.0.0.",
+ "factory": "./src/migrations/update-20-2-0/update-angular-cli",
+ "package": "@nx/angular",
+ "name": "update-angular-cli-version-19-0-0"
},
{
"cli": "nx",
- "version": "19.1.0-beta.6",
- "description": "Migrate no-extra-semi rules into user config, out of nx extendable configs",
- "implementation": "./src/migrations/update-19-1-0-migrate-no-extra-semi/migrate-no-extra-semi",
- "package": "@nx/eslint-plugin",
- "name": "update-19-1-0-rename-no-extra-semi"
+ "version": "20.2.0-beta.5",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Add the '@angular/localize/init' polyfill to the 'polyfills' option of targets using esbuild-based executors.",
+ "factory": "./src/migrations/update-20-2-0/add-localize-polyfill-to-targets",
+ "package": "@nx/angular",
+ "name": "add-localize-polyfill-to-targets"
+ },
+ {
+ "cli": "nx",
+ "version": "20.2.0-beta.5",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Update '@angular/ssr' import paths to use the new '/node' entry point when 'CommonEngine' is detected.",
+ "factory": "./src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point",
+ "package": "@nx/angular",
+ "name": "update-angular-ssr-imports-to-use-node-entry-point"
},
{
"cli": "nx",
- "version": "19.1.0-beta.2",
- "requires": { "@angular/core": ">=18.0.0" },
- "description": "Update the @angular/cli package version to ~18.0.0.",
- "factory": "./src/migrations/update-19-1-0/update-angular-cli",
+ "version": "20.2.0-beta.6",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Disable the Angular ESLint prefer-standalone rule if not set.",
+ "factory": "./src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone",
"package": "@nx/angular",
- "name": "update-angular-cli-version-18-0-0"
+ "name": "disable-angular-eslint-prefer-standalone"
},
{
"cli": "nx",
- "version": "19.2.1-beta.0",
- "requires": { "@angular-eslint/eslint-plugin": ">=18.0.0" },
- "description": "Installs the '@typescript-eslint/utils' package when having installed '@angular-eslint/eslint-plugin' or '@angular-eslint/eslint-plugin-template' with version >=18.0.0.",
- "factory": "./src/migrations/update-19-2-1/add-typescript-eslint-utils",
+ "version": "20.2.0-beta.8",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Remove Angular ESLint rules that were removed in v19.0.0.",
+ "factory": "./src/migrations/update-20-2-0/remove-angular-eslint-rules",
"package": "@nx/angular",
- "name": "add-typescript-eslint-utils"
+ "name": "remove-angular-eslint-rules"
},
{
"cli": "nx",
- "version": "19.5.0-beta.1",
- "requires": { "@angular/core": ">=18.1.0" },
- "description": "Update the @angular/cli package version to ~18.1.0.",
- "factory": "./src/migrations/update-19-5-0/update-angular-cli",
+ "version": "20.2.0-beta.8",
+ "requires": { "@angular/core": ">=19.0.0" },
+ "description": "Remove the deprecated 'tailwindConfig' option from ng-packagr executors. Tailwind CSS configurations located at the project or workspace root will be picked up automatically.",
+ "factory": "./src/migrations/update-20-2-0/remove-tailwind-config-from-ng-packagr-executors",
"package": "@nx/angular",
- "name": "update-angular-cli-version-18-1-0"
+ "name": "remove-tailwind-config-from-ng-packagr-executors"
},
{
- "version": "18.0.0",
- "description": "Updates two-way bindings that have an invalid expression to use the longform expression instead.",
- "factory": "./migrations/invalid-two-way-bindings/bundle",
+ "version": "19.0.0",
+ "description": "Updates non-standalone Directives, Component and Pipes to 'standalone:false' and removes 'standalone:true' from those who are standalone",
+ "factory": "./bundles/explicit-standalone-flag#migrate",
"package": "@angular/core",
- "name": "invalid-two-way-bindings"
+ "name": "explicit-standalone-flag"
},
{
- "version": "18.0.0",
- "description": "Replace deprecated HTTP related modules with provider functions",
- "factory": "./migrations/http-providers/bundle",
+ "version": "19.0.0",
+ "description": "Updates ExperimentalPendingTasks to PendingTasks",
+ "factory": "./bundles/pending-tasks#migrate",
"package": "@angular/core",
- "name": "migration-http-providers"
+ "name": "pending-tasks"
},
{
- "version": "18.1.0",
- "description": "Updates calls to afterRender with an explicit phase to the new API",
- "factory": "./migrations/after-render-phase/bundle",
+ "version": "19.0.0",
+ "description": "Replaces `APP_INITIALIZER`, `ENVIRONMENT_INITIALIZER` & `PLATFORM_INITIALIZER` respectively with `provideAppInitializer`, `provideEnvironmentInitializer` & `providePlatformInitializer`.",
+ "factory": "./bundles/provide-initializer#migrate",
+ "optional": true,
"package": "@angular/core",
- "name": "migration-after-render-phase"
+ "name": "provide-initializer"
}
]
}
diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json
index 82972f3d70..276d18a7c2 100644
--- a/npm/ng-packs/package.json
+++ b/npm/ng-packs/package.json
@@ -46,51 +46,51 @@
"devDependencies": {
"@abp/ng.theme.lepton-x": "~4.0.3",
"@abp/utils": "~9.0.2",
- "@angular-devkit/build-angular": "~18.1.0",
- "@angular-devkit/core": "~18.1.0",
- "@angular-devkit/schematics": "~18.1.0",
- "@angular-devkit/schematics-cli": "~18.1.0",
- "@angular-eslint/eslint-plugin": "~18.1.0",
- "@angular-eslint/eslint-plugin-template": "~18.1.0",
- "@angular-eslint/template-parser": "~18.1.0",
- "@angular/animations": "~18.1.0",
- "@angular/cli": "~18.1.0",
- "@angular/common": "~18.1.0",
- "@angular/compiler": "~18.1.0",
- "@angular/compiler-cli": "~18.1.0",
- "@angular/core": "~18.1.0",
- "@angular/forms": "~18.1.0",
- "@angular/language-service": "~18.1.0",
- "@angular/localize": "~18.1.0",
- "@angular/platform-browser": "~18.1.0",
- "@angular/platform-browser-dynamic": "~18.1.0",
- "@angular/router": "~18.1.0",
+ "@angular-devkit/build-angular": "~19.0.0",
+ "@angular-devkit/core": "~19.0.0",
+ "@angular-devkit/schematics": "~19.0.0",
+ "@angular-devkit/schematics-cli": "~19.0.0",
+ "@angular-eslint/eslint-plugin": "~19.0.0",
+ "@angular-eslint/eslint-plugin-template": "~19.0.0",
+ "@angular-eslint/template-parser": "~19.0.0",
+ "@angular/animations": "~19.0.0",
+ "@angular/cli": "~19.0.0",
+ "@angular/common": "~19.0.0",
+ "@angular/compiler": "~19.0.0",
+ "@angular/compiler-cli": "~19.0.0",
+ "@angular/core": "~19.0.0",
+ "@angular/forms": "~19.0.0",
+ "@angular/language-service": "~19.0.0",
+ "@angular/localize": "~19.0.0",
+ "@angular/platform-browser": "~19.0.0",
+ "@angular/platform-browser-dynamic": "~19.0.0",
+ "@angular/router": "~19.0.0",
"@fortawesome/fontawesome-free": "^6.0.0",
- "@ng-bootstrap/ng-bootstrap": "~17.0.0",
- "@ngneat/spectator": "^16.0.0",
+ "@ng-bootstrap/ng-bootstrap": "~18.0.0-rc.0",
+ "@ngneat/spectator": "~19.1.0",
"@ngx-validate/core": "^0.2.0",
- "@nx/angular": "~19.5.0",
- "@nx/cypress": "~19.5.0",
- "@nx/devkit": "~19.5.0",
- "@nx/eslint": "~19.5.0",
- "@nx/eslint-plugin": "~19.5.0",
- "@nx/jest": "~19.5.0",
- "@nx/js": "~19.5.0",
- "@nx/plugin": "~19.5.0",
- "@nx/workspace": "~19.5.0",
+ "@nx/angular": "~20.2.0",
+ "@nx/cypress": "~20.2.0",
+ "@nx/devkit": "~20.2.0",
+ "@nx/eslint": "~20.2.0",
+ "@nx/eslint-plugin": "~20.2.0",
+ "@nx/jest": "~20.2.0",
+ "@nx/js": "~20.2.0",
+ "@nx/plugin": "~20.2.0",
+ "@nx/workspace": "~20.2.0",
"@popperjs/core": "~2.11.0",
- "@schematics/angular": "~18.1.0",
+ "@schematics/angular": "~19.0.0",
"@swc-node/register": "1.9.2",
"@swc/cli": "0.3.12",
"@swc/core": "~1.5.0",
"@swc/helpers": "~0.5.0",
"@swimlane/ngx-datatable": "^20.0.0",
- "@types/jest": "29.4.4",
+ "@types/jest": "29.5.14",
"@types/node": "^20.0.0",
"@typescript-eslint/eslint-plugin": "7.16.0",
"@typescript-eslint/parser": "7.16.0",
"@typescript-eslint/utils": "^7.16.0",
- "angular-oauth2-oidc": "^17.0.0",
+ "angular-oauth2-oidc": "^19.0.0",
"autoprefixer": "^10.0.0",
"bootstrap": "^5.0.0",
"bootstrap-icons": "^1.0.0",
@@ -104,17 +104,16 @@
"jest": "^29.0.0",
"jest-canvas-mock": "^2.0.0",
"jest-environment-jsdom": "^29.0.0",
- "jest-preset-angular": "14.1.1",
+ "jest-preset-angular": "14.4.2",
"jsonc-eslint-parser": "^2.0.0",
"jsonc-parser": "^2.0.0",
"just-clone": "^6.0.0",
"just-compare": "^2.0.0",
"lerna": "^4.0.0",
"lint-staged": "^13.0.0",
- "ng-packagr": "~18.1.0",
- "ng-zorro-antd": "^17.0.0",
- "nx": "~19.5.0",
- "perfect-scrollbar": "^1.0.0",
+ "ng-packagr": "~19.0.0",
+ "ng-zorro-antd": "^19.0.0-beta.0",
+ "nx": "~20.2.0",
"postcss": "^8.0.0",
"postcss-import": "14.1.0",
"postcss-preset-env": "7.5.0",
@@ -128,8 +127,8 @@
"ts-toolbelt": "^9.0.0",
"tslib": "^2.0.0",
"tslint": "~6.1.0",
- "typescript": "~5.5.0",
- "zone.js": "~0.14.0"
+ "typescript": "~5.6.0",
+ "zone.js": "~0.15.0"
},
"lint-staged": {
"**/*.{js,jsx,ts,tsx,html,css,scss}": [
diff --git a/npm/ng-packs/packages/account/config/src/providers/route.provider.ts b/npm/ng-packs/packages/account/config/src/providers/route.provider.ts
index 2708d1d2f7..b152237503 100644
--- a/npm/ng-packs/packages/account/config/src/providers/route.provider.ts
+++ b/npm/ng-packs/packages/account/config/src/providers/route.provider.ts
@@ -1,56 +1,57 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eAccountRouteNames } from '../enums/route-names';
export const ACCOUNT_ROUTE_PROVIDERS = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-export function configureRoutes(routes: RoutesService) {
- return () => {
- routes.add([
- {
- path: undefined,
- name: eAccountRouteNames.Account,
- invisible: true,
- layout: eLayoutType.account,
- breadcrumbText: eAccountRouteNames.Account,
- iconClass: 'bi bi-person-fill-gear',
- order: 1,
- },
- {
- path: '/account/login',
- name: eAccountRouteNames.Login,
- parentName: eAccountRouteNames.Account,
- order: 1,
- },
- {
- path: '/account/register',
- name: eAccountRouteNames.Register,
- parentName: eAccountRouteNames.Account,
- order: 2,
- },
- {
- path: '/account/manage',
- name: eAccountRouteNames.ManageProfile,
- parentName: eAccountRouteNames.Account,
- layout: eLayoutType.application,
- breadcrumbText: 'AbpAccount::Manage',
- iconClass: 'bi bi-kanban-fill',
- order: 3,
- },
- {
- path: '/account/forgot-password',
- parentName: eAccountRouteNames.Account,
- name: eAccountRouteNames.ForgotPassword,
- invisible: true,
- },
- {
- path: '/account/reset-password',
- parentName: eAccountRouteNames.Account,
- name: eAccountRouteNames.ResetPassword,
- invisible: true,
- },
- ]);
- };
+export function configureRoutes() {
+ const routes = inject(RoutesService);
+ routes.add([
+ {
+ path: undefined,
+ name: eAccountRouteNames.Account,
+ invisible: true,
+ layout: eLayoutType.account,
+ breadcrumbText: eAccountRouteNames.Account,
+ iconClass: 'bi bi-person-fill-gear',
+ order: 1,
+ },
+ {
+ path: '/account/login',
+ name: eAccountRouteNames.Login,
+ parentName: eAccountRouteNames.Account,
+ order: 1,
+ },
+ {
+ path: '/account/register',
+ name: eAccountRouteNames.Register,
+ parentName: eAccountRouteNames.Account,
+ order: 2,
+ },
+ {
+ path: '/account/manage',
+ name: eAccountRouteNames.ManageProfile,
+ parentName: eAccountRouteNames.Account,
+ layout: eLayoutType.application,
+ breadcrumbText: 'AbpAccount::Manage',
+ iconClass: 'bi bi-kanban-fill',
+ order: 3,
+ },
+ {
+ path: '/account/forgot-password',
+ parentName: eAccountRouteNames.Account,
+ name: eAccountRouteNames.ForgotPassword,
+ invisible: true,
+ },
+ {
+ path: '/account/reset-password',
+ parentName: eAccountRouteNames.Account,
+ name: eAccountRouteNames.ResetPassword,
+ invisible: true,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
index 1656694781..8b2d29cba5 100644
--- a/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
@@ -17,6 +17,7 @@ const { required } = Validators;
const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];
@Component({
+ standalone: false,
selector: 'abp-change-password-form',
templateUrl: './change-password.component.html',
exportAs: 'abpChangePasswordForm',
diff --git a/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts
index e1f460df5a..c1fbd7b703 100644
--- a/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts
@@ -4,6 +4,7 @@ import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms
import { finalize } from 'rxjs/operators';
@Component({
+ standalone: false,
selector: 'abp-forgot-password',
templateUrl: 'forgot-password.component.html',
})
@@ -14,7 +15,10 @@ export class ForgotPasswordComponent {
isEmailSent = false;
- constructor(private fb: UntypedFormBuilder, private accountService: AccountService) {
+ constructor(
+ private fb: UntypedFormBuilder,
+ private accountService: AccountService,
+ ) {
this.form = this.fb.group({
email: ['', [Validators.required, Validators.email]],
});
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 81636eef03..54bd4c8905 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
@@ -10,6 +10,7 @@ import { getRedirectUrl } from '../../utils/auth-utils';
const { maxLength, required } = Validators;
@Component({
+ standalone: false,
selector: 'abp-login',
templateUrl: './login.component.html',
})
diff --git a/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts
index 2e31176245..c6e976b72b 100644
--- a/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts
@@ -6,6 +6,7 @@ import { eAccountComponents } from '../../enums/components';
import { ManageProfileStateService } from '../../services/manage-profile.state.service';
@Component({
+ standalone: false,
selector: 'abp-manage-profile',
templateUrl: './manage-profile.component.html',
animations: [trigger('fadeIn', [transition(':enter', useAnimation(fadeIn))])],
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
index 2515983e48..efb23afe67 100644
--- a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
@@ -7,6 +7,7 @@ import {
import { UntypedFormGroup } from '@angular/forms';
@Component({
+ standalone: false,
selector: 'abp-personal-settings-half-row',
template: `
{{ displayName | abpLocalization }}
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
index 8a3a63d376..3ff2692c4b 100644
--- a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
@@ -15,6 +15,7 @@ import {
import { eAccountComponents } from '../../enums';
@Component({
+ standalone: false,
selector: 'abp-personal-settings-form',
templateUrl: './personal-settings.component.html',
exportAs: 'abpPersonalSettingsForm',
diff --git a/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts
index b535f51fcb..1027a9d108 100644
--- a/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts
@@ -11,6 +11,7 @@ import { getRedirectUrl } from '../../utils/auth-utils';
const { maxLength, required, email } = Validators;
@Component({
+ standalone: false,
selector: 'abp-register',
templateUrl: './register.component.html',
})
diff --git a/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts
index 8e93b75c06..046e761883 100644
--- a/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts
@@ -9,6 +9,7 @@ import { finalize } from 'rxjs/operators';
const PASSWORD_FIELDS = ['password', 'confirmPassword'];
@Component({
+ standalone: false,
selector: 'abp-reset-password',
templateUrl: './reset-password.component.html',
})
diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts
index fe6015ba2b..d40b274443 100644
--- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts
+++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts
@@ -16,6 +16,7 @@ import {
let Chart: any;
@Component({
+ standalone: false,
selector: 'abp-chart',
template: `
{
@@ -101,7 +105,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges {
type: this.type as any,
data: this.data,
options: this.options,
- plugins: this.plugins
+ plugins: this.plugins,
});
};
diff --git a/npm/ng-packs/packages/components/extensible/ng-package.json b/npm/ng-packs/packages/components/extensible/ng-package.json
index fbafcc4448..e09fb3fd03 100644
--- a/npm/ng-packs/packages/components/extensible/ng-package.json
+++ b/npm/ng-packs/packages/components/extensible/ng-package.json
@@ -1,4 +1,5 @@
{
+ "$schema": "../../../node_modules/ng-packagr/ng-entrypoint.schema.json",
"lib": {
"entryFile": "src/public-api.ts"
}
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
index 0976820506..a9902c8bae 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
@@ -25,7 +25,6 @@ import { selfFactory } from '../../utils/factory.util';
@Component({
exportAs: 'abpExtensibleDateTimePicker',
- standalone: true,
imports: [
CommonModule,
ReactiveFormsModule,
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
index 8a20afc9e8..d6e9dba268 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
@@ -47,14 +47,12 @@ import { eExtensibleComponents } from '../../enums/components';
import { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';
import { NgxValidateCoreModule } from '@ngx-validate/core';
import { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';
-import { CreateInjectorPipe } from '../../pipes/create-injector.pipe';
import { CommonModule } from '@angular/common';
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'abp-extensible-form-prop',
templateUrl: './extensible-form-prop.component.html',
- standalone: true,
imports: [
ExtensibleDateTimePickerComponent,
NgbDatepickerModule,
@@ -64,7 +62,6 @@ import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
NgxValidateCoreModule,
NgbTooltip,
NgbTypeaheadModule,
- CreateInjectorPipe,
ShowPasswordDirective,
PermissionDirective,
LocalizationModule,
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts
index 455f8cdd99..33f6988811 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts
@@ -21,7 +21,6 @@ import { CommonModule } from '@angular/common';
import { PropDataDirective } from '../../directives/prop-data.directive';
@Component({
- standalone: true,
exportAs: 'abpExtensibleForm',
selector: 'abp-extensible-form',
templateUrl: './extensible-form.component.html',
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
index 9d4a7be83f..86de7f0ff2 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
@@ -55,7 +55,6 @@ const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
@Component({
exportAs: 'abpExtensibleTable',
selector: 'abp-extensible-table',
- standalone: true,
imports: [
AbpVisibleDirective,
NgxDatatableModule,
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts
index 7a537c6eb8..5307a4a671 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts
@@ -15,7 +15,6 @@ import { NgClass, NgTemplateOutlet } from '@angular/common';
@Component({
exportAs: 'abpGridActions',
- standalone: true,
imports: [
NgbDropdownModule,
EllipsisDirective,
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts
index 507064a54c..7492b6f94e 100644
--- a/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts
@@ -15,7 +15,6 @@ import { NgClass, NgComponentOutlet } from '@angular/common';
@Component({
exportAs: 'abpPageToolbar',
selector: 'abp-page-toolbar',
- standalone: true,
imports: [
CreateInjectorPipe,
PermissionDirective,
diff --git a/npm/ng-packs/packages/components/page/src/page-part.directive.ts b/npm/ng-packs/packages/components/page/src/page-part.directive.ts
index e212cac63c..9bb5efdf09 100644
--- a/npm/ng-packs/packages/components/page/src/page-part.directive.ts
+++ b/npm/ng-packs/packages/components/page/src/page-part.directive.ts
@@ -24,7 +24,10 @@ export interface PageRenderStrategy {
export const PAGE_RENDER_STRATEGY = new InjectionToken
('PAGE_RENDER_STRATEGY');
-@Directive({ selector: '[abpPagePart]' })
+@Directive({
+ standalone: false,
+ selector: '[abpPagePart]',
+})
export class PagePartDirective implements OnInit, OnDestroy, OnChanges {
hasRendered = false;
type!: string;
diff --git a/npm/ng-packs/packages/components/page/src/page-parts.component.ts b/npm/ng-packs/packages/components/page/src/page-parts.component.ts
index 720a14c4a9..ba8fada017 100644
--- a/npm/ng-packs/packages/components/page/src/page-parts.component.ts
+++ b/npm/ng-packs/packages/components/page/src/page-parts.component.ts
@@ -7,6 +7,7 @@ export enum PageParts {
}
@Component({
+ standalone: false,
selector: 'abp-page-title-container',
template: ` `,
encapsulation: ViewEncapsulation.None,
@@ -14,6 +15,7 @@ export enum PageParts {
export class PageTitleContainerComponent {}
@Component({
+ standalone: false,
selector: 'abp-page-breadcrumb-container',
template: ` `,
encapsulation: ViewEncapsulation.None,
@@ -21,6 +23,7 @@ export class PageTitleContainerComponent {}
export class PageBreadcrumbContainerComponent {}
@Component({
+ standalone: false,
selector: 'abp-page-toolbar-container',
template: ` `,
encapsulation: ViewEncapsulation.None,
diff --git a/npm/ng-packs/packages/components/page/src/page.component.ts b/npm/ng-packs/packages/components/page/src/page.component.ts
index 06a8e3af6d..d1b0b3236b 100644
--- a/npm/ng-packs/packages/components/page/src/page.component.ts
+++ b/npm/ng-packs/packages/components/page/src/page.component.ts
@@ -7,6 +7,7 @@ import {
} from './page-parts.component';
@Component({
+ standalone: false,
selector: 'abp-page',
templateUrl: './page.component.html',
encapsulation: ViewEncapsulation.None,
diff --git a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
index ccc44cde0b..51e4eb9eae 100644
--- a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
+++ b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
@@ -23,6 +23,7 @@ import { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.
export type DropEvent = NzFormatEmitEvent & { pos: number };
@Component({
+ standalone: false,
selector: 'abp-tree',
templateUrl: 'tree.component.html',
styleUrls: ['tree.component.scss'],
diff --git a/npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts b/npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts
index 35706bd25f..03bb2c8fed 100644
--- a/npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts
+++ b/npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts
@@ -1,6 +1,7 @@
import { Directive, TemplateRef } from '@angular/core';
@Directive({
+ standalone: false,
selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',
})
export class ExpandedIconTemplateDirective {
diff --git a/npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts b/npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts
index 56c66af04b..5fd75b2025 100644
--- a/npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts
+++ b/npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts
@@ -1,6 +1,7 @@
import { Directive, TemplateRef } from '@angular/core';
@Directive({
+ standalone: false,
selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',
})
export class TreeNodeTemplateDirective {
diff --git a/npm/ng-packs/packages/core/src/lib/abstracts/ng-model.component.ts b/npm/ng-packs/packages/core/src/lib/abstracts/ng-model.component.ts
index 6653880b45..1d6d7e545d 100644
--- a/npm/ng-packs/packages/core/src/lib/abstracts/ng-model.component.ts
+++ b/npm/ng-packs/packages/core/src/lib/abstracts/ng-model.component.ts
@@ -2,7 +2,10 @@ import { ChangeDetectorRef, Component, inject, Input } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
// Not an abstract class on purpose. Do not change!
-@Component({ template: '' })
+@Component({
+ standalone: false,
+ template: '',
+})
export class AbstractNgModelComponent implements ControlValueAccessor {
protected _value!: T;
protected cdRef = inject(ChangeDetectorRef);
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 1910386a51..9034ad0c24 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
@@ -14,6 +14,7 @@ import { DYNAMIC_LAYOUTS_TOKEN } from '../tokens/dynamic-layout.token';
import { EnvironmentService } from '../services';
@Component({
+ standalone: false,
selector: 'abp-dynamic-layout',
template: `
@if (isLayoutVisible) {
@@ -28,7 +29,6 @@ export class DynamicLayoutComponent implements OnInit {
readonly layouts = inject(DYNAMIC_LAYOUTS_TOKEN);
isLayoutVisible = true;
-
protected readonly router = inject(Router);
protected readonly route = inject(ActivatedRoute);
protected readonly routes = inject(RoutesService);
@@ -46,7 +46,7 @@ export class DynamicLayoutComponent implements OnInit {
this.checkLayoutOnNavigationEnd();
this.listenToLanguageChange();
}
-
+
ngOnInit(): void {
if (this.layout) {
return;
diff --git a/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts
index 92d30fdff9..6b8373f658 100644
--- a/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts
+++ b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts
@@ -6,6 +6,7 @@ import { ReplaceableComponentsService } from '../services/replaceable-components
import { SubscriptionService } from '../services/subscription.service';
@Component({
+ standalone: false,
selector: 'abp-replaceable-route-container',
template: `
diff --git a/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
index fee29d9dd8..4dd1e586ee 100644
--- a/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
+++ b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
@@ -1,6 +1,7 @@
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-router-outlet',
template: ` `,
})
diff --git a/npm/ng-packs/packages/core/src/lib/handlers/routes.handler.ts b/npm/ng-packs/packages/core/src/lib/handlers/routes.handler.ts
index a46f6d9d77..76dc66b3ae 100644
--- a/npm/ng-packs/packages/core/src/lib/handlers/routes.handler.ts
+++ b/npm/ng-packs/packages/core/src/lib/handlers/routes.handler.ts
@@ -7,7 +7,10 @@ import { RoutesService } from '../services/routes.service';
providedIn: 'root',
})
export class RoutesHandler {
- constructor(private routes: RoutesService, @Optional() private router: Router) {
+ constructor(
+ private routes: RoutesService,
+ @Optional() private router: Router,
+ ) {
this.addRoutes();
}
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts
index 2dbac68eb7..102998bd48 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts
@@ -4,6 +4,7 @@ import { LocalizationService } from '../services/localization.service';
@Injectable()
@Pipe({
+ standalone: false,
name: 'abpLocalization',
})
export class LocalizationPipe implements PipeTransform {
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts
index c8445e8390..bf76c9ba59 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts
@@ -2,7 +2,10 @@ import { inject, Injectable, Pipe, PipeTransform, SecurityContext } from '@angul
import { DomSanitizer } from '@angular/platform-browser';
@Injectable()
-@Pipe({ name: 'abpSafeHtml' })
+@Pipe({
+ standalone: false,
+ name: 'abpSafeHtml',
+})
export class SafeHtmlPipe implements PipeTransform {
private readonly sanitizer = inject(DomSanitizer);
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/short-date-time.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/short-date-time.pipe.ts
index ef12be47d8..c9c29f7e31 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/short-date-time.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/short-date-time.pipe.ts
@@ -4,6 +4,7 @@ import { ConfigStateService } from '../services';
import { getShortDateShortTimeFormat } from '../utils/date-utils';
@Pipe({
+ standalone: false,
name: 'shortDateTime',
pure: true,
})
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/short-date.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/short-date.pipe.ts
index 30c9bd9323..919a97685f 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/short-date.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/short-date.pipe.ts
@@ -4,6 +4,7 @@ import { ConfigStateService } from '../services';
import { getShortDateFormat } from '../utils/date-utils';
@Pipe({
+ standalone: false,
name: 'shortDate',
pure: true,
})
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/short-time.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/short-time.pipe.ts
index cf0450673d..ff70e68f4e 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/short-time.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/short-time.pipe.ts
@@ -4,6 +4,7 @@ import { ConfigStateService } from '../services';
import { getShortTimeFormat } from '../utils/date-utils';
@Pipe({
+ standalone: false,
name: 'shortTime',
pure: true,
})
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts
index c44ca6f075..b4a49ce85a 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts
@@ -1,7 +1,9 @@
import { Injectable, Pipe, PipeTransform } from '@angular/core';
export type SortOrder = 'asc' | 'desc';
+
@Injectable()
@Pipe({
+ standalone: false,
name: 'abpSort',
})
export class SortPipe implements PipeTransform {
diff --git a/npm/ng-packs/packages/core/src/lib/pipes/to-injector.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/to-injector.pipe.ts
index 5a1ac4df29..02c71b2e65 100644
--- a/npm/ng-packs/packages/core/src/lib/pipes/to-injector.pipe.ts
+++ b/npm/ng-packs/packages/core/src/lib/pipes/to-injector.pipe.ts
@@ -5,6 +5,7 @@ export const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken(
);
@Pipe({
+ standalone: false,
name: 'toInjector',
})
export class ToInjectorPipe implements PipeTransform {
diff --git a/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts b/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts
index 03f99a7db8..b6a8a30cb0 100644
--- a/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts
+++ b/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts
@@ -1,23 +1,19 @@
-import { APP_INITIALIZER, Injector, Provider } from '@angular/core';
+import { Injector, inject, provideAppInitializer } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { SessionStateService } from '../services/session-state.service';
import { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';
-export function setLanguageToCookie(injector: Injector) {
- return () => {
- const sessionState = injector.get(SessionStateService);
- const document = injector.get(DOCUMENT);
- const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);
- sessionState.getLanguage$().subscribe(language => {
- const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);
- document.cookie = `${cookieLanguageKey}=${cookieValue}`;
- });
- };
+export function setLanguageToCookie() {
+ const injector = inject(Injector);
+ const sessionState = injector.get(SessionStateService);
+ const document = injector.get(DOCUMENT);
+ const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);
+ sessionState.getLanguage$().subscribe(language => {
+ const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);
+ document.cookie = `${cookieLanguageKey}=${cookieValue}`;
+ });
}
-export const CookieLanguageProvider: Provider = {
- provide: APP_INITIALIZER,
- useFactory: setLanguageToCookie,
- deps: [Injector],
- multi: true,
-};
+export const CookieLanguageProvider = provideAppInitializer(() => {
+ setLanguageToCookie();
+});
diff --git a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts
index 823f70957c..2b44117acb 100644
--- a/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts
+++ b/npm/ng-packs/packages/core/src/lib/providers/core-module-config.provider.ts
@@ -1,4 +1,4 @@
-import { makeEnvironmentProviders, APP_INITIALIZER, Injector, Provider } from '@angular/core';
+import { makeEnvironmentProviders, Provider, inject, provideAppInitializer } from '@angular/core';
import { TitleStrategy } from '@angular/router';
import {
provideHttpClient,
@@ -22,7 +22,7 @@ import { ABP, SortableItem } from '../models';
import { AuthErrorFilterService } from '../abstracts';
import { DEFAULT_DYNAMIC_LAYOUTS } from '../constants';
import { LocalizationService, LocalStorageListenerService, AbpTitleStrategy } from '../services';
-import { DefaultQueueManager, getInitialData, localeInitializer, noop } from '../utils';
+import { DefaultQueueManager, getInitialData, localeInitializer } from '../utils';
import { CookieLanguageProvider, IncludeLocalizationResourcesProvider, LocaleProvider } from './';
export enum CoreFeatureKind {
@@ -104,38 +104,16 @@ export function provideAbpCore(...features: CoreFeature[]) {
headerName: 'RequestVerificationToken',
}),
),
+ provideAppInitializer(() => {
+ getInitialData();
+ localeInitializer();
+ inject(LocalizationService);
+ inject(LocalStorageListenerService);
+ inject(RoutesHandler);
+ }),
+
LocaleProvider,
CookieLanguageProvider,
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [Injector],
- useFactory: getInitialData,
- },
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [Injector],
- useFactory: localeInitializer,
- },
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [LocalizationService],
- useFactory: noop,
- },
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [LocalStorageListenerService],
- useFactory: noop,
- },
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [RoutesHandler],
- useFactory: noop,
- },
{
provide: SORT_COMPARE_FUNC,
useFactory: compareFuncFactory,
diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
index 4173bd96c6..3bc9b6f2b5 100644
--- a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
+++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
@@ -1,5 +1,5 @@
import { registerLocaleData } from '@angular/common';
-import { InjectFlags, Injector } from '@angular/core';
+import { inject, Injector } from '@angular/core';
import { tap, catchError } from 'rxjs/operators';
import { lastValueFrom, throwError } from 'rxjs';
import { ABP } from '../models/common';
@@ -16,60 +16,54 @@ import { AuthService } from '../abstracts';
import { CHECK_AUTHENTICATION_STATE_FN_KEY } from '../tokens/check-authentication-state';
import { noop } from './common-utils';
-export function getInitialData(injector: Injector) {
- const fn = async () => {
- const environmentService = injector.get(EnvironmentService);
- const configState = injector.get(ConfigStateService);
- const options = injector.get(CORE_OPTIONS) as ABP.Root;
+export async function getInitialData() {
+ const injector = inject(Injector);
+ const environmentService = injector.get(EnvironmentService);
+ const configState = injector.get(ConfigStateService);
+ const options = injector.get(CORE_OPTIONS) as ABP.Root;
- environmentService.setState(options.environment as Environment);
- await getRemoteEnv(injector, options.environment);
- await parseTenantFromUrl(injector);
- const authService = injector.get(AuthService, undefined, { optional: true });
- const checkAuthenticationState = injector.get(CHECK_AUTHENTICATION_STATE_FN_KEY, noop, {
- optional: true,
- });
- if (!options.skipInitAuthService && authService) {
- await authService.init();
- }
- if (options.skipGetAppConfiguration) return;
+ environmentService.setState(options.environment as Environment);
+ await getRemoteEnv(injector, options.environment);
+ await parseTenantFromUrl(injector);
+ const authService = injector.get(AuthService, undefined, { optional: true });
+ const checkAuthenticationState = injector.get(CHECK_AUTHENTICATION_STATE_FN_KEY, noop, {
+ optional: true,
+ });
+ if (!options.skipInitAuthService && authService) {
+ await authService.init();
+ }
+ if (options.skipGetAppConfiguration) return;
- const result$ = configState.refreshAppState().pipe(
- tap(() => checkAuthenticationState(injector)),
- tap(() => {
- const currentTenant = configState.getOne('currentTenant') as CurrentTenantDto;
- injector.get(SessionStateService).setTenant(currentTenant);
- }),
- catchError(error => {
- const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);
- if (appInitErrorHandlers && appInitErrorHandlers.length) {
- appInitErrorHandlers.forEach(func => func(error));
- }
+ const result$ = configState.refreshAppState().pipe(
+ tap(() => checkAuthenticationState(injector)),
+ tap(() => {
+ const currentTenant = configState.getOne('currentTenant') as CurrentTenantDto;
+ injector.get(SessionStateService).setTenant(currentTenant);
+ }),
+ catchError(error => {
+ const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);
+ if (appInitErrorHandlers && appInitErrorHandlers.length) {
+ appInitErrorHandlers.forEach(func => func(error));
+ }
- return throwError(error);
- }),
- );
- await lastValueFrom(result$);
- };
-
- return fn;
+ return throwError(() => error);
+ }),
+ );
+ await lastValueFrom(result$);
}
-export function localeInitializer(injector: Injector) {
- const fn = () => {
- const sessionState = injector.get(SessionStateService);
- const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS);
-
- const lang = sessionState.getLanguage() || 'en';
+export function localeInitializer() {
+ const injector = inject(Injector);
+ const sessionState = injector.get(SessionStateService);
+ const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS);
- return new Promise((resolve, reject) => {
- registerLocaleFn(lang).then(module => {
- if (module?.default) registerLocaleData(module.default);
+ const lang = sessionState.getLanguage() || 'en';
- return resolve('resolved');
- }, reject);
- });
- };
+ return new Promise((resolve, reject) => {
+ registerLocaleFn(lang).then(module => {
+ if (module?.default) registerLocaleData(module.default);
- return fn;
+ return resolve('resolved');
+ }, reject);
+ });
}
diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts
index 4b367da436..c8eee6b043 100644
--- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts
+++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management-tab/feature-management-tab.component.ts
@@ -3,14 +3,9 @@ import { Component } from '@angular/core';
import { FeatureManagementComponent } from '../feature-management/feature-management.component';
@Component({
- standalone: true,
selector: 'abp-feature-management-tab',
templateUrl: './feature-management-tab.component.html',
- imports: [
- ReplaceableTemplateDirective,
- LocalizationModule,
- FeatureManagementComponent,
- ],
+ imports: [ReplaceableTemplateDirective, LocalizationModule, FeatureManagementComponent],
})
export class FeatureManagementTabComponent {
visibleFeatures = false;
diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html
index 9f071e44a0..b5dc440c76 100644
--- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html
+++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html
@@ -27,7 +27,7 @@
{{ selectedGroupDisplayName }}
- @for (feature of features[group.name]; track feature.id; let i = $index) {
+ @for (feature of features[group.name]; track feature.id || i; let i = $index) {
@switch (feature.valueType?.name) {
@case (valueTypes.ToggleStringValueType) {
diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts
index cd14176fc5..e26609bb25 100644
--- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts
+++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts
@@ -27,7 +27,6 @@ enum ValueTypes {
}
@Component({
- standalone: true,
selector: 'abp-feature-management',
templateUrl: './feature-management.component.html',
exportAs: 'abpFeatureManagement',
diff --git a/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts b/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts
index 64bbfb9932..e49c74e49f 100644
--- a/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts
+++ b/npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts
@@ -1,26 +1,22 @@
import { SettingTabsService } from '@abp/ng.setting-management/config';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eFeatureManagementTabNames } from '../enums/feature-management-tab-names';
import { FeatureManagementTabComponent } from '../components';
export const FEATURE_MANAGEMENT_SETTINGS_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureSettingTabs,
- deps: [SettingTabsService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureSettingTabs();
+ }),
];
-export function configureSettingTabs(settingtabs: SettingTabsService) {
- return () => {
- settingtabs.add([
- {
- name: eFeatureManagementTabNames.FeatureManagement,
- order: 100,
- requiredPolicy: 'FeatureManagement.ManageHostFeatures',
- component: FeatureManagementTabComponent,
- },
- ]);
- };
+export function configureSettingTabs() {
+ const settingtabs = inject(SettingTabsService);
+ settingtabs.add([
+ {
+ name: eFeatureManagementTabNames.FeatureManagement,
+ order: 100,
+ requiredPolicy: 'FeatureManagement.ManageHostFeatures',
+ component: FeatureManagementTabComponent,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts
index a12a59a82a..808d2bfad9 100644
--- a/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts
+++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts
@@ -1,5 +1,5 @@
import { GenerateProxyGeneratorSchema } from './schema';
-import { Tree } from '@nrwl/devkit';
+import { Tree } from '@nx/devkit';
import { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter';
export default async function (host: Tree, schema: GenerateProxyGeneratorSchema) {
diff --git a/npm/ng-packs/packages/identity/config/src/providers/route.provider.ts b/npm/ng-packs/packages/identity/config/src/providers/route.provider.ts
index 26326138e6..06d52009d5 100644
--- a/npm/ng-packs/packages/identity/config/src/providers/route.provider.ts
+++ b/npm/ng-packs/packages/identity/config/src/providers/route.provider.ts
@@ -1,39 +1,40 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
import { eThemeSharedRouteNames } from '@abp/ng.theme.shared';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eIdentityPolicyNames } from '../enums/policy-names';
import { eIdentityRouteNames } from '../enums/route-names';
export const IDENTITY_ROUTE_PROVIDERS = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-export function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: undefined,
- name: eIdentityRouteNames.IdentityManagement,
- parentName: eThemeSharedRouteNames.Administration,
- requiredPolicy: eIdentityPolicyNames.IdentityManagement,
- iconClass: 'fa fa-id-card-o',
- layout: eLayoutType.application,
- order: 1,
- },
- {
- path: '/identity/roles',
- name: eIdentityRouteNames.Roles,
- parentName: eIdentityRouteNames.IdentityManagement,
- requiredPolicy: eIdentityPolicyNames.Roles,
- order: 1,
- },
- {
- path: '/identity/users',
- name: eIdentityRouteNames.Users,
- parentName: eIdentityRouteNames.IdentityManagement,
- requiredPolicy: eIdentityPolicyNames.Users,
- order: 2,
- },
- ]);
- };
+export function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: undefined,
+ name: eIdentityRouteNames.IdentityManagement,
+ parentName: eThemeSharedRouteNames.Administration,
+ requiredPolicy: eIdentityPolicyNames.IdentityManagement,
+ iconClass: 'fa fa-id-card-o',
+ layout: eLayoutType.application,
+ order: 1,
+ },
+ {
+ path: '/identity/roles',
+ name: eIdentityRouteNames.Roles,
+ parentName: eIdentityRouteNames.IdentityManagement,
+ requiredPolicy: eIdentityPolicyNames.Roles,
+ order: 1,
+ },
+ {
+ path: '/identity/users',
+ name: eIdentityRouteNames.Users,
+ parentName: eIdentityRouteNames.IdentityManagement,
+ requiredPolicy: eIdentityPolicyNames.Users,
+ order: 2,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
index 794b545fcd..89c24fd6a8 100644
--- a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
+++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
@@ -13,6 +13,7 @@ import { finalize } from 'rxjs/operators';
import { eIdentityComponents } from '../../enums/components';
@Component({
+ standalone: false,
selector: 'abp-roles',
templateUrl: './roles.component.html',
providers: [
diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
index a0f0e08e4b..ccca6aa1a9 100644
--- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
+++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
@@ -36,6 +36,7 @@ import { finalize, switchMap, tap } from 'rxjs/operators';
import { eIdentityComponents } from '../../enums/components';
@Component({
+ standalone: false,
selector: 'abp-users',
templateUrl: './users.component.html',
providers: [
diff --git a/npm/ng-packs/packages/oauth/src/lib/providers/oauth-module-config.provider.ts b/npm/ng-packs/packages/oauth/src/lib/providers/oauth-module-config.provider.ts
index 021ad59a05..92ecc86012 100644
--- a/npm/ng-packs/packages/oauth/src/lib/providers/oauth-module-config.provider.ts
+++ b/npm/ng-packs/packages/oauth/src/lib/providers/oauth-module-config.provider.ts
@@ -7,9 +7,8 @@ import {
CHECK_AUTHENTICATION_STATE_FN_KEY,
AbpLocalStorageService,
AuthErrorFilterService,
- noop,
} from '@abp/ng.core';
-import { APP_INITIALIZER, Provider, makeEnvironmentProviders } from '@angular/core';
+import { Provider, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
import { AbpOAuthGuard, abpOAuthGuard } from '../guards';
@@ -51,12 +50,9 @@ export function provideAbpOAuth() {
multi: true,
},
NavigateToManageProfileProvider,
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [OAuthConfigurationHandler],
- useFactory: noop,
- },
+ provideAppInitializer(() => {
+ inject(OAuthConfigurationHandler);
+ }),
OAuthModule.forRoot().providers as Provider[],
{ provide: OAuthStorage, useClass: AbpLocalStorageService },
{ provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService },
diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts
index 966a39fd0b..17c99f8f93 100644
--- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts
+++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts
@@ -34,6 +34,7 @@ type PermissionWithGroupName = PermissionGrantInfoDto & {
};
@Component({
+ standalone: false,
selector: 'abp-permission-management',
templateUrl: './permission-management.component.html',
exportAs: 'abpPermissionManagement',
diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json
index ef198413e6..c30ac4d1cc 100644
--- a/npm/ng-packs/packages/schematics/package.json
+++ b/npm/ng-packs/packages/schematics/package.json
@@ -4,16 +4,16 @@
"author": "",
"schematics": "./collection.json",
"dependencies": {
- "@angular-devkit/core": "~18.1.0",
- "@angular-devkit/schematics": "~18.1.0",
- "@angular/cli": "~18.1.0",
+ "@angular-devkit/core": "~19.0.0",
+ "@angular-devkit/schematics": "~19.0.0",
+ "@angular/cli": "~19.0.0",
"got": "^11.5.2",
"jsonc-parser": "^2.3.0",
"should-quote": "^1.0.0",
- "typescript": "5.0.4"
+ "typescript": "~5.6.0"
},
"devDependencies": {
- "@schematics/angular": "~18.1.0",
+ "@schematics/angular": "~19.0.0",
"@types/jest": "29.4.4",
"@types/node": "20.2.5",
"jest": "29.4.3",
diff --git a/npm/ng-packs/packages/schematics/src/commands/create-lib/index.ts b/npm/ng-packs/packages/schematics/src/commands/create-lib/index.ts
index 4b5408311b..f353845880 100644
--- a/npm/ng-packs/packages/schematics/src/commands/create-lib/index.ts
+++ b/npm/ng-packs/packages/schematics/src/commands/create-lib/index.ts
@@ -88,7 +88,11 @@ async function resolvePackagesDirFromAngularJson(host: Tree) {
function readFirstLibInAngularJson(workspace: WorkspaceDefinition): ProjectDefinition | undefined {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
- return Array.from(workspace.projects.values()).find(value => isLibrary(value));
+ const library =
(
+ Array.from(workspace.projects.values()).find((value: ProjectDefinition) => isLibrary(value))
+ );
+
+ return library;
}
async function createLibFromModuleTemplate(tree: Tree, options: GenerateLibSchema) {
diff --git a/npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts b/npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts
index 71756b7289..282072e170 100644
--- a/npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts
+++ b/npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts
@@ -12,6 +12,7 @@ import { ConfigStateService, LocalizationService } from '@abp/ng.core';
const { required, email } = Validators;
@Component({
+ standalone: false,
selector: 'abp-email-setting-group',
templateUrl: 'email-setting-group.component.html',
animations: [collapse],
diff --git a/npm/ng-packs/packages/setting-management/config/src/lib/providers/features.token.ts b/npm/ng-packs/packages/setting-management/config/src/lib/providers/features.token.ts
index b9700d8a0a..ab818eb99d 100644
--- a/npm/ng-packs/packages/setting-management/config/src/lib/providers/features.token.ts
+++ b/npm/ng-packs/packages/setting-management/config/src/lib/providers/features.token.ts
@@ -1,5 +1,5 @@
-import { ConfigStateService, featuresFactory, noop } from '@abp/ng.core';
-import { APP_INITIALIZER, inject, InjectionToken } from '@angular/core';
+import { ConfigStateService, featuresFactory } from '@abp/ng.core';
+import { inject, InjectionToken, provideAppInitializer } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@@ -30,10 +30,7 @@ export const SETTING_MANAGEMENT_ROUTE_VISIBILITY = new InjectionToken {
+ inject(SETTING_MANAGEMENT_ROUTE_VISIBILITY);
+ }),
];
diff --git a/npm/ng-packs/packages/setting-management/config/src/lib/providers/route.provider.ts b/npm/ng-packs/packages/setting-management/config/src/lib/providers/route.provider.ts
index 585b290482..e4d83c2047 100644
--- a/npm/ng-packs/packages/setting-management/config/src/lib/providers/route.provider.ts
+++ b/npm/ng-packs/packages/setting-management/config/src/lib/providers/route.provider.ts
@@ -1,24 +1,23 @@
-import { eLayoutType, noop, RoutesService } from '@abp/ng.core';
+import { eLayoutType, RoutesService } from '@abp/ng.core';
import { eThemeSharedRouteNames } from '@abp/ng.theme.shared';
-import { APP_INITIALIZER, inject, InjectionToken } from '@angular/core';
+import { inject, InjectionToken, provideAppInitializer } from '@angular/core';
import { debounceTime, map } from 'rxjs/operators';
import { eSettingManagementRouteNames } from '../enums/route-names';
import { SettingTabsService } from '../services/settings-tabs.service';
import { Observable } from 'rxjs';
-export function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- name: eSettingManagementRouteNames.Settings,
- path: '/setting-management',
- parentName: eThemeSharedRouteNames.Administration,
- layout: eLayoutType.application,
- order: 100,
- iconClass: 'fa fa-cog',
- },
- ]);
- };
+export function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ name: eSettingManagementRouteNames.Settings,
+ path: '/setting-management',
+ parentName: eThemeSharedRouteNames.Administration,
+ layout: eLayoutType.application,
+ order: 100,
+ iconClass: 'fa fa-cog',
+ },
+ ]);
}
export const SETTING_MANAGEMENT_HAS_SETTING = new InjectionToken>(
@@ -35,11 +34,8 @@ export const SETTING_MANAGEMENT_HAS_SETTING = new InjectionToken {
+ configureRoutes();
+ inject(SETTING_MANAGEMENT_HAS_SETTING);
+ }),
];
diff --git a/npm/ng-packs/packages/setting-management/config/src/lib/providers/setting-tab.provider.ts b/npm/ng-packs/packages/setting-management/config/src/lib/providers/setting-tab.provider.ts
index f05104c177..2cb5107a1f 100644
--- a/npm/ng-packs/packages/setting-management/config/src/lib/providers/setting-tab.provider.ts
+++ b/npm/ng-packs/packages/setting-management/config/src/lib/providers/setting-tab.provider.ts
@@ -1,26 +1,22 @@
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { EmailSettingGroupComponent } from '../components/email-setting-group/email-setting-group.component';
import { eSettingManamagementSettingTabNames } from '../enums/setting-tab-names';
import { SettingTabsService } from '../services/settings-tabs.service';
export const SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureSettingTabs,
- deps: [SettingTabsService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureSettingTabs();
+ }),
];
-export function configureSettingTabs(settingTabs: SettingTabsService) {
- return () => {
- settingTabs.add([
- {
- name: eSettingManamagementSettingTabNames.EmailSettingGroup,
- order: 100,
- requiredPolicy: 'SettingManagement.Emailing',
- component: EmailSettingGroupComponent,
- },
- ]);
- };
+export function configureSettingTabs() {
+ const settingTabs = inject(SettingTabsService);
+ settingTabs.add([
+ {
+ name: eSettingManamagementSettingTabNames.EmailSettingGroup,
+ order: 100,
+ requiredPolicy: 'SettingManagement.Emailing',
+ component: EmailSettingGroupComponent,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/setting-management/config/src/lib/providers/visible.provider.ts b/npm/ng-packs/packages/setting-management/config/src/lib/providers/visible.provider.ts
index e70e037da6..96b10df30e 100644
--- a/npm/ng-packs/packages/setting-management/config/src/lib/providers/visible.provider.ts
+++ b/npm/ng-packs/packages/setting-management/config/src/lib/providers/visible.provider.ts
@@ -1,4 +1,4 @@
-import { APP_INITIALIZER, Injector } from '@angular/core';
+import { Injector, inject, provideAppInitializer } from '@angular/core';
import { combineLatest } from 'rxjs';
import { RoutesService } from '@abp/ng.core';
import { SETTING_MANAGEMENT_HAS_SETTING } from './route.provider';
@@ -6,25 +6,21 @@ import { SETTING_MANAGEMENT_ROUTE_VISIBILITY } from './features.token';
import { eSettingManagementRouteNames } from '../enums';
export const SETTING_MANAGEMENT_VISIBLE_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: setSettingManagementVisibility,
- deps: [Injector],
- multi: true,
- },
+ provideAppInitializer(() => {
+ setSettingManagementVisibility();
+ }),
];
-export function setSettingManagementVisibility(injector: Injector) {
- return () => {
- const settingManagementHasSetting$ = injector.get(SETTING_MANAGEMENT_HAS_SETTING);
- const isSettingManagementFeatureEnable$ = injector.get(SETTING_MANAGEMENT_ROUTE_VISIBILITY);
- const routes = injector.get(RoutesService);
- combineLatest([settingManagementHasSetting$, isSettingManagementFeatureEnable$]).subscribe(
- ([settingManagementHasSetting, isSettingManagementFeatureEnable]) => {
- routes.patch(eSettingManagementRouteNames.Settings, {
- invisible: !(settingManagementHasSetting && isSettingManagementFeatureEnable),
- });
- },
- );
- };
+export function setSettingManagementVisibility() {
+ const injector = inject(Injector);
+ const settingManagementHasSetting$ = injector.get(SETTING_MANAGEMENT_HAS_SETTING);
+ const isSettingManagementFeatureEnable$ = injector.get(SETTING_MANAGEMENT_ROUTE_VISIBILITY);
+ const routes = injector.get(RoutesService);
+ combineLatest([settingManagementHasSetting$, isSettingManagementFeatureEnable$]).subscribe(
+ ([settingManagementHasSetting, isSettingManagementFeatureEnable]) => {
+ routes.patch(eSettingManagementRouteNames.Settings, {
+ invisible: !(settingManagementHasSetting && isSettingManagementFeatureEnable),
+ });
+ },
+ );
}
diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts b/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts
index db38d5b95f..e5f3380dba 100644
--- a/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts
+++ b/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts
@@ -4,6 +4,7 @@ import { Component, OnDestroy, OnInit, TrackByFunction } from '@angular/core';
import { Subscription } from 'rxjs';
@Component({
+ standalone: false,
selector: 'abp-setting-management',
templateUrl: './setting-management.component.html',
})
diff --git a/npm/ng-packs/packages/tenant-management/config/src/providers/route.provider.ts b/npm/ng-packs/packages/tenant-management/config/src/providers/route.provider.ts
index 5b3d9c88fd..b65ad6ca80 100644
--- a/npm/ng-packs/packages/tenant-management/config/src/providers/route.provider.ts
+++ b/npm/ng-packs/packages/tenant-management/config/src/providers/route.provider.ts
@@ -1,32 +1,33 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
import { eThemeSharedRouteNames } from '@abp/ng.theme.shared';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eTenantManagementPolicyNames } from '../enums/policy-names';
import { eTenantManagementRouteNames } from '../enums/route-names';
export const TENANT_MANAGEMENT_ROUTE_PROVIDERS = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-export function configureRoutes(routes: RoutesService) {
- return () => {
- routes.add([
- {
- path: undefined,
- name: eTenantManagementRouteNames.TenantManagement,
- parentName: eThemeSharedRouteNames.Administration,
- requiredPolicy: eTenantManagementPolicyNames.TenantManagement,
- layout: eLayoutType.application,
- iconClass: 'fa fa-users',
- order: 2,
- },
- {
- path: '/tenant-management/tenants',
- name: eTenantManagementRouteNames.Tenants,
- parentName: eTenantManagementRouteNames.TenantManagement,
- requiredPolicy: eTenantManagementPolicyNames.Tenants,
- order: 1,
- },
- ]);
- };
+export function configureRoutes() {
+ const routes = inject(RoutesService);
+ routes.add([
+ {
+ path: undefined,
+ name: eTenantManagementRouteNames.TenantManagement,
+ parentName: eThemeSharedRouteNames.Administration,
+ requiredPolicy: eTenantManagementPolicyNames.TenantManagement,
+ layout: eLayoutType.application,
+ iconClass: 'fa fa-users',
+ order: 2,
+ },
+ {
+ path: '/tenant-management/tenants',
+ name: eTenantManagementRouteNames.Tenants,
+ parentName: eTenantManagementRouteNames.TenantManagement,
+ requiredPolicy: eTenantManagementPolicyNames.Tenants,
+ order: 1,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
index 99169b1cbe..3722a8e5aa 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
@@ -13,6 +13,7 @@ import { finalize } from 'rxjs/operators';
import { eTenantManagementComponents } from '../../enums/components';
@Component({
+ standalone: false,
selector: 'abp-tenants',
templateUrl: './tenants.component.html',
providers: [
diff --git a/npm/ng-packs/packages/theme-basic/ng-package.json b/npm/ng-packs/packages/theme-basic/ng-package.json
index 580fc5b73f..a5d3991891 100644
--- a/npm/ng-packs/packages/theme-basic/ng-package.json
+++ b/npm/ng-packs/packages/theme-basic/ng-package.json
@@ -4,8 +4,5 @@
"lib": {
"entryFile": "src/public-api.ts"
},
- "allowedNonPeerDependencies": [
- "@abp/ng.theme.shared",
- "@abp/ng.account.core"
- ]
+ "allowedNonPeerDependencies": ["@abp/ng.theme.shared", "@abp/ng.account.core"]
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts
index 510e2a8f72..91bc91aea0 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts
@@ -3,6 +3,7 @@ import { eLayoutType, SubscriptionService } from '@abp/ng.core';
import { LayoutService } from '../../services/layout.service';
@Component({
+ standalone: false,
selector: 'abp-layout-account',
templateUrl: './account-layout.component.html',
providers: [LayoutService, SubscriptionService],
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts
index d864afb4af..8533c0177d 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts
@@ -2,6 +2,7 @@ import { AuthWrapperService } from '@abp/ng.account.core';
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-auth-wrapper',
templateUrl: './auth-wrapper.component.html',
providers: [AuthWrapperService],
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts
index 9ed450f9fb..ccf13df4aa 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts
@@ -2,6 +2,7 @@ import { TenantBoxService } from '@abp/ng.account.core';
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-tenant-box',
templateUrl: './tenant-box.component.html',
providers: [TenantBoxService],
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 a8084a3513..7ecd8157f4 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
@@ -4,6 +4,7 @@ import { AfterViewInit, Component, inject } from '@angular/core';
import { LayoutService } from '../../services/layout.service';
@Component({
+ standalone: false,
selector: 'abp-layout-application',
templateUrl: './application-layout.component.html',
animations: [slideFromBottom, collapseWithMargin],
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts
index b9a78ba06d..93e66676d3 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts
@@ -2,10 +2,9 @@ import { Component } from '@angular/core';
import { eLayoutType } from '@abp/ng.core';
@Component({
+ standalone: false,
selector: 'abp-layout-empty',
- template: `
-
- `,
+ template: ` `,
})
export class EmptyLayoutComponent {
static type = eLayoutType.empty;
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/logo/logo.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/logo/logo.component.ts
index 9930102edf..6936dd5cfa 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/logo/logo.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/logo/logo.component.ts
@@ -2,16 +2,12 @@ import { ApplicationInfo, EnvironmentService } from '@abp/ng.core';
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-logo',
template: `
@if (appInfo.logoUrl) {
-
+
} @else {
{{ appInfo.name }}
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts
index 9619845837..087feafe20 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts
@@ -10,6 +10,7 @@ import { Component, Inject, TrackByFunction } from '@angular/core';
import { Observable } from 'rxjs';
@Component({
+ standalone: false,
selector: 'abp-current-user',
templateUrl: './current-user.component.html',
})
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts
index bc98729274..cacf899eff 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Component({
+ standalone: false,
selector: 'abp-languages',
template: `
@if (((dropdownLanguages$ | async)?.length || 0) > 0) {
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts
index 7a5ee9b37a..08ee145cc8 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts
@@ -1,7 +1,8 @@
import { NavItem, NavItemsService } from '@abp/ng.theme.shared';
-import { Component, Input, TrackByFunction } from '@angular/core';
+import { Component, TrackByFunction } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-nav-items',
templateUrl: 'nav-items.component.html',
})
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts
index 9dc1966337..ac794a1504 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts
@@ -2,6 +2,7 @@ import { Component, ViewEncapsulation } from '@angular/core';
import { PageAlertService } from '@abp/ng.theme.shared';
@Component({
+ standalone: false,
selector: 'abp-page-alert-container',
templateUrl: './page-alert-container.component.html',
encapsulation: ViewEncapsulation.None,
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts
index 98a8b083a6..dfdca734a6 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts
@@ -10,6 +10,7 @@ import {
} from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-routes',
templateUrl: 'routes.component.html',
})
@@ -22,7 +23,10 @@ export class RoutesComponent {
trackByFn: TrackByFunction> = (_, item) => item.name;
- constructor(public readonly routesService: RoutesService, protected renderer: Renderer2) {}
+ constructor(
+ public readonly routesService: RoutesService,
+ protected renderer: Renderer2,
+ ) {}
isDropdown(node: TreeNode) {
return !node?.isLeaf || this.routesService.hasChildren(node.name);
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts
index f9a5b8de6d..c3c36ae2b3 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts
@@ -2,10 +2,11 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/
import { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';
@Component({
+ standalone: false,
selector: 'abp-validation-error',
template: `
@for (error of abpErrors; track $index) {
-
+
{{ error.message | abpLocalization: error.interpoliteParams }}
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/nav-item.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/nav-item.provider.ts
index 7ade066f47..63230c24ef 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/providers/nav-item.provider.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/nav-item.provider.ts
@@ -1,31 +1,27 @@
import { NavItemsService } from '@abp/ng.theme.shared';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { CurrentUserComponent } from '../components/nav-items/current-user.component';
import { LanguagesComponent } from '../components/nav-items/languages.component';
import { eThemeBasicComponents } from '../enums/components';
export const BASIC_THEME_NAV_ITEM_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureNavItems,
- deps: [NavItemsService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureNavItems();
+ }),
];
-export function configureNavItems(navItems: NavItemsService) {
- return () => {
- navItems.addItems([
- {
- id: eThemeBasicComponents.Languages,
- order: 100,
- component: LanguagesComponent,
- },
- {
- id: eThemeBasicComponents.CurrentUser,
- order: 100,
- component: CurrentUserComponent,
- },
- ]);
- };
+export function configureNavItems() {
+ const navItems = inject(NavItemsService);
+ navItems.addItems([
+ {
+ id: eThemeBasicComponents.Languages,
+ order: 100,
+ component: LanguagesComponent,
+ },
+ {
+ id: eThemeBasicComponents.CurrentUser,
+ order: 100,
+ component: CurrentUserComponent,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts
index 75a06591e6..0bb2df9b7a 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts
@@ -1,5 +1,5 @@
import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { AccountLayoutComponent } from '../components/account-layout/account-layout.component';
import { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';
import { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';
@@ -7,12 +7,13 @@ import styles from '../constants/styles';
import { eThemeBasicComponents } from '../enums/components';
export const BASIC_THEME_STYLES_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureStyles,
- deps: [DomInsertionService, ReplaceableComponentsService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ const initializerFn = configureStyles(
+ inject(DomInsertionService),
+ inject(ReplaceableComponentsService),
+ );
+ return initializerFn();
+ }),
];
export function configureStyles(
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts
index c75b5b0b6d..fd7e60b346 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts
@@ -1,4 +1,4 @@
-import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core';
+import { makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';
import { noop } from '@abp/ng.core';
import {
VALIDATION_ERROR_TEMPLATE,
@@ -29,11 +29,8 @@ export function provideThemeBasicConfig() {
useValue: 'is-invalid',
},
LazyStyleHandler,
- {
- provide: APP_INITIALIZER,
- useFactory: noop,
- multi: true,
- deps: [LazyStyleHandler],
- },
+ provideAppInitializer(() => {
+ inject(LazyStyleHandler);
+ }),
]);
}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
index dbf5815d55..6626b01e7c 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
@@ -1,15 +1,13 @@
import { AuthService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';
import { UserMenuService } from '@abp/ng.theme.shared';
-import { APP_INITIALIZER, Injector } from '@angular/core';
+import { Injector, inject, provideAppInitializer } from '@angular/core';
import { eUserMenuItems } from '../enums/user-menu-items';
export const BASIC_THEME_USER_MENU_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureUserMenu,
- deps: [Injector],
- multi: true,
- },
+ provideAppInitializer(() => {
+ const initializerFn = configureUserMenu(inject(Injector));
+ return initializerFn();
+ }),
];
export function configureUserMenu(injector: Injector) {
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts
index 7f10ebb76f..d7188f561a 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts
@@ -2,6 +2,7 @@ import { ABP } from '@abp/ng.core';
import { Component, Input } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-breadcrumb-items',
templateUrl: './breadcrumb-items.component.html',
})
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb/breadcrumb.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb/breadcrumb.component.ts
index 00c01f630e..bdc38612b3 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb/breadcrumb.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb/breadcrumb.component.ts
@@ -12,6 +12,7 @@ import { map, startWith } from 'rxjs/operators';
import { eThemeSharedRouteNames } from '../../enums/route-names';
@Component({
+ standalone: false,
selector: 'abp-breadcrumb',
templateUrl: './breadcrumb.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
index 48fe2d5c28..a0005cd5e7 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
@@ -12,6 +12,7 @@ import {
} from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-button',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-footer.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-footer.component.ts
index d82a8725c1..31939469d1 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-footer.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-footer.component.ts
@@ -1,6 +1,7 @@
import { Component, HostBinding, Input } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-card-footer',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.component.ts
index 7dfb75b2d9..4a1051fee4 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.component.ts
@@ -1,6 +1,7 @@
import { Component, HostBinding, Input } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-card-header',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.directive.ts
index 44b8ff0eb5..bebd384ca5 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-header.directive.ts
@@ -1,6 +1,7 @@
import { Directive, HostBinding } from '@angular/core';
@Directive({
+ standalone: false,
selector: `abp-card-header, [abp-card-header], [abpCardHeader]`,
})
export class CardHeaderDirective {
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-img-top.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-img-top.directive.ts
index 405ea1bb24..13ca5bb07d 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-img-top.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-img-top.directive.ts
@@ -1,6 +1,7 @@
import { Directive, HostBinding } from '@angular/core';
@Directive({
+ standalone: false,
selector: `abp-card-img-top, [abp-card-img-top], [abpCardImgTop]`,
})
export class CardImgTopDirective {
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-subtitle.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-subtitle.directive.ts
index 57ba722500..bf561eda78 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-subtitle.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-subtitle.directive.ts
@@ -1,6 +1,7 @@
import { Directive, HostBinding } from '@angular/core';
@Directive({
+ standalone: false,
selector: `abp-card-subtitle, [abp-card-subtitle], [abpCardSubtitle]`,
})
export class CardSubtitleDirective {
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-title.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-title.directive.ts
index 0bb92d9263..f884e2904d 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-title.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card-title.directive.ts
@@ -1,6 +1,7 @@
import { Directive, HostBinding } from '@angular/core';
@Directive({
+ standalone: false,
selector: `abp-card-title, [abp-card-title], [abpCardTitle]`,
})
export class CardTitleDirective {
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card.component.ts
index fc5279be66..c3a24426a7 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/card/card.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/card/card.component.ts
@@ -1,6 +1,7 @@
import { Component, Input } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-card',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/checkbox/checkbox.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/checkbox/checkbox.component.ts
index 9f10b2317f..64c3d766e4 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/checkbox/checkbox.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/checkbox/checkbox.component.ts
@@ -1,8 +1,9 @@
import { AbstractNgModelComponent } from '@abp/ng.core';
-import { Component, EventEmitter, forwardRef, Injector, Input, Output } from '@angular/core';
+import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
@Component({
+ standalone: false,
selector: 'abp-checkbox',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts
index 13c857901c..493ca44b6b 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts
@@ -4,6 +4,7 @@ import { Confirmation } from '../../models/confirmation';
import { CONFIRMATION_ICONS, ConfirmationIcons } from '../../tokens/confirmation-icons.token';
@Component({
+ standalone: false,
selector: 'abp-confirmation',
templateUrl: './confirmation.component.html',
styleUrls: ['./confirmation.component.scss'],
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts
index fd5f579b5d..2d7b358b7a 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts
@@ -1,8 +1,9 @@
import { AbstractNgModelComponent } from '@abp/ng.core';
-import { Component, EventEmitter, forwardRef, Injector, Input, Output } from '@angular/core';
+import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
@Component({
+ standalone: false,
selector: 'abp-form-input',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts
index 9f2c24915d..f45be25d1e 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts
@@ -22,6 +22,7 @@ import { LocalizationParam } from '@abp/ng.core';
import { ErrorScreenErrorCodes } from '../../models';
@Component({
+ standalone: false,
selector: 'abp-http-error-wrapper',
templateUrl: './http-error-wrapper.component.html',
styleUrls: ['http-error-wrapper.component.scss'],
@@ -72,7 +73,7 @@ export class HttpErrorWrapperComponent implements OnInit, AfterViewInit, OnDestr
});
customComponentRef.instance.errorStatus = this.status;
-
+
//In our custom "HttpErrorComponent", we have a "status" property.
//We used to have "errorStatus", but it wasn't signal type. "status" variable is signal type.
//I've checked because of backward compatibility. Developers might have their own custom HttpErrorComponent.
@@ -80,7 +81,7 @@ export class HttpErrorWrapperComponent implements OnInit, AfterViewInit, OnDestr
if (customComponentRef.instance.status) {
customComponentRef.instance.status.set(this.status);
}
-
+
customComponentRef.instance.destroy$ = this.destroy$;
this.appRef.attachView(customComponentRef.hostView);
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/internet-connection-status/internet-connection-status.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/internet-connection-status/internet-connection-status.component.ts
index 9c59947891..04f5a9a5ab 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/internet-connection-status/internet-connection-status.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/internet-connection-status/internet-connection-status.component.ts
@@ -4,7 +4,6 @@ import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'abp-internet-status',
- standalone: true,
imports: [LocalizationModule, NgbTooltip],
template: `
@if (!isOnline()) {
@@ -12,7 +11,7 @@ import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts
index 9d0446c1b1..51aebfdee6 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts
@@ -4,6 +4,7 @@ import { Router } from '@angular/router';
import { combineLatest, Subscription, timer } from 'rxjs';
@Component({
+ standalone: false,
selector: 'abp-loader-bar',
template: `
@@ -13,7 +14,7 @@ import { combineLatest, Subscription, timer } from 'rxjs';
[style.width.vw]="progressLevel"
[ngStyle]="{
'background-color': color,
- 'box-shadow': boxShadow
+ 'box-shadow': boxShadow,
}"
>
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/loading/loading.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/loading/loading.component.ts
index 7aa6673553..56990be1bc 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/loading/loading.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/loading/loading.component.ts
@@ -1,6 +1,7 @@
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
+ standalone: false,
selector: 'abp-loading',
template: `
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts
index 97d6b14fb9..8b50174fd9 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts
@@ -1,7 +1,10 @@
import { Directive, HostListener, Optional } from '@angular/core';
import { ModalComponent } from './modal.component';
-@Directive({ selector: '[abpClose]' })
+@Directive({
+ standalone: false,
+ selector: '[abpClose]',
+})
export class ModalCloseDirective {
constructor(@Optional() private modal: ModalComponent) {
if (!modal) {
@@ -13,4 +16,4 @@ export class ModalCloseDirective {
onClick() {
this.modal?.close();
}
-}
\ No newline at end of file
+}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts
index 68b355ebe5..30c802e387 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts
@@ -26,6 +26,7 @@ import { DismissableModal, ModalDismissMode, ModalRefService } from './modal-ref
export type ModalSize = 'sm' | 'md' | 'lg' | 'xl';
@Component({
+ standalone: false,
selector: 'abp-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'],
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/password/password.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/password/password.component.ts
index 05ca59f093..cfdc080f5b 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/password/password.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/password/password.component.ts
@@ -4,12 +4,11 @@ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
import { CommonModule } from '@angular/common';
/**
- * @deprecated use ShowPasswordDirective directive
+ * @deprecated use ShowPasswordDirective directive
* https://abp.io/docs/latest/framework/ui/angular/show-password-directive
*/
@Component({
selector: 'abp-password',
- standalone: true,
imports: [CommonModule, FormsModule],
templateUrl: `./password.component.html`,
providers: [
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts
index 3551ff1535..4703a41c17 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts
@@ -4,6 +4,7 @@ import { toastInOut } from '../../animations/toast.animations';
import { Toaster } from '../../models/toaster';
@Component({
+ standalone: false,
selector: 'abp-toast-container',
templateUrl: './toast-container.component.html',
styleUrls: ['./toast-container.component.scss'],
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss
index b4be48fb95..cf1b155427 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.scss
@@ -1,11 +1,13 @@
+@use 'sass:color';
+
@mixin fillColor($background, $color) {
border: 2px solid $background;
background-color: $background;
color: $color;
box-shadow: 0 0 10px -5px rgba(#000, 0.4);
&:hover {
- border: 2px solid darken($background, 5);
- background-color: darken($background, 5);
+ border: 2px solid color.scale($background, $lightness: -5%);
+ background-color: color.scale($background, $lightness: -5%);
box-shadow: 0 0 15px -5px rgba(#000, 0.4);
}
}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts
index b528d490a4..d76790bf54 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts
@@ -1,6 +1,7 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Toaster } from '../../models/toaster';
@Component({
+ standalone: false,
selector: 'abp-toast',
templateUrl: './toast.component.html',
styleUrls: ['./toast.component.scss'],
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts
index d79a4cc698..e20ef4fa02 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts
@@ -16,7 +16,10 @@ import { Subscription, timer } from 'rxjs';
import { take } from 'rxjs/operators';
import { LoadingComponent } from '../components/loading/loading.component';
-@Directive({ selector: '[abpLoading]' })
+@Directive({
+ standalone: false,
+ selector: '[abpLoading]',
+})
export class LoadingDirective implements OnInit, OnDestroy {
private _loading!: boolean;
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/providers/ng-bootstrap-config.provider.ts b/npm/ng-packs/packages/theme-shared/src/lib/providers/ng-bootstrap-config.provider.ts
index be60e9b2f6..11dc8f7360 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/providers/ng-bootstrap-config.provider.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/providers/ng-bootstrap-config.provider.ts
@@ -1,21 +1,15 @@
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { NgbInputDatepickerConfig, NgbTypeaheadConfig } from '@ng-bootstrap/ng-bootstrap';
export const NG_BOOTSTRAP_CONFIG_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureNgBootstrap,
- deps: [NgbInputDatepickerConfig, NgbTypeaheadConfig],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureNgBootstrap();
+ }),
];
-export function configureNgBootstrap(
- datepicker: NgbInputDatepickerConfig,
- typeahead: NgbTypeaheadConfig,
-) {
- return () => {
- datepicker.container = 'body';
- typeahead.container = 'body';
- };
+export function configureNgBootstrap() {
+ const datepicker: NgbInputDatepickerConfig = inject(NgbInputDatepickerConfig);
+ const typeahead: NgbTypeaheadConfig = inject(NgbTypeaheadConfig);
+ datepicker.container = 'body';
+ typeahead.container = 'body';
}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/providers/route.provider.ts b/npm/ng-packs/packages/theme-shared/src/lib/providers/route.provider.ts
index 577d688c4e..778b1e731e 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/providers/route.provider.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/providers/route.provider.ts
@@ -1,20 +1,21 @@
import { RoutesService } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eThemeSharedRouteNames } from '../enums/route-names';
export const THEME_SHARED_ROUTE_PROVIDERS = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-export function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: undefined,
- name: eThemeSharedRouteNames.Administration,
- iconClass: 'fa fa-wrench',
- order: 100,
- },
- ]);
- };
+export function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: undefined,
+ name: eThemeSharedRouteNames.Administration,
+ iconClass: 'fa fa-wrench',
+ order: 100,
+ },
+ ]);
}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/providers/theme-shared-config.provider.ts b/npm/ng-packs/packages/theme-shared/src/lib/providers/theme-shared-config.provider.ts
index ad29327e18..3db78ad54a 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/providers/theme-shared-config.provider.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/providers/theme-shared-config.provider.ts
@@ -1,5 +1,4 @@
-import { APP_INITIALIZER, Provider, makeEnvironmentProviders } from '@angular/core';
-import { noop } from '@abp/ng.core';
+import { Provider, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';
import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';
import {
VALIDATION_BLUEPRINTS,
@@ -110,19 +109,12 @@ export function withConfirmationIcon(
export function provideAbpThemeShared(...features: ThemeSharedFeature
[]) {
const providers = [
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [ErrorHandler],
- useFactory: noop,
- },
+ provideAppInitializer(() => {
+ inject(ErrorHandler);
+ inject(THEME_SHARED_APPEND_CONTENT);
+ inject(DocumentDirHandlerService);
+ }),
THEME_SHARED_ROUTE_PROVIDERS,
- {
- provide: APP_INITIALIZER,
- multi: true,
- deps: [THEME_SHARED_APPEND_CONTENT],
- useFactory: noop,
- },
{ provide: HTTP_ERROR_CONFIG, useValue: undefined },
{ provide: NgbDateParserFormatter, useClass: DateParserFormatter },
NG_BOOTSTRAP_CONFIG_PROVIDERS,
@@ -139,12 +131,6 @@ export function provideAbpThemeShared(...features: ThemeSharedFeature
-
-
+
+
+
`,
})
export class AppComponent {}
diff --git a/templates/app-nolayers/angular/src/app/home/home.component.ts b/templates/app-nolayers/angular/src/app/home/home.component.ts
index a721a23984..458f51628c 100644
--- a/templates/app-nolayers/angular/src/app/home/home.component.ts
+++ b/templates/app-nolayers/angular/src/app/home/home.component.ts
@@ -1,18 +1,19 @@
import { AuthService } from '@abp/ng.core';
-import { Component } from '@angular/core';
+import { Component, inject } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent {
+ private authService = inject(AuthService);
+
get hasLoggedIn(): boolean {
return this.authService.isAuthenticated;
}
- constructor(private authService: AuthService) {}
-
login() {
this.authService.navigateToLogin();
}
diff --git a/templates/app-nolayers/angular/src/app/route.provider.ts b/templates/app-nolayers/angular/src/app/route.provider.ts
index 73865dfd0a..6a327b745f 100644
--- a/templates/app-nolayers/angular/src/app/route.provider.ts
+++ b/templates/app-nolayers/angular/src/app/route.provider.ts
@@ -1,20 +1,21 @@
import { RoutesService, eLayoutType } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
export const APP_ROUTE_PROVIDER = [
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: '/',
- name: '::Menu:Home',
- iconClass: 'fas fa-home',
- order: 1,
- layout: eLayoutType.application,
- },
- ]);
- };
+function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: '/',
+ name: '::Menu:Home',
+ iconClass: 'fas fa-home',
+ order: 1,
+ layout: eLayoutType.application,
+ },
+ ]);
}
diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json
index c647e20c1f..8958cc2070 100644
--- a/templates/app/angular/package.json
+++ b/templates/app/angular/package.json
@@ -21,31 +21,31 @@
"@abp/ng.tenant-management": "~9.0.2",
"@abp/ng.theme.lepton-x": "~4.0.3",
"@abp/ng.theme.shared": "~9.0.2",
- "@angular/animations": "~18.1.0",
- "@angular/common": "~18.1.0",
- "@angular/compiler": "~18.1.0",
- "@angular/core": "~18.1.0",
- "@angular/forms": "~18.1.0",
- "@angular/localize": "~18.1.0",
- "@angular/platform-browser": "~18.1.0",
- "@angular/platform-browser-dynamic": "~18.1.0",
- "@angular/router": "~18.1.0",
+ "@angular/animations": "~19.0.0",
+ "@angular/common": "~19.0.0",
+ "@angular/compiler": "~19.0.0",
+ "@angular/core": "~19.0.0",
+ "@angular/forms": "~19.0.0",
+ "@angular/localize": "~19.0.0",
+ "@angular/platform-browser": "~19.0.0",
+ "@angular/platform-browser-dynamic": "~19.0.0",
+ "@angular/router": "~19.0.0",
"bootstrap-icons": "~1.8.0",
"rxjs": "~7.8.0",
"tslib": "^2.0.0",
- "zone.js": "~0.14.0"
+ "zone.js": "~0.15.0"
},
"devDependencies": {
"@abp/ng.schematics": "~9.0.2",
- "@angular-devkit/build-angular": "~18.1.0",
- "@angular-eslint/builder": "~18.1.0",
- "@angular-eslint/eslint-plugin": "~18.1.0",
- "@angular-eslint/eslint-plugin-template": "~18.1.0",
- "@angular-eslint/schematics": "~18.1.0",
- "@angular-eslint/template-parser": "~18.1.0",
- "@angular/cli": "~18.1.0",
- "@angular/compiler-cli": "~18.1.0",
- "@angular/language-service": "~18.1.0",
+ "@angular-devkit/build-angular": "~19.0.0",
+ "@angular-eslint/builder": "~19.0.0",
+ "@angular-eslint/eslint-plugin": "~19.0.0",
+ "@angular-eslint/eslint-plugin-template": "~19.0.0",
+ "@angular-eslint/schematics": "~19.0.0",
+ "@angular-eslint/template-parser": "~19.0.0",
+ "@angular/cli": "~19.0.0",
+ "@angular/compiler-cli": "~19.0.0",
+ "@angular/language-service": "~19.0.0",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "7.16.0",
@@ -57,6 +57,6 @@
"karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0",
- "typescript": "~5.5.0"
+ "typescript": "~5.6.0"
}
}
diff --git a/templates/app/angular/src/app/app.component.ts b/templates/app/angular/src/app/app.component.ts
index 44a504b978..5476691764 100644
--- a/templates/app/angular/src/app/app.component.ts
+++ b/templates/app/angular/src/app/app.component.ts
@@ -1,11 +1,12 @@
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-root',
template: `
-
-
-
+
+
+
`,
})
export class AppComponent {}
diff --git a/templates/app/angular/src/app/home/home.component.ts b/templates/app/angular/src/app/home/home.component.ts
index a721a23984..458f51628c 100644
--- a/templates/app/angular/src/app/home/home.component.ts
+++ b/templates/app/angular/src/app/home/home.component.ts
@@ -1,18 +1,19 @@
import { AuthService } from '@abp/ng.core';
-import { Component } from '@angular/core';
+import { Component, inject } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent {
+ private authService = inject(AuthService);
+
get hasLoggedIn(): boolean {
return this.authService.isAuthenticated;
}
- constructor(private authService: AuthService) {}
-
login() {
this.authService.navigateToLogin();
}
diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json
index 2cd8a9a494..cea2394003 100644
--- a/templates/module/angular/package.json
+++ b/templates/module/angular/package.json
@@ -22,30 +22,30 @@
"@abp/ng.tenant-management": "~9.0.2",
"@abp/ng.theme.basic": "~9.0.2",
"@abp/ng.theme.shared": "~9.0.2",
- "@angular/animations": "~18.1.0",
- "@angular/common": "~18.1.0",
- "@angular/compiler": "~18.1.0",
- "@angular/core": "~18.1.0",
- "@angular/forms": "~18.1.0",
- "@angular/localize": "~18.1.0",
- "@angular/platform-browser": "~18.1.0",
- "@angular/platform-browser-dynamic": "~18.1.0",
- "@angular/router": "~18.1.0",
+ "@angular/animations": "~19.0.0",
+ "@angular/common": "~19.0.0",
+ "@angular/compiler": "~19.0.0",
+ "@angular/core": "~19.0.0",
+ "@angular/forms": "~19.0.0",
+ "@angular/localize": "~19.0.0",
+ "@angular/platform-browser": "~19.0.0",
+ "@angular/platform-browser-dynamic": "~19.0.0",
+ "@angular/router": "~19.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.0.0",
- "zone.js": "~0.14.0"
+ "zone.js": "~0.15.0"
},
"devDependencies": {
"@abp/ng.schematics": "~9.0.2",
- "@angular-devkit/build-angular": "~18.1.0",
- "@angular-eslint/builder": "~18.1.0",
- "@angular-eslint/eslint-plugin": "~18.1.0",
- "@angular-eslint/eslint-plugin-template": "~18.1.0",
- "@angular-eslint/schematics": "~18.1.0",
- "@angular-eslint/template-parser": "~18.1.0",
- "@angular/cli": "~18.1.0",
- "@angular/compiler-cli": "~18.1.0",
- "@angular/language-service": "~18.1.0",
+ "@angular-devkit/build-angular": "~19.0.0",
+ "@angular-eslint/builder": "~19.0.0",
+ "@angular-eslint/eslint-plugin": "~19.0.0",
+ "@angular-eslint/eslint-plugin-template": "~19.0.0",
+ "@angular-eslint/schematics": "~19.0.0",
+ "@angular-eslint/template-parser": "~19.0.0",
+ "@angular/cli": "~19.0.0",
+ "@angular/compiler-cli": "~19.0.0",
+ "@angular/language-service": "~19.0.0",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "7.16.0",
@@ -57,8 +57,8 @@
"karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0",
- "ng-packagr": "~17.3.0",
+ "ng-packagr": "~19.0.0",
"symlink": "^2.0.0",
- "typescript": "~5.5.0"
+ "typescript": "~5.6.0"
}
}
diff --git a/templates/module/angular/projects/dev-app/src/app/app.component.ts b/templates/module/angular/projects/dev-app/src/app/app.component.ts
index a26e745334..3a2a61014e 100644
--- a/templates/module/angular/projects/dev-app/src/app/app.component.ts
+++ b/templates/module/angular/projects/dev-app/src/app/app.component.ts
@@ -1,10 +1,11 @@
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-root',
template: `
-
-
+
+
`,
})
export class AppComponent {}
diff --git a/templates/module/angular/projects/dev-app/src/app/home/home.component.ts b/templates/module/angular/projects/dev-app/src/app/home/home.component.ts
index ab1f354e89..a0f37a99ca 100644
--- a/templates/module/angular/projects/dev-app/src/app/home/home.component.ts
+++ b/templates/module/angular/projects/dev-app/src/app/home/home.component.ts
@@ -1,6 +1,7 @@
import { Component } from '@angular/core';
@Component({
+ standalone: false,
selector: 'app-home',
templateUrl: './home.component.html',
})
diff --git a/templates/module/angular/projects/dev-app/src/app/route.provider.ts b/templates/module/angular/projects/dev-app/src/app/route.provider.ts
index 1c7138236f..32418eb5ec 100644
--- a/templates/module/angular/projects/dev-app/src/app/route.provider.ts
+++ b/templates/module/angular/projects/dev-app/src/app/route.provider.ts
@@ -1,25 +1,21 @@
import { RoutesService, eLayoutType } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
export const APP_ROUTE_PROVIDER = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureRoutes,
- deps: [RoutesService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: '/',
- name: 'Home',
- iconClass: 'fas fa-home',
- order: 1,
- layout: eLayoutType.application,
- },
- ]);
- };
+function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: '/',
+ name: 'Home',
+ iconClass: 'fas fa-home',
+ order: 1,
+ layout: eLayoutType.application,
+ },
+ ]);
}
diff --git a/templates/module/angular/projects/my-project-name/config/src/providers/route.provider.ts b/templates/module/angular/projects/my-project-name/config/src/providers/route.provider.ts
index 57157ef060..2a4ffe0079 100644
--- a/templates/module/angular/projects/my-project-name/config/src/providers/route.provider.ts
+++ b/templates/module/angular/projects/my-project-name/config/src/providers/route.provider.ts
@@ -1,26 +1,22 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
-import { APP_INITIALIZER } from '@angular/core';
+import { inject, provideAppInitializer } from '@angular/core';
import { eMyProjectNameRouteNames } from '../enums/route-names';
export const MY_PROJECT_NAME_ROUTE_PROVIDERS = [
- {
- provide: APP_INITIALIZER,
- useFactory: configureRoutes,
- deps: [RoutesService],
- multi: true,
- },
+ provideAppInitializer(() => {
+ configureRoutes();
+ }),
];
-export function configureRoutes(routesService: RoutesService) {
- return () => {
- routesService.add([
- {
- path: '/my-project-name',
- name: eMyProjectNameRouteNames.MyProjectName,
- iconClass: 'fas fa-book',
- layout: eLayoutType.application,
- order: 3,
- },
- ]);
- };
+export function configureRoutes() {
+ const routesService = inject(RoutesService);
+ routesService.add([
+ {
+ path: '/my-project-name',
+ name: eMyProjectNameRouteNames.MyProjectName,
+ iconClass: 'fas fa-book',
+ layout: eLayoutType.application,
+ order: 3,
+ },
+ ]);
}
diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json
index 9c06200753..d455b72604 100644
--- a/templates/module/angular/projects/my-project-name/package.json
+++ b/templates/module/angular/projects/my-project-name/package.json
@@ -2,8 +2,8 @@
"name": "@my-company-name/my-project-name",
"version": "0.0.1",
"peerDependencies": {
- "@angular/common": "~18.1.0",
- "@angular/core": "~18.1.0",
+ "@angular/common": "~19.0.0",
+ "@angular/core": "~19.0.0",
"@abp/ng.core": "~9.0.2",
"@abp/ng.theme.shared": "~9.0.2"
},
diff --git a/templates/module/angular/projects/my-project-name/src/lib/components/my-project-name.component.ts b/templates/module/angular/projects/my-project-name/src/lib/components/my-project-name.component.ts
index 85ca370179..21628304ac 100644
--- a/templates/module/angular/projects/my-project-name/src/lib/components/my-project-name.component.ts
+++ b/templates/module/angular/projects/my-project-name/src/lib/components/my-project-name.component.ts
@@ -1,13 +1,14 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, inject, OnInit } from '@angular/core';
import { MyProjectNameService } from '../services/my-project-name.service';
@Component({
+ standalone: false,
selector: 'lib-my-project-name',
template: ` my-project-name works!
`,
styles: [],
})
export class MyProjectNameComponent implements OnInit {
- constructor(private service: MyProjectNameService) {}
+ private service = inject(MyProjectNameService);
ngOnInit(): void {
this.service.sample().subscribe(console.log);