Skip to content

Angular - Documentation updates for standalone migration #23285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 48 commits into
base: rel-9.3
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
e290b0a
update: quick start page for the standalone migration
sumeyyeKurtulus Jun 3, 2025
c0eae28
update: environment page for the standalone migration
sumeyyeKurtulus Jun 3, 2025
6d7634f
update: feature libraries page for the standalone migration
sumeyyeKurtulus Jun 3, 2025
75ce557
update: auth page
sumeyyeKurtulus Jul 9, 2025
1b20a2f
update: config-state-service page
sumeyyeKurtulus Jul 9, 2025
b653710
update: environment page
sumeyyeKurtulus Jul 9, 2025
c85f055
update: form-validation page
sumeyyeKurtulus Jul 9, 2025
5392715
update: http error handling page
sumeyyeKurtulus Jul 9, 2025
c2e3e70
update: localization page
sumeyyeKurtulus Jul 9, 2025
f5da5e3
update: permission management page
sumeyyeKurtulus Jul 9, 2025
e4b9858
update: quick start images for better quality
sumeyyeKurtulus Jul 9, 2025
0eccfe3
update: account module page
sumeyyeKurtulus Jul 9, 2025
9982184
update: multi tenancy page
sumeyyeKurtulus Jul 9, 2025
5a4a947
update: `showLayoutNotFoundError` message
sumeyyeKurtulus Jul 9, 2025
c413b6c
update: basic-theme page
sumeyyeKurtulus Jul 9, 2025
7853665
update: theme pages
sumeyyeKurtulus Jul 9, 2025
764e123
update: caps lock directive page
sumeyyeKurtulus Jul 9, 2025
440e04a
update: confirmation service page
sumeyyeKurtulus Jul 9, 2025
1a77b3e
update: extension pages
sumeyyeKurtulus Jul 9, 2025
b6c0e3d
update: toaster service page
sumeyyeKurtulus Jul 9, 2025
2c7691f
update: sorting navigation page
sumeyyeKurtulus Jul 9, 2025
9613bfa
update: show password directive page
sumeyyeKurtulus Jul 9, 2025
e91f875
update: page component
sumeyyeKurtulus Jul 9, 2025
b712a2a
update: modifying the menu page
sumeyyeKurtulus Jul 9, 2025
2b740dc
update: modal page
sumeyyeKurtulus Jul 9, 2025
dd2798a
update: manage profile tabs page
sumeyyeKurtulus Jul 9, 2025
aa3c175
update: loading directive page
sumeyyeKurtulus Jul 9, 2025
8773b1f
update: list service page
sumeyyeKurtulus Jul 9, 2025
ee93e43
update: ellipsis direvtive page
sumeyyeKurtulus Jul 9, 2025
83ed8f8
Merge remote-tracking branch 'origin/rel-9.3' into sumeyye/standalone…
sumeyyeKurtulus Jul 10, 2025
99a66bc
update: card component page
sumeyyeKurtulus Jul 10, 2025
2858216
update: chart component page
sumeyyeKurtulus Jul 10, 2025
608691e
update: component replacement page
sumeyyeKurtulus Jul 10, 2025
fa3dd1f
update: entity filters page
sumeyyeKurtulus Jul 10, 2025
9894893
update: lookup components page
sumeyyeKurtulus Jul 10, 2025
e595e7e
update: password complexity indicator component page
sumeyyeKurtulus Jul 10, 2025
d7d0c1f
update: part-05 angular for microservice tutorial
sumeyyeKurtulus Jul 10, 2025
1bfc60d
fix: remove some module declarations from docs
sumeyyeKurtulus Jul 11, 2025
4c28290
fix: remove some module declarations from ui-themes docs
sumeyyeKurtulus Jul 11, 2025
c8ee54c
fix: grammatical issues
sumeyyeKurtulus Jul 11, 2025
2de75f4
update: module docs that has angular ui option
sumeyyeKurtulus Jul 11, 2025
e2f344d
update: small keywords about standalone migration
sumeyyeKurtulus Jul 11, 2025
5e8c823
update: small keywords about standalone migration for solution templates
sumeyyeKurtulus Jul 11, 2025
23bae65
update: small keywords about standalone migration for suite
sumeyyeKurtulus Jul 11, 2025
1c06867
update: small keywords about standalone migration for lepton-x theme
sumeyyeKurtulus Jul 11, 2025
a3e134b
update: lepton theme provider functions
sumeyyeKurtulus Aug 6, 2025
b82e4a2
Optimised images with calibre/image-actions
github-actions[bot] Aug 6, 2025
828566d
Merge remote-tracking branch 'origin/rel-9.3' into sumeyye/standalone…
sumeyyeKurtulus Aug 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions docs/en/framework/architecture/multi-tenancy/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,18 +231,20 @@ services.Configure<AbpAspNetCoreMultiTenancyOptions>(options =>
If you change the `TenantKey`, make sure to pass it to `provideAbpCore` via `withOptions` method in the Angular client as follows:

```js
@NgModule({
// app.config.ts
// ...
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideAbpCore(
withOptions({
// ...
tenantKey: "MyTenantKey",
})
),
// ...
],
// ...
})
export class AppModule {}
};
```

If you need to access it, you can inject it as follows:
Expand Down
71 changes: 35 additions & 36 deletions docs/en/framework/ui/angular/account-module.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,36 +17,35 @@ npm install @abp/ng.account

> Make sure v4.3 or higher version is installed.

Open the `app.module.ts` and add `provideAccountConfig()` to the providers array as shown below:
Open the `app.config.ts` and add `provideAccountConfig()` to the providers array as shown below:

```js
// app.module.ts
// app.config.ts

import { provideAccountConfig } from "@abp/ng.account/config";
//...
// ...

@NgModule({
export const appConfig: ApplicationConfig = {
providers: [
//...
// ...
provideAccountConfig(),
// ...
],
//...
})
export class AppModule {}
};
```

Open the `app-routing.module.ts` and add the `account` route to `routes` array as follows:
Open the `app.routes.ts` and add the `account` route to `APP_ROUTES` array as follows:

```js
// app-routing.module.ts
const routes: Routes = [
// app.routes.ts
export const APP_ROUTES: Routes = [
//...
{
path: 'account',
loadChildren: () => import('@abp/ng.account').then(m => m.AccountModule.forLazy()),
loadChildren: () => import('@abp/ng.account').then(c => c.createRoutes()),
},
//...
export class AppRoutingModule {}
];
```

## Account Public Module Implementation for Commercial Templates
Expand All @@ -59,42 +58,42 @@ npm install @volo/abp.ng.account

> Make sure v4.3 or higher version is installed.

Open the `app.module.ts` and add `AccountPublicConfigModule.forRoot()` to the imports array as shown below:
Open the `app.config.ts` and add `provideAccountPublicConfig()` to the providers array as shown below:

> Ensure that the `Account Layout Module` has been added if you are using the Lepton X theme. If you miss the step, you will get an error message that says `Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added "AccountLayoutModule.forRoot()" to your app.module configuration.` when you try to access the account pages. Otherwise, you can skip adding the `AccountLayoutModule` step.
> Ensure that the `Account Layout Provider` has been added if you are using the Lepton X theme. If you miss the step, you will get an error message that says `Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added "provideAccountLayout()" to your app configuration.` Otherwise, you can skip adding the `provideAccountLayout()` step.

```js
// app.module.ts
// app.config.ts

import { AccountPublicConfigModule } from "@volo/abp.ng.account/public/config";
// if you are using or want to use Lepton X, you should add AccountLayoutModule
// import { AccountLayoutModule } from '@volosoft/abp.ng.theme.lepton-x/account'
import { provideAccountPublicConfig } from "@volo/abp.ng.account/public/config";
// if you are using or want to use Lepton X, you should add provideAccountLayout
// import { provideAccountLayout } from '@volosoft/abp.ng.theme.lepton-x/account'

//...

@NgModule({
imports: [
//...
AccountPublicConfigModule.forRoot(),
// AccountLayoutModule.forRoot() // Only for Lepton X
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideAccountPublicConfig(),
provideAccountLayout() // Only for Lepton X
// ...
],
//...
})
export class AppModule {}
};
```

Open the `app-routing.module.ts` and add the `account` route to `routes` array as follows:
Open the `app.routes.ts` and add the `account` route to `APP_ROUTES` array as follows:

```js
// app-routing.module.ts
const routes: Routes = [
// app.routes.ts

export const APP_ROUTES: Routes = [
//...
{
path: 'account',
loadChildren: () => import('@volo/abp.ng.account/public').then(m => m.AccountPublicModule.forLazy()),
loadChildren: () => import('@volo/abp.ng.account/public').then(c => c.createRoutes()),
},
//...
export class AppRoutingModule {}
];
```

## My Account Page
Expand All @@ -108,15 +107,15 @@ When the user changes their own data on the personal settings tab in My Account,
If you want to disable these warning, You should set `isPersonalSettingsChangedConfirmationActive` false

```js
// app-routing.module.ts
const routes: Routes = [
// app.routes.ts
export const APP_ROUTES: Routes = [
//...
{
path: 'account',
loadChildren: () => import('@volo/abp.ng.account/public').then(m => m.AccountPublicModule.forLazy({ isPersonalSettingsChangedConfirmationActive:false })),
loadChildren: () => import('@volo/abp.ng.account/public').then(c => c.create({ isPersonalSettingsChangedConfirmationActive:false })),
},
//...
export class AppRoutingModule {}
];
```

## Security Logs Page [COMMERCIAL]
Expand Down
30 changes: 15 additions & 15 deletions docs/en/framework/ui/angular/authorization.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,18 @@ The `AuthErrorFilterService` is an abstract service that needs to be replaced wi

### Usage

#### 1.Create an auth-filter.provider
#### 1.Create an auth filter provider

```js
import { APP_INITIALIZER, inject } from '@angular/core';
//auth-filter.provider.ts
import { inject, provideAppInitializer } from '@angular/core';
import { AuthErrorFilter, AuthErrorEvent, AuthErrorFilterService } from '@abp/ng.core';
import { eCustomersAuthFilterNames } from '../enums';

export const CUSTOMERS_AUTH_FILTER_PROVIDER = [
{ provide: APP_INITIALIZER, useFactory: configureAuthFilter, multi: true },
provideAppInitializer(() => {
configureAuthFilter()
}),
];

type Reason = object & { error: { grant_type: string | undefined } };
Expand Down Expand Up @@ -100,20 +103,17 @@ function configureAuthFilter() {
- `executable:` a status for the filter object. If it's false then it won't work, yet it'll stay in the list
- `execute:` a function that stores the skip logic

#### 2.Add to the FeatureConfigModule
#### 2.Add to the customer configuration provider

```js
import { ModuleWithProviders, NgModule } from "@angular/core";
import { CUSTOMERS_AUTH_FILTER_PROVIDER } from "./providers/auth-filter.provider";

@NgModule()
export class CustomersConfigModule {
static forRoot(): ModuleWithProviders<CustomersConfigModule> {
return {
ngModule: CustomersConfigModule,
providers: [CUSTOMERS_AUTH_FILTER_PROVIDER],
};
}
// customer-config.provider.ts
import { EnvironmentProviders, makeEnvironmentProviders } from "@angular/core";
import { CUSTOMERS_AUTH_FILTER_PROVIDER } from "./auth-filter.provider";

export function provideCustomerConfig(): EnvironmentProviders {
return makeEnvironmentProviders([
CUSTOMERS_AUTH_FILTER_PROVIDER
])
}
```

Expand Down
5 changes: 2 additions & 3 deletions docs/en/framework/ui/angular/basic-theme.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ The Basic Theme is a theme implementation for the Angular UI. It is a minimalist
If you need to manually this theme, follow the steps below:

* Install the [@abp/ng.theme.basic](https://www.npmjs.com/package/@abp/ng.theme.basic) NPM package to your Angular project.
* Open the `src/app/app.module.ts` file, import `ThemeBasicModule`,`provideThemeBasicConfig` (it can be imported from `@abp/ng.theme.basic` package), and add `ThemeBasicModule` to the `imports` array and provide `provideThemeBasicConfig()` to the providers array.
* Open the `src/app/shared/shared.module` file, import `ThemeBasicModule` (it can be imported from `@abp/ng.theme.basic` package), and add `ThemeBasicModule` to the `imports` and `exports` array.
* Open the `src/app/app.config.ts` file, import `provideThemeBasicConfig` (it can be imported from `@abp/ng.theme.basic` package), and provide `provideThemeBasicConfig()` to the providers array.

The `ThemeBasicModule` is registered own layouts (`ApplicationLayoutComponent`, `AccountLayoutComponent`, `EmptyLayoutComponent`) to a service which is exposed by `@abp/ng.core` package on application initialization.
The `BASIC_THEME_STYLES_PROVIDERS` has registered three layouts being `ApplicationLayoutComponent`, `AccountLayoutComponent`, and `EmptyLayoutComponent`. These are provided inside `provideThemeBasicConfig()` function that is exposed by `@abp/ng.theme.basic` package on application initialization.

## Application Layout

Expand Down
51 changes: 6 additions & 45 deletions docs/en/framework/ui/angular/caps-lock-directive.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,66 +5,27 @@ In password inputs, You may want to show if Caps Lock is on. To make this even e

## Getting Started

`TrackCapsLockDirective` is standalone. In order to use the `TrackCapsLockDirective` in an HTML template, import it to related module or your standalone component:

**Importing to NgModule**
```ts
import { TrackCapsLockDirective } from '@abp/ng.core';

@NgModule({
//...
declarations: [
...,
TestComponent
],
imports: [
...,
TrackCapsLockDirective
],
})
export class MyFeatureModule {}
```

## Usage

The `TrackCapsLockDirective` is very easy to use. The directive's selector is **`abpCapsLock`**. By adding the `abpCapsLock` event to an element, you can track the status of Caps Lock. You can use this to warn user.
`TrackCapsLockDirective` is standalone. In order to use the `TrackCapsLockDirective` in an HTML template, import it to related component. The selector of the directive is **`abpCapsLock`**. By adding the `abpCapsLock` event to an element, you can track the status of Caps Lock. You can use this to warn user.

See an example usage:

**NgModule Component usage**
```ts
@Component({
selector: 'test-component',
template: `
<div class="d-flex flex-column">
<label>Password</label>
<input (abpCapsLock)="capsLock = $event"/>
<i *ngIf="capsLock">icon</i>
</div>
`
})
export class TestComponent{
capsLock = false;
}
```

**Standalone Component usage**
```ts
import { TrackCapsLockDirective } from '@abp/ng.core'

@Component({
selector: 'standalone-component',
standalone: true,
selector: 'sample-component',
template: `
<div class="d-flex flex-column">
<label>Password</label>
<input (abpCapsLock)="capsLock = $event"/>
<i *ngIf="capsLock">icon</i>
@if (capslock) {
<i>icon</i>
}
</div>
`,
imports: [TrackCapsLockDirective]
})
export class StandaloneComponent{
export class SampleComponent{
capsLock = false;
}
```
Expand Down
Loading
Loading