chore(console): angular 14 (#3799)

* eslint schematics

* cli, core migrations

* material

* schematics

* ng-qrcode update

* fix input, formfield errorstatemixin

* other packages

* downgrade codemirror

* codemirror

* @next of alphas

Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
Max Peintner 2022-06-27 15:17:17 +02:00 committed by GitHub
parent 12d4d3ea0b
commit fb0f29aa32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 5012 additions and 9824 deletions

View File

@ -151,9 +151,10 @@
}
}
},
"defaultProject": "console",
"cli": {
"analytics": "2b4e8e6c-f053-4562-b7a6-00c6c06a6791",
"defaultCollection": "@angular-eslint/schematics"
"schematicCollections": [
"@angular-eslint/schematics"
]
}
}

14532
console/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -12,18 +12,18 @@
},
"private": true,
"dependencies": {
"@angular/animations": "~13.3.10",
"@angular/cdk": "~13.3.8",
"@angular/common": "~13.3.10",
"@angular/compiler": "~13.3.10",
"@angular/core": "~13.3.10",
"@angular/forms": "~13.3.10",
"@angular/material": "~13.3.8",
"@angular/material-moment-adapter": "~13.3.8",
"@angular/platform-browser": "~13.3.10",
"@angular/platform-browser-dynamic": "~13.3.10",
"@angular/router": "~13.3.10",
"@angular/service-worker": "~13.3.10",
"@angular/animations": "^14.0.1",
"@angular/cdk": "^14.0.1",
"@angular/common": "^14.0.1",
"@angular/compiler": "^14.0.1",
"@angular/core": "^14.0.1",
"@angular/forms": "^14.0.1",
"@angular/material": "^14.0.1",
"@angular/material-moment-adapter": "^14.0.1",
"@angular/platform-browser": "^14.0.1",
"@angular/platform-browser-dynamic": "^14.0.1",
"@angular/router": "^14.0.1",
"@angular/service-worker": "^14.0.1",
"@ctrl/ngx-codemirror": "^5.1.1",
"@grpc/grpc-js": "^1.5.7",
"@ngx-translate/core": "^14.0.0",
@ -42,7 +42,7 @@
"libphonenumber-js": "^1.10.6",
"material-design-icons-iconfont": "^6.1.1",
"moment": "^2.29.1",
"ng-qrcode": "^6.0.0",
"ng-qrcode": "^7.0.0",
"ngx-color": "^7.2.0",
"ngx-quicklink": "^0.2.6",
"rxjs": "~7.5.2",
@ -52,25 +52,25 @@
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "~13.3.7",
"@angular-eslint/builder": "^13.1.0",
"@angular-eslint/eslint-plugin": "^13.1.0",
"@angular-eslint/eslint-plugin-template": "^13.1.0",
"@angular-eslint/schematics": "^13.1.0",
"@angular-eslint/template-parser": "^13.1.0",
"@angular/cli": "~13.3.7",
"@angular/compiler-cli": "~13.3.10",
"@angular/language-service": "~13.3.10",
"@angular-devkit/build-angular": "^14.0.1",
"@angular-eslint/builder": "^14.0.0-alpha.3",
"@angular-eslint/eslint-plugin": "^14.0.0-alpha.3",
"@angular-eslint/eslint-plugin-template": "^14.0.0-alpha.3",
"@angular-eslint/schematics": "^14.0.0-alpha.3",
"@angular-eslint/template-parser": "^14.0.0-alpha.3",
"@angular/cli": "^14.0.1",
"@angular/compiler-cli": "^14.0.1",
"@angular/language-service": "^14.0.1",
"@types/jasmine": "~4.0.3",
"@types/jasminewd2": "~2.0.10",
"@types/jsonwebtoken": "^8.5.5",
"@types/node": "^17.0.35",
"@types/node": "^17.0.42",
"@typescript-eslint/eslint-plugin": "5.25.0",
"@typescript-eslint/parser": "5.27.0",
"codelyzer": "^6.0.0",
"cypress": "^9.5.1",
"cypress": "^10.1.0",
"cypress-terminal-report": "^4.0.1",
"eslint": "^8.16.0",
"@typescript-eslint/eslint-plugin": "5.25.0",
"eslint": "^8.17.0",
"jasmine-core": "~4.1.1",
"jasmine-spec-reporter": "~7.0.0",
"jsonwebtoken": "^8.5.1",

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { KeyType } from 'src/app/proto/generated/zitadel/auth_n_key_pb';
@ -17,7 +17,7 @@ export class AddKeyDialogComponent {
public startDate: Date = new Date();
types: KeyType[] = [];
public type!: KeyType;
public dateControl: FormControl = new FormControl('', []);
public dateControl: UntypedFormControl = new UntypedFormControl('', []);
constructor(
public dialogRef: MatDialogRef<AddKeyDialogComponent>,

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
@Component({
@ -9,7 +9,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
})
export class AddTokenDialogComponent {
public startDate: Date = new Date();
public dateControl: FormControl = new FormControl('', []);
public dateControl: UntypedFormControl = new UntypedFormControl('', []);
constructor(public dialogRef: MatDialogRef<AddTokenDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {
const today = new Date();

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
import { Observable, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@ -18,7 +18,7 @@ export class EditTextComponent implements OnInit, OnDestroy {
@Output() changedValues: EventEmitter<{ [key: string]: string }> = new EventEmitter();
public currentMap: { [key: string]: string | boolean } = {}; // boolean because of isDefault
private destroy$: Subject<void> = new Subject();
public form!: FormGroup;
public form!: UntypedFormGroup;
public warnText: { [key: string]: string | boolean | undefined } = {};
@Input() public chips: any[] = [];
@ -30,10 +30,10 @@ export class EditTextComponent implements OnInit, OnDestroy {
public ngOnInit(): void {
this.current$.pipe(takeUntil(this.destroy$)).subscribe((value) => {
this.currentMap = value;
this.form = new FormGroup({});
this.form = new UntypedFormGroup({});
Object.keys(value).map((key) => {
if (key !== 'isDefault') {
const control = new FormControl({ value: value[key], disabled: this.disabled });
const control = new UntypedFormControl({ value: value[key], disabled: this.disabled });
this.form.addControl(key, control);
}
});

View File

@ -33,9 +33,7 @@ class CnslFormFieldBase {
selector: 'cnsl-form-field',
templateUrl: './form-field.component.html',
styleUrls: ['./form-field.component.scss'],
providers: [
{ provide: CNSL_FORM_FIELD, useExisting: CnslFormFieldComponent },
],
providers: [{ provide: CNSL_FORM_FIELD, useExisting: CnslFormFieldComponent }],
host: {
'[class.ng-untouched]': '_shouldForward("untouched")',
'[class.ng-touched]': '_shouldForward("touched")',
@ -76,18 +74,20 @@ export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestr
@HostListener('blur', ['false'])
_focusChanged(isFocused: boolean): void {
if (isFocused !== this.focused && (!isFocused)) {
if (isFocused !== this.focused && !isFocused) {
this.focused = isFocused;
this.stateChanges.next();
}
}
constructor(public _elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef,
constructor(
public _elementRef: ElementRef,
private _changeDetectorRef: ChangeDetectorRef,
@Inject(ElementRef)
// Use `ElementRef` here so Angular has something to inject.
_labelOptions: any) {
_labelOptions: // Use `ElementRef` here so Angular has something to inject.
any,
) {
super(_elementRef);
}
public ngAfterViewInit(): void {
@ -135,13 +135,12 @@ export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestr
if (this._control) {
const ids: string[] = [];
if (this._control.userAriaDescribedBy &&
typeof this._control.userAriaDescribedBy === 'string') {
if (this._control.userAriaDescribedBy && typeof this._control.userAriaDescribedBy === 'string') {
ids.push(...this._control.userAriaDescribedBy.split(' '));
}
if (this._errorChildren) {
ids.push(...this._errorChildren.map(error => error.id));
ids.push(...this._errorChildren.map((error) => error.id));
}
this._control.setDescribedByIds(ids);
@ -150,12 +149,12 @@ export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestr
/** Determines whether a class from the NgControl should be forwarded to the host element. */
_shouldForward(prop: keyof NgControl): boolean {
const ngControl = this._control ? this._control.ngControl : null;
const ngControl: any = this._control ? this._control.ngControl : null;
return ngControl && ngControl[prop];
}
/** Determines whether to display hints or errors. */
_getDisplayedMessages(): 'error' | 'hint' {
return (this._errorChildren && this._errorChildren.length > 0) ? 'error' : 'hint';
return this._errorChildren && this._errorChildren.length > 0 ? 'error' : 'hint';
}
}

View File

@ -1,7 +1,7 @@
import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
import { Location } from '@angular/common';
import { Component, Injector, OnDestroy, OnInit, Type } from '@angular/core';
import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { MatChipInputEvent } from '@angular/material/chips';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { Subscription } from 'rxjs';
@ -31,8 +31,8 @@ export class IdpCreateComponent implements OnInit, OnDestroy {
private subscription?: Subscription;
public projectId: string = '';
public oidcFormGroup!: FormGroup;
public jwtFormGroup!: FormGroup;
public oidcFormGroup!: UntypedFormGroup;
public jwtFormGroup!: UntypedFormGroup;
public createSteps: number = 2;
public currentCreateStep: number = 1;
@ -53,25 +53,25 @@ export class IdpCreateComponent implements OnInit, OnDestroy {
private _location: Location,
breadcrumbService: BreadcrumbService,
) {
this.oidcFormGroup = new FormGroup({
name: new FormControl('', [Validators.required]),
clientId: new FormControl('', [Validators.required]),
clientSecret: new FormControl('', [Validators.required]),
issuer: new FormControl('', [Validators.required]),
scopesList: new FormControl(['openid', 'profile', 'email'], []),
idpDisplayNameMapping: new FormControl(0),
usernameMapping: new FormControl(0),
autoRegister: new FormControl(false),
this.oidcFormGroup = new UntypedFormGroup({
name: new UntypedFormControl('', [Validators.required]),
clientId: new UntypedFormControl('', [Validators.required]),
clientSecret: new UntypedFormControl('', [Validators.required]),
issuer: new UntypedFormControl('', [Validators.required]),
scopesList: new UntypedFormControl(['openid', 'profile', 'email'], []),
idpDisplayNameMapping: new UntypedFormControl(0),
usernameMapping: new UntypedFormControl(0),
autoRegister: new UntypedFormControl(false),
});
this.jwtFormGroup = new FormGroup({
jwtName: new FormControl('', [Validators.required]),
jwtHeaderName: new FormControl('', [Validators.required]),
jwtIssuer: new FormControl('', [Validators.required]),
jwtEndpoint: new FormControl('', [Validators.required]),
jwtKeysEndpoint: new FormControl('', [Validators.required]),
jwtStylingType: new FormControl(0),
jwtAutoRegister: new FormControl(false),
this.jwtFormGroup = new UntypedFormGroup({
jwtName: new UntypedFormControl('', [Validators.required]),
jwtHeaderName: new UntypedFormControl('', [Validators.required]),
jwtIssuer: new UntypedFormControl('', [Validators.required]),
jwtEndpoint: new UntypedFormControl('', [Validators.required]),
jwtKeysEndpoint: new UntypedFormControl('', [Validators.required]),
jwtStylingType: new UntypedFormControl(0),
jwtAutoRegister: new UntypedFormControl(false),
});
this.route.data.pipe(take(1)).subscribe((data) => {

View File

@ -1,7 +1,7 @@
import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
import { Location } from '@angular/common';
import { Component, Injector, OnDestroy, Type } from '@angular/core';
import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { MatChipInputEvent } from '@angular/material/chips';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router';
@ -46,9 +46,9 @@ export class IdpComponent implements OnDestroy {
private destroy$: Subject<void> = new Subject();
public projectId: string = '';
public idpForm!: FormGroup;
public oidcConfigForm!: FormGroup;
public jwtConfigForm!: FormGroup;
public idpForm!: UntypedFormGroup;
public oidcConfigForm!: UntypedFormGroup;
public jwtConfigForm!: UntypedFormGroup;
IDPState: any = IDPState;
@ -70,27 +70,27 @@ export class IdpComponent implements OnDestroy {
private dialog: MatDialog,
breadcrumbService: BreadcrumbService,
) {
this.idpForm = new FormGroup({
id: new FormControl({ disabled: true, value: '' }, [Validators.required]),
name: new FormControl('', [Validators.required]),
stylingType: new FormControl('', [Validators.required]),
autoRegister: new FormControl(false, [Validators.required]),
this.idpForm = new UntypedFormGroup({
id: new UntypedFormControl({ disabled: true, value: '' }, [Validators.required]),
name: new UntypedFormControl('', [Validators.required]),
stylingType: new UntypedFormControl('', [Validators.required]),
autoRegister: new UntypedFormControl(false, [Validators.required]),
});
this.oidcConfigForm = new FormGroup({
clientId: new FormControl('', [Validators.required]),
clientSecret: new FormControl(''),
issuer: new FormControl('', [Validators.required]),
scopesList: new FormControl([], []),
displayNameMapping: new FormControl(0),
usernameMapping: new FormControl(0),
this.oidcConfigForm = new UntypedFormGroup({
clientId: new UntypedFormControl('', [Validators.required]),
clientSecret: new UntypedFormControl(''),
issuer: new UntypedFormControl('', [Validators.required]),
scopesList: new UntypedFormControl([], []),
displayNameMapping: new UntypedFormControl(0),
usernameMapping: new UntypedFormControl(0),
});
this.jwtConfigForm = new FormGroup({
jwtEndpoint: new FormControl('', [Validators.required]),
issuer: new FormControl('', [Validators.required]),
keysEndpoint: new FormControl('', [Validators.required]),
headerName: new FormControl('', [Validators.required]),
this.jwtConfigForm = new UntypedFormGroup({
jwtEndpoint: new UntypedFormControl('', [Validators.required]),
issuer: new UntypedFormControl('', [Validators.required]),
keysEndpoint: new UntypedFormControl('', [Validators.required]),
headerName: new UntypedFormControl('', [Validators.required]),
});
const serviceType = this.route.snapshot.data.serviceType;

View File

@ -1,11 +1,11 @@
import { Injectable } from '@angular/core';
import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';
import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';
/** Provider that defines how form controls behave with regards to displaying error messages. */
@Injectable({ providedIn: 'root' })
export class ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {
return !!(control && control.invalid && (control.touched || (form && form.submitted)));
}
}
@ -13,7 +13,7 @@ export class ErrorStateMatcher {
/** Error state matcher that matches when a control is invalid and dirty. */
@Injectable()
export class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {
return !!(control && control.invalid && (control.dirty || (form && form.submitted)));
}
}

View File

@ -28,11 +28,17 @@ let nextUniqueId = 0;
const _MatInputBase = mixinErrorState(
class {
readonly stateChanges = new Subject<void>();
constructor(
public _defaultErrorStateMatcher: ErrorStateMatcher,
public _parentForm: NgForm,
public _parentFormGroup: FormGroupDirective,
/** @docs-private */
/**
* Form control bound to the component.
* Implemented as part of `MatFormFieldControl`.
* @docs-private
*/
public ngControl: NgControl,
) {}
},
@ -98,7 +104,7 @@ export class InputDirective
* Implemented as part of MatFormFieldControl.
* @docs-private
*/
readonly stateChanges: Subject<void> = new Subject<void>();
override readonly stateChanges: Subject<void> = new Subject<void>();
/**
* Implemented as part of MatFormFieldControl.

View File

@ -2,7 +2,7 @@ import { animate, keyframes, style, transition, trigger } from '@angular/animati
import { BreakpointObserver } from '@angular/cdk/layout';
import { HttpClient } from '@angular/common/http';
import { Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { Router } from '@angular/router';
import { BehaviorSubject, map, Observable, Subject, take } from 'rxjs';
import { Org } from 'src/app/proto/generated/zitadel/org_pb';
@ -81,7 +81,7 @@ export class NavComponent implements OnDestroy {
);
@Input() public org!: Org.AsObject;
public filterControl: FormControl = new FormControl('');
public filterControl: UntypedFormControl = new UntypedFormControl('');
public orgLoading$: BehaviorSubject<any> = new BehaviorSubject(false);
public showAccount: boolean = false;
public hideAdminWarn: boolean = true;

View File

@ -1,6 +1,6 @@
import { SelectionModel } from '@angular/cdk/collections';
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { BehaviorSubject, catchError, debounceTime, finalize, from, map, Observable, of, pipe, tap } from 'rxjs';
import { TextQueryMethod } from 'src/app/proto/generated/zitadel/object_pb';
import { Org, OrgNameQuery, OrgQuery } from 'src/app/proto/generated/zitadel/org_pb';
@ -17,7 +17,7 @@ export class OrgContextComponent implements OnInit {
public orgLoading$: BehaviorSubject<any> = new BehaviorSubject(false);
public orgs$: Observable<Org.AsObject[]> = of([]);
public filterControl: FormControl = new FormControl('');
public filterControl: UntypedFormControl = new UntypedFormControl('');
@Input() public org!: Org.AsObject;
@ViewChild('input', { static: false }) input!: ElementRef;
@Output() public closedCard: EventEmitter<void> = new EventEmitter();

View File

@ -1,5 +1,5 @@
import { Component, Injector, Input, OnInit, Type } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { Duration } from 'google-protobuf/google/protobuf/duration_pb';
import { take } from 'rxjs';
@ -43,11 +43,11 @@ export class LoginPolicyComponent implements OnInit {
public loading: boolean = false;
public InfoSectionType: any = InfoSectionType;
public PasswordlessType: any = PasswordlessType;
public lifetimeForm!: FormGroup;
public lifetimeForm!: UntypedFormGroup;
constructor(
private toast: ToastService,
private injector: Injector,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private authService: GrpcAuthService,
private dialog: MatDialog,
) {

View File

@ -1,5 +1,5 @@
import { Component, Injector, Input, OnDestroy, OnInit, Type } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb';
import { BehaviorSubject, from, interval, Observable, of, Subject, Subscription } from 'rxjs';
@ -115,9 +115,9 @@ export class LoginTextsComponent implements OnInit, OnDestroy {
public destroy$: Subject<void> = new Subject();
public InfoSectionType: any = InfoSectionType;
public form: FormGroup = new FormGroup({
currentSubMap: new FormControl('emailVerificationDoneText'),
locale: new FormControl('en'),
public form: UntypedFormGroup = new UntypedFormGroup({
currentSubMap: new UntypedFormControl('emailVerificationDoneText'),
locale: new UntypedFormControl('en'),
});
public canWrite$: Observable<boolean> = this.authService.isAllowed([

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
import {
AddSMSProviderTwilioRequest,
@ -27,12 +27,12 @@ export class DialogAddSMSProviderComponent {
public provider: SMSProviderType = SMSProviderType.Twilio;
public req!: AddSMSProviderTwilioRequest | UpdateSMSProviderTwilioRequest;
public twilioForm!: FormGroup;
public twilioForm!: UntypedFormGroup;
private smsProviders: SMSProvider.AsObject[] = [];
constructor(
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private service: AdminService,
public dialogRef: MatDialogRef<DialogAddSMSProviderComponent>,
private toast: ToastService,

View File

@ -1,5 +1,5 @@
import { Component, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { take } from 'rxjs';
import {
@ -36,7 +36,7 @@ export class NotificationSettingsComponent implements OnInit {
public logProviderLoading: boolean = false;
public fileProviderLoading: boolean = false;
public form!: FormGroup;
public form!: UntypedFormGroup;
public SMSProviderConfigState: any = SMSProviderConfigState;
public InfoSectionType: any = InfoSectionType;
@ -49,7 +49,7 @@ export class NotificationSettingsComponent implements OnInit {
private service: AdminService,
private dialog: MatDialog,
private toast: ToastService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private authService: GrpcAuthService,
) {
this.form = this.fb.group({

View File

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Duration } from 'google-protobuf/google/protobuf/duration_pb';
import { take } from 'rxjs';
import { SetDefaultLanguageResponse, UpdateOIDCSettingsRequest } from 'src/app/proto/generated/zitadel/admin_pb';
@ -17,10 +17,10 @@ export class OIDCConfigurationComponent implements OnInit {
public oidcSettings!: OIDCSettings.AsObject;
public loading: boolean = false;
public form!: FormGroup;
public form!: UntypedFormGroup;
constructor(
private service: AdminService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private toast: ToastService,
private authService: GrpcAuthService,
) {

View File

@ -1,5 +1,5 @@
import { Component, Injector, Input, OnInit, Type } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { UntypedFormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { GetLockoutPolicyResponse as AdminGetPasswordLockoutPolicyResponse } from 'src/app/proto/generated/zitadel/admin_pb';
import {
@ -23,7 +23,7 @@ export class PasswordLockoutPolicyComponent implements OnInit {
@Input() public service!: ManagementService | AdminService;
@Input() public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
public lockoutForm!: FormGroup;
public lockoutForm!: UntypedFormGroup;
public lockoutData!: LockoutPolicy.AsObject;
public PolicyComponentServiceType: any = PolicyComponentServiceType;
public InfoSectionType: any = InfoSectionType;

View File

@ -1,5 +1,5 @@
import { Component, Injector, Input, OnDestroy, OnInit, Type } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { Observable, Subscription } from 'rxjs';
import { take } from 'rxjs/operators';
@ -35,7 +35,7 @@ export class PrivacyPolicyComponent implements OnInit, OnDestroy {
private sub: Subscription = new Subscription();
public privacyPolicy: PrivacyPolicy.AsObject | undefined = undefined;
public form!: FormGroup;
public form!: UntypedFormGroup;
public InfoSectionType: any = InfoSectionType;
public canWrite$: Observable<boolean> = this.authService.isAllowed([
@ -54,7 +54,7 @@ export class PrivacyPolicyComponent implements OnInit, OnDestroy {
private injector: Injector,
private dialog: MatDialog,
private toast: ToastService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
) {
this.form = this.fb.group({
tosLink: ['', []],

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Duration } from 'google-protobuf/google/protobuf/duration_pb';
import { UpdateSecretGeneratorRequest } from 'src/app/proto/generated/zitadel/admin_pb';
@ -22,10 +22,10 @@ export class DialogAddSecretGeneratorComponent {
];
public req: UpdateSecretGeneratorRequest = new UpdateSecretGeneratorRequest();
public specsForm!: FormGroup;
public specsForm!: UntypedFormGroup;
constructor(
private fb: FormBuilder,
private fb: UntypedFormBuilder,
public dialogRef: MatDialogRef<DialogAddSecretGeneratorComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
) {

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
@ -12,7 +12,7 @@ import { ToastService } from 'src/app/services/toast.service';
export class ProjectRoleDetailDialogComponent {
public projectId: string = '';
public formGroup!: FormGroup;
public formGroup!: UntypedFormGroup;
constructor(
private mgmtService: ManagementService,
private toast: ToastService,
@ -20,10 +20,10 @@ export class ProjectRoleDetailDialogComponent {
@Inject(MAT_DIALOG_DATA) public data: any,
) {
this.projectId = data.projectId;
this.formGroup = new FormGroup({
key: new FormControl({ value: '', disabled: true }, [Validators.required]),
displayName: new FormControl(''),
group: new FormControl(''),
this.formGroup = new UntypedFormGroup({
key: new UntypedFormControl({ value: '', disabled: true }, [Validators.required]),
displayName: new UntypedFormControl(''),
group: new UntypedFormControl(''),
});
this.formGroup.patchValue(data.role);

View File

@ -1,6 +1,6 @@
import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { forkJoin, from, Subject } from 'rxjs';
@ -27,7 +27,7 @@ export class SearchProjectAutocompleteComponent implements OnDestroy {
public removable: boolean = true;
public addOnBlur: boolean = true;
public separatorKeysCodes: number[] = [ENTER, COMMA];
public myControl: FormControl = new FormControl();
public myControl: UntypedFormControl = new UntypedFormControl();
public names: string[] = [];
public projects: Array<GrantedProject.AsObject | Project.AsObject | any> = [];
public filteredProjects: Array<GrantedProject.AsObject | Project.AsObject | any> = [];

View File

@ -1,6 +1,6 @@
import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { from, Subject } from 'rxjs';
@ -19,7 +19,7 @@ export class SearchRolesAutocompleteComponent implements OnDestroy {
public removable: boolean = true;
public addOnBlur: boolean = true;
public separatorKeysCodes: number[] = [ENTER, COMMA];
public myControl: FormControl = new FormControl();
public myControl: UntypedFormControl = new UntypedFormControl();
public names: string[] = [];
public roles: Array<Role.AsObject> = [];
public filteredRoles: Array<Role.AsObject> = [];

View File

@ -10,7 +10,7 @@ import {
Output,
ViewChild,
} from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { from, of, Subject } from 'rxjs';
@ -37,8 +37,8 @@ export class SearchUserAutocompleteComponent implements OnInit, AfterContentChec
public addOnBlur: boolean = true;
public separatorKeysCodes: number[] = [ENTER, COMMA];
public myControl: FormControl = new FormControl();
public globalLoginNameControl: FormControl = new FormControl();
public myControl: UntypedFormControl = new UntypedFormControl();
public globalLoginNameControl: UntypedFormControl = new UntypedFormControl();
public loginNames: string[] = [];
@Input() public users: Array<User.AsObject> = [];

View File

@ -1,6 +1,6 @@
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
import { Component } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { ActionKeysType } from 'src/app/modules/action-keys/action-keys.component';
import { InfoSectionType } from 'src/app/modules/info-section/info-section.component';
@ -22,7 +22,7 @@ export class ActionsComponent {
public flow!: Flow.AsObject;
public flowType: FlowType = FlowType.FLOW_TYPE_EXTERNAL_AUTHENTICATION;
public typeControl: FormControl = new FormControl(FlowType.FLOW_TYPE_EXTERNAL_AUTHENTICATION);
public typeControl: UntypedFormControl = new UntypedFormControl(FlowType.FLOW_TYPE_EXTERNAL_AUTHENTICATION);
public typesForSelection: FlowType[] = [FlowType.FLOW_TYPE_EXTERNAL_AUTHENTICATION];

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Action, FlowType, TriggerType } from 'src/app/proto/generated/zitadel/action_pb';
import { SetTriggerActionsRequest } from 'src/app/proto/generated/zitadel/management_pb';
@ -23,11 +23,11 @@ export class AddFlowDialogComponent {
TriggerType.TRIGGER_TYPE_PRE_CREATION,
];
public form!: FormGroup;
public form!: UntypedFormGroup;
constructor(
private toast: ToastService,
private mgmtService: ManagementService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
public dialogRef: MatDialogRef<AddFlowDialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
) {

View File

@ -1,7 +1,7 @@
import { animate, style, transition, trigger } from '@angular/animations';
import { Location } from '@angular/common';
import { Component } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';
import { MatSlideToggleChange } from '@angular/material/slide-toggle';
import { Router } from '@angular/router';
import { take } from 'rxjs/operators';
@ -49,9 +49,9 @@ function passwordConfirmValidator(c: AbstractControl): any {
],
})
export class OrgCreateComponent {
public orgForm!: FormGroup;
public userForm!: FormGroup;
public pwdForm!: FormGroup;
public orgForm!: UntypedFormGroup;
public userForm!: UntypedFormGroup;
public pwdForm!: UntypedFormGroup;
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en'];
@ -66,7 +66,7 @@ export class OrgCreateComponent {
private toast: ToastService,
private adminService: AdminService,
private _location: Location,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private mgmtService: ManagementService,
private authService: GrpcAuthService,
) {

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
@Component({
@ -11,7 +11,7 @@ export class AdditionalOriginsComponent implements OnInit, OnDestroy {
@Input() title: string = '';
@Input() canWrite: boolean = false;
@Input() public urisList: string[] = [];
@Input() public redirectControl: FormControl = new FormControl({ value: '', disabled: true });
@Input() public redirectControl: UntypedFormControl = new UntypedFormControl({ value: '', disabled: true });
@Output() public changedUris: EventEmitter<string[]> = new EventEmitter<string[]>();
@Input() public getValues: Observable<void> = new Observable();
public placeholder: string = '<scheme> "://" <hostname> [ ":" <port> ]';

View File

@ -2,7 +2,7 @@ import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
import { StepperSelectionEvent } from '@angular/cdk/stepper';
import { Location } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { Subject, Subscription } from 'rxjs';
@ -84,11 +84,11 @@ export class AppCreateComponent implements OnInit, OnDestroy {
];
// stepper
firstFormGroup!: FormGroup;
secondFormGroup!: FormGroup;
firstFormGroup!: UntypedFormGroup;
secondFormGroup!: UntypedFormGroup;
// devmode
public form!: FormGroup;
public form!: UntypedFormGroup;
public AppCreateType: any = AppCreateType;
public OIDCAppType: any = OIDCAppType;
@ -115,7 +115,7 @@ export class AppCreateComponent implements OnInit, OnDestroy {
private toast: ToastService,
private dialog: MatDialog,
private mgmtService: ManagementService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private _location: Location,
private breadcrumbService: BreadcrumbService,
) {
@ -247,8 +247,8 @@ export class AppCreateComponent implements OnInit, OnDestroy {
public setDevFormValidators(): void {
if (this.isDevOIDC) {
const grantTypesControl = new FormControl('', [Validators.required]);
const responseTypesControl = new FormControl('', [Validators.required]);
const grantTypesControl = new UntypedFormControl('', [Validators.required]);
const responseTypesControl = new UntypedFormControl('', [Validators.required]);
this.form.addControl('grantTypesList', grantTypesControl);
this.form.addControl('responseTypesList', responseTypesControl);

View File

@ -2,7 +2,7 @@ import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
import { Location } from '@angular/common';
import { HttpClient } from '@angular/common/http';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router';
@ -101,9 +101,9 @@ export class AppDetailComponent implements OnInit, OnDestroy {
public oidcTokenTypes: OIDCTokenType[] = [OIDCTokenType.OIDC_TOKEN_TYPE_BEARER, OIDCTokenType.OIDC_TOKEN_TYPE_JWT];
public AppState: any = AppState;
public oidcForm!: FormGroup;
public oidcTokenForm!: FormGroup;
public apiForm!: FormGroup;
public oidcForm!: UntypedFormGroup;
public oidcTokenForm!: UntypedFormGroup;
public apiForm!: UntypedFormGroup;
public redirectUrisList: string[] = [];
public postLogoutRedirectUrisList: string[] = [];
@ -132,7 +132,7 @@ export class AppDetailComponent implements OnInit, OnDestroy {
public translate: TranslateService,
private route: ActivatedRoute,
private toast: ToastService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private _location: Location,
private dialog: MatDialog,
private mgmtService: ManagementService,
@ -665,8 +665,8 @@ export class AppDetailComponent implements OnInit, OnDestroy {
return this.apiForm.get('authMethodType');
}
public get devMode(): FormControl | null {
return this.oidcForm.get('devMode') as FormControl;
public get devMode(): UntypedFormControl | null {
return this.oidcForm.get('devMode') as UntypedFormControl;
}
public get accessTokenType(): AbstractControl | null {

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
@Component({
@ -13,7 +13,7 @@ export class RedirectUrisComponent implements OnInit, OnDestroy {
@Input() canWrite: boolean = false;
@Input() isNative!: boolean;
@Input() public urisList: string[] = [];
@Input() public redirectControl: FormControl = new FormControl({ value: '', disabled: true });
@Input() public redirectControl: UntypedFormControl = new UntypedFormControl({ value: '', disabled: true });
@Output() public changedUris: EventEmitter<string[]> = new EventEmitter();
@Input() public getValues: Observable<void> = new Observable();

View File

@ -1,7 +1,7 @@
import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';
import { Location } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { BulkAddProjectRolesRequest } from 'src/app/proto/generated/zitadel/management_pb';
@ -30,11 +30,11 @@ export class ProjectRoleCreateComponent implements OnInit, OnDestroy {
private subscription: Subscription = new Subscription();
public projectId: string = '';
public formArray!: FormArray;
public formGroup: FormGroup = this.fb.group({
key: new FormControl('', [Validators.required]),
displayName: new FormControl(''),
group: new FormControl(''),
public formArray!: UntypedFormArray;
public formGroup: UntypedFormGroup = this.fb.group({
key: new UntypedFormControl('', [Validators.required]),
displayName: new UntypedFormControl(''),
group: new UntypedFormControl(''),
});
constructor(
@ -42,17 +42,17 @@ export class ProjectRoleCreateComponent implements OnInit, OnDestroy {
private route: ActivatedRoute,
private toast: ToastService,
private mgmtService: ManagementService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private _location: Location,
) {
this.formArray = new FormArray([this.formGroup]);
this.formArray = new UntypedFormArray([this.formGroup]);
}
public addEntry(): void {
const newGroup = this.fb.group({
key: new FormControl('', [Validators.required]),
displayName: new FormControl(''),
group: new FormControl(''),
key: new UntypedFormControl('', [Validators.required]),
displayName: new UntypedFormControl(''),
group: new UntypedFormControl(''),
});
this.formArray.push(newGroup);

View File

@ -1,6 +1,6 @@
import { Location } from '@angular/common';
import { Component, OnDestroy } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { AddMachineUserRequest } from 'src/app/proto/generated/zitadel/management_pb';
@ -15,7 +15,7 @@ import { ToastService } from 'src/app/services/toast.service';
})
export class UserCreateMachineComponent implements OnDestroy {
public user: AddMachineUserRequest.AsObject = new AddMachineUserRequest().toObject();
public userForm!: FormGroup;
public userForm!: UntypedFormGroup;
private sub: Subscription = new Subscription();
public loading: boolean = false;
@ -24,7 +24,7 @@ export class UserCreateMachineComponent implements OnDestroy {
private router: Router,
private toast: ToastService,
public userService: ManagementService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private _location: Location,
breadcrumbService: BreadcrumbService,
) {

View File

@ -1,6 +1,6 @@
import { Location } from '@angular/common';
import { ChangeDetectorRef, Component, OnDestroy, ViewChild } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import parsePhoneNumber from 'libphonenumber-js';
import { Subject } from 'rxjs';
@ -44,8 +44,8 @@ export class UserCreateComponent implements OnDestroy {
public user: AddHumanUserRequest.AsObject = new AddHumanUserRequest().toObject();
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en'];
public userForm!: FormGroup;
public pwdForm!: FormGroup;
public userForm!: UntypedFormGroup;
public pwdForm!: UntypedFormGroup;
public envSuffixLabel: string = '';
private destroyed$: Subject<void> = new Subject();
@ -61,7 +61,7 @@ export class UserCreateComponent implements OnDestroy {
constructor(
private router: Router,
private toast: ToastService,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private mgmtService: ManagementService,
private changeDetRef: ChangeDetectorRef,
private _location: Location,

View File

@ -1,5 +1,5 @@
import { Component, Inject } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
import { UntypedFormControl, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { parsePhoneNumber } from 'libphonenumber-js';
@ -17,7 +17,7 @@ export class EditDialogComponent {
public isPhone: boolean = false;
public isVerified: boolean = false;
public phoneCountry: string = 'CH';
public valueControl: FormControl = new FormControl(['', [Validators.required]]);
public valueControl: UntypedFormControl = new UntypedFormControl(['', [Validators.required]]);
public EditDialogType: any = EditDialogType;
constructor(public dialogRef: MatDialogRef<EditDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {
this.valueControl.setValue(data.value);

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Subscription } from 'rxjs';
import { Human, Machine } from 'src/app/proto/generated/zitadel/user_pb';
@ -14,11 +14,11 @@ export class DetailFormMachineComponent implements OnInit, OnDestroy {
@Input() public disabled: boolean = false;
@Output() public submitData: EventEmitter<any> = new EventEmitter<any>();
public machineForm!: FormGroup;
public machineForm!: UntypedFormGroup;
private sub: Subscription = new Subscription();
constructor(private fb: FormBuilder) {
constructor(private fb: UntypedFormBuilder) {
this.machineForm = this.fb.group({
userName: [{ value: '', disabled: true }, [
Validators.required,

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { Subscription } from 'rxjs';
import { Gender, Human, Profile } from 'src/app/proto/generated/zitadel/user_pb';
@ -24,11 +24,11 @@ export class DetailFormComponent implements OnDestroy, OnChanges {
@Output() public changeUsernameClicked: EventEmitter<void> = new EventEmitter();
@Output() public avatarChanged: EventEmitter<void> = new EventEmitter();
public profileForm!: FormGroup;
public profileForm!: UntypedFormGroup;
private sub: Subscription = new Subscription();
constructor(private fb: FormBuilder, private dialog: MatDialog) {
constructor(private fb: UntypedFormBuilder, private dialog: MatDialog) {
this.profileForm = this.fb.group({
userName: [{ value: '', disabled: true }, [Validators.required]],
firstName: [{ value: '', disabled: this.disabled }, Validators.required],

View File

@ -1,5 +1,5 @@
import { Component, OnDestroy } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { ActivatedRoute } from '@angular/router';
import { Subscription, take } from 'rxjs';
import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from 'src/app/pages/validators';
@ -33,13 +33,13 @@ export class PasswordComponent implements OnDestroy {
userId: string = '';
public policy!: PasswordComplexityPolicy.AsObject;
public passwordForm!: FormGroup;
public passwordForm!: UntypedFormGroup;
private formSub: Subscription = new Subscription();
constructor(
activatedRoute: ActivatedRoute,
private fb: FormBuilder,
private fb: UntypedFormBuilder,
private authService: GrpcAuthService,
private mgmtUserService: ManagementService,
private toast: ToastService,

View File

@ -1,6 +1,6 @@
import { FormControl } from '@angular/forms';
import { UntypedFormControl } from '@angular/forms';
export function symbolValidator(c: FormControl): any {
export function symbolValidator(c: UntypedFormControl): any {
const REGEXP: RegExp = /[^a-z0-9]/gi;
return REGEXP.test(c.value) ? null : {
@ -11,7 +11,7 @@ export function symbolValidator(c: FormControl): any {
};
}
export function numberValidator(c: FormControl): any {
export function numberValidator(c: UntypedFormControl): any {
const REGEXP = /[0-9]/g;
return REGEXP.test(c.value) ? null : {
@ -22,7 +22,7 @@ export function numberValidator(c: FormControl): any {
};
}
export function upperCaseValidator(c: FormControl): any {
export function upperCaseValidator(c: UntypedFormControl): any {
const REGEXP = /[A-Z]/g;
return REGEXP.test(c.value) ? null : {
@ -33,7 +33,7 @@ export function upperCaseValidator(c: FormControl): any {
};
}
export function lowerCaseValidator(c: FormControl): any {
export function lowerCaseValidator(c: UntypedFormControl): any {
const REGEXP = /[a-z]/g;
return REGEXP.test(c.value) ? null : {

View File

@ -14,7 +14,7 @@
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"target": "es2020",
"module": "es2020",
"lib": ["es2020", "dom"]
},