mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
# Which Problems Are Solved # How the Problems Are Solved # Additional Changes # Additional Context - Closes #10690
This commit is contained in:
+79
-15
@@ -15,11 +15,13 @@
|
|||||||
"prefix": "cnsl",
|
"prefix": "cnsl",
|
||||||
"architect": {
|
"architect": {
|
||||||
"build": {
|
"build": {
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
"builder": "@angular/build:application",
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "dist/console",
|
"outputPath": {
|
||||||
|
"browser": "",
|
||||||
|
"base": "dist/console"
|
||||||
|
},
|
||||||
"index": "src/index.html",
|
"index": "src/index.html",
|
||||||
"main": "src/main.ts",
|
|
||||||
"polyfills": ["zone.js"],
|
"polyfills": ["zone.js"],
|
||||||
"tsConfig": "tsconfig.app.json",
|
"tsConfig": "tsconfig.app.json",
|
||||||
"inlineStyleLanguage": "scss",
|
"inlineStyleLanguage": "scss",
|
||||||
@@ -32,7 +34,13 @@
|
|||||||
"styles": ["src/styles.scss"],
|
"styles": ["src/styles.scss"],
|
||||||
"scripts": ["./node_modules/tinycolor2/dist/tinycolor-min.js"],
|
"scripts": ["./node_modules/tinycolor2/dist/tinycolor-min.js"],
|
||||||
"stylePreprocessorOptions": {
|
"stylePreprocessorOptions": {
|
||||||
"includePaths": ["node_modules"]
|
"sass": {
|
||||||
|
"silenceDeprecations": ["import", "mixed-decls"]
|
||||||
|
},
|
||||||
|
"includePaths": [
|
||||||
|
"node_modules",
|
||||||
|
"."
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"allowedCommonJsDependencies": [
|
"allowedCommonJsDependencies": [
|
||||||
"opentype.js",
|
"opentype.js",
|
||||||
@@ -46,7 +54,8 @@
|
|||||||
"file-saver",
|
"file-saver",
|
||||||
"qrcode",
|
"qrcode",
|
||||||
"codemirror"
|
"codemirror"
|
||||||
]
|
],
|
||||||
|
"browser": "src/main.ts"
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
@@ -74,9 +83,7 @@
|
|||||||
"outputHashing": "all"
|
"outputHashing": "all"
|
||||||
},
|
},
|
||||||
"development": {
|
"development": {
|
||||||
"buildOptimizer": false,
|
|
||||||
"optimization": false,
|
"optimization": false,
|
||||||
"vendorChunk": true,
|
|
||||||
"extractLicenses": false,
|
"extractLicenses": false,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"namedChunks": true
|
"namedChunks": true
|
||||||
@@ -85,26 +92,56 @@
|
|||||||
"defaultConfiguration": "development"
|
"defaultConfiguration": "development"
|
||||||
},
|
},
|
||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular/build:dev-server",
|
||||||
|
"options": {
|
||||||
|
"prebundle": {
|
||||||
|
"exclude": [
|
||||||
|
"google-protobuf",
|
||||||
|
"google-protobuf/google/protobuf/timestamp_pb.js",
|
||||||
|
"google-protobuf/google/protobuf/descriptor_pb.js",
|
||||||
|
"google-protobuf/google/protobuf/struct_pb.js",
|
||||||
|
"google-protobuf/google/protobuf/duration_pb.js",
|
||||||
|
"i18n-iso-countries/langs/de.json",
|
||||||
|
"i18n-iso-countries/langs/en.json",
|
||||||
|
"i18n-iso-countries/langs/es.json",
|
||||||
|
"i18n-iso-countries/langs/fr.json",
|
||||||
|
"i18n-iso-countries/langs/id.json",
|
||||||
|
"i18n-iso-countries/langs/it.json",
|
||||||
|
"i18n-iso-countries/langs/ja.json",
|
||||||
|
"i18n-iso-countries/langs/pl.json",
|
||||||
|
"i18n-iso-countries/langs/zh.json",
|
||||||
|
"i18n-iso-countries/langs/bg.json",
|
||||||
|
"i18n-iso-countries/langs/pt.json",
|
||||||
|
"i18n-iso-countries/langs/mk.json",
|
||||||
|
"i18n-iso-countries/langs/ru.json",
|
||||||
|
"i18n-iso-countries/langs/cs.json",
|
||||||
|
"i18n-iso-countries/langs/nl.json",
|
||||||
|
"i18n-iso-countries/langs/sv.json",
|
||||||
|
"i18n-iso-countries/langs/hu.json",
|
||||||
|
"i18n-iso-countries/langs/ko.json",
|
||||||
|
"i18n-iso-countries/langs/ro.json",
|
||||||
|
"i18n-iso-countries/langs/tr.json"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
"browserTarget": "console:build:production"
|
"buildTarget": "console:build:production"
|
||||||
},
|
},
|
||||||
"development": {
|
"development": {
|
||||||
"browserTarget": "console:build:development"
|
"buildTarget": "console:build:development"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultConfiguration": "development"
|
"defaultConfiguration": "development"
|
||||||
},
|
},
|
||||||
"extract-i18n": {
|
"extract-i18n": {
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
"builder": "@angular/build:extract-i18n",
|
||||||
"options": {
|
"options": {
|
||||||
"browserTarget": "console:build"
|
"buildTarget": "console:build"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"builder": "@angular-devkit/build-angular:karma",
|
"builder": "@angular/build:karma",
|
||||||
"options": {
|
"options": {
|
||||||
"polyfills": ["zone.js", "zone.js/testing"],
|
"polyfills": ["zone.js", "zone.js/testing"],
|
||||||
"tsConfig": "tsconfig.spec.json",
|
"tsConfig": "tsconfig.spec.json",
|
||||||
@@ -125,6 +162,33 @@
|
|||||||
},
|
},
|
||||||
"cli": {
|
"cli": {
|
||||||
"analytics": false,
|
"analytics": false,
|
||||||
"schematicCollections": ["@angular-eslint/schematics"]
|
"schematicCollections": ["@angular-eslint/schematics"],
|
||||||
|
"packageManager": "pnpm"
|
||||||
|
},
|
||||||
|
"schematics": {
|
||||||
|
"@schematics/angular:component": {
|
||||||
|
"type": "component"
|
||||||
|
},
|
||||||
|
"@schematics/angular:directive": {
|
||||||
|
"type": "directive"
|
||||||
|
},
|
||||||
|
"@schematics/angular:service": {
|
||||||
|
"type": "service"
|
||||||
|
},
|
||||||
|
"@schematics/angular:guard": {
|
||||||
|
"typeSeparator": "."
|
||||||
|
},
|
||||||
|
"@schematics/angular:interceptor": {
|
||||||
|
"typeSeparator": "."
|
||||||
|
},
|
||||||
|
"@schematics/angular:module": {
|
||||||
|
"typeSeparator": "."
|
||||||
|
},
|
||||||
|
"@schematics/angular:pipe": {
|
||||||
|
"typeSeparator": "."
|
||||||
|
},
|
||||||
|
"@schematics/angular:resolver": {
|
||||||
|
"typeSeparator": "."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-28
@@ -15,37 +15,38 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^16.2.12",
|
"@angular/animations": "^20.3.1",
|
||||||
"@angular/cdk": "^16.2.14",
|
"@angular/cdk": "^20.2.4",
|
||||||
"@angular/common": "^16.2.12",
|
"@angular/common": "^20.3.1",
|
||||||
"@angular/compiler": "^16.2.12",
|
"@angular/compiler": "^20.3.1",
|
||||||
"@angular/core": "^16.2.12",
|
"@angular/core": "^20.3.1",
|
||||||
"@angular/forms": "^16.2.12",
|
"@angular/forms": "^20.3.1",
|
||||||
"@angular/material": "^16.2.14",
|
"@angular/material": "^20.2.4",
|
||||||
"@angular/material-moment-adapter": "^16.2.14",
|
"@angular/material-moment-adapter": "^20.2.4",
|
||||||
"@angular/platform-browser": "^16.2.12",
|
"@angular/platform-browser": "^20.3.1",
|
||||||
"@angular/platform-browser-dynamic": "^16.2.12",
|
"@angular/platform-browser-dynamic": "^20.3.1",
|
||||||
"@angular/router": "^16.2.12",
|
"@angular/router": "^20.3.1",
|
||||||
"@angular/service-worker": "^16.2.12",
|
"@angular/service-worker": "^20.3.1",
|
||||||
"@bufbuild/protobuf": "2.6.3",
|
"@bufbuild/protobuf": "2.6.3",
|
||||||
"@connectrpc/connect": "~2.0.0",
|
"@connectrpc/connect": "~2.0.0",
|
||||||
"@connectrpc/connect-web": "~2.0.0",
|
"@connectrpc/connect-web": "~2.0.0",
|
||||||
"@ctrl/ngx-codemirror": "^6.1.0",
|
"@ctrl/ngx-codemirror": "^6.1.0",
|
||||||
"@fortawesome/angular-fontawesome": "^0.13.0",
|
"@fortawesome/angular-fontawesome": "^3.0.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
||||||
"@ng-icons/core": "^25.0.0",
|
"@netlify/build-info": "^10.0.7",
|
||||||
"@ng-icons/heroicons": "^25.0.0",
|
"@ng-icons/core": "^32.1.0",
|
||||||
"@ngx-translate/core": "^15.0.0",
|
"@ng-icons/heroicons": "^32.1.0",
|
||||||
|
"@ngx-translate/core": "^17.0.0",
|
||||||
"@tanstack/angular-query-experimental": "^5.85.6",
|
"@tanstack/angular-query-experimental": "^5.85.6",
|
||||||
"@zitadel/client": "workspace:*",
|
"@zitadel/client": "workspace:*",
|
||||||
"@zitadel/proto": "workspace:*",
|
"@zitadel/proto": "workspace:*",
|
||||||
"angular-oauth2-oidc": "^15.0.1",
|
"angular-oauth2-oidc": "^20.0.2",
|
||||||
"angularx-qrcode": "^16.0.2",
|
"angularx-qrcode": "^20.0.0",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"codemirror": "^5.65.19",
|
"codemirror": "^5.65.19",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"flag-icons": "^7.3.2",
|
"flag-icons": "^7.5.0",
|
||||||
"google-protobuf": "~3.21.4",
|
"google-protobuf": "~3.21.4",
|
||||||
"grpc-web": "~1.5.0",
|
"grpc-web": "~1.5.0",
|
||||||
"i18n-iso-countries": "^7.14.0",
|
"i18n-iso-countries": "^7.14.0",
|
||||||
@@ -59,20 +60,19 @@
|
|||||||
"tinycolor2": "^1.6.0",
|
"tinycolor2": "^1.6.0",
|
||||||
"tslib": "^2.7.0",
|
"tslib": "^2.7.0",
|
||||||
"uuid": "^10.0.0",
|
"uuid": "^10.0.0",
|
||||||
"zone.js": "~0.13.3"
|
"zone.js": "~0.15.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^16.2.2",
|
|
||||||
"@angular-eslint/builder": "18.3.0",
|
"@angular-eslint/builder": "18.3.0",
|
||||||
"@angular-eslint/eslint-plugin": "18.0.0",
|
"@angular-eslint/eslint-plugin": "18.0.0",
|
||||||
"@angular-eslint/eslint-plugin-template": "18.0.0",
|
"@angular-eslint/eslint-plugin-template": "18.0.0",
|
||||||
"@angular-eslint/schematics": "16.2.0",
|
"@angular-eslint/schematics": "19.8.1",
|
||||||
"@angular-eslint/template-parser": "18.3.0",
|
"@angular-eslint/template-parser": "19.8.1",
|
||||||
"@angular/cli": "^16.2.15",
|
"@angular/build": "^20.3.2",
|
||||||
"@angular/compiler-cli": "^16.2.5",
|
"@angular/cli": "^20.3.2",
|
||||||
"@angular/language-service": "^18.2.4",
|
"@angular/compiler-cli": "^20.3.1",
|
||||||
|
"@angular/language-service": "^20.3.1",
|
||||||
"@bufbuild/buf": "~1.55.1",
|
"@bufbuild/buf": "~1.55.1",
|
||||||
"@netlify/framework-info": "^9.8.13",
|
|
||||||
"@types/file-saver": "^2.0.7",
|
"@types/file-saver": "^2.0.7",
|
||||||
"@types/google-protobuf": "~3.15.12",
|
"@types/google-protobuf": "~3.15.12",
|
||||||
"@types/jasmine": "~5.1.4",
|
"@types/jasmine": "~5.1.4",
|
||||||
@@ -95,6 +95,6 @@
|
|||||||
"karma-jasmine-html-reporter": "^2.1.0",
|
"karma-jasmine-html-reporter": "^2.1.0",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"prettier-plugin-organize-imports": "^4.1.0",
|
"prettier-plugin-organize-imports": "^4.1.0",
|
||||||
"typescript": "5.1"
|
"typescript": "5.9.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,17 @@
|
|||||||
import { BreakpointObserver } from '@angular/cdk/layout';
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
||||||
import { OverlayContainer } from '@angular/cdk/overlay';
|
import { OverlayContainer } from '@angular/cdk/overlay';
|
||||||
import { DOCUMENT, ViewportScroller } from '@angular/common';
|
import { ViewportScroller } from '@angular/common';
|
||||||
import { Component, DestroyRef, effect, HostBinding, HostListener, Inject, OnDestroy, ViewChild } from '@angular/core';
|
import {
|
||||||
|
Component,
|
||||||
|
DestroyRef,
|
||||||
|
effect,
|
||||||
|
HostBinding,
|
||||||
|
HostListener,
|
||||||
|
Inject,
|
||||||
|
OnDestroy,
|
||||||
|
ViewChild,
|
||||||
|
DOCUMENT,
|
||||||
|
} from '@angular/core';
|
||||||
import { MatIconRegistry } from '@angular/material/icon';
|
import { MatIconRegistry } from '@angular/material/icon';
|
||||||
import { MatDrawer } from '@angular/material/sidenav';
|
import { MatDrawer } from '@angular/material/sidenav';
|
||||||
import { DomSanitizer } from '@angular/platform-browser';
|
import { DomSanitizer } from '@angular/platform-browser';
|
||||||
@@ -30,6 +40,7 @@ import { NewAuthService } from './services/new-auth.service';
|
|||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrls: ['./app.component.scss'],
|
styleUrls: ['./app.component.scss'],
|
||||||
animations: [toolbarAnimation, ...navAnimations, accountCard, routeAnimations, adminLineAnimation],
|
animations: [toolbarAnimation, ...navAnimations, accountCard, routeAnimations, adminLineAnimation],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent {
|
||||||
@ViewChild('drawer') public drawer!: MatDrawer;
|
@ViewChild('drawer') public drawer!: MatDrawer;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CommonModule, registerLocaleData } from '@angular/common';
|
import { CommonModule, registerLocaleData } from '@angular/common';
|
||||||
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
||||||
import localeBg from '@angular/common/locales/bg';
|
import localeBg from '@angular/common/locales/bg';
|
||||||
import localeDe from '@angular/common/locales/de';
|
import localeDe from '@angular/common/locales/de';
|
||||||
import localeCs from '@angular/common/locales/cs';
|
import localeCs from '@angular/common/locales/cs';
|
||||||
@@ -20,7 +20,7 @@ import localeHu from '@angular/common/locales/hu';
|
|||||||
import localeKo from '@angular/common/locales/ko';
|
import localeKo from '@angular/common/locales/ko';
|
||||||
import localeRo from '@angular/common/locales/ro';
|
import localeRo from '@angular/common/locales/ro';
|
||||||
import localeTr from '@angular/common/locales/tr';
|
import localeTr from '@angular/common/locales/tr';
|
||||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
import { NgModule, inject, provideAppInitializer } from '@angular/core';
|
||||||
import { MatNativeDateModule } from '@angular/material/core';
|
import { MatNativeDateModule } from '@angular/material/core';
|
||||||
import { MatDialogModule } from '@angular/material/dialog';
|
import { MatDialogModule } from '@angular/material/dialog';
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
@@ -147,8 +147,11 @@ const authConfig: AuthConfig = {
|
|||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [AppComponent],
|
declarations: [AppComponent],
|
||||||
|
bootstrap: [AppComponent],
|
||||||
|
exports: [],
|
||||||
imports: [
|
imports: [
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
|
|
||||||
CommonModule,
|
CommonModule,
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
HeaderModule,
|
HeaderModule,
|
||||||
@@ -164,7 +167,6 @@ const authConfig: AuthConfig = {
|
|||||||
HasRoleModule,
|
HasRoleModule,
|
||||||
InfoOverlayModule,
|
InfoOverlayModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
HttpClientModule,
|
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatTooltipModule,
|
MatTooltipModule,
|
||||||
FooterModule,
|
FooterModule,
|
||||||
@@ -182,18 +184,14 @@ const authConfig: AuthConfig = {
|
|||||||
ThemeService,
|
ThemeService,
|
||||||
EnvironmentService,
|
EnvironmentService,
|
||||||
ExhaustedService,
|
ExhaustedService,
|
||||||
{
|
provideAppInitializer(() => {
|
||||||
provide: APP_INITIALIZER,
|
const initializerFn = appInitializerFn(inject(GrpcService));
|
||||||
useFactory: appInitializerFn,
|
return initializerFn();
|
||||||
multi: true,
|
}),
|
||||||
deps: [GrpcService],
|
provideAppInitializer(() => {
|
||||||
},
|
const initializerFn = stateHandlerFn(inject(StatehandlerService));
|
||||||
{
|
return initializerFn();
|
||||||
provide: APP_INITIALIZER,
|
}),
|
||||||
useFactory: stateHandlerFn,
|
|
||||||
multi: true,
|
|
||||||
deps: [StatehandlerService],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
provide: AuthConfig,
|
provide: AuthConfig,
|
||||||
useValue: authConfig,
|
useValue: authConfig,
|
||||||
@@ -258,9 +256,8 @@ const authConfig: AuthConfig = {
|
|||||||
provideNgIconsConfig({
|
provideNgIconsConfig({
|
||||||
size: '1rem',
|
size: '1rem',
|
||||||
}),
|
}),
|
||||||
|
provideHttpClient(withInterceptorsFromDi()),
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent],
|
|
||||||
exports: [],
|
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppModule {
|
||||||
constructor() {}
|
constructor() {}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|||||||
import { CopyToClipboardModule } from 'src/app/directives/copy-to-clipboard/copy-to-clipboard.module';
|
import { CopyToClipboardModule } from 'src/app/directives/copy-to-clipboard/copy-to-clipboard.module';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-copy-row',
|
selector: 'cnsl-copy-row',
|
||||||
templateUrl: './copy-row.component.html',
|
templateUrl: './copy-row.component.html',
|
||||||
styleUrls: ['./copy-row.component.scss'],
|
styleUrls: ['./copy-row.component.scss'],
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import { ReplaySubject } from 'rxjs';
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-feature-toggle',
|
selector: 'cnsl-feature-toggle',
|
||||||
templateUrl: './feature-toggle.component.html',
|
templateUrl: './feature-toggle.component.html',
|
||||||
styleUrls: ['./feature-toggle.component.scss'],
|
styleUrls: ['./feature-toggle.component.scss'],
|
||||||
|
|||||||
-1
@@ -12,7 +12,6 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-login-v2-feature-toggle',
|
selector: 'cnsl-login-v2-feature-toggle',
|
||||||
templateUrl: './login-v2-feature-toggle.component.html',
|
templateUrl: './login-v2-feature-toggle.component.html',
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ export type ToggleStateKeys = keyof ToggleStates;
|
|||||||
FeatureToggleComponent,
|
FeatureToggleComponent,
|
||||||
LoginV2FeatureToggleComponent,
|
LoginV2FeatureToggleComponent,
|
||||||
],
|
],
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-features',
|
selector: 'cnsl-features',
|
||||||
templateUrl: './features.component.html',
|
templateUrl: './features.component.html',
|
||||||
styleUrls: ['./features.component.scss'],
|
styleUrls: ['./features.component.scss'],
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import { Observable, map, of, startWith, switchMap, tap } from 'rxjs';
|
|||||||
import { Framework } from '../quickstart/quickstart.component';
|
import { Framework } from '../quickstart/quickstart.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
selector: 'cnsl-framework-autocomplete',
|
selector: 'cnsl-framework-autocomplete',
|
||||||
templateUrl: './framework-autocomplete.component.html',
|
templateUrl: './framework-autocomplete.component.html',
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
selector: 'cnsl-framework-change-dialog',
|
selector: 'cnsl-framework-change-dialog',
|
||||||
templateUrl: './framework-change-dialog.component.html',
|
templateUrl: './framework-change-dialog.component.html',
|
||||||
styleUrls: ['./framework-change-dialog.component.scss'],
|
styleUrls: ['./framework-change-dialog.component.scss'],
|
||||||
standalone: true,
|
|
||||||
imports: [MatButtonModule, MatDialogModule, TranslateModule, FrameworkAutocompleteComponent],
|
imports: [MatButtonModule, MatDialogModule, TranslateModule, FrameworkAutocompleteComponent],
|
||||||
})
|
})
|
||||||
export class FrameworkChangeDialogComponent {
|
export class FrameworkChangeDialogComponent {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import { MatDialog } from '@angular/material/dialog';
|
|||||||
import { FrameworkChangeDialogComponent } from './framework-change-dialog.component';
|
import { FrameworkChangeDialogComponent } from './framework-change-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-framework-change',
|
selector: 'cnsl-framework-change',
|
||||||
templateUrl: './framework-change.component.html',
|
templateUrl: './framework-change.component.html',
|
||||||
styleUrls: ['./framework-change.component.scss'],
|
styleUrls: ['./framework-change.component.scss'],
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import type { FrameworkName } from '@netlify/framework-info/lib/generated/frameworkNames';
|
import type { getFramework } from '@netlify/build-info';
|
||||||
import { AddOIDCAppRequest } from 'src/app/proto/generated/zitadel/management_pb';
|
import { AddOIDCAppRequest } from 'src/app/proto/generated/zitadel/management_pb';
|
||||||
|
|
||||||
|
type FrameworkName = Parameters<typeof getFramework>[0];
|
||||||
|
|
||||||
export type FrameworkDefinition = {
|
export type FrameworkDefinition = {
|
||||||
id?: FrameworkName | string;
|
id?: FrameworkName | string;
|
||||||
title: string;
|
title: string;
|
||||||
@@ -20,7 +22,6 @@ export type Framework = FrameworkDefinition & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-oidc-app-configuration',
|
selector: 'cnsl-oidc-app-configuration',
|
||||||
templateUrl: './oidc-configuration.component.html',
|
templateUrl: './oidc-configuration.component.html',
|
||||||
styleUrls: ['./oidc-configuration.component.scss'],
|
styleUrls: ['./oidc-configuration.component.scss'],
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ import { RouterModule } from '@angular/router';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import frameworkDefinition from '../../../../../docs/frameworks.json';
|
import frameworkDefinition from '../../../../../docs/frameworks.json';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import type { FrameworkName } from '@netlify/framework-info/lib/generated/frameworkNames';
|
import type { getFramework } from '@netlify/build-info';
|
||||||
import { OIDC_CONFIGURATIONS } from 'src/app/utils/framework';
|
import { OIDC_CONFIGURATIONS } from 'src/app/utils/framework';
|
||||||
|
|
||||||
|
type FrameworkName = Parameters<typeof getFramework>[0];
|
||||||
|
|
||||||
export type FrameworkDefinition = {
|
export type FrameworkDefinition = {
|
||||||
id?: FrameworkName | string;
|
id?: FrameworkName | string;
|
||||||
title: string;
|
title: string;
|
||||||
@@ -22,7 +24,6 @@ export type Framework = FrameworkDefinition & {
|
|||||||
};
|
};
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
selector: 'cnsl-quickstart',
|
selector: 'cnsl-quickstart',
|
||||||
templateUrl: './quickstart.component.html',
|
templateUrl: './quickstart.component.html',
|
||||||
styleUrls: ['./quickstart.component.scss'],
|
styleUrls: ['./quickstart.component.scss'],
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { NavigationService } from 'src/app/services/navigation.service';
|
|||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[cnslBack]',
|
selector: '[cnslBack]',
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class BackDirective {
|
export class BackDirective {
|
||||||
new: Boolean = false;
|
new: Boolean = false;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/c
|
|||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[cnslCopyToClipboard]',
|
selector: '[cnslCopyToClipboard]',
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class CopyToClipboardDirective {
|
export class CopyToClipboardDirective {
|
||||||
@Input() valueToCopy: string = '';
|
@Input() valueToCopy: string = '';
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[cnslDropzone]',
|
selector: '[cnslDropzone]',
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DropzoneDirective {
|
export class DropzoneDirective {
|
||||||
@Output() dropped: EventEmitter<FileList> = new EventEmitter<FileList>();
|
@Output() dropped: EventEmitter<FileList> = new EventEmitter<FileList>();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[cnslHasRole]',
|
selector: '[cnslHasRole]',
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class HasRoleDirective {
|
export class HasRoleDirective {
|
||||||
private hasView: boolean = false;
|
private hasView: boolean = false;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { CdkCellDef } from '@angular/cdk/table';
|
|||||||
@Directive({
|
@Directive({
|
||||||
selector: '[cnslCellDef]',
|
selector: '[cnslCellDef]',
|
||||||
providers: [{ provide: CdkCellDef, useExisting: TypeSafeCellDefDirective }],
|
providers: [{ provide: CdkCellDef, useExisting: TypeSafeCellDefDirective }],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class TypeSafeCellDefDirective<T> extends MatCellDef {
|
export class TypeSafeCellDefDirective<T> extends MatCellDef {
|
||||||
@Input({ required: true }) cnslCellDefDataSource!: DataSource<T>;
|
@Input({ required: true }) cnslCellDefDataSource!: DataSource<T>;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ interface V1AndV2Session {
|
|||||||
selector: 'cnsl-accounts-card',
|
selector: 'cnsl-accounts-card',
|
||||||
templateUrl: './accounts-card.component.html',
|
templateUrl: './accounts-card.component.html',
|
||||||
styleUrls: ['./accounts-card.component.scss'],
|
styleUrls: ['./accounts-card.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AccountsCardComponent {
|
export class AccountsCardComponent {
|
||||||
@Input({ required: true })
|
@Input({ required: true })
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export enum ActionKeysType {
|
|||||||
selector: 'cnsl-action-keys',
|
selector: 'cnsl-action-keys',
|
||||||
templateUrl: './action-keys.component.html',
|
templateUrl: './action-keys.component.html',
|
||||||
styleUrls: ['./action-keys.component.scss'],
|
styleUrls: ['./action-keys.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ActionKeysComponent implements AfterViewInit {
|
export class ActionKeysComponent implements AfterViewInit {
|
||||||
@Input() type: ActionKeysType = ActionKeysType.ADD;
|
@Input() type: ActionKeysType = ActionKeysType.ADD;
|
||||||
|
|||||||
+1
@@ -11,6 +11,7 @@ import { CorrectlyTypedExecution } from '../../actions-two-add-action/actions-tw
|
|||||||
templateUrl: './actions-two-actions-table.component.html',
|
templateUrl: './actions-two-actions-table.component.html',
|
||||||
styleUrls: ['./actions-two-actions-table.component.scss'],
|
styleUrls: ['./actions-two-actions-table.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ActionsTwoActionsTableComponent {
|
export class ActionsTwoActionsTableComponent {
|
||||||
@Output()
|
@Output()
|
||||||
|
|||||||
+1
@@ -23,6 +23,7 @@ import { ExecutionFieldName } from '@zitadel/proto/zitadel/action/v2beta/query_p
|
|||||||
templateUrl: './actions-two-actions.component.html',
|
templateUrl: './actions-two-actions.component.html',
|
||||||
styleUrls: ['./actions-two-actions.component.scss'],
|
styleUrls: ['./actions-two-actions.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ActionsTwoActionsComponent {
|
export class ActionsTwoActionsComponent {
|
||||||
protected readonly refresh$ = new Subject<true>();
|
protected readonly refresh$ = new Subject<true>();
|
||||||
|
|||||||
-1
@@ -29,7 +29,6 @@ class Filter implements PipeTransform {
|
|||||||
selector: 'cnsl-actions-two-add-action-autocomplete-input',
|
selector: 'cnsl-actions-two-add-action-autocomplete-input',
|
||||||
templateUrl: './actions-two-add-action-autocomplete-input.component.html',
|
templateUrl: './actions-two-add-action-autocomplete-input.component.html',
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
standalone: true,
|
|
||||||
imports: [
|
imports: [
|
||||||
AsyncPipe,
|
AsyncPipe,
|
||||||
Filter,
|
Filter,
|
||||||
|
|||||||
-1
@@ -28,7 +28,6 @@ export type ConditionTypeValue<T extends ConditionType> = Omit<
|
|||||||
>;
|
>;
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
selector: 'cnsl-actions-two-add-action-condition',
|
selector: 'cnsl-actions-two-add-action-condition',
|
||||||
templateUrl: './actions-two-add-action-condition.component.html',
|
templateUrl: './actions-two-add-action-condition.component.html',
|
||||||
|
|||||||
-1
@@ -53,7 +53,6 @@ export type ActionTwoAddActionDialogResult = MessageInitShape<typeof SetExecutio
|
|||||||
selector: 'cnsl-actions-two-add-action-dialog',
|
selector: 'cnsl-actions-two-add-action-dialog',
|
||||||
templateUrl: './actions-two-add-action-dialog.component.html',
|
templateUrl: './actions-two-add-action-dialog.component.html',
|
||||||
styleUrls: ['./actions-two-add-action-dialog.component.scss'],
|
styleUrls: ['./actions-two-add-action-dialog.component.scss'],
|
||||||
standalone: true,
|
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
|||||||
-1
@@ -35,7 +35,6 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|||||||
import { TableActionsModule } from 'src/app/modules/table-actions/table-actions.module';
|
import { TableActionsModule } from 'src/app/modules/table-actions/table-actions.module';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
selector: 'cnsl-actions-two-add-action-target',
|
selector: 'cnsl-actions-two-add-action-target',
|
||||||
templateUrl: './actions-two-add-action-target.component.html',
|
templateUrl: './actions-two-add-action-target.component.html',
|
||||||
|
|||||||
-1
@@ -16,7 +16,6 @@ import { ConditionType } from '../actions-two-add-action-condition/actions-two-a
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
selector: 'cnsl-actions-two-add-action-type',
|
selector: 'cnsl-actions-two-add-action-type',
|
||||||
templateUrl: './actions-two-add-action-type.component.html',
|
templateUrl: './actions-two-add-action-type.component.html',
|
||||||
|
|||||||
-1
@@ -22,7 +22,6 @@ type TargetTypes = ActionTwoAddTargetDialogComponent['targetTypes'][number];
|
|||||||
selector: 'cnsl-actions-two-add-target-dialog',
|
selector: 'cnsl-actions-two-add-target-dialog',
|
||||||
templateUrl: './actions-two-add-target-dialog.component.html',
|
templateUrl: './actions-two-add-target-dialog.component.html',
|
||||||
styleUrls: ['./actions-two-add-target-dialog.component.scss'],
|
styleUrls: ['./actions-two-add-target-dialog.component.scss'],
|
||||||
standalone: true,
|
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
|||||||
+1
@@ -10,6 +10,7 @@ import { toSignal } from '@angular/core/rxjs-interop';
|
|||||||
templateUrl: './actions-two-targets-table.component.html',
|
templateUrl: './actions-two-targets-table.component.html',
|
||||||
styleUrls: ['./actions-two-targets-table.component.scss'],
|
styleUrls: ['./actions-two-targets-table.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ActionsTwoTargetsTableComponent {
|
export class ActionsTwoTargetsTableComponent {
|
||||||
@Output()
|
@Output()
|
||||||
|
|||||||
+1
@@ -19,6 +19,7 @@ import { InfoSectionType } from '../../info-section/info-section.component';
|
|||||||
templateUrl: './actions-two-targets.component.html',
|
templateUrl: './actions-two-targets.component.html',
|
||||||
styleUrls: ['./actions-two-targets.component.scss'],
|
styleUrls: ['./actions-two-targets.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ActionsTwoTargetsComponent {
|
export class ActionsTwoTargetsComponent {
|
||||||
protected readonly targets$: Observable<Target[]>;
|
protected readonly targets$: Observable<Target[]>;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export enum AddKeyDialogType {
|
|||||||
selector: 'cnsl-add-key-dialog',
|
selector: 'cnsl-add-key-dialog',
|
||||||
templateUrl: './add-key-dialog.component.html',
|
templateUrl: './add-key-dialog.component.html',
|
||||||
styleUrls: ['./add-key-dialog.component.scss'],
|
styleUrls: ['./add-key-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AddKeyDialogComponent {
|
export class AddKeyDialogComponent {
|
||||||
public startDate: Date = new Date();
|
public startDate: Date = new Date();
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ export enum CreationType {
|
|||||||
selector: 'cnsl-member-create-dialog',
|
selector: 'cnsl-member-create-dialog',
|
||||||
templateUrl: './member-create-dialog.component.html',
|
templateUrl: './member-create-dialog.component.html',
|
||||||
styleUrls: ['./member-create-dialog.component.scss'],
|
styleUrls: ['./member-create-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MemberCreateDialogComponent {
|
export class MemberCreateDialogComponent {
|
||||||
private projectId: string = '';
|
private projectId: string = '';
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { getMembershipColor } from 'src/app/utils/color';
|
|||||||
selector: 'cnsl-add-member-roles-dialog',
|
selector: 'cnsl-add-member-roles-dialog',
|
||||||
templateUrl: './add-member-roles-dialog.component.html',
|
templateUrl: './add-member-roles-dialog.component.html',
|
||||||
styleUrls: ['./add-member-roles-dialog.component.scss'],
|
styleUrls: ['./add-member-roles-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AddMemberRolesDialogComponent {
|
export class AddMemberRolesDialogComponent {
|
||||||
public allRoles: string[] = [];
|
public allRoles: string[] = [];
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|||||||
selector: 'cnsl-add-token-dialog',
|
selector: 'cnsl-add-token-dialog',
|
||||||
templateUrl: './add-token-dialog.component.html',
|
templateUrl: './add-token-dialog.component.html',
|
||||||
styleUrls: ['./add-token-dialog.component.scss'],
|
styleUrls: ['./add-token-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AddTokenDialogComponent {
|
export class AddTokenDialogComponent {
|
||||||
public startDate: Date = new Date();
|
public startDate: Date = new Date();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { OIDCAppType } from 'src/app/proto/generated/zitadel/app_pb';
|
|||||||
selector: 'cnsl-app-card',
|
selector: 'cnsl-app-card',
|
||||||
templateUrl: './app-card.component.html',
|
templateUrl: './app-card.component.html',
|
||||||
styleUrls: ['./app-card.component.scss'],
|
styleUrls: ['./app-card.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AppCardComponent {
|
export class AppCardComponent {
|
||||||
@Input() public outline: boolean = false;
|
@Input() public outline: boolean = false;
|
||||||
|
|||||||
+1
@@ -25,6 +25,7 @@ export interface RadioItemAuthType {
|
|||||||
selector: 'cnsl-auth-method-radio',
|
selector: 'cnsl-auth-method-radio',
|
||||||
templateUrl: './app-auth-method-radio.component.html',
|
templateUrl: './app-auth-method-radio.component.html',
|
||||||
styleUrls: ['./app-auth-method-radio.component.scss'],
|
styleUrls: ['./app-auth-method-radio.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AppAuthMethodRadioComponent {
|
export class AppAuthMethodRadioComponent {
|
||||||
@Input() current: string = '';
|
@Input() current: string = '';
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { RadioItemAppType, WEB_TYPE } from 'src/app/pages/projects/apps/authtype
|
|||||||
selector: 'cnsl-type-radio',
|
selector: 'cnsl-type-radio',
|
||||||
templateUrl: './app-type-radio.component.html',
|
templateUrl: './app-type-radio.component.html',
|
||||||
styleUrls: ['./app-type-radio.component.scss'],
|
styleUrls: ['./app-type-radio.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AppTypeRadioComponent {
|
export class AppTypeRadioComponent {
|
||||||
@Input() selected: RadioItemAppType = WEB_TYPE;
|
@Input() selected: RadioItemAppType = WEB_TYPE;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { Color, getColorHash } from 'src/app/utils/color';
|
|||||||
selector: 'cnsl-avatar',
|
selector: 'cnsl-avatar',
|
||||||
templateUrl: './avatar.component.html',
|
templateUrl: './avatar.component.html',
|
||||||
styleUrls: ['./avatar.component.scss'],
|
styleUrls: ['./avatar.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AvatarComponent implements OnInit {
|
export class AvatarComponent implements OnInit {
|
||||||
@Input() name: string = '';
|
@Input() name: string = '';
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|||||||
templateUrl: './card.component.html',
|
templateUrl: './card.component.html',
|
||||||
styleUrls: ['./card.component.scss'],
|
styleUrls: ['./card.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class CardComponent {
|
export class CardComponent {
|
||||||
@Input() public title: string = '';
|
@Input() public title: string = '';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="scroll-container">
|
<div class="scroll-container">
|
||||||
<li class="item" *ngFor="let hist of data | async; index as histindex">
|
<li class="item" *ngFor="let hist of data | async; index as histindex">
|
||||||
<span *ngIf="hist.values[0].dates[0]" class="date">
|
<span *ngIf="hist.values[0].dates[0]" class="date">
|
||||||
{{ hist.values[0].dates[0] | timestampToDate | localizedDate: 'dd. MMM YYYY' }}
|
{{ hist.values[0].dates[0] | timestampToDate | localizedDate: 'dd. MMM yyyy' }}
|
||||||
</span>
|
</span>
|
||||||
<div class="item" *ngFor="let dayelement of hist.values; index as i">
|
<div class="item" *ngFor="let dayelement of hist.values; index as i">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<span class="msg">{{ action.localizedMessage }}</span>
|
<span class="msg">{{ action.localizedMessage }}</span>
|
||||||
<span
|
<span
|
||||||
class="block"
|
class="block"
|
||||||
matTooltip="{{ dayelement.dates[j] | timestampToDate | localizedDate: 'dd. MM YYYY, HH:mm:ss.SSS' }}"
|
matTooltip="{{ dayelement.dates[j] | timestampToDate | localizedDate: 'dd. MM yyyy, HH:mm:ss.SSS' }}"
|
||||||
>{{ dayelement.dates[j] | timestampToDate | localizedDate: 'HH:mm' }}</span
|
>{{ dayelement.dates[j] | timestampToDate | localizedDate: 'HH:mm' }}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ type ListChanges =
|
|||||||
selector: 'cnsl-changes',
|
selector: 'cnsl-changes',
|
||||||
templateUrl: './changes.component.html',
|
templateUrl: './changes.component.html',
|
||||||
styleUrls: ['./changes.component.scss'],
|
styleUrls: ['./changes.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ChangesComponent implements OnInit {
|
export class ChangesComponent implements OnInit {
|
||||||
@Input({ required: true }) public changeType!: ChangeType;
|
@Input({ required: true }) public changeType!: ChangeType;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { PageEvent, PaginatorComponent } from '../paginator/paginator.component'
|
|||||||
selector: 'cnsl-client-keys',
|
selector: 'cnsl-client-keys',
|
||||||
templateUrl: './client-keys.component.html',
|
templateUrl: './client-keys.component.html',
|
||||||
styleUrls: ['./client-keys.component.scss'],
|
styleUrls: ['./client-keys.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ClientKeysComponent implements OnInit {
|
export class ClientKeysComponent implements OnInit {
|
||||||
@Input() projectId!: string;
|
@Input() projectId!: string;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import { Type } from 'src/app/proto/generated/zitadel/user_pb';
|
|||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class ContributorsComponent {
|
export class ContributorsComponent {
|
||||||
@Input() title: string = '';
|
@Input() title: string = '';
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|||||||
selector: 'cnsl-create-layout',
|
selector: 'cnsl-create-layout',
|
||||||
templateUrl: './create-layout.component.html',
|
templateUrl: './create-layout.component.html',
|
||||||
styleUrls: ['./create-layout.component.scss'],
|
styleUrls: ['./create-layout.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class CreateLayoutComponent {
|
export class CreateLayoutComponent {
|
||||||
@Input() currentCreateStep: number = 1;
|
@Input() currentCreateStep: number = 1;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Component, Input } from '@angular/core';
|
|||||||
selector: 'cnsl-detail-layout',
|
selector: 'cnsl-detail-layout',
|
||||||
templateUrl: './detail-layout.component.html',
|
templateUrl: './detail-layout.component.html',
|
||||||
styleUrls: ['./detail-layout.component.scss'],
|
styleUrls: ['./detail-layout.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DetailLayoutComponent {
|
export class DetailLayoutComponent {
|
||||||
@Input() hasBackButton: boolean = true;
|
@Input() hasBackButton: boolean = true;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { Event } from 'src/app/proto/generated/zitadel/event_pb';
|
|||||||
selector: 'cnsl-display-json-dialog',
|
selector: 'cnsl-display-json-dialog',
|
||||||
templateUrl: './display-json-dialog.component.html',
|
templateUrl: './display-json-dialog.component.html',
|
||||||
styleUrls: ['./display-json-dialog.component.scss'],
|
styleUrls: ['./display-json-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DisplayJsonDialogComponent {
|
export class DisplayJsonDialogComponent {
|
||||||
public event?: Event;
|
public event?: Event;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|||||||
selector: 'cnsl-add-domain-dialog',
|
selector: 'cnsl-add-domain-dialog',
|
||||||
templateUrl: './add-domain-dialog.component.html',
|
templateUrl: './add-domain-dialog.component.html',
|
||||||
styleUrls: ['./add-domain-dialog.component.scss'],
|
styleUrls: ['./add-domain-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class AddDomainDialogComponent {
|
export class AddDomainDialogComponent {
|
||||||
public newdomain: string = '';
|
public newdomain: string = '';
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { ToastService } from 'src/app/services/toast.service';
|
|||||||
selector: 'cnsl-domain-verification',
|
selector: 'cnsl-domain-verification',
|
||||||
templateUrl: './domain-verification.component.html',
|
templateUrl: './domain-verification.component.html',
|
||||||
styleUrls: ['./domain-verification.component.scss'],
|
styleUrls: ['./domain-verification.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DomainVerificationComponent {
|
export class DomainVerificationComponent {
|
||||||
public domain?: Domain.AsObject;
|
public domain?: Domain.AsObject;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { DomainVerificationComponent } from './domain-verification/domain-verifi
|
|||||||
selector: 'cnsl-domains',
|
selector: 'cnsl-domains',
|
||||||
templateUrl: './domains.component.html',
|
templateUrl: './domains.component.html',
|
||||||
styleUrls: ['./domains.component.scss'],
|
styleUrls: ['./domains.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DomainsComponent implements OnInit {
|
export class DomainsComponent implements OnInit {
|
||||||
public domains: Domain.AsObject[] = [];
|
public domains: Domain.AsObject[] = [];
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { InfoSectionType } from '../info-section/info-section.component';
|
|||||||
selector: 'cnsl-edit-text',
|
selector: 'cnsl-edit-text',
|
||||||
templateUrl: './edit-text.component.html',
|
templateUrl: './edit-text.component.html',
|
||||||
styleUrls: ['./edit-text.component.scss'],
|
styleUrls: ['./edit-text.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class EditTextComponent implements OnInit, OnDestroy {
|
export class EditTextComponent implements OnInit, OnDestroy {
|
||||||
@Input() label: string = '';
|
@Input() label: string = '';
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ type LoadRequest = {
|
|||||||
selector: 'cnsl-events',
|
selector: 'cnsl-events',
|
||||||
templateUrl: './events.component.html',
|
templateUrl: './events.component.html',
|
||||||
styleUrls: ['./events.component.scss'],
|
styleUrls: ['./events.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class EventsComponent implements OnDestroy {
|
export class EventsComponent implements OnDestroy {
|
||||||
public INITPAGESIZE = 20;
|
public INITPAGESIZE = 20;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { ToastService } from 'src/app/services/toast.service';
|
|||||||
selector: 'cnsl-iam-failed-events',
|
selector: 'cnsl-iam-failed-events',
|
||||||
templateUrl: './failed-events.component.html',
|
templateUrl: './failed-events.component.html',
|
||||||
styleUrls: ['./failed-events.component.scss'],
|
styleUrls: ['./failed-events.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FailedEventsComponent implements AfterViewInit {
|
export class FailedEventsComponent implements AfterViewInit {
|
||||||
@ViewChild(MatPaginator) public eventPaginator!: MatPaginator;
|
@ViewChild(MatPaginator) public eventPaginator!: MatPaginator;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ function dateToTs(date: Date): Timestamp {
|
|||||||
selector: 'cnsl-filter-events',
|
selector: 'cnsl-filter-events',
|
||||||
templateUrl: './filter-events.component.html',
|
templateUrl: './filter-events.component.html',
|
||||||
styleUrls: ['./filter-events.component.scss'],
|
styleUrls: ['./filter-events.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterEventsComponent implements OnInit {
|
export class FilterEventsComponent implements OnInit {
|
||||||
// Make enum available in template
|
// Make enum available in template
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ enum SubQuery {
|
|||||||
selector: 'cnsl-filter-org',
|
selector: 'cnsl-filter-org',
|
||||||
templateUrl: './filter-org.component.html',
|
templateUrl: './filter-org.component.html',
|
||||||
styleUrls: ['./filter-org.component.scss'],
|
styleUrls: ['./filter-org.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterOrgComponent extends FilterComponent implements OnInit {
|
export class FilterOrgComponent extends FilterComponent implements OnInit {
|
||||||
public SubQuery: any = SubQuery;
|
public SubQuery: any = SubQuery;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ enum SubQuery {
|
|||||||
selector: 'cnsl-filter-project',
|
selector: 'cnsl-filter-project',
|
||||||
templateUrl: './filter-project.component.html',
|
templateUrl: './filter-project.component.html',
|
||||||
styleUrls: ['./filter-project.component.scss'],
|
styleUrls: ['./filter-project.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterProjectComponent extends FilterComponent implements OnInit {
|
export class FilterProjectComponent extends FilterComponent implements OnInit {
|
||||||
public SubQuery: any = SubQuery;
|
public SubQuery: any = SubQuery;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ enum SubQuery {
|
|||||||
selector: 'cnsl-filter-user-grants',
|
selector: 'cnsl-filter-user-grants',
|
||||||
templateUrl: './filter-user-grants.component.html',
|
templateUrl: './filter-user-grants.component.html',
|
||||||
styleUrls: ['./filter-user-grants.component.scss'],
|
styleUrls: ['./filter-user-grants.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterUserGrantsComponent extends FilterComponent implements OnInit {
|
export class FilterUserGrantsComponent extends FilterComponent implements OnInit {
|
||||||
public SubQuery: any = SubQuery;
|
public SubQuery: any = SubQuery;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ enum SubQuery {
|
|||||||
selector: 'cnsl-filter-user',
|
selector: 'cnsl-filter-user',
|
||||||
templateUrl: './filter-user.component.html',
|
templateUrl: './filter-user.component.html',
|
||||||
styleUrls: ['./filter-user.component.scss'],
|
styleUrls: ['./filter-user.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterUserComponent extends FilterComponent implements OnInit {
|
export class FilterUserComponent extends FilterComponent implements OnInit {
|
||||||
public SubQuery: any = SubQuery;
|
public SubQuery: any = SubQuery;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ type FilterSearchQueryAsObject =
|
|||||||
selector: 'cnsl-filter',
|
selector: 'cnsl-filter',
|
||||||
templateUrl: './filter.component.html',
|
templateUrl: './filter.component.html',
|
||||||
styleUrls: ['./filter.component.scss'],
|
styleUrls: ['./filter.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FilterComponent {
|
export class FilterComponent {
|
||||||
@Output() public filterChanged: EventEmitter<FilterSearchQuery[]> = new EventEmitter();
|
@Output() public filterChanged: EventEmitter<FilterSearchQuery[]> = new EventEmitter();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { faXTwitter } from '@fortawesome/free-brands-svg-icons';
|
|||||||
selector: 'cnsl-footer',
|
selector: 'cnsl-footer',
|
||||||
templateUrl: './footer.component.html',
|
templateUrl: './footer.component.html',
|
||||||
styleUrls: ['./footer.component.scss'],
|
styleUrls: ['./footer.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FooterComponent {
|
export class FooterComponent {
|
||||||
public faXTwitter = faXTwitter;
|
public faXTwitter = faXTwitter;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export const CNSL_ERROR = new InjectionToken<CnslErrorDirective>('CnslError');
|
|||||||
'[attr.id]': 'id',
|
'[attr.id]': 'id',
|
||||||
},
|
},
|
||||||
providers: [{ provide: CNSL_ERROR, useExisting: CnslErrorDirective }],
|
providers: [{ provide: CNSL_ERROR, useExisting: CnslErrorDirective }],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class CnslErrorDirective {
|
export class CnslErrorDirective {
|
||||||
@Input() id: string = `cnsl-error-${nextUniqueId++}`;
|
@Input() id: string = `cnsl-error-${nextUniqueId++}`;
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ interface ValidationError {
|
|||||||
encapsulation: ViewEncapsulation.None,
|
encapsulation: ViewEncapsulation.None,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: [cnslFormFieldAnimations.transitionMessages],
|
animations: [cnslFormFieldAnimations.transitionMessages],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestroy, AfterContentInit, AfterViewInit {
|
export class CnslFormFieldComponent extends CnslFormFieldBase implements OnDestroy, AfterContentInit, AfterViewInit {
|
||||||
focused: boolean = false;
|
focused: boolean = false;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { Organization } from '@zitadel/proto/zitadel/org/v2/org_pb';
|
|||||||
selector: 'cnsl-header',
|
selector: 'cnsl-header',
|
||||||
templateUrl: './header.component.html',
|
templateUrl: './header.component.html',
|
||||||
styleUrls: ['./header.component.scss'],
|
styleUrls: ['./header.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class HeaderComponent {
|
export class HeaderComponent {
|
||||||
@Input() public isDarkTheme: boolean = true;
|
@Input() public isDarkTheme: boolean = true;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/
|
|||||||
selector: 'cnsl-iam-views',
|
selector: 'cnsl-iam-views',
|
||||||
templateUrl: './iam-views.component.html',
|
templateUrl: './iam-views.component.html',
|
||||||
styleUrls: ['./iam-views.component.scss'],
|
styleUrls: ['./iam-views.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class IamViewsComponent implements AfterViewInit {
|
export class IamViewsComponent implements AfterViewInit {
|
||||||
@ViewChild(MatSort) sort!: MatSort;
|
@ViewChild(MatSort) sort!: MatSort;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import { first } from 'rxjs/operators';
|
|||||||
selector: 'cnsl-idp-table',
|
selector: 'cnsl-idp-table',
|
||||||
templateUrl: './idp-table.component.html',
|
templateUrl: './idp-table.component.html',
|
||||||
styleUrls: ['./idp-table.component.scss'],
|
styleUrls: ['./idp-table.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class IdpTableComponent implements OnInit, OnDestroy {
|
export class IdpTableComponent implements OnInit, OnDestroy {
|
||||||
@Input() public serviceType!: PolicyComponentServiceType;
|
@Input() public serviceType!: PolicyComponentServiceType;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { InfoSectionType } from '../info-section/info-section.component';
|
|||||||
selector: 'cnsl-info-dialog',
|
selector: 'cnsl-info-dialog',
|
||||||
templateUrl: './info-dialog.component.html',
|
templateUrl: './info-dialog.component.html',
|
||||||
styleUrls: ['./info-dialog.component.scss'],
|
styleUrls: ['./info-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class InfoDialogComponent {
|
export class InfoDialogComponent {
|
||||||
public confirm: string = '';
|
public confirm: string = '';
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ export const OVERLAY_DATA = new InjectionToken<any>('OVERLAY_DATA');
|
|||||||
selector: 'cnsl-info-overlay',
|
selector: 'cnsl-info-overlay',
|
||||||
templateUrl: './info-overlay.component.html',
|
templateUrl: './info-overlay.component.html',
|
||||||
styleUrls: ['./info-overlay.component.scss'],
|
styleUrls: ['./info-overlay.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class InfoOverlayComponent {
|
export class InfoOverlayComponent {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -21,14 +21,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'USER.DETAILS.DATECREATED' | translate }}</p>
|
<p class="info-row-title">{{ 'USER.DETAILS.DATECREATED' | translate }}</p>
|
||||||
<p *ngIf="creationDate" class="info-row-desc">
|
<p *ngIf="creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'USER.DETAILS.DATECHANGED' | translate }}</p>
|
<p class="info-row-title">{{ 'USER.DETAILS.DATECHANGED' | translate }}</p>
|
||||||
<p *ngIf="changeDate" class="info-row-desc">
|
<p *ngIf="changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -97,14 +97,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'ORG.PAGES.CREATIONDATE' | translate }}</p>
|
<p class="info-row-title">{{ 'ORG.PAGES.CREATIONDATE' | translate }}</p>
|
||||||
<p *ngIf="instance?.details?.creationDate as creationDate" class="info-row-desc">
|
<p *ngIf="instance?.details?.creationDate as creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'ORG.PAGES.DATECHANGED' | translate }}</p>
|
<p class="info-row-title">{{ 'ORG.PAGES.DATECHANGED' | translate }}</p>
|
||||||
<p *ngIf="instance?.details?.changeDate as changeDate" class="info-row-desc">
|
<p *ngIf="instance?.details?.changeDate as changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -144,14 +144,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'ORG.PAGES.CREATIONDATE' | translate }}</p>
|
<p class="info-row-title">{{ 'ORG.PAGES.CREATIONDATE' | translate }}</p>
|
||||||
<p *ngIf="org?.details?.creationDate as creationDate" class="info-row-desc">
|
<p *ngIf="org?.details?.creationDate as creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'ORG.PAGES.DATECHANGED' | translate }}</p>
|
<p class="info-row-title">{{ 'ORG.PAGES.DATECHANGED' | translate }}</p>
|
||||||
<p *ngIf="org?.details?.changeDate as changeDate" class="info-row-desc">
|
<p *ngIf="org?.details?.changeDate as changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -179,14 +179,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'PROJECT.PAGES.CREATEDON' | translate }}</p>
|
<p class="info-row-title">{{ 'PROJECT.PAGES.CREATEDON' | translate }}</p>
|
||||||
<p *ngIf="project?.details?.creationDate as creationDate" class="info-row-desc">
|
<p *ngIf="project?.details?.creationDate as creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}</p>
|
<p class="info-row-title">{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}</p>
|
||||||
<p *ngIf="project?.details?.changeDate as changeDate" class="info-row-desc">
|
<p *ngIf="project?.details?.changeDate as changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -219,14 +219,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'PROJECT.PAGES.CREATEDON' | translate }}</p>
|
<p class="info-row-title">{{ 'PROJECT.PAGES.CREATEDON' | translate }}</p>
|
||||||
<p *ngIf="grantedProject?.details?.creationDate as creationDate" class="info-row-desc">
|
<p *ngIf="grantedProject?.details?.creationDate as creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}</p>
|
<p class="info-row-title">{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}</p>
|
||||||
<p *ngIf="grantedProject?.details?.changeDate as changeDate" class="info-row-desc">
|
<p *ngIf="grantedProject?.details?.changeDate as changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -265,14 +265,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'APP.PAGES.DATECREATED' | translate }}</p>
|
<p class="info-row-title">{{ 'APP.PAGES.DATECREATED' | translate }}</p>
|
||||||
<p *ngIf="app?.details?.creationDate as creationDate" class="info-row-desc">
|
<p *ngIf="app?.details?.creationDate as creationDate" class="info-row-desc">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'APP.PAGES.DATECHANGED' | translate }}</p>
|
<p class="info-row-title">{{ 'APP.PAGES.DATECHANGED' | translate }}</p>
|
||||||
<p *ngIf="app?.details?.changeDate as changeDate" class="info-row-desc">
|
<p *ngIf="app?.details?.changeDate as changeDate" class="info-row-desc">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -318,14 +318,14 @@
|
|||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'IDP.DETAIL.DATECREATED' | translate }}</p>
|
<p class="info-row-title">{{ 'IDP.DETAIL.DATECREATED' | translate }}</p>
|
||||||
<p class="info-row-desc" *ngIf="idp?.details?.creationDate as creationDate">
|
<p class="info-row-desc" *ngIf="idp?.details?.creationDate as creationDate">
|
||||||
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ creationDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-wrapper">
|
<div class="info-wrapper">
|
||||||
<p class="info-row-title">{{ 'IDP.DETAIL.DATECHANGED' | translate }}</p>
|
<p class="info-row-title">{{ 'IDP.DETAIL.DATECHANGED' | translate }}</p>
|
||||||
<p class="info-row-desc" *ngIf="idp?.details?.changeDate as changeDate">
|
<p class="info-row-desc" *ngIf="idp?.details?.changeDate as changeDate">
|
||||||
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }}
|
{{ changeDate | timestampToDate | localizedDate: 'dd. MMMM yyyy, HH:mm' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { Organization as OrgV2 } from '@zitadel/proto/zitadel/org/v2/org_pb';
|
|||||||
selector: 'cnsl-info-row',
|
selector: 'cnsl-info-row',
|
||||||
templateUrl: './info-row.component.html',
|
templateUrl: './info-row.component.html',
|
||||||
styleUrls: ['./info-row.component.scss'],
|
styleUrls: ['./info-row.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class InfoRowComponent {
|
export class InfoRowComponent {
|
||||||
@Input() public user?: User.AsObject | UserV2 | UserV1;
|
@Input() public user?: User.AsObject | UserV2 | UserV1;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export enum InfoSectionType {
|
|||||||
templateUrl: './info-section.component.html',
|
templateUrl: './info-section.component.html',
|
||||||
styleUrls: ['./info-section.component.scss'],
|
styleUrls: ['./info-section.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class InfoSectionComponent {
|
export class InfoSectionComponent {
|
||||||
@Input() type: InfoSectionType = InfoSectionType.INFO;
|
@Input() type: InfoSectionType = InfoSectionType.INFO;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { By } from '@angular/platform-browser';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
template: `<input appInputDirective />`,
|
template: `<input appInputDirective />`,
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
class TestHostComponent {}
|
class TestHostComponent {}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import {
|
|||||||
Self,
|
Self,
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
|
import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
|
||||||
import { CanUpdateErrorState, ErrorStateMatcher, mixinErrorState } from '@angular/material/core';
|
import { _ErrorStateTracker, ErrorStateMatcher } from '@angular/material/core';
|
||||||
import { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';
|
import { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';
|
||||||
import { getMatInputUnsupportedTypeError, MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
|
import { getMatInputUnsupportedTypeError, MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
@@ -26,24 +26,6 @@ const MAT_INPUT_INVALID_TYPES = ['button', 'checkbox', 'file', 'hidden', 'image'
|
|||||||
|
|
||||||
let nextUniqueId = 0;
|
let nextUniqueId = 0;
|
||||||
|
|
||||||
const _MatInputBase = mixinErrorState(
|
|
||||||
class {
|
|
||||||
readonly stateChanges = new Subject<void>();
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
public _defaultErrorStateMatcher: ErrorStateMatcher,
|
|
||||||
public _parentForm: NgForm,
|
|
||||||
public _parentFormGroup: FormGroupDirective,
|
|
||||||
/**
|
|
||||||
* Form control bound to the component.
|
|
||||||
* Implemented as part of `MatFormFieldControl`.
|
|
||||||
* @docs-private
|
|
||||||
*/
|
|
||||||
public ngControl: NgControl,
|
|
||||||
) {}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
/** Directive that allows a native input to work inside a `MatFormField`. */
|
/** Directive that allows a native input to work inside a `MatFormField`. */
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: `input[cnslInput], textarea[cnslInput], select[cnslNativeControl]`,
|
selector: `input[cnslInput], textarea[cnslInput], select[cnslNativeControl]`,
|
||||||
@@ -68,11 +50,9 @@ const _MatInputBase = mixinErrorState(
|
|||||||
'[attr.aria-required]': 'required.toString()',
|
'[attr.aria-required]': 'required.toString()',
|
||||||
},
|
},
|
||||||
providers: [{ provide: MatFormFieldControl, useExisting: InputDirective }],
|
providers: [{ provide: MatFormFieldControl, useExisting: InputDirective }],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class InputDirective
|
export class InputDirective implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck {
|
||||||
extends _MatInputBase
|
|
||||||
implements MatFormFieldControl<any>, OnChanges, CanUpdateErrorState, OnDestroy, AfterViewInit, DoCheck, CanUpdateErrorState
|
|
||||||
{
|
|
||||||
protected _uid: string = `cnsl-input-${nextUniqueId++}`;
|
protected _uid: string = `cnsl-input-${nextUniqueId++}`;
|
||||||
protected _previousNativeValue: any;
|
protected _previousNativeValue: any;
|
||||||
private _inputValueAccessor: { value: any };
|
private _inputValueAccessor: { value: any };
|
||||||
@@ -97,7 +77,14 @@ export class InputDirective
|
|||||||
* Implemented as part of MatFormFieldControl.
|
* Implemented as part of MatFormFieldControl.
|
||||||
* @docs-private
|
* @docs-private
|
||||||
*/
|
*/
|
||||||
override readonly stateChanges: Subject<void> = new Subject<void>();
|
readonly stateChanges: Subject<void> = new Subject<void>();
|
||||||
|
|
||||||
|
get errorState() {
|
||||||
|
return this._errorStateTracker.errorState;
|
||||||
|
}
|
||||||
|
set errorState(value: boolean) {
|
||||||
|
this._errorStateTracker.errorState = value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implemented as part of MatFormFieldControl.
|
* Implemented as part of MatFormFieldControl.
|
||||||
@@ -184,9 +171,6 @@ export class InputDirective
|
|||||||
}
|
}
|
||||||
protected _type: string = 'text';
|
protected _type: string = 'text';
|
||||||
|
|
||||||
/** An object used to control when error messages are shown. */
|
|
||||||
@Input() override errorStateMatcher!: ErrorStateMatcher;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implemented as part of MatFormFieldControl.
|
* Implemented as part of MatFormFieldControl.
|
||||||
* @docs-private
|
* @docs-private
|
||||||
@@ -223,24 +207,40 @@ export class InputDirective
|
|||||||
getSupportedInputTypes().has(t),
|
getSupportedInputTypes().has(t),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
get errorStateMatcher() {
|
||||||
|
return this._errorStateTracker.matcher;
|
||||||
|
}
|
||||||
|
set errorStateMatcher(value: ErrorStateMatcher) {
|
||||||
|
this._errorStateTracker.matcher = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _errorStateTracker: _ErrorStateTracker;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,
|
protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,
|
||||||
protected _platform: Platform,
|
protected _platform: Platform,
|
||||||
/** @docs-private */
|
/** @docs-private */
|
||||||
@Optional() @Self() public override ngControl: NgControl,
|
@Optional() @Self() public ngControl: NgControl,
|
||||||
@Optional() _parentForm: NgForm,
|
@Optional() parentForm: NgForm,
|
||||||
@Optional() _parentFormGroup: FormGroupDirective,
|
@Optional() parentFormGroup: FormGroupDirective,
|
||||||
_defaultErrorStateMatcher: ErrorStateMatcher,
|
defaultErrorStateMatcher: ErrorStateMatcher,
|
||||||
@Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,
|
@Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,
|
||||||
private _autofillMonitor: AutofillMonitor,
|
private _autofillMonitor: AutofillMonitor,
|
||||||
ngZone: NgZone,
|
ngZone: NgZone,
|
||||||
@Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField,
|
@Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField,
|
||||||
) {
|
) {
|
||||||
super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
|
|
||||||
|
|
||||||
const element = this._elementRef.nativeElement;
|
const element = this._elementRef.nativeElement;
|
||||||
const nodeName = element.nodeName.toLowerCase();
|
const nodeName = element.nodeName.toLowerCase();
|
||||||
|
|
||||||
|
this._errorStateTracker = new _ErrorStateTracker(
|
||||||
|
defaultErrorStateMatcher,
|
||||||
|
ngControl,
|
||||||
|
parentFormGroup,
|
||||||
|
parentForm,
|
||||||
|
this.stateChanges,
|
||||||
|
);
|
||||||
|
|
||||||
// If no input value accessor was explicitly specified, use the element as the input value
|
// If no input value accessor was explicitly specified, use the element as the input value
|
||||||
// accessor.
|
// accessor.
|
||||||
this._inputValueAccessor = inputValueAccessor || element;
|
this._inputValueAccessor = inputValueAccessor || element;
|
||||||
@@ -317,6 +317,10 @@ export class InputDirective
|
|||||||
this._dirtyCheckPlaceholder();
|
this._dirtyCheckPlaceholder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateErrorState() {
|
||||||
|
this._errorStateTracker.updateErrorState();
|
||||||
|
}
|
||||||
|
|
||||||
/** Focuses the input. */
|
/** Focuses the input. */
|
||||||
focus(options?: FocusOptions): void {
|
focus(options?: FocusOptions): void {
|
||||||
this._elementRef.nativeElement.focus(options);
|
this._elementRef.nativeElement.focus(options);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { KeyboardShortcut, ORGSHORTCUTS, SIDEWIDESHORTCUTS } from 'src/app/servi
|
|||||||
selector: 'cnsl-keyboard-shortcuts',
|
selector: 'cnsl-keyboard-shortcuts',
|
||||||
templateUrl: './keyboard-shortcuts.component.html',
|
templateUrl: './keyboard-shortcuts.component.html',
|
||||||
styleUrls: ['./keyboard-shortcuts.component.scss'],
|
styleUrls: ['./keyboard-shortcuts.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class KeyboardShortcutsComponent {
|
export class KeyboardShortcutsComponent {
|
||||||
public orgShortcuts: KeyboardShortcut[] = ORGSHORTCUTS;
|
public orgShortcuts: KeyboardShortcut[] = ORGSHORTCUTS;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Component } from '@angular/core';
|
|||||||
selector: 'cnsl-label',
|
selector: 'cnsl-label',
|
||||||
templateUrl: './label.component.html',
|
templateUrl: './label.component.html',
|
||||||
styleUrls: ['./label.component.scss'],
|
styleUrls: ['./label.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class LabelComponent {
|
export class LabelComponent {
|
||||||
constructor() {}
|
constructor() {}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { WarnDialogComponent } from '../warn-dialog/warn-dialog.component';
|
|||||||
selector: 'cnsl-machine-keys',
|
selector: 'cnsl-machine-keys',
|
||||||
templateUrl: './machine-keys.component.html',
|
templateUrl: './machine-keys.component.html',
|
||||||
styleUrls: ['./machine-keys.component.scss'],
|
styleUrls: ['./machine-keys.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MachineKeysComponent implements OnInit {
|
export class MachineKeysComponent implements OnInit {
|
||||||
@Input() userId?: string;
|
@Input() userId?: string;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type MemberDatasource =
|
|||||||
selector: 'cnsl-members-table',
|
selector: 'cnsl-members-table',
|
||||||
templateUrl: './members-table.component.html',
|
templateUrl: './members-table.component.html',
|
||||||
styleUrls: ['./members-table.component.scss'],
|
styleUrls: ['./members-table.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MembersTableComponent implements OnInit, OnDestroy {
|
export class MembersTableComponent implements OnInit, OnDestroy {
|
||||||
public INITIALPAGESIZE: number = 25;
|
public INITIALPAGESIZE: number = 25;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import { Organization } from '@zitadel/proto/zitadel/org/v2/org_pb';
|
|||||||
selector: 'cnsl-memberships-table',
|
selector: 'cnsl-memberships-table',
|
||||||
templateUrl: './memberships-table.component.html',
|
templateUrl: './memberships-table.component.html',
|
||||||
styleUrls: ['./memberships-table.component.scss'],
|
styleUrls: ['./memberships-table.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MembershipsTableComponent implements OnInit, OnDestroy {
|
export class MembershipsTableComponent implements OnInit, OnDestroy {
|
||||||
public INITIALPAGESIZE: number = 25;
|
public INITIALPAGESIZE: number = 25;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { map } from 'rxjs/operators';
|
|||||||
selector: 'cnsl-meta-layout',
|
selector: 'cnsl-meta-layout',
|
||||||
templateUrl: './meta-layout.component.html',
|
templateUrl: './meta-layout.component.html',
|
||||||
styleUrls: ['./meta-layout.component.scss'],
|
styleUrls: ['./meta-layout.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MetaLayoutComponent {
|
export class MetaLayoutComponent {
|
||||||
constructor(private breakpointObserver: BreakpointObserver) {
|
constructor(private breakpointObserver: BreakpointObserver) {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export type MetadataDialogData = {
|
|||||||
selector: 'cnsl-metadata-dialog',
|
selector: 'cnsl-metadata-dialog',
|
||||||
templateUrl: './metadata-dialog.component.html',
|
templateUrl: './metadata-dialog.component.html',
|
||||||
styleUrls: ['./metadata-dialog.component.scss'],
|
styleUrls: ['./metadata-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MetadataDialogComponent {
|
export class MetadataDialogComponent {
|
||||||
public metadata: { key: string; value: string }[] = [];
|
public metadata: { key: string; value: string }[] = [];
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ type StringMetadata = {
|
|||||||
selector: 'cnsl-metadata',
|
selector: 'cnsl-metadata',
|
||||||
templateUrl: './metadata.component.html',
|
templateUrl: './metadata.component.html',
|
||||||
styleUrls: ['./metadata.component.scss'],
|
styleUrls: ['./metadata.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class MetadataComponent implements OnInit {
|
export class MetadataComponent implements OnInit {
|
||||||
@Input({ required: true }) public set metadata(metadata: (Metadata.AsObject | MetadataV2)[]) {
|
@Input({ required: true }) public set metadata(metadata: (Metadata.AsObject | MetadataV2)[]) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|||||||
selector: 'cnsl-name-dialog',
|
selector: 'cnsl-name-dialog',
|
||||||
templateUrl: './name-dialog.component.html',
|
templateUrl: './name-dialog.component.html',
|
||||||
styleUrls: ['./name-dialog.component.scss'],
|
styleUrls: ['./name-dialog.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class NameDialogComponent {
|
export class NameDialogComponent {
|
||||||
public name: string = '';
|
public name: string = '';
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|||||||
selector: 'cnsl-nav-toggle',
|
selector: 'cnsl-nav-toggle',
|
||||||
templateUrl: './nav-toggle.component.html',
|
templateUrl: './nav-toggle.component.html',
|
||||||
styleUrls: ['./nav-toggle.component.scss'],
|
styleUrls: ['./nav-toggle.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class NavToggleComponent {
|
export class NavToggleComponent {
|
||||||
@Input() public label: string = '';
|
@Input() public label: string = '';
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ import { Organization } from '@zitadel/proto/zitadel/org/v2/org_pb';
|
|||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class NavComponent implements OnDestroy {
|
export class NavComponent implements OnDestroy {
|
||||||
@ViewChild('input', { static: false }) input!: ElementRef;
|
@ViewChild('input', { static: false }) input!: ElementRef;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import { MatRippleModule } from '@angular/material/core';
|
|||||||
selector: 'cnsl-header-button',
|
selector: 'cnsl-header-button',
|
||||||
templateUrl: './header-button.component.html',
|
templateUrl: './header-button.component.html',
|
||||||
styleUrls: ['./header-button.component.scss'],
|
styleUrls: ['./header-button.component.scss'],
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [NgIconComponent, MatRippleModule],
|
imports: [NgIconComponent, MatRippleModule],
|
||||||
providers: [provideIcons({ heroChevronUpDown })],
|
providers: [provideIcons({ heroChevronUpDown })],
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import { ReplaySubject } from 'rxjs';
|
|||||||
selector: 'cnsl-header-dropdown',
|
selector: 'cnsl-header-dropdown',
|
||||||
templateUrl: './header-dropdown.component.html',
|
templateUrl: './header-dropdown.component.html',
|
||||||
styleUrls: ['./header-dropdown.component.scss'],
|
styleUrls: ['./header-dropdown.component.scss'],
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [CdkConnectedOverlay, NgIf, AsyncPipe],
|
imports: [CdkConnectedOverlay, NgIf, AsyncPipe],
|
||||||
})
|
})
|
||||||
@@ -59,15 +58,12 @@ export class HeaderDropdownComponent implements OnInit {
|
|||||||
// to make sure the dropdown will be rendered in the correct position
|
// to make sure the dropdown will be rendered in the correct position
|
||||||
runInInjectionContext(this.injector, () => {
|
runInInjectionContext(this.injector, () => {
|
||||||
const isOpen = toSignal(this.isOpen$, { requireSync: true });
|
const isOpen = toSignal(this.isOpen$, { requireSync: true });
|
||||||
effect(
|
effect(() => {
|
||||||
() => {
|
this.isHandset();
|
||||||
this.isHandset();
|
if (untracked(() => isOpen())) {
|
||||||
if (untracked(() => isOpen())) {
|
this.closed.emit();
|
||||||
this.closed.emit();
|
}
|
||||||
}
|
});
|
||||||
},
|
|
||||||
{ allowSignalWrites: true },
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { ChangeDetectionStrategy, Component, EventEmitter, Output, Input } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, EventEmitter, Output, Input } from '@angular/core';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { Router, RouterLink } from '@angular/router';
|
|
||||||
import { InstanceDetail } from '@zitadel/proto/zitadel/instance_pb';
|
import { InstanceDetail } from '@zitadel/proto/zitadel/instance_pb';
|
||||||
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
import { NgIconComponent, provideIcons } from '@ng-icons/core';
|
||||||
import { heroCog8ToothSolid } from '@ng-icons/heroicons/solid';
|
import { heroCog8ToothSolid } from '@ng-icons/heroicons/solid';
|
||||||
@@ -14,9 +13,8 @@ import { CommonModule } from '@angular/common';
|
|||||||
selector: 'cnsl-instance-selector',
|
selector: 'cnsl-instance-selector',
|
||||||
templateUrl: './instance-selector.component.html',
|
templateUrl: './instance-selector.component.html',
|
||||||
styleUrls: ['./instance-selector.component.scss'],
|
styleUrls: ['./instance-selector.component.scss'],
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [TranslateModule, MatButtonModule, RouterLink, NgIconComponent, CommonModule],
|
imports: [TranslateModule, MatButtonModule, NgIconComponent, CommonModule],
|
||||||
providers: [provideIcons({ heroCog8ToothSolid, heroChevronRight })],
|
providers: [provideIcons({ heroCog8ToothSolid, heroChevronRight })],
|
||||||
})
|
})
|
||||||
export class InstanceSelectorComponent {
|
export class InstanceSelectorComponent {
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import { MatRippleModule } from '@angular/material/core';
|
|||||||
selector: 'cnsl-new-header',
|
selector: 'cnsl-new-header',
|
||||||
templateUrl: './new-header.component.html',
|
templateUrl: './new-header.component.html',
|
||||||
styleUrls: ['./new-header.component.scss'],
|
styleUrls: ['./new-header.component.scss'],
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [
|
imports: [
|
||||||
MatToolbarModule,
|
MatToolbarModule,
|
||||||
|
|||||||
-1
@@ -48,7 +48,6 @@ const QUERY_LIMIT = 20;
|
|||||||
selector: 'cnsl-organization-selector',
|
selector: 'cnsl-organization-selector',
|
||||||
templateUrl: './organization-selector.component.html',
|
templateUrl: './organization-selector.component.html',
|
||||||
styleUrls: ['./organization-selector.component.scss'],
|
styleUrls: ['./organization-selector.component.scss'],
|
||||||
standalone: true,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [
|
imports: [
|
||||||
NgForOf,
|
NgForOf,
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { ONBOARDING_MILESTONES } from 'src/app/utils/onboarding';
|
|||||||
selector: 'cnsl-onboarding-card',
|
selector: 'cnsl-onboarding-card',
|
||||||
templateUrl: './onboarding-card.component.html',
|
templateUrl: './onboarding-card.component.html',
|
||||||
styleUrls: ['./onboarding-card.component.scss'],
|
styleUrls: ['./onboarding-card.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class OnboardingCardComponent implements OnInit {
|
export class OnboardingCardComponent implements OnInit {
|
||||||
public percentageChanged: EventEmitter<number> = new EventEmitter<number>();
|
public percentageChanged: EventEmitter<number> = new EventEmitter<number>();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { ONBOARDING_MILESTONES } from 'src/app/utils/onboarding';
|
|||||||
selector: 'cnsl-onboarding',
|
selector: 'cnsl-onboarding',
|
||||||
templateUrl: './onboarding.component.html',
|
templateUrl: './onboarding.component.html',
|
||||||
styleUrls: ['./onboarding.component.scss'],
|
styleUrls: ['./onboarding.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class OnboardingComponent {
|
export class OnboardingComponent {
|
||||||
public actions = this.adminService.progressMilestones;
|
public actions = this.adminService.progressMilestones;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const ORG_QUERY_LIMIT = 100;
|
|||||||
selector: 'cnsl-org-context',
|
selector: 'cnsl-org-context',
|
||||||
templateUrl: './org-context.component.html',
|
templateUrl: './org-context.component.html',
|
||||||
styleUrls: ['./org-context.component.scss'],
|
styleUrls: ['./org-context.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class OrgContextComponent implements OnInit {
|
export class OrgContextComponent implements OnInit {
|
||||||
public pinned: SelectionModel<Org.AsObject> = new SelectionModel<Org.AsObject>(true, []);
|
public pinned: SelectionModel<Org.AsObject> = new SelectionModel<Org.AsObject>(true, []);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type SearchQuery = NonNullable<MessageInitShape<typeof ListOrganizationsRequestS
|
|||||||
selector: 'cnsl-org-table',
|
selector: 'cnsl-org-table',
|
||||||
templateUrl: './org-table.component.html',
|
templateUrl: './org-table.component.html',
|
||||||
styleUrls: ['./org-table.component.scss'],
|
styleUrls: ['./org-table.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class OrgTableComponent {
|
export class OrgTableComponent {
|
||||||
public displayedColumns: string[] = ['name', 'state', 'primaryDomain', 'creationDate', 'changeDate', 'actions'];
|
public displayedColumns: string[] = ['name', 'state', 'primaryDomain', 'creationDate', 'changeDate', 'actions'];
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export interface PageEvent {
|
|||||||
selector: 'cnsl-paginator',
|
selector: 'cnsl-paginator',
|
||||||
templateUrl: './paginator.component.html',
|
templateUrl: './paginator.component.html',
|
||||||
styleUrls: ['./paginator.component.scss'],
|
styleUrls: ['./paginator.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class PaginatorComponent {
|
export class PaginatorComponent {
|
||||||
@Input() public timestamp: Timestamp.AsObject | ConnectTimestamp | undefined = undefined;
|
@Input() public timestamp: Timestamp.AsObject | ConnectTimestamp | undefined = undefined;
|
||||||
|
|||||||
+4
-4
@@ -30,22 +30,22 @@
|
|||||||
}})
|
}})
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="val" *ngIf="this.policy.hasSymbol">
|
<div class="val" *ngIf="policy.hasSymbol">
|
||||||
<i *ngIf="password?.pristine || password?.errors?.['errorssymbolerror']" class="las la-times red"></i>
|
<i *ngIf="password?.pristine || password?.errors?.['errorssymbolerror']" class="las la-times red"></i>
|
||||||
<i *ngIf="password?.dirty && !password?.errors?.['errorssymbolerror']" class="las la-check green"></i>
|
<i *ngIf="password?.dirty && !password?.errors?.['errorssymbolerror']" class="las la-check green"></i>
|
||||||
<span class="cnsl-secondary-text"> {{ 'ERRORS.SYMBOLERROR' | translate }}</span>
|
<span class="cnsl-secondary-text"> {{ 'ERRORS.SYMBOLERROR' | translate }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="val" *ngIf="this.policy.hasNumber">
|
<div class="val" *ngIf="policy.hasNumber">
|
||||||
<i *ngIf="password?.pristine || password?.errors?.['errorsnumbererror']" class="las la-times red"></i>
|
<i *ngIf="password?.pristine || password?.errors?.['errorsnumbererror']" class="las la-times red"></i>
|
||||||
<i *ngIf="password?.dirty && !password?.errors?.['errorsnumbererror']" class="las la-check green"></i>
|
<i *ngIf="password?.dirty && !password?.errors?.['errorsnumbererror']" class="las la-check green"></i>
|
||||||
<span class="cnsl-secondary-text"> {{ 'ERRORS.NUMBERERROR' | translate }}</span>
|
<span class="cnsl-secondary-text"> {{ 'ERRORS.NUMBERERROR' | translate }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="val" *ngIf="this.policy.hasUppercase">
|
<div class="val" *ngIf="policy.hasUppercase">
|
||||||
<i *ngIf="password?.pristine || password?.errors?.['errorsuppercasemissing']" class="las la-times red"></i>
|
<i *ngIf="password?.pristine || password?.errors?.['errorsuppercasemissing']" class="las la-times red"></i>
|
||||||
<i *ngIf="password?.dirty && !password?.errors?.['errorsuppercasemissing']" class="las la-check green"></i>
|
<i *ngIf="password?.dirty && !password?.errors?.['errorsuppercasemissing']" class="las la-check green"></i>
|
||||||
<span class="cnsl-secondary-text"> {{ 'ERRORS.UPPERCASEMISSING' | translate }}</span>
|
<span class="cnsl-secondary-text"> {{ 'ERRORS.UPPERCASEMISSING' | translate }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="val" *ngIf="this.policy.hasLowercase">
|
<div class="val" *ngIf="policy.hasLowercase">
|
||||||
<i *ngIf="password?.pristine || password?.errors?.['errorslowercasemissing']" class="las la-times red"></i>
|
<i *ngIf="password?.pristine || password?.errors?.['errorslowercasemissing']" class="las la-times red"></i>
|
||||||
<i *ngIf="password?.dirty && !password?.errors?.['errorslowercasemissing']" class="las la-check green"></i>
|
<i *ngIf="password?.dirty && !password?.errors?.['errorslowercasemissing']" class="las la-check green"></i>
|
||||||
<span class="cnsl-secondary-text">{{ 'ERRORS.LOWERCASEMISSING' | translate }}</span>
|
<span class="cnsl-secondary-text">{{ 'ERRORS.LOWERCASEMISSING' | translate }}</span>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { PasswordComplexityPolicy } from '@zitadel/proto/zitadel/policy_pb';
|
|||||||
selector: 'cnsl-password-complexity-view',
|
selector: 'cnsl-password-complexity-view',
|
||||||
templateUrl: './password-complexity-view.component.html',
|
templateUrl: './password-complexity-view.component.html',
|
||||||
styleUrls: ['./password-complexity-view.component.scss'],
|
styleUrls: ['./password-complexity-view.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class PasswordComplexityViewComponent {
|
export class PasswordComplexityViewComponent {
|
||||||
@Input() public password: AbstractControl | null = null;
|
@Input() public password: AbstractControl | null = null;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { WarnDialogComponent } from '../warn-dialog/warn-dialog.component';
|
|||||||
selector: 'cnsl-personal-access-tokens',
|
selector: 'cnsl-personal-access-tokens',
|
||||||
templateUrl: './personal-access-tokens.component.html',
|
templateUrl: './personal-access-tokens.component.html',
|
||||||
styleUrls: ['./personal-access-tokens.component.scss'],
|
styleUrls: ['./personal-access-tokens.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class PersonalAccessTokensComponent implements OnInit {
|
export class PersonalAccessTokensComponent implements OnInit {
|
||||||
@Input() userId!: string;
|
@Input() userId!: string;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import { NewOrganizationService } from '../../../services/new-organization.servi
|
|||||||
selector: 'cnsl-domain-policy',
|
selector: 'cnsl-domain-policy',
|
||||||
templateUrl: './domain-policy.component.html',
|
templateUrl: './domain-policy.component.html',
|
||||||
styleUrls: ['./domain-policy.component.scss'],
|
styleUrls: ['./domain-policy.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DomainPolicyComponent implements OnInit, OnDestroy {
|
export class DomainPolicyComponent implements OnInit, OnDestroy {
|
||||||
private managementService!: ManagementService;
|
private managementService!: ManagementService;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { PolicyComponentServiceType } from '../policy-component-types.enum';
|
|||||||
selector: 'cnsl-idp-settings',
|
selector: 'cnsl-idp-settings',
|
||||||
templateUrl: './idp-settings.component.html',
|
templateUrl: './idp-settings.component.html',
|
||||||
styleUrls: ['./idp-settings.component.scss'],
|
styleUrls: ['./idp-settings.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class IdpSettingsComponent implements OnInit {
|
export class IdpSettingsComponent implements OnInit {
|
||||||
@Input() public serviceType!: PolicyComponentServiceType;
|
@Input() public serviceType!: PolicyComponentServiceType;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ interface State {
|
|||||||
selector: 'cnsl-language-settings',
|
selector: 'cnsl-language-settings',
|
||||||
templateUrl: './language-settings.component.html',
|
templateUrl: './language-settings.component.html',
|
||||||
styleUrls: ['./language-settings.component.scss'],
|
styleUrls: ['./language-settings.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class LanguageSettingsComponent {
|
export class LanguageSettingsComponent {
|
||||||
public canWriteRestrictions$: Observable<boolean> = this.authService.isAllowed(['iam.restrictions.write']);
|
public canWriteRestrictions$: Observable<boolean> = this.authService.isAllowed(['iam.restrictions.write']);
|
||||||
|
|||||||
+1
@@ -11,6 +11,7 @@ enum LoginMethodComponentType {
|
|||||||
selector: 'cnsl-dialog-add-type',
|
selector: 'cnsl-dialog-add-type',
|
||||||
templateUrl: './dialog-add-type.component.html',
|
templateUrl: './dialog-add-type.component.html',
|
||||||
styleUrls: ['./dialog-add-type.component.scss'],
|
styleUrls: ['./dialog-add-type.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class DialogAddTypeComponent {
|
export class DialogAddTypeComponent {
|
||||||
public LoginMethodComponentType: any = LoginMethodComponentType;
|
public LoginMethodComponentType: any = LoginMethodComponentType;
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ export enum LoginMethodComponentType {
|
|||||||
selector: 'cnsl-factor-table',
|
selector: 'cnsl-factor-table',
|
||||||
templateUrl: './factor-table.component.html',
|
templateUrl: './factor-table.component.html',
|
||||||
styleUrls: ['./factor-table.component.scss'],
|
styleUrls: ['./factor-table.component.scss'],
|
||||||
|
standalone: false,
|
||||||
})
|
})
|
||||||
export class FactorTableComponent {
|
export class FactorTableComponent {
|
||||||
public LoginMethodComponentType: any = LoginMethodComponentType;
|
public LoginMethodComponentType: any = LoginMethodComponentType;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user