Skip to content

Commit 1e732c4

Browse files
authored
Merge pull request #662 from aspnetboilerplate/issue-#6993
Upgrade to Angular 18
2 parents 250105a + 1e3b922 commit 1e732c4

39 files changed

+1531
-1542
lines changed

angular/angular.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,5 +183,8 @@
183183
"@schematics/angular:directive": {
184184
"prefix": "app"
185185
}
186+
},
187+
"cli": {
188+
"analytics": false
186189
}
187190
}

angular/package.json

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
"test": "ng test"
1414
},
1515
"dependencies": {
16-
"@angular/animations": "^18.1.1",
17-
"@angular/common": "^18.1.1",
18-
"@angular/compiler": "^18.1.1",
19-
"@angular/core": "^18.1.1",
20-
"@angular/forms": "^18.1.1",
21-
"@angular/platform-browser": "^18.1.1",
22-
"@angular/platform-browser-dynamic": "^18.1.1",
23-
"@angular/router": "^18.1.1",
16+
"@angular/animations": "^18.1.2",
17+
"@angular/common": "^18.1.2",
18+
"@angular/compiler": "^18.1.2",
19+
"@angular/core": "^18.1.2",
20+
"@angular/forms": "^18.1.2",
21+
"@angular/platform-browser": "^18.1.2",
22+
"@angular/platform-browser-dynamic": "^18.1.2",
23+
"@angular/router": "^18.1.2",
2424
"@microsoft/signalr": "^8.0.7",
2525
"@fortawesome/fontawesome-free": "^6.6.0",
2626
"abp-ng2-module": "10.0.0",
@@ -37,19 +37,17 @@
3737
"rxjs": "^7.8.1",
3838
"sweetalert2": "^11.12.2",
3939
"ts-helpers": "^1.1.2",
40-
"tslib": "^2.6.3",
41-
"zone.js": "~0.14.8"
40+
"tslib": "^2.6.3"
4241
},
4342
"devDependencies": {
44-
"@angular-devkit/build-angular": "^18.1.1",
45-
"@angular/cli": "^18.1.1",
46-
"@angular/compiler-cli": "^18.1.1",
43+
"@angular-devkit/build-angular": "^18.1.2",
44+
"@angular/cli": "^18.1.2",
45+
"@angular/compiler-cli": "^18.1.2",
4746
"@angularclass/hmr": "^3.0.0",
4847
"@types/jasmine": "~5.1.4",
4948
"@types/lodash-es": "^4.17.12",
5049
"@types/moment-timezone": "^0.5.30",
5150
"@types/node": "^20.11.1",
52-
"codelyzer": "^6.0.2",
5351
"jasmine-core": "~5.1.2",
5452
"jasmine-spec-reporter": "~7.0.0",
5553
"karma": "~6.4.3",

angular/src/account/account.component.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<div class="login-box">
22
<account-header></account-header>
33
<div class="card">
4-
<div *ngIf="showTenantChange()" class="card-header">
5-
<tenant-change></tenant-change>
6-
</div>
4+
@if (showTenantChange()) {
5+
<div class="card-header">
6+
<tenant-change></tenant-change>
7+
</div>
8+
}
79
<div class="card-body login-card-body">
810
<router-outlet></router-outlet>
911
</div>
Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
<div class="text-center">
2-
<ng-container *ngFor="let language of languages">
3-
<a
4-
*ngIf="language.name != currentLanguage.name"
5-
href="javascript:void(0);"
6-
(click)="changeLanguage(language.name)"
7-
>
8-
<span
9-
title="{{ language.displayName }}"
1+
<div class="text-center">
2+
@for (language of languages; track language) {
3+
@if (language.name != currentLanguage.name) {
4+
<a
5+
href="javascript:void(0);"
6+
(click)="changeLanguage(language.name)"
7+
>
8+
<span
9+
title="{{ language.displayName }}"
1010
[attr.class.current-language-icon]="
1111
language.name != currentLanguage.name
1212
"
13-
>
14-
<i class="d-inline-block mx-1 {{ language.icon }}"></i>
15-
</span>
16-
</a>
17-
</ng-container>
13+
>
14+
<i class="d-inline-block mx-1 {{ language.icon }}"></i>
15+
</span>
16+
</a>
17+
}
18+
}
1819
</div>

angular/src/account/login/login.component.html

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -13,71 +13,73 @@ <h4 class="text-center mb-3">{{ "LogIn" | localize }}</h4>
1313
maxlength="256"
1414
#userNameOrEmailAddressModel="ngModel"
1515
#userNameOrEmailAddressEl
16-
/>
17-
<div class="input-group-append">
18-
<div class="input-group-text">
19-
<span class="fas fa-user"></span>
20-
</div>
21-
</div>
22-
</div>
23-
<abp-validation-summary
24-
[control]="userNameOrEmailAddressModel"
25-
[controlEl]="userNameOrEmailAddressEl"
26-
></abp-validation-summary>
27-
</div>
28-
<div class="form-group">
29-
<div class="input-group">
30-
<input
31-
type="password"
32-
class="form-control"
33-
name="password"
34-
[(ngModel)]="authService.authenticateModel.password"
35-
[placeholder]="'Password' | localize"
36-
required
37-
maxlength="32"
38-
#passwordModel="ngModel"
39-
#passwordEl
40-
/>
41-
<div class="input-group-append">
42-
<div class="input-group-text">
43-
<span class="fas fa-lock"></span>
16+
/>
17+
<div class="input-group-append">
18+
<div class="input-group-text">
19+
<span class="fas fa-user"></span>
20+
</div>
4421
</div>
4522
</div>
23+
<abp-validation-summary
24+
[control]="userNameOrEmailAddressModel"
25+
[controlEl]="userNameOrEmailAddressEl"
26+
></abp-validation-summary>
4627
</div>
47-
<abp-validation-summary
48-
[control]="passwordModel"
49-
[controlEl]="passwordEl"
50-
></abp-validation-summary>
51-
</div>
52-
<div class="form-group row">
53-
<div class="col-md-8">
54-
<div class="custom-control custom-checkbox">
28+
<div class="form-group">
29+
<div class="input-group">
5530
<input
56-
type="checkbox"
57-
class="custom-control-input"
58-
id="rememberMe"
59-
name="rememberMe"
60-
[(ngModel)]="authService.rememberMe"
61-
/>
62-
<label for="rememberMe" class="custom-control-label">
63-
{{ "RememberMe" | localize }}
64-
</label>
31+
type="password"
32+
class="form-control"
33+
name="password"
34+
[(ngModel)]="authService.authenticateModel.password"
35+
[placeholder]="'Password' | localize"
36+
required
37+
maxlength="32"
38+
#passwordModel="ngModel"
39+
#passwordEl
40+
/>
41+
<div class="input-group-append">
42+
<div class="input-group-text">
43+
<span class="fas fa-lock"></span>
44+
</div>
45+
</div>
46+
</div>
47+
<abp-validation-summary
48+
[control]="passwordModel"
49+
[controlEl]="passwordEl"
50+
></abp-validation-summary>
6551
</div>
52+
<div class="form-group row">
53+
<div class="col-md-8">
54+
<div class="custom-control custom-checkbox">
55+
<input
56+
type="checkbox"
57+
class="custom-control-input"
58+
id="rememberMe"
59+
name="rememberMe"
60+
[(ngModel)]="authService.rememberMe"
61+
/>
62+
<label for="rememberMe" class="custom-control-label">
63+
{{ "RememberMe" | localize }}
64+
</label>
65+
</div>
66+
</div>
67+
<div class="col-md-4">
68+
<button
69+
type="submit"
70+
class="btn btn-primary btn-block"
71+
[disabled]="!loginForm.form.valid || submitting"
72+
>
73+
{{ "LogIn" | localize }}
74+
</button>
75+
</div>
76+
</div>
77+
</form>
78+
@if (isSelfRegistrationAllowed) {
79+
<p class="mb-1">
80+
<a [routerLink]="['../register']">
81+
<i class="fa fa-plus-circle"></i> {{ "Register" | localize }}
82+
</a>
83+
</p>
84+
}
6685
</div>
67-
<div class="col-md-4">
68-
<button
69-
type="submit"
70-
class="btn btn-primary btn-block"
71-
[disabled]="!loginForm.form.valid || submitting"
72-
>
73-
{{ "LogIn" | localize }}
74-
</button>
75-
</div>
76-
</div>
77-
</form>
78-
<p *ngIf="isSelfRegistrationAllowed" class="mb-1">
79-
<a [routerLink]="['../register']">
80-
<i class="fa fa-plus-circle"></i> {{ "Register" | localize }}
81-
</a>
82-
</p>
83-
</div>

angular/src/account/register/register.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, Injector } from '@angular/core';
1+
import { Component, Injector, Input } from '@angular/core';
22
import { Router } from '@angular/router';
33
import { finalize } from 'rxjs/operators';
44
import { AppComponentBase } from '@shared/app-component-base';
Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1-
<div *ngIf="isMultiTenancyEnabled" class="text-center tenant-change-component">
2-
<span>
3-
{{ "CurrentTenant" | localize }}:
4-
<span *ngIf="tenancyName" title="{{ name }}">
5-
<strong>{{ tenancyName }}</strong>
6-
</span>
7-
<span *ngIf="!tenancyName">{{ "NotSelected" | localize }}</span>
8-
(<a href="javascript:;" (click)="showChangeModal()">
1+
@if (isMultiTenancyEnabled) {
2+
<div class="text-center tenant-change-component">
3+
<span>
4+
{{ "CurrentTenant" | localize }}:
5+
@if (tenancyName) {
6+
<span title="{{ name }}">
7+
<strong>{{ tenancyName }}</strong>
8+
</span>
9+
}
10+
@if (!tenancyName) {
11+
<span>{{ "NotSelected" | localize }}</span>
12+
}
13+
(<a href="javascript:;" (click)="showChangeModal()">
914
{{ "Change" | localize }} </a
10-
>)
11-
</span>
12-
</div>
15+
>)
16+
</span>
17+
</div>
18+
}

angular/src/app/layout/header-language-menu.component.html

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
</span>
77
</a>
88
<div class="dropdown-menu dropdown-menu-right p-0" *dropdownMenu>
9-
<ng-container *ngFor="let language of languages">
10-
<a
11-
*ngIf="language.name != currentLanguage.name"
12-
class="dropdown-item"
13-
href="javascript:;"
14-
(click)="changeLanguage(language.name)"
15-
>
16-
<i class="d-inline-block {{ language.icon }} mr-1"></i>
17-
{{ language.displayName }}
18-
</a>
19-
</ng-container>
9+
@for (language of languages; track language) {
10+
@if (language.name != currentLanguage.name) {
11+
<a
12+
class="dropdown-item"
13+
href="javascript:;"
14+
(click)="changeLanguage(language.name)"
15+
>
16+
<i class="d-inline-block {{ language.icon }} mr-1"></i>
17+
{{ language.displayName }}
18+
</a>
19+
}
20+
}
2021
</div>
2122
</li>

0 commit comments

Comments
 (0)