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

View File

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

View File

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

View File

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

View File

@ -33,9 +33,7 @@ class CnslFormFieldBase {
selector: 'cnsl-form-field', selector: 'cnsl-form-field',
templateUrl: './form-field.component.html', templateUrl: './form-field.component.html',
styleUrls: ['./form-field.component.scss'], styleUrls: ['./form-field.component.scss'],
providers: [ providers: [{ provide: CNSL_FORM_FIELD, useExisting: CnslFormFieldComponent }],
{ provide: CNSL_FORM_FIELD, useExisting: CnslFormFieldComponent },
],
host: { host: {
'[class.ng-untouched]': '_shouldForward("untouched")', '[class.ng-untouched]': '_shouldForward("untouched")',
'[class.ng-touched]': '_shouldForward("touched")', '[class.ng-touched]': '_shouldForward("touched")',
@ -76,18 +74,20 @@ export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestr
@HostListener('blur', ['false']) @HostListener('blur', ['false'])
_focusChanged(isFocused: boolean): void { _focusChanged(isFocused: boolean): void {
if (isFocused !== this.focused && (!isFocused)) { if (isFocused !== this.focused && !isFocused) {
this.focused = isFocused; this.focused = isFocused;
this.stateChanges.next(); this.stateChanges.next();
} }
} }
constructor(public _elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef, constructor(
public _elementRef: ElementRef,
private _changeDetectorRef: ChangeDetectorRef,
@Inject(ElementRef) @Inject(ElementRef)
// Use `ElementRef` here so Angular has something to inject. _labelOptions: // Use `ElementRef` here so Angular has something to inject.
_labelOptions: any) { any,
) {
super(_elementRef); super(_elementRef);
} }
public ngAfterViewInit(): void { public ngAfterViewInit(): void {
@ -135,13 +135,12 @@ export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestr
if (this._control) { if (this._control) {
const ids: string[] = []; const ids: string[] = [];
if (this._control.userAriaDescribedBy && if (this._control.userAriaDescribedBy && typeof this._control.userAriaDescribedBy === 'string') {
typeof this._control.userAriaDescribedBy === 'string') {
ids.push(...this._control.userAriaDescribedBy.split(' ')); ids.push(...this._control.userAriaDescribedBy.split(' '));
} }
if (this._errorChildren) { if (this._errorChildren) {
ids.push(...this._errorChildren.map(error => error.id)); ids.push(...this._errorChildren.map((error) => error.id));
} }
this._control.setDescribedByIds(ids); 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. */ /** Determines whether a class from the NgControl should be forwarded to the host element. */
_shouldForward(prop: keyof NgControl): boolean { _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]; return ngControl && ngControl[prop];
} }
/** Determines whether to display hints or errors. */ /** Determines whether to display hints or errors. */
_getDisplayedMessages(): 'error' | 'hint' { _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 { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Component, Injector, OnDestroy, OnInit, Type } from '@angular/core'; 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 { MatChipInputEvent } from '@angular/material/chips';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
@ -31,8 +31,8 @@ export class IdpCreateComponent implements OnInit, OnDestroy {
private subscription?: Subscription; private subscription?: Subscription;
public projectId: string = ''; public projectId: string = '';
public oidcFormGroup!: FormGroup; public oidcFormGroup!: UntypedFormGroup;
public jwtFormGroup!: FormGroup; public jwtFormGroup!: UntypedFormGroup;
public createSteps: number = 2; public createSteps: number = 2;
public currentCreateStep: number = 1; public currentCreateStep: number = 1;
@ -53,25 +53,25 @@ export class IdpCreateComponent implements OnInit, OnDestroy {
private _location: Location, private _location: Location,
breadcrumbService: BreadcrumbService, breadcrumbService: BreadcrumbService,
) { ) {
this.oidcFormGroup = new FormGroup({ this.oidcFormGroup = new UntypedFormGroup({
name: new FormControl('', [Validators.required]), name: new UntypedFormControl('', [Validators.required]),
clientId: new FormControl('', [Validators.required]), clientId: new UntypedFormControl('', [Validators.required]),
clientSecret: new FormControl('', [Validators.required]), clientSecret: new UntypedFormControl('', [Validators.required]),
issuer: new FormControl('', [Validators.required]), issuer: new UntypedFormControl('', [Validators.required]),
scopesList: new FormControl(['openid', 'profile', 'email'], []), scopesList: new UntypedFormControl(['openid', 'profile', 'email'], []),
idpDisplayNameMapping: new FormControl(0), idpDisplayNameMapping: new UntypedFormControl(0),
usernameMapping: new FormControl(0), usernameMapping: new UntypedFormControl(0),
autoRegister: new FormControl(false), autoRegister: new UntypedFormControl(false),
}); });
this.jwtFormGroup = new FormGroup({ this.jwtFormGroup = new UntypedFormGroup({
jwtName: new FormControl('', [Validators.required]), jwtName: new UntypedFormControl('', [Validators.required]),
jwtHeaderName: new FormControl('', [Validators.required]), jwtHeaderName: new UntypedFormControl('', [Validators.required]),
jwtIssuer: new FormControl('', [Validators.required]), jwtIssuer: new UntypedFormControl('', [Validators.required]),
jwtEndpoint: new FormControl('', [Validators.required]), jwtEndpoint: new UntypedFormControl('', [Validators.required]),
jwtKeysEndpoint: new FormControl('', [Validators.required]), jwtKeysEndpoint: new UntypedFormControl('', [Validators.required]),
jwtStylingType: new FormControl(0), jwtStylingType: new UntypedFormControl(0),
jwtAutoRegister: new FormControl(false), jwtAutoRegister: new UntypedFormControl(false),
}); });
this.route.data.pipe(take(1)).subscribe((data) => { this.route.data.pipe(take(1)).subscribe((data) => {

View File

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

View File

@ -1,11 +1,11 @@
import { Injectable } from '@angular/core'; 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. */ /** Provider that defines how form controls behave with regards to displaying error messages. */
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class ErrorStateMatcher { 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))); 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. */ /** Error state matcher that matches when a control is invalid and dirty. */
@Injectable() @Injectable()
export class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher { 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))); return !!(control && control.invalid && (control.dirty || (form && form.submitted)));
} }
} }

View File

@ -28,11 +28,17 @@ let nextUniqueId = 0;
const _MatInputBase = mixinErrorState( const _MatInputBase = mixinErrorState(
class { class {
readonly stateChanges = new Subject<void>();
constructor( constructor(
public _defaultErrorStateMatcher: ErrorStateMatcher, public _defaultErrorStateMatcher: ErrorStateMatcher,
public _parentForm: NgForm, public _parentForm: NgForm,
public _parentFormGroup: FormGroupDirective, public _parentFormGroup: FormGroupDirective,
/** @docs-private */ /**
* Form control bound to the component.
* Implemented as part of `MatFormFieldControl`.
* @docs-private
*/
public ngControl: NgControl, public ngControl: NgControl,
) {} ) {}
}, },
@ -98,7 +104,7 @@ export class InputDirective
* Implemented as part of MatFormFieldControl. * Implemented as part of MatFormFieldControl.
* @docs-private * @docs-private
*/ */
readonly stateChanges: Subject<void> = new Subject<void>(); override readonly stateChanges: Subject<void> = new Subject<void>();
/** /**
* Implemented as part of MatFormFieldControl. * 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 { BreakpointObserver } from '@angular/cdk/layout';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core'; 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 { Router } from '@angular/router';
import { BehaviorSubject, map, Observable, Subject, take } from 'rxjs'; import { BehaviorSubject, map, Observable, Subject, take } from 'rxjs';
import { Org } from 'src/app/proto/generated/zitadel/org_pb'; import { Org } from 'src/app/proto/generated/zitadel/org_pb';
@ -81,7 +81,7 @@ export class NavComponent implements OnDestroy {
); );
@Input() public org!: Org.AsObject; @Input() public org!: Org.AsObject;
public filterControl: FormControl = new FormControl(''); public filterControl: UntypedFormControl = new UntypedFormControl('');
public orgLoading$: BehaviorSubject<any> = new BehaviorSubject(false); public orgLoading$: BehaviorSubject<any> = new BehaviorSubject(false);
public showAccount: boolean = false; public showAccount: boolean = false;
public hideAdminWarn: boolean = true; public hideAdminWarn: boolean = true;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core'; 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 { Duration } from 'google-protobuf/google/protobuf/duration_pb';
import { take } from 'rxjs'; import { take } from 'rxjs';
import { SetDefaultLanguageResponse, UpdateOIDCSettingsRequest } from 'src/app/proto/generated/zitadel/admin_pb'; 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 oidcSettings!: OIDCSettings.AsObject;
public loading: boolean = false; public loading: boolean = false;
public form!: FormGroup; public form!: UntypedFormGroup;
constructor( constructor(
private service: AdminService, private service: AdminService,
private fb: FormBuilder, private fb: UntypedFormBuilder,
private toast: ToastService, private toast: ToastService,
private authService: GrpcAuthService, private authService: GrpcAuthService,
) { ) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; 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'; import { Observable, Subscription } from 'rxjs';
@Component({ @Component({
@ -11,7 +11,7 @@ export class AdditionalOriginsComponent implements OnInit, OnDestroy {
@Input() title: string = ''; @Input() title: string = '';
@Input() canWrite: boolean = false; @Input() canWrite: boolean = false;
@Input() public urisList: string[] = []; @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[]>(); @Output() public changedUris: EventEmitter<string[]> = new EventEmitter<string[]>();
@Input() public getValues: Observable<void> = new Observable(); @Input() public getValues: Observable<void> = new Observable();
public placeholder: string = '<scheme> "://" <hostname> [ ":" <port> ]'; 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 { StepperSelectionEvent } from '@angular/cdk/stepper';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core'; 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 { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { Subject, Subscription } from 'rxjs'; import { Subject, Subscription } from 'rxjs';
@ -84,11 +84,11 @@ export class AppCreateComponent implements OnInit, OnDestroy {
]; ];
// stepper // stepper
firstFormGroup!: FormGroup; firstFormGroup!: UntypedFormGroup;
secondFormGroup!: FormGroup; secondFormGroup!: UntypedFormGroup;
// devmode // devmode
public form!: FormGroup; public form!: UntypedFormGroup;
public AppCreateType: any = AppCreateType; public AppCreateType: any = AppCreateType;
public OIDCAppType: any = OIDCAppType; public OIDCAppType: any = OIDCAppType;
@ -115,7 +115,7 @@ export class AppCreateComponent implements OnInit, OnDestroy {
private toast: ToastService, private toast: ToastService,
private dialog: MatDialog, private dialog: MatDialog,
private mgmtService: ManagementService, private mgmtService: ManagementService,
private fb: FormBuilder, private fb: UntypedFormBuilder,
private _location: Location, private _location: Location,
private breadcrumbService: BreadcrumbService, private breadcrumbService: BreadcrumbService,
) { ) {
@ -247,8 +247,8 @@ export class AppCreateComponent implements OnInit, OnDestroy {
public setDevFormValidators(): void { public setDevFormValidators(): void {
if (this.isDevOIDC) { if (this.isDevOIDC) {
const grantTypesControl = new FormControl('', [Validators.required]); const grantTypesControl = new UntypedFormControl('', [Validators.required]);
const responseTypesControl = new FormControl('', [Validators.required]); const responseTypesControl = new UntypedFormControl('', [Validators.required]);
this.form.addControl('grantTypesList', grantTypesControl); this.form.addControl('grantTypesList', grantTypesControl);
this.form.addControl('responseTypesList', responseTypesControl); 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 { Location } from '@angular/common';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Component, OnDestroy, OnInit } from '@angular/core'; 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 { MatCheckboxChange } from '@angular/material/checkbox';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router'; 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 oidcTokenTypes: OIDCTokenType[] = [OIDCTokenType.OIDC_TOKEN_TYPE_BEARER, OIDCTokenType.OIDC_TOKEN_TYPE_JWT];
public AppState: any = AppState; public AppState: any = AppState;
public oidcForm!: FormGroup; public oidcForm!: UntypedFormGroup;
public oidcTokenForm!: FormGroup; public oidcTokenForm!: UntypedFormGroup;
public apiForm!: FormGroup; public apiForm!: UntypedFormGroup;
public redirectUrisList: string[] = []; public redirectUrisList: string[] = [];
public postLogoutRedirectUrisList: string[] = []; public postLogoutRedirectUrisList: string[] = [];
@ -132,7 +132,7 @@ export class AppDetailComponent implements OnInit, OnDestroy {
public translate: TranslateService, public translate: TranslateService,
private route: ActivatedRoute, private route: ActivatedRoute,
private toast: ToastService, private toast: ToastService,
private fb: FormBuilder, private fb: UntypedFormBuilder,
private _location: Location, private _location: Location,
private dialog: MatDialog, private dialog: MatDialog,
private mgmtService: ManagementService, private mgmtService: ManagementService,
@ -665,8 +665,8 @@ export class AppDetailComponent implements OnInit, OnDestroy {
return this.apiForm.get('authMethodType'); return this.apiForm.get('authMethodType');
} }
public get devMode(): FormControl | null { public get devMode(): UntypedFormControl | null {
return this.oidcForm.get('devMode') as FormControl; return this.oidcForm.get('devMode') as UntypedFormControl;
} }
public get accessTokenType(): AbstractControl | null { public get accessTokenType(): AbstractControl | null {

View File

@ -1,5 +1,5 @@
import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; 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'; import { Observable, Subscription } from 'rxjs';
@Component({ @Component({
@ -13,7 +13,7 @@ export class RedirectUrisComponent implements OnInit, OnDestroy {
@Input() canWrite: boolean = false; @Input() canWrite: boolean = false;
@Input() isNative!: boolean; @Input() isNative!: boolean;
@Input() public urisList: string[] = []; @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(); @Output() public changedUris: EventEmitter<string[]> = new EventEmitter();
@Input() public getValues: Observable<void> = new Observable(); @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 { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core'; 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 { ActivatedRoute, Params, Router } from '@angular/router';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { BulkAddProjectRolesRequest } from 'src/app/proto/generated/zitadel/management_pb'; 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(); private subscription: Subscription = new Subscription();
public projectId: string = ''; public projectId: string = '';
public formArray!: FormArray; public formArray!: UntypedFormArray;
public formGroup: FormGroup = this.fb.group({ public formGroup: UntypedFormGroup = this.fb.group({
key: new FormControl('', [Validators.required]), key: new UntypedFormControl('', [Validators.required]),
displayName: new FormControl(''), displayName: new UntypedFormControl(''),
group: new FormControl(''), group: new UntypedFormControl(''),
}); });
constructor( constructor(
@ -42,17 +42,17 @@ export class ProjectRoleCreateComponent implements OnInit, OnDestroy {
private route: ActivatedRoute, private route: ActivatedRoute,
private toast: ToastService, private toast: ToastService,
private mgmtService: ManagementService, private mgmtService: ManagementService,
private fb: FormBuilder, private fb: UntypedFormBuilder,
private _location: Location, private _location: Location,
) { ) {
this.formArray = new FormArray([this.formGroup]); this.formArray = new UntypedFormArray([this.formGroup]);
} }
public addEntry(): void { public addEntry(): void {
const newGroup = this.fb.group({ const newGroup = this.fb.group({
key: new FormControl('', [Validators.required]), key: new UntypedFormControl('', [Validators.required]),
displayName: new FormControl(''), displayName: new UntypedFormControl(''),
group: new FormControl(''), group: new UntypedFormControl(''),
}); });
this.formArray.push(newGroup); this.formArray.push(newGroup);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
import { Component, OnDestroy } from '@angular/core'; 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 { ActivatedRoute } from '@angular/router';
import { Subscription, take } from 'rxjs'; import { Subscription, take } from 'rxjs';
import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from 'src/app/pages/validators'; import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from 'src/app/pages/validators';
@ -33,13 +33,13 @@ export class PasswordComponent implements OnDestroy {
userId: string = ''; userId: string = '';
public policy!: PasswordComplexityPolicy.AsObject; public policy!: PasswordComplexityPolicy.AsObject;
public passwordForm!: FormGroup; public passwordForm!: UntypedFormGroup;
private formSub: Subscription = new Subscription(); private formSub: Subscription = new Subscription();
constructor( constructor(
activatedRoute: ActivatedRoute, activatedRoute: ActivatedRoute,
private fb: FormBuilder, private fb: UntypedFormBuilder,
private authService: GrpcAuthService, private authService: GrpcAuthService,
private mgmtUserService: ManagementService, private mgmtUserService: ManagementService,
private toast: ToastService, 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; const REGEXP: RegExp = /[^a-z0-9]/gi;
return REGEXP.test(c.value) ? null : { 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; const REGEXP = /[0-9]/g;
return REGEXP.test(c.value) ? null : { 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; const REGEXP = /[A-Z]/g;
return REGEXP.test(c.value) ? null : { 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; const REGEXP = /[a-z]/g;
return REGEXP.test(c.value) ? null : { return REGEXP.test(c.value) ? null : {

View File

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