diff --git a/console/src/app/app-routing.module.ts b/console/src/app/app-routing.module.ts index b336e0b64..4e7bc301c 100644 --- a/console/src/app/app-routing.module.ts +++ b/console/src/app/app-routing.module.ts @@ -75,7 +75,7 @@ const routes: Routes = [ loadChildren: () => import('./pages/actions/actions.module').then((m) => m.ActionsModule), canActivate: [AuthGuard, RoleGuard], data: { - roles: ['org.read'], + roles: ['org.action.read', 'org.flow.read'], }, }, { diff --git a/console/src/app/app.component.scss b/console/src/app/app.component.scss index 49ea39dbc..b3a8cd86f 100644 --- a/console/src/app/app.component.scss +++ b/console/src/app/app.component.scss @@ -11,8 +11,6 @@ $warn-color: mat.get-color-from-palette($warn, 500); $accent-color: mat.get-color-from-palette($accent, 500); $is-dark-theme: map-get($theme, is-dark); - $back: map-get($background, background); - $base: map-get($foreground, base); .main-container { display: flex; diff --git a/console/src/app/app.component.ts b/console/src/app/app.component.ts index 0bf7d498d..98d6ae95a 100644 --- a/console/src/app/app.component.ts +++ b/console/src/app/app.component.ts @@ -1,7 +1,7 @@ import { BreakpointObserver } from '@angular/cdk/layout'; import { OverlayContainer } from '@angular/cdk/overlay'; import { DOCUMENT, ViewportScroller } from '@angular/common'; -import { Component, HostBinding, HostListener, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { Component, HostBinding, HostListener, Inject, OnDestroy, ViewChild } from '@angular/core'; import { MatIconRegistry } from '@angular/material/icon'; import { MatDrawer } from '@angular/material/sidenav'; import { DomSanitizer } from '@angular/platform-browser'; @@ -19,8 +19,7 @@ import { KeyboardShortcutsService } from './services/keyboard-shortcuts/keyboard import { ManagementService } from './services/mgmt.service'; import { NavigationService } from './services/navigation.service'; import { OverlayWorkflowService } from './services/overlay/overlay-workflow.service'; -import { IntroWorkflowOverlays } from './services/overlay/workflows'; -import { StorageLocation, StorageService } from './services/storage.service'; +import { StorageService } from './services/storage.service'; import { ThemeService } from './services/theme.service'; import { UpdateService } from './services/update.service'; @@ -30,7 +29,7 @@ import { UpdateService } from './services/update.service'; styleUrls: ['./app.component.scss'], animations: [toolbarAnimation, ...navAnimations, accountCard, routeAnimations, adminLineAnimation], }) -export class AppComponent implements OnInit, OnDestroy { +export class AppComponent implements OnDestroy { @ViewChild('drawer') public drawer!: MatDrawer; public isHandset$: Observable = this.breakpointObserver.observe('(max-width: 599px)').pipe( map((result) => { @@ -218,7 +217,10 @@ export class AppComponent implements OnInit, OnDestroy { .then((org) => { this.org = org; - this.startIntroWorkflow(); + this.loadPrivateLabelling(); + + // TODO add when console storage is implemented + // this.startIntroWorkflow(); }) .catch((error) => { this.router.navigate(['/users/me']); @@ -235,21 +237,19 @@ export class AppComponent implements OnInit, OnDestroy { }); } - private startIntroWorkflow(): void { - setTimeout(() => { - const cb = () => { - this.storageService.setItem('intro-dismissed', true, StorageLocation.local); - }; - const dismissed = this.storageService.getItem('intro-dismissed', StorageLocation.local); - if (!dismissed) { - this.workflowService.startWorkflow(IntroWorkflowOverlays, cb); - } - }, 1000); - } + // TODO implement Console storage - public ngOnInit(): void { - this.loadPrivateLabelling(); - } + // private startIntroWorkflow(): void { + // setTimeout(() => { + // const cb = () => { + // this.storageService.setItem('intro-dismissed', true, StorageLocation.local); + // }; + // const dismissed = this.storageService.getItem('intro-dismissed', StorageLocation.local); + // if (!dismissed) { + // this.workflowService.startWorkflow(IntroWorkflowOverlays, cb); + // } + // }, 1000); + // } public ngOnDestroy(): void { this.destroy$.next(); diff --git a/console/src/app/modules/filter/filter.component.scss b/console/src/app/modules/filter/filter.component.scss index 84a2eff83..c0f99975c 100644 --- a/console/src/app/modules/filter/filter.component.scss +++ b/console/src/app/modules/filter/filter.component.scss @@ -63,6 +63,11 @@ font-size: 15px; } + .filter-select-method .mat-select { + height: 36px; + padding: 7px 10px; + } + .subquery { display: flex; flex-direction: row; @@ -82,6 +87,8 @@ } .filter-input-value { + flex: 1; + input { height: 36px; font-size: 15px; diff --git a/console/src/app/modules/footer/footer.component.scss b/console/src/app/modules/footer/footer.component.scss index 4ee1ff240..8756ed29d 100644 --- a/console/src/app/modules/footer/footer.component.scss +++ b/console/src/app/modules/footer/footer.component.scss @@ -96,7 +96,7 @@ margin: 0.5rem 0; a { - color: map-get($foreground, base); + color: map-get($foreground, text); text-decoration: none; display: flex; align-items: center; diff --git a/console/src/app/modules/header/header.component.scss b/console/src/app/modules/header/header.component.scss index b3df3035e..0325e0710 100644 --- a/console/src/app/modules/header/header.component.scss +++ b/console/src/app/modules/header/header.component.scss @@ -57,7 +57,7 @@ .org-link { font-size: 14px; - color: map-get($foreground, base); + color: map-get($foreground, text); text-decoration: none; padding: 0.5rem 0.75rem 0.5rem 0.75rem; height: 2.5rem; @@ -90,7 +90,7 @@ .org-switch-button { font-weight: bold; border: none; - color: map-get($foreground, base); + color: map-get($foreground, text); border-radius: 6px; position: relative; font-size: 14px; @@ -118,7 +118,7 @@ svg { opacity: 0.7; - fill: map-get($foreground, base); + fill: map-get($foreground, text); height: 1.25rem; width: 1.25rem; } @@ -135,7 +135,7 @@ .breadcrumb-link { font-size: 14px; - color: map-get($foreground, base); + color: map-get($foreground, text); text-decoration: none; padding: 0.5rem 0.75rem 0.5rem 0.75rem; height: 2.5rem; diff --git a/console/src/app/modules/info-overlay/info-overlay.component.scss b/console/src/app/modules/info-overlay/info-overlay.component.scss index 6ee542524..7bd92caae 100644 --- a/console/src/app/modules/info-overlay/info-overlay.component.scss +++ b/console/src/app/modules/info-overlay/info-overlay.component.scss @@ -44,7 +44,7 @@ display: flex; flex-direction: column; width: 100%; - color: map-get($foreground, base); + color: map-get($foreground, text); &.top-left { &::before { diff --git a/console/src/app/modules/info-section/info-section.component.scss b/console/src/app/modules/info-section/info-section.component.scss index e2d402d70..3caadf9c2 100644 --- a/console/src/app/modules/info-section/info-section.component.scss +++ b/console/src/app/modules/info-section/info-section.component.scss @@ -14,6 +14,7 @@ padding-right: 1rem; font-size: 14px; margin: 0.5rem 0; + box-shadow: 0 2px 5px rgb(0 0 0 / 10%); &.fit { width: fit-content; diff --git a/console/src/app/modules/name-dialog/name-dialog.component.html b/console/src/app/modules/name-dialog/name-dialog.component.html index 52ef09b81..7582e10eb 100644 --- a/console/src/app/modules/name-dialog/name-dialog.component.html +++ b/console/src/app/modules/name-dialog/name-dialog.component.html @@ -1,7 +1,7 @@

- {{data.titleKey | translate}} {{data?.number}} + {{ data.titleKey | translate }} {{ data?.number }}

-

{{data.descKey | translate}}

+

{{ data.descKey | translate }}

{{ data.labelKey | translate }} @@ -9,12 +9,11 @@
- - -
\ No newline at end of file + diff --git a/console/src/app/modules/name-dialog/name-dialog.component.scss b/console/src/app/modules/name-dialog/name-dialog.component.scss index 3bab15639..5aa5e2f4e 100644 --- a/console/src/app/modules/name-dialog/name-dialog.component.scss +++ b/console/src/app/modules/name-dialog/name-dialog.component.scss @@ -15,10 +15,6 @@ h1 { display: flex; justify-content: space-between; - .ok-button { - margin-left: 0.5rem; - } - button { border-radius: 0.5rem; } diff --git a/console/src/app/modules/paginator/paginator.component.html b/console/src/app/modules/paginator/paginator.component.html index fc3af1f62..f5cee0943 100644 --- a/console/src/app/modules/paginator/paginator.component.html +++ b/console/src/app/modules/paginator/paginator.component.html @@ -1,25 +1,29 @@
-

{{length}} {{'PAGINATOR.COUNT' | translate}}

+

+ {{ length }} {{ 'PAGINATOR.COUNT' | translate }} +

- {{(timestamp | timestampToDate)| localizedDate: 'EEEE dd. MMM YYYY, HH:mm'}} + {{ timestamp | timestampToDate | localizedDate: 'EEEE dd. MMM YYYY, HH:mm' }}

- {{pageIndex * pageSize}} - {{pageIndex * pageSize + - pageSize}} + {{ pageIndex * pageSize }} - {{ pageIndex * pageSize + pageSize }} +
- + - {{sizeOption}} + {{ sizeOption }} - - + +
-
\ No newline at end of file + diff --git a/console/src/app/modules/paginator/paginator.component.scss b/console/src/app/modules/paginator/paginator.component.scss index 6df7f1e38..fb5326846 100644 --- a/console/src/app/modules/paginator/paginator.component.scss +++ b/console/src/app/modules/paginator/paginator.component.scss @@ -50,7 +50,7 @@ } /* stylelint-disable */ -::ng-deep .mat-select { +::ng-deep .paginator-select.mat-select { min-width: 60px; height: 36px !important; padding-top: 8px !important; diff --git a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.html b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.html index ba6772555..61dc83a43 100644 --- a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.html +++ b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.html @@ -1,4 +1,4 @@ -

+

{{ data.title | translate }}

diff --git a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.scss b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.scss index 8192f7668..3d218bed6 100644 --- a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.scss +++ b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.scss @@ -1,9 +1,10 @@ .title { - font-size: 1.5rem; + font-size: 1.3rem; } .desc { font-size: 14px; + margin-top: 0; } .form-field { diff --git a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.ts b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.ts index 5bc8a324c..a3c02ee11 100644 --- a/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.ts +++ b/console/src/app/modules/policies/login-policy/factor-table/dialog-add-type/dialog-add-type.component.ts @@ -19,6 +19,7 @@ export class DialogAddTypeComponent { constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { this.availableMfaTypes = data.types; + this.newMfaType = data.types && data.types[0] ? data.types[0] : undefined; } public closeDialog(): void { diff --git a/console/src/app/modules/policies/login-policy/factor-table/factor-table.component.html b/console/src/app/modules/policies/login-policy/factor-table/factor-table.component.html index c8d858dcf..edd2186d7 100644 --- a/console/src/app/modules/policies/login-policy/factor-table/factor-table.component.html +++ b/console/src/app/modules/policies/login-policy/factor-table/factor-table.component.html @@ -22,7 +22,7 @@
-
+
-
+
+ + +
@@ -38,17 +46,4 @@ > {{ 'ACTIONS.SAVE' | translate }} - - - -
- diff --git a/console/src/app/modules/policies/privacy-policy/privacy-policy.component.html b/console/src/app/modules/policies/privacy-policy/privacy-policy.component.html index 8846f76bc..362b0f954 100644 --- a/console/src/app/modules/policies/privacy-policy/privacy-policy.component.html +++ b/console/src/app/modules/policies/privacy-policy/privacy-policy.component.html @@ -1,7 +1,21 @@

{{ 'POLICY.PRIVACY_POLICY.TITLE' | translate }}

{{ 'POLICY.PRIVACY_POLICY.DESCRIPTION' | translate }}

- {{ 'POLICY.DEFAULTLABEL' | translate }} + + + + + + +
@@ -26,17 +40,6 @@
- - -
\ No newline at end of file +
diff --git a/console/src/app/modules/project-private-labeling-dialog/project-private-labeling-dialog.component.scss b/console/src/app/modules/project-private-labeling-dialog/project-private-labeling-dialog.component.scss index d824441af..54cd2b2c2 100644 --- a/console/src/app/modules/project-private-labeling-dialog/project-private-labeling-dialog.component.scss +++ b/console/src/app/modules/project-private-labeling-dialog/project-private-labeling-dialog.component.scss @@ -7,11 +7,16 @@ font-size: 0.9rem; } -.radio-button { - margin: 0.5rem 0; +.project-radio-group { + display: flex; + flex-direction: column; - .label { - white-space: normal; + .radio-button { + margin: 0.5rem 0; + + .label { + white-space: normal; + } } } @@ -24,10 +29,6 @@ display: flex; justify-content: space-between; - .ok-button { - margin-left: 0.5rem; - } - button { border-radius: 0.5rem; } diff --git a/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.html b/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.html index 442bbf1c2..b518c437f 100644 --- a/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.html +++ b/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.html @@ -1,5 +1,4 @@ -
- +
@@ -122,9 +123,11 @@ {{ 'USER.SEARCH.ADDITIONAL-EXTERNAL' | translate }} - + {{ (target === UserTarget.SELF ? 'USER.TARGET.SELF' : 'USER.TARGET.EXTERNAL') | translate }} - {{ 'USER.TARGET.CLICKHERE' | translate }} + {{ 'USER.TARGET.CLICKHERE' | translate }} diff --git a/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.scss b/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.scss index 383458d58..a20e4ca13 100644 --- a/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.scss +++ b/console/src/app/modules/search-user-autocomplete/search-user-autocomplete.component.scss @@ -1,15 +1,79 @@ -.target-desc { - font-size: 14px; - display: block; - margin-top: 0.5rem; +@use '@angular/material' as mat; - a { - color: #4072b4; +@mixin search-user-autocomplete-theme($theme) { + $primary: map-get($theme, primary); + $primary-color: mat.get-color-from-palette($primary, 500); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + $secondary-text: map-get($foreground, secondary-text); - &:hover { - cursor: pointer; - color: #6992c9; - text-decoration: underline; + .user-autocomplete-found { + margin: 0.5rem 0; + border-radius: 0.5rem; + padding: 0.5rem 0; + max-width: 500px; + box-sizing: border-box; + + .add-user-row { + margin-left: -4px; + } + + .found-user-row { + display: flex; + align-items: center; + padding: 0.25rem 0; + + button { + visibility: hidden; + } + + &:hover { + button { + visibility: visible; + } + } + } + + .found-label { + font-size: 14px; + } + + .user-name-column { + display: flex; + flex-direction: column; + justify-content: center; + + .smaller { + font-size: 13px; + } + } + + .fill-space { + flex: 1; + } + + .search-user-dl-btn { + transition: color 0.2s ease; + + &:not(:hover) { + color: $secondary-text; + } + } + } + + .user-autocomplete-target-desc { + font-size: 14px; + display: block; + margin-top: 0.5rem; + + a { + color: $primary-color; + + &:hover { + cursor: pointer; + color: mat.get-color-from-palette($primary, 400); + text-decoration: underline; + } } } } @@ -36,60 +100,6 @@ font-size: 0.8rem; } -.found { - margin: 0.5rem 0; - border-radius: 0.5rem; - padding: 0.5rem 0; - max-width: 500px; - box-sizing: border-box; - - .add-user-row { - margin-left: -4px; - } - - .found-user-row { - display: flex; - align-items: center; - padding: 0.25rem 0; - - button { - visibility: hidden; - } - - &:hover { - button { - visibility: visible; - } - } - } - - .found-label { - font-size: 14px; - } - - .user-name-column { - display: flex; - flex-direction: column; - justify-content: center; - - .smaller { - font-size: 13px; - } - } - - .fill-space { - flex: 1; - } - - .search-user-dl-btn { - transition: color 0.2s ease; - - &:not(:hover) { - color: var(--grey); - } - } -} - .circle { margin-right: 0.5rem; } diff --git a/console/src/app/modules/settings-grid/settinglinks.ts b/console/src/app/modules/settings-grid/settinglinks.ts index 744b41166..34295104e 100644 --- a/console/src/app/modules/settings-grid/settinglinks.ts +++ b/console/src/app/modules/settings-grid/settinglinks.ts @@ -2,10 +2,10 @@ export interface SettingLinks { i18nTitle: string; i18nDesc: string; iamRouterLink: any; - orgRouterLink: any; + orgRouterLink?: any; queryParams: any; - iamWithRole: string[]; - orgWithRole: string[]; + iamWithRole?: string[]; + orgWithRole?: string[]; icon?: string; svgIcon?: string; color: string; @@ -49,12 +49,10 @@ export const PRIVACY_POLICY: SettingLinks = { export const NOTIFICATION_GROUP: SettingLinks = { i18nTitle: 'SETTINGS.GROUPS.NOTIFICATIONS', - i18nDesc: '', + i18nDesc: 'SETTINGS.LIST.NOTIFICATIONS_DESC', iamRouterLink: ['/settings'], - orgRouterLink: ['/org-settings'], queryParams: { id: 'notifications' }, iamWithRole: ['iam.policy.read'], - orgWithRole: ['policy.read'], icon: 'las la-bell', color: 'red', }; diff --git a/console/src/app/modules/settings-grid/settings-grid.component.ts b/console/src/app/modules/settings-grid/settings-grid.component.ts index 0b46ee228..d23b36267 100644 --- a/console/src/app/modules/settings-grid/settings-grid.component.ts +++ b/console/src/app/modules/settings-grid/settings-grid.component.ts @@ -1,5 +1,5 @@ import { animate, style, transition, trigger } from '@angular/animations'; -import { Component, Input } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum'; import { SETTINGLINKS, SettingLinks } from './settinglinks'; @@ -35,9 +35,15 @@ import { SETTINGLINKS, SettingLinks } from './settinglinks'; ]), ], }) -export class SettingsGridComponent { +export class SettingsGridComponent implements OnInit { @Input() public type!: PolicyComponentServiceType; @Input() public tag: string = ''; public PolicyComponentServiceType: any = PolicyComponentServiceType; public SETTINGS: SettingLinks[] = SETTINGLINKS; + + ngOnInit(): void { + this.SETTINGS = this.SETTINGS.filter((setting) => + this.type === PolicyComponentServiceType.MGMT ? !!setting.orgRouterLink : !!setting.iamRouterLink, + ); + } } diff --git a/console/src/app/modules/shortcuts/shortcuts.component.html b/console/src/app/modules/shortcuts/shortcuts.component.html index 4b2e651d5..c4ac1231b 100644 --- a/console/src/app/modules/shortcuts/shortcuts.component.html +++ b/console/src/app/modules/shortcuts/shortcuts.component.html @@ -1,99 +1,132 @@
-

{{'HOME.SHORTCUTS.SHORTCUTS' | translate}}

- -
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

+

{{ 'HOME.SHORTCUTS.REORDER' | translate }}

- - -
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

+
+

{{ 'HOME.SHORTCUTS.REORDER' | translate }}

- -
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

+

{{ 'HOME.SHORTCUTS.REORDER' | translate }}

- -
-

{{'HOME.SHORTCUTS.SETTINGS' | translate}}

+

{{ 'HOME.SHORTCUTS.SETTINGS' | translate }}

-
+
+

{{ 'HOME.SHORTCUTS.REORDER' | translate }}

-
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

- +
+ -
-
+
+
- - {{shortcut.label}} + + {{ shortcut.label }}
- {{shortcut.i18nTitle | translate}} - {{shortcut.title}} - {{shortcut.i18nDesc | - translate}} - {{shortcut.desc}} + {{ shortcut.i18nTitle | translate }} + {{ shortcut.title }} + {{ + shortcut.i18nDesc | translate + }} + {{ shortcut.desc }}
-
-
-
- - -
- -
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

- - -
-
- - - {{shortcut.label}} -
-
- {{shortcut.i18nTitle | translate}} - {{shortcut.title}} - {{shortcut.i18nDesc | - translate}} - {{shortcut.desc}} -
- -
-
-
-
-
-
- -
-

{{'HOME.SHORTCUTS.REORDER' | translate}}

- - -
-
- - - {{shortcut.label}} -
-
- {{shortcut.i18nTitle | translate}} - {{shortcut.title}} - {{shortcut.i18nDesc | - translate}} - {{shortcut.desc}} -
- -
-
+
@@ -207,4 +196,4 @@ {{shortcut.title}}
- --> \ No newline at end of file + --> diff --git a/console/src/app/modules/shortcuts/shortcuts.component.scss b/console/src/app/modules/shortcuts/shortcuts.component.scss index 0bb2e1e7b..64f6c3d5d 100644 --- a/console/src/app/modules/shortcuts/shortcuts.component.scss +++ b/console/src/app/modules/shortcuts/shortcuts.component.scss @@ -62,7 +62,6 @@ .shortcut-desc { align-self: center; font-size: 14px; - color: var(--grey); margin-top: 0; text-align: center; } @@ -89,7 +88,6 @@ .shortcut-desc { align-self: center; font-size: 14px; - color: var(--grey); margin-top: 0; text-align: center; } @@ -209,6 +207,30 @@ } } + .available-shortcut-wrapper { + border: 1px solid $border-color; + border-radius: 1rem; + padding: 1rem; + + .available-shortcut-list { + display: grid; + grid-template-columns: 1fr; + grid-gap: 1rem; + + @media only screen and (min-width: 800px) { + grid-template-columns: 1fr 1fr; + } + + @media only screen and (min-width: 1200px) { + grid-template-columns: 1fr 1fr 1fr; + } + + .shortcut-box { + margin: 0; + } + } + } + .cdk-drag-preview { box-sizing: border-box; border-radius: 1rem; diff --git a/console/src/app/modules/shortcuts/shortcuts.component.ts b/console/src/app/modules/shortcuts/shortcuts.component.ts index 419f160a7..4427f53c2 100644 --- a/console/src/app/modules/shortcuts/shortcuts.component.ts +++ b/console/src/app/modules/shortcuts/shortcuts.component.ts @@ -17,7 +17,8 @@ export interface ShortcutItem { i18nTitle?: string; i18nDesc?: string; routerLink: any; - withRole: string[]; + queryParams?: any; + withRole?: string[]; icon?: string; label?: string; svgIcon?: string; @@ -138,8 +139,9 @@ export class ShortcutsComponent implements OnDestroy { type: ShortcutType.POLICY, i18nTitle: p.i18nTitle, i18nDesc: p.i18nDesc, - routerLink: p.orgRouterLink, - withRole: p.orgWithRole, + routerLink: p.orgRouterLink ?? p.iamRouterLink, + queryParams: p.queryParams, + withRole: p.orgWithRole ?? p.iamWithRole, icon: p.icon ?? '', svgIcon: p.svgIcon ?? '', color: p.color ?? '', @@ -176,10 +178,10 @@ export class ShortcutsComponent implements OnDestroy { } else { switch (listName) { case 'main': - this.main = [PROFILE_SHORTCUT, CREATE_ORG, CREATE_PROJECT, CREATE_USER]; + this.main = [PROFILE_SHORTCUT /* CREATE_ORG, CREATE_PROJECT, CREATE_USER */]; break; case 'secondary': - this.secondary = []; + this.secondary = [CREATE_ORG, CREATE_PROJECT, CREATE_USER]; // [LOGIN_POLICY, PRIVATELABEL_POLICY].map((p) => { // const policy: string = { // i18nTitle: p.i18nTitle, @@ -194,7 +196,7 @@ export class ShortcutsComponent implements OnDestroy { // }); break; case 'third': - this.third = []; + this.third = this.ALL_SHORTCUTS.filter((item) => item.i18nTitle === 'SETTINGS.GROUPS.APPEARANCE'); // [LOGIN_TEXTS_POLICY, MESSAGE_TEXTS_POLICY].map((p) => { // const policy: ShortcutItem = { // i18nTitle: p.i18nTitle, @@ -276,4 +278,8 @@ export class ShortcutsComponent implements OnDestroy { public get allProjects(): ShortcutItem[] { return this.all.filter((s) => s.type === ShortcutType.PROJECT); } + + public get allAvailableShortcuts(): ShortcutItem[] { + return [...this.allRoutes, ...this.allPolicies, ...this.allProjects]; + } } diff --git a/console/src/app/modules/show-token-dialog/show-token-dialog.component.html b/console/src/app/modules/show-token-dialog/show-token-dialog.component.html index 1c152541c..3748c59d6 100644 --- a/console/src/app/modules/show-token-dialog/show-token-dialog.component.html +++ b/console/src/app/modules/show-token-dialog/show-token-dialog.component.html @@ -1,30 +1,37 @@ -{{'USER.PERSONALACCESSTOKEN.ADDED.TITLE' | translate}} +{{ 'USER.PERSONALACCESSTOKEN.ADDED.TITLE' | translate }}
- {{'USER.PERSONALACCESSTOKEN.ADDED.DESCRIPTION' | translate}} + + {{ 'USER.PERSONALACCESSTOKEN.ADDED.DESCRIPTION' | translate }}
-

{{'USER.PERSONALACCESSTOKEN.ID' | translate}}

-

{{tokenResponse.tokenId}}

+

{{ 'USER.PERSONALACCESSTOKEN.ID' | translate }}

+

{{ tokenResponse.tokenId }}

-

{{'USER.PERSONALACCESSTOKEN.TOKEN' | translate}}

+

{{ 'USER.PERSONALACCESSTOKEN.TOKEN' | translate }}

- - {{tokenResponse.token}} + {{ tokenResponse.token }}
-
\ No newline at end of file +
diff --git a/console/src/app/modules/show-token-dialog/show-token-dialog.component.scss b/console/src/app/modules/show-token-dialog/show-token-dialog.component.scss index 92b2f5c7c..1dc60536e 100644 --- a/console/src/app/modules/show-token-dialog/show-token-dialog.component.scss +++ b/console/src/app/modules/show-token-dialog/show-token-dialog.component.scss @@ -28,7 +28,6 @@ } .left { - color: var(--grey); margin-right: 1rem; margin-top: 0; margin-bottom: 0.5rem; diff --git a/console/src/app/modules/sidenav/sidenav.component.scss b/console/src/app/modules/sidenav/sidenav.component.scss index 0636d2f74..cc0caf57d 100644 --- a/console/src/app/modules/sidenav/sidenav.component.scss +++ b/console/src/app/modules/sidenav/sidenav.component.scss @@ -69,7 +69,7 @@ padding: 0.75rem 0; font-size: 15px; cursor: pointer; - color: map-get($foreground, base); + color: map-get($foreground, text); display: flex; align-items: center; diff --git a/console/src/app/modules/user-grants/user-grants.component.scss b/console/src/app/modules/user-grants/user-grants.component.scss index 8a5fed998..5e9a31599 100644 --- a/console/src/app/modules/user-grants/user-grants.component.scss +++ b/console/src/app/modules/user-grants/user-grants.component.scss @@ -16,7 +16,7 @@ opacity: 0.6; font-size: 15px; cursor: pointer; - color: map-get($foreground, base); + color: map-get($foreground, text); &:not(:last-child) { margin-right: 1rem; diff --git a/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.html b/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.html index 6f147ca87..317644c1b 100644 --- a/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.html +++ b/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.html @@ -1,6 +1,6 @@ -{{'ORG.DOMAINS.ADD.TITLE' | translate}} +{{ 'ORG.DOMAINS.ADD.TITLE' | translate }}
-

{{'ORG.DOMAINS.ADD.DESCRIPTION' | translate}}

+

{{ 'ORG.DOMAINS.ADD.DESCRIPTION' | translate }}

Domain @@ -9,11 +9,10 @@
- -
\ No newline at end of file +
diff --git a/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.scss b/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.scss index 4c4e09231..d865b143c 100644 --- a/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.scss +++ b/console/src/app/pages/domains/add-domain-dialog/add-domain-dialog.component.scss @@ -4,7 +4,6 @@ } .desc { - color: var(--grey); font-size: 0.9rem; } diff --git a/console/src/app/pages/grants/grants.component.html b/console/src/app/pages/grants/grants.component.html index 443d23392..e0a7a6fa3 100644 --- a/console/src/app/pages/grants/grants.component.html +++ b/console/src/app/pages/grants/grants.component.html @@ -1,18 +1,34 @@

{{ 'GRANTS.TITLE' | translate }}

-

{{'GRANTS.DESC' | translate }}

- +

{{ 'GRANTS.DESC' | translate }}

+ - +
-
\ No newline at end of file +
diff --git a/console/src/app/pages/grants/grants.component.scss b/console/src/app/pages/grants/grants.component.scss index bff28483b..9de3510e8 100644 --- a/console/src/app/pages/grants/grants.component.scss +++ b/console/src/app/pages/grants/grants.component.scss @@ -2,7 +2,7 @@ h1 { margin: 0; } -.desc { - margin-bottom: 2rem; +.grants-desc { + margin-bottom: 1rem; font-size: 14px; } diff --git a/console/src/app/pages/projects/apps/app-detail/app-detail.component.html b/console/src/app/pages/projects/apps/app-detail/app-detail.component.html index 5848f103b..1532a0427 100644 --- a/console/src/app/pages/projects/apps/app-detail/app-detail.component.html +++ b/console/src/app/pages/projects/apps/app-detail/app-detail.component.html @@ -1,7 +1,7 @@
- -
diff --git a/console/src/app/pages/projects/apps/app-detail/auth-method-dialog/auth-method-dialog.component.scss b/console/src/app/pages/projects/apps/app-detail/auth-method-dialog/auth-method-dialog.component.scss index e5b1b3b77..5aa5e2f4e 100644 --- a/console/src/app/pages/projects/apps/app-detail/auth-method-dialog/auth-method-dialog.component.scss +++ b/console/src/app/pages/projects/apps/app-detail/auth-method-dialog/auth-method-dialog.component.scss @@ -13,11 +13,7 @@ h1 { .action { display: flex; - justify-content: flex-end; - - .ok-button { - margin-left: 0.5rem; - } + justify-content: space-between; button { border-radius: 0.5rem; diff --git a/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.html b/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.html index 625fa13a0..4ff326a47 100644 --- a/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.html +++ b/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.html @@ -1,27 +1,40 @@ - - - {{ title }} + + + {{ title }} - - - + + + -
-
- {{uri}} - - +
+
+ {{ uri }} + + - -
+ +
-

- {{'APP.OIDC.REDIRECTNOTVALID' | translate}}

\ No newline at end of file +

+ {{ 'APP.OIDC.REDIRECTNOTVALID' | translate }} +

diff --git a/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.scss b/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.scss index dbc5be916..0768e4a31 100644 --- a/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.scss +++ b/console/src/app/pages/projects/apps/redirect-uris/redirect-uris.component.scss @@ -1,4 +1,80 @@ -.form { +@use '@angular/material' as mat; + +@mixin redirect-uris-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + $is-dark-theme: map-get($theme, is-dark); + $warn: map-get($theme, warn); + $warn-color: map-get($warn, 500); + $button-text-color: map-get($foreground, text); + $button-disabled-text-color: map-get($foreground, disabled-button); + $divider-color: map-get($foreground, dividers); + $secondary-text: map-get($foreground, secondary-text); + + .redirect-uris-list { + width: 100%; + + .uri-line { + display: flex; + align-items: center; + margin: 0.5rem 0; + padding: 0 0 0 0.75rem; + border-radius: 4px; + background: map-get($background, infosection); + + .uri { + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 14px; + overflow-x: auto; + } + + .fill-space { + flex: 1; + } + + i.green { + font-size: 1rem; + line-height: 35px; + height: 30px; + } + + .icon-button { + height: 30px; + line-height: 30px; + + .icon { + font-size: 1rem; + margin-bottom: 3px; + } + + &:not(:hover) { + color: $secondary-text; + } + } + + .alerticon { + display: none; + } + + &.alert { + background-color: map-get($background, alertinfosection); + color: map-get($foreground, alertinfosection); + + .alerticon { + display: inline; + } + } + } + } + + .redirect-uris-error { + font-size: 13px; + color: $warn-color; + margin: 0 0.5rem 1.5rem 0.5rem; + } +} + +.redirect-uris-form { display: flex; align-items: flex-end; min-width: 320px; @@ -12,52 +88,3 @@ margin-right: -0.5rem; } } - -.uri-list { - margin: 0 0.5rem; - width: 100%; - - .uri-line { - display: flex; - align-items: center; - - .uri { - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 14px; - overflow-x: auto; - } - - .fill-space { - flex: 1; - } - - i.green { - font-size: 1rem; - line-height: 35px; - height: 30px; - } - - i.red { - font-size: 1.2rem; - } - - .icon-button { - height: 30px; - line-height: 30px; - - .icon { - font-size: 1rem !important; - } - - &:not(:hover) { - color: var(--grey); - } - } - } -} - -.error { - font-size: 13px; - color: var(--warn); - margin: 0 0.5rem 1.5rem 0.5rem; -} diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts index 2abb61aaf..d50b4b87a 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts @@ -11,7 +11,7 @@ import { ManagementService } from 'src/app/services/mgmt.service'; }) export class ApplicationGridComponent implements OnInit { @Input() public projectId: string = ''; - @Input() public disabled: boolean = false; + @Input() public disabled: boolean = true; @Output() public changeView: EventEmitter = new EventEmitter(); public appsSubject: BehaviorSubject = new BehaviorSubject([]); private loadingSubject: BehaviorSubject = new BehaviorSubject(true); diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html index 8c907cace..dad03837d 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html @@ -6,7 +6,7 @@ [isInactive]="project?.state === ProjectState.PROJECT_STATE_INACTIVE" [hasContributors]="true" stateTooltip="{{ 'PROJECT.STATE.' + project?.state | translate }}" - [hasActions]="true" + [hasActions]="['project.app.write:' + project?.id, 'project.app.write$'] | hasRole | async" >
- + @@ -111,7 +121,9 @@ > {{ 'PROJECT.ROLE.ASSERTION' | translate }} -

{{ 'PROJECT.ROLE.ASSERTION_DESCRIPTION' | translate }}

+ {{ + 'PROJECT.ROLE.ASSERTION_DESCRIPTION' | translate + }} {{ 'PROJECT.ROLE.CHECK' | translate }} -

{{ 'PROJECT.ROLE.CHECK_DESCRIPTION' | translate }}

+ {{ + 'PROJECT.ROLE.CHECK_DESCRIPTION' | translate + }} {{ 'PROJECT.HAS_PROJECT' | translate }} -

{{ 'PROJECT.HAS_PROJECT_DESCRIPTION' | translate }}

+ {{ + 'PROJECT.HAS_PROJECT_DESCRIPTION' | translate + }}
- +
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss index 7b553d91f..484320ac1 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss @@ -55,5 +55,5 @@ .desc { font-size: 14px; - margin-bottom: 2rem; + margin-bottom: 1rem; } diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts index 98c899479..6559a1505 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts @@ -19,6 +19,7 @@ import { CardModule } from 'src/app/modules/card/card.module'; import { ChangesModule } from 'src/app/modules/changes/changes.module'; import { ContributorsModule } from 'src/app/modules/contributors/contributors.module'; import { InfoRowModule } from 'src/app/modules/info-row/info-row.module'; +import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module'; import { InputModule } from 'src/app/modules/input/input.module'; import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module'; import { PaginatorModule } from 'src/app/modules/paginator/paginator.module'; @@ -71,6 +72,7 @@ import { OwnedProjectDetailComponent } from './owned-project-detail.component'; TopViewModule, MatCheckboxModule, MatSelectModule, + InfoSectionModule, MatMenuModule, MatProgressSpinnerModule, ChangesModule, diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html index 0cf83685f..851cd50d0 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html @@ -1,65 +1,104 @@

{{ 'PROJECT.GRANT.DETAIL.DESC' | translate }} - +

-
- - + +
-
- -
+
- +

{{ 'PROJECT.GRANT.DETAIL.MEMBERTITLE' | translate }}

-

{{ 'PROJECT.GRANT.DETAIL.MEMBERDESC' | translate }}

+

{{ 'PROJECT.GRANT.DETAIL.MEMBERDESC' | translate }}

- - - -
\ No newline at end of file + diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts index 2ec2e2973..70f567a0a 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts @@ -3,17 +3,15 @@ import { MatDialog } from '@angular/material/dialog'; import { PageEvent } from '@angular/material/paginator'; import { ActivatedRoute } from '@angular/router'; import { ActionKeysType } from 'src/app/modules/action-keys/action-keys.component'; +import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component'; import { UserGrantRoleDialogComponent } from 'src/app/modules/user-grant-role-dialog/user-grant-role-dialog.component'; import { Member } from 'src/app/proto/generated/zitadel/member_pb'; import { GrantedProject, ProjectGrantState, Role } from 'src/app/proto/generated/zitadel/project_pb'; +import { User } from 'src/app/proto/generated/zitadel/user_pb'; import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service'; import { ManagementService } from 'src/app/services/mgmt.service'; import { ToastService } from 'src/app/services/toast.service'; -import { - ProjectGrantMembersCreateDialogComponent, - ProjectGrantMembersCreateDialogExportType, -} from './project-grant-members-create-dialog/project-grant-members-create-dialog.component'; import { ProjectGrantMembersDataSource } from './project-grant-members-datasource'; @Component({ @@ -69,25 +67,29 @@ export class ProjectGrantDetailComponent { ); }; - this.mgmtService.getProjectGrantByID(this.grantid, this.projectid).then((resp) => { - if (resp.projectGrant) { - this.grant = resp.projectGrant; + this.mgmtService + .getProjectGrantByID(this.grantid, this.projectid) + .then((resp) => { + console.log(resp); + if (resp.projectGrant) { + this.grant = resp.projectGrant; - const breadcrumbs = [ - new Breadcrumb({ - type: BreadcrumbType.ORG, - routerLink: ['/org'], - }), - new Breadcrumb({ - type: BreadcrumbType.PROJECT, - name: '', - param: { key: 'projectid', value: resp.projectGrant.projectId }, - routerLink: ['/projects', resp.projectGrant.projectId], - }), - ]; - this.breadcrumbService.setBreadcrumb(breadcrumbs); - } - }); + const breadcrumbs = [ + new Breadcrumb({ + type: BreadcrumbType.ORG, + routerLink: ['/org'], + }), + new Breadcrumb({ + type: BreadcrumbType.PROJECT, + name: '', + param: { key: 'projectid', value: resp.projectGrant.projectId }, + routerLink: ['/projects', resp.projectGrant.projectId], + }), + ]; + this.breadcrumbService.setBreadcrumb(breadcrumbs); + } + }) + .catch(this.toast.showError); }); } @@ -176,36 +178,35 @@ export class ProjectGrantDetailComponent { } public async openAddMember(): Promise { - const keysList = await this.mgmtService.listProjectGrantMemberRoles(); - - const dialogRef = this.dialog.open(ProjectGrantMembersCreateDialogComponent, { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { data: { - roleKeysList: keysList.resultList, + creationType: CreationType.PROJECT_GRANTED, }, width: '400px', }); - dialogRef.afterClosed().subscribe((dataToAdd: ProjectGrantMembersCreateDialogExportType) => { - if (dataToAdd) { - Promise.all( - dataToAdd.userIds.map((userid: string) => { - return this.mgmtService.addProjectGrantMember( - this.grant.projectId, - this.grant.grantId, - userid, - dataToAdd.rolesKeyList, - ); - }), - ) - .then(() => { - this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTMEMBERADDED', true); - setTimeout(() => { - this.changePage.emit(); - }, 3000); - }) - .catch((error) => { - this.toast.showError(error); - }); + dialogRef.afterClosed().subscribe((resp) => { + if (resp) { + const users: User.AsObject[] = resp.users; + const roles: string[] = resp.roles; + + if (users && users.length && roles && roles.length) { + const userIds = users.map((user) => user.id); + Promise.all( + userIds.map((userid: string) => { + return this.mgmtService.addProjectGrantMember(this.grant.projectId, this.grant.grantId, userid, resp.roles); + }), + ) + .then(() => { + this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTMEMBERADDED', true); + setTimeout(() => { + this.changePage.emit(); + }, 3000); + }) + .catch((error) => { + this.toast.showError(error); + }); + } } }); } diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts index 522b5551c..6c528cfce 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts @@ -15,6 +15,7 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { ActionKeysModule } from 'src/app/modules/action-keys/action-keys.module'; +import { MemberCreateDialogModule } from 'src/app/modules/add-member-dialog/member-create-dialog.module'; import { DetailLayoutModule } from 'src/app/modules/detail-layout/detail-layout.module'; import { InputModule } from 'src/app/modules/input/input.module'; import { MembersTableModule } from 'src/app/modules/members-table/members-table.module'; @@ -25,16 +26,12 @@ import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.mod import { ProjectGrantDetailRoutingModule } from './project-grant-detail-routing.module'; import { ProjectGrantDetailComponent } from './project-grant-detail.component'; import { ProjectGrantIllustrationComponent } from './project-grant-illustration/project-grant-illustration.component'; -import { - ProjectGrantMembersCreateDialogModule, -} from './project-grant-members-create-dialog/project-grant-members-create-dialog.module'; @NgModule({ declarations: [ProjectGrantDetailComponent, ProjectGrantIllustrationComponent], imports: [ CommonModule, ProjectGrantDetailRoutingModule, - ProjectGrantMembersCreateDialogModule, MatAutocompleteModule, HasRoleModule, MatChipsModule, @@ -54,6 +51,7 @@ import { TranslateModule, MatSelectModule, DetailLayoutModule, + MemberCreateDialogModule, HasRolePipeModule, MembersTableModule, MatDialogModule, diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-illustration/project-grant-illustration.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-illustration/project-grant-illustration.component.ts index 88e42fd23..fda48ffef 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-illustration/project-grant-illustration.component.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-illustration/project-grant-illustration.component.ts @@ -13,7 +13,6 @@ export class ProjectGrantIllustrationComponent { @Output() public editRoleClicked: EventEmitter = new EventEmitter(); ProjectGrantState: any = ProjectGrantState; - constructor() {} public removeRole(roleKey: string): void { this.roleRemoved.emit(roleKey); diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html deleted file mode 100644 index adce97077..000000000 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html +++ /dev/null @@ -1,27 +0,0 @@ -

- {{'MEMBER.ADD' | translate}} -

-

{{'ORG_DETAIL.MEMBER.ADDDESCRIPTION' | translate}}

-
- - - - - {{ 'PROJECT.MEMBER.ROLES' | translate }} - - - {{ key }} - - - -
-
- - - -
\ No newline at end of file diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss deleted file mode 100644 index 53919d775..000000000 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss +++ /dev/null @@ -1,12 +0,0 @@ -.full-width { - width: 100%; -} - -.action { - display: flex; - justify-content: flex-end; - - .ok-button { - margin-left: .5rem; - } -} diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts deleted file mode 100644 index 72b87c916..000000000 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; - -import { ProjectGrantMembersCreateDialogComponent } from './project-grant-members-create-dialog.component'; - -describe('ProjectGrantMembersCreateDialogComponent', () => { - let component: ProjectGrantMembersCreateDialogComponent; - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [ProjectGrantMembersCreateDialogComponent], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ProjectGrantMembersCreateDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts deleted file mode 100644 index e0f04f8ea..000000000 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Inject } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { User } from 'src/app/proto/generated/zitadel/user_pb'; - -export interface ProjectGrantMembersCreateDialogExportType { - userIds: string[]; - rolesKeyList: string[]; -} -@Component({ - selector: 'cnsl-project-grant-members-create-dialog', - templateUrl: './project-grant-members-create-dialog.component.html', - styleUrls: ['./project-grant-members-create-dialog.component.scss'], -}) -export class ProjectGrantMembersCreateDialogComponent { - public form!: FormGroup; - public userIds: string[] = []; - public roleKeyList: string[] = []; - - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - ) { } - - public selectUsers(users: User.AsObject | User.AsObject[]): void { - if (Array.isArray(users)) { - this.userIds = users.map(user => user.id); - } - } - - public closeDialog(): void { - this.dialogRef.close(false); - } - - public closeDialogWithSuccess(): void { - const exportData: ProjectGrantMembersCreateDialogExportType = { - userIds: this.userIds, - rolesKeyList: this.roleKeyList, - }; - this.dialogRef.close(exportData); - } -} diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts deleted file mode 100644 index 03581399f..000000000 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatSelectModule } from '@angular/material/select'; -import { TranslateModule } from '@ngx-translate/core'; -import { InputModule } from 'src/app/modules/input/input.module'; -import { SearchUserAutocompleteModule } from 'src/app/modules/search-user-autocomplete/search-user-autocomplete.module'; - -import { ProjectGrantMembersCreateDialogComponent } from './project-grant-members-create-dialog.component'; - -@NgModule({ - declarations: [ProjectGrantMembersCreateDialogComponent], - imports: [ - CommonModule, - FormsModule, - MatDialogModule, - MatButtonModule, - TranslateModule, - MatSelectModule, - InputModule, - SearchUserAutocompleteModule, - ], -}) -export class ProjectGrantMembersCreateDialogModule { } - diff --git a/console/src/app/pages/projects/project-create/project-create.component.html b/console/src/app/pages/projects/project-create/project-create.component.html index a96ec233a..16c4311fa 100644 --- a/console/src/app/pages/projects/project-create/project-create.component.html +++ b/console/src/app/pages/projects/project-create/project-create.component.html @@ -1,4 +1,9 @@ - +

{{ 'PROJECT.PAGES.CREATE_DESC' | translate }}

diff --git a/console/src/app/pages/projects/projects.component.scss b/console/src/app/pages/projects/projects.component.scss index 250e93aa7..606aaad81 100644 --- a/console/src/app/pages/projects/projects.component.scss +++ b/console/src/app/pages/projects/projects.component.scss @@ -14,7 +14,7 @@ } .sub { - margin-bottom: 2rem; + margin-bottom: 1.5rem; font-size: 14px; } @@ -38,7 +38,7 @@ opacity: 0.6; font-size: 15px; cursor: pointer; - color: map-get($foreground, base); + color: map-get($foreground, text); &:first-child { margin-right: 1rem; diff --git a/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html index 0ace51156..0af8c82cc 100644 --- a/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html +++ b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html @@ -17,7 +17,7 @@
- + { + const { id } = params; + if (id) { + this.currentSetting = id; + } + }); + const mediaq: string = '(max-width: 500px)'; const small = this.mediaMatcher.matchMedia(mediaq).matches; if (small) { diff --git a/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.html b/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.html index 580e9249f..63e7b07dc 100644 --- a/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.html +++ b/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.html @@ -1,42 +1,55 @@ -
-

{{'USER.METADATA.TITLE' | translate}}

+
+

{{ 'USER.METADATA.TITLE' | translate }}

-

{{ts | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}

+

{{ ts | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}

-

{{'USER.METADATA.DESCRIPTION' | translate}}

-
+

{{ 'USER.METADATA.DESCRIPTION' | translate }}

+
- -
\ No newline at end of file +
diff --git a/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.scss b/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.scss index 906775f9f..a20422726 100644 --- a/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.scss +++ b/console/src/app/pages/users/user-detail/metadata-dialog/metadata-dialog.component.scss @@ -2,8 +2,8 @@ display: flex; align-items: center; - .title { - font-size: 1.5rem; + .metadata-title { + font-size: 1.3rem; margin: 0; } @@ -23,23 +23,27 @@ } } -.content { - display: flex; - align-items: center; - margin: 0 -0.5rem; +.metadata-dialog-content { + min-width: 400px; - .formfield { - flex: 1; - margin: 0 0.5rem; + .content { + display: flex; + align-items: center; + margin: 0 -0.5rem; - @media only screen and (max-width: 450px) { - flex-basis: 100%; + .formfield { + flex: 1; + margin: 0 0.5rem; + + @media only screen and (max-width: 450px) { + flex-basis: 100%; + } } - } - .rm-button, - .set-button { - margin-top: 14px; + .rm-button, + .set-button { + margin-top: 14px; + } } } diff --git a/console/src/app/pages/users/user-detail/metadata/metadata.component.html b/console/src/app/pages/users/user-detail/metadata/metadata.component.html index 2faab4c07..c341e2aa4 100644 --- a/console/src/app/pages/users/user-detail/metadata/metadata.component.html +++ b/console/src/app/pages/users/user-detail/metadata/metadata.component.html @@ -1,22 +1,17 @@
- {{'USER.TABLE.EMPTY' | translate}} + {{ 'USER.TABLE.EMPTY' | translate }}
- - \ No newline at end of file + + diff --git a/console/src/app/pages/users/user-list/user-table/user-table.component.scss b/console/src/app/pages/users/user-list/user-table/user-table.component.scss index 7adebdb5d..8a9159bf3 100644 --- a/console/src/app/pages/users/user-list/user-table/user-table.component.scss +++ b/console/src/app/pages/users/user-list/user-table/user-table.component.scss @@ -16,7 +16,7 @@ opacity: 0.6; font-size: 15px; cursor: pointer; - color: map-get($foreground, base); + color: map-get($foreground, text); &:first-child { margin-right: 1rem; diff --git a/console/src/app/pages/users/user-list/user-table/user-table.component.ts b/console/src/app/pages/users/user-list/user-table/user-table.component.ts index f5034e4e4..94c2aa326 100644 --- a/console/src/app/pages/users/user-list/user-table/user-table.component.ts +++ b/console/src/app/pages/users/user-list/user-table/user-table.component.ts @@ -37,7 +37,7 @@ export class UserTableComponent implements OnInit { public Type: any = Type; @Input() public type: Type = Type.TYPE_HUMAN; @Input() refreshOnPreviousRoutes: string[] = []; - @Input() disabled: boolean = false; + @Input() canWrite: boolean = false; @ViewChild(PaginatorComponent) public paginator!: PaginatorComponent; @ViewChild(MatSort) public sort!: MatSort; public INITIAL_PAGE_SIZE: number = 20; @@ -77,6 +77,7 @@ export class UserTableComponent implements OnInit { public filterOpen: boolean = false; private searchQueries: SearchQuery[] = []; + @Input() public canDelete: boolean = false; constructor( private router: Router, public translate: TranslateService, diff --git a/console/src/app/services/statehandler/statehandler-processor.service.ts b/console/src/app/services/statehandler/statehandler-processor.service.ts index 6c07685cd..2adad0e3a 100644 --- a/console/src/app/services/statehandler/statehandler-processor.service.ts +++ b/console/src/app/services/statehandler/statehandler-processor.service.ts @@ -1,37 +1,36 @@ import { Location } from '@angular/common'; import { Injectable } from '@angular/core'; -import { Observable, of } from 'rxjs'; +import { Router } from '@angular/router'; import { v4 as uuidv4 } from 'uuid'; export abstract class StatehandlerProcessorService { - public abstract createState(url: string): Observable; + public abstract createState(url: string): string; public abstract restoreState(state?: string): void; } @Injectable() export class StatehandlerProcessorServiceImpl implements StatehandlerProcessorService { - constructor(private location: Location) {} + constructor(private location: Location, private router: Router) {} - public createState(url: string): Observable { + public createState(url: string): string { const externalUrl = this.location.prepareExternalUrl(url); const urlId = uuidv4(); - sessionStorage.setItem(urlId, externalUrl); - - return of(urlId); + return urlId; } public restoreState(state?: string): void { if (state === undefined) { return; + } else { + const url = sessionStorage.getItem(state); + if (url === null) { + return; + } else { + sessionStorage.removeItem(state); + // window.location.replace(window.location.origin + url); + this.router.navigate([url]); + } } - - const url = sessionStorage.getItem(state); - if (url === null) { - return; - } - - sessionStorage.removeItem(state); - window.location.href = window.location.origin + url; } } diff --git a/console/src/app/services/statehandler/statehandler.service.ts b/console/src/app/services/statehandler/statehandler.service.ts index 0ee997fe2..4207788a8 100644 --- a/console/src/app/services/statehandler/statehandler.service.ts +++ b/console/src/app/services/statehandler/statehandler.service.ts @@ -23,7 +23,9 @@ export class StatehandlerServiceImpl implements StatehandlerService, OnDestroy { map(() => oauthService.state), takeUntil(this.unsubscribe$), ) - .subscribe((state) => processor.restoreState(state)); + .subscribe((state) => { + processor.restoreState(state); + }); } public initStateHandler(): void { @@ -47,9 +49,11 @@ export class StatehandlerServiceImpl implements StatehandlerService, OnDestroy { switchMap((url: string) => { if (url.includes('?login_hint=')) { const newUrl = this.removeParam('login_hint', url); - return of(newUrl); + return of(this.processor.createState(newUrl)); + } else if (url) { + return of(this.processor.createState(url)); } else { - return this.processor.createState(url); + return of(undefined); } }), ); diff --git a/console/src/app/services/theme.service.ts b/console/src/app/services/theme.service.ts index ff86e9538..a52a38dc2 100644 --- a/console/src/app/services/theme.service.ts +++ b/console/src/app/services/theme.service.ts @@ -57,9 +57,10 @@ export class ThemeService { } public saveTextColor(colorHex: string, isDark: boolean): void { - this.primaryColorPalette = this.computeColors(colorHex); const theme = isDark ? 'dark' : 'light'; document.documentElement.style.setProperty(`--theme-${theme}-${'text'}`, colorHex); + const secondaryTextHex = tinycolor(colorHex).setAlpha(0.78).toHex8String(); + document.documentElement.style.setProperty(`--theme-${theme}-${'secondary-text'}`, secondaryTextHex); } private computeColors(hex: string): Color[] { diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 81a5e17d7..0c00db2d2 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -35,7 +35,7 @@ }, "SHORTCUTS": { "SHORTCUTS": "Shortcuts", - "SETTINGS": "Organisation Einstellungen", + "SETTINGS": "Verfügbare Shortcuts", "PROJECTS": "Projekte", "REORDER": "Zum Verschieben Kachel halten un ziehen", "ADD": "Zum Hinzufügen Kachel halten und ziehen" @@ -135,7 +135,7 @@ "TEXT": "Hier können Sie zwischen Ihren Benutzerkonten wechseln und Ihre Sessions und Ihr Profil verwalten." }, "NAV": { - "TEXT": "Diese Navigation ändert sich basierend auf den Breadcrumbs darüber." + "TEXT": "Diese Navigation ändert sich basierend auf Ihrer Organisation oder Instanz" }, "CONTEXTCHANGED": { "TEXT": "Achtung! Soeben wurde die Organisation gewechselt." @@ -818,6 +818,7 @@ "LOCKOUT": "Sperrmechanismen", "COMPLEXITY": "Passwordkomplexität", "NOTIFICATIONS": "Benachrichtigungen", + "NOTIFICATIONS_DESC": "SMTP und SMS Einstellungen", "MESSAGETEXTS": "Benachrichtigungstexte", "IDP": "Identity Provider", "DOMAIN": "Domain Einstellungen", @@ -1181,11 +1182,11 @@ "DESC": "Sobald der Nutzer identifiziert ist, wird das Branding der von ihm gewählten Organisation angezeigt, davor wird der Default des Systems angezeigt." }, "1": { - "TITLE": "Durchsetzung der Richtlinie des Projekteigentümers", + "TITLE": "Einstellung des Projekteigentümers", "DESC": "Das Branding der Organisation, die Eigentümerin des Projekts ist, wird angezeigt" }, "2": { - "TITLE": "Durchsetzung der Richtlinie des Benutzereigentümers", + "TITLE": "Einstellung des Benutzereigentümers", "DESC": "Das Branding der Organisation des Projekts wird angezeigt, sobald der Benutzer identifiziert ist, wird jedoch auf die Einstellung der Organisation des identifizierten Benutzers, gewechselt." }, "DIALOG": { @@ -1549,6 +1550,9 @@ } }, "DIALOG": { + "CONFIG": { + "TITLE": "OIDC configuration ändern" + }, "DELETE": { "TITLE": "App löschen", "DESCRIPTION": "Wollen Sie diese App wirklich löschen?" diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 4bf390738..91f6901d8 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -35,7 +35,7 @@ }, "SHORTCUTS": { "SHORTCUTS": "Shortcuts", - "SETTINGS": "Organization Settings", + "SETTINGS": "Available shortcuts", "PROJECTS": "Projects", "REORDER": "Hold and drag the tile to move it", "ADD": "Hold and drag a tile to add" @@ -135,7 +135,7 @@ "TEXT": "Here you can switch between your user accounts and manage your sessions and profile." }, "NAV": { - "TEXT": "This navigation changes based on the breadcrumbs above." + "TEXT": "This navigation changes based on your selected oranization above or your instance" }, "CONTEXTCHANGED": { "TEXT": "Attention! The organization context has changed." @@ -818,6 +818,7 @@ "LOCKOUT": "Lockout", "COMPLEXITY": "Password complexity", "NOTIFICATIONS": "Notification providers and SMTP", + "NOTIFICATIONS_DESC": "SMTP and SMS Settings", "MESSAGETEXTS": "Message Texts", "IDP": "Identity Providers", "DOMAIN": "Domain settings", @@ -1181,11 +1182,11 @@ "DESC": "As soon as the user is identified, the branding of the organization of the identified user will be shown, before the system default is shown." }, "1": { - "TITLE": "Enforce project resource owner Policy", + "TITLE": "Use project setting", "DESC": "The branding of the organization which owns the project will be shown" }, "2": { - "TITLE": "Allow Login User resource owner policy", + "TITLE": "Use User Organization setting", "DESC": "The branding of the organization of the project will be shown, but as soon as the user is identified, the setting of the organization of the identified user, will be shown." }, "DIALOG": { @@ -1549,6 +1550,9 @@ } }, "DIALOG": { + "CONFIG": { + "TITLE": "Change OIDC Configuration" + }, "DELETE": { "TITLE": "Delete App", "DESCRIPTION": "Do you really want to delete this application?" diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index b114a84bd..76781f4a3 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -34,8 +34,8 @@ "DESCRIPTION": "Iniziare rapidamente con ZITADEL." }, "SHORTCUTS": { - "SHORTCUTS": "Shortcuts", - "SETTINGS": "Impostazioni dell' organizazzione", + "SHORTCUTS": "Scorciatoie", + "SETTINGS": "Scorciatoie disponibili", "PROJECTS": "Progetti", "REORDER": "Per spostare, tieni premuto e trascina il riquadro", "ADD": "Per aggiungere, tieni premuto e trascina il riquadro" @@ -135,7 +135,7 @@ "TEXT": "Qui puoi passare da un account utente all'altro e gestire le sessioni e il profilo." }, "NAV": { - "TEXT": "Questa navigazione cambia in base ai breadcrumb sopra." + "TEXT": "Questa navigazione cambia in base all' organizzazione impostata sopra e la tua istanza." }, "CONTEXTCHANGED": { "TEXT": "Attenzione! L'organizzazione è appena stata cambiata." @@ -818,6 +818,7 @@ "LOCKOUT": "Meccanismi di bloccaggio", "COMPLEXITY": "complessità della password", "NOTIFICATIONS": "Notifiche", + "NOTIFICATIONS_DESC": "Impostazioni SMTP e SMS", "MESSAGETEXTS": "Testi di notifica", "IDP": "Identity Providers", "DOMAIN": "Impostazioni del dominio", @@ -1181,11 +1182,11 @@ "DESC": "Non appena l'utente viene identificato, viene mostrata l'impostazione Branding dell'organizzazione, prima che venga mostrato il default del sistema." }, "1": { - "TITLE": "Applica l'impostazione Branding delle risorse del progetto", + "TITLE": "Applica l'impostazione del progetto", "DESC": "Branding dell'organizzazione del progetto sar\u00e0 mostrata" }, "2": { - "TITLE": "Consentire l'accesso all'impostazione Branding dell'utente", + "TITLE": "Applica l'impostazione dell' organizzazione dell' utente", "DESC": "Verr\u00e0 mostrata l'impostazione Branding dell'organizzazione del progetto, ma non appena l'utente viene identificato, verr\u00e0 mostrata l'impostazione dell'organizzazione dell'utente identificato." }, "DIALOG": { @@ -1549,6 +1550,9 @@ } }, "DIALOG": { + "CONFIG": { + "TITLE": "Configurazione OIDC" + }, "DELETE": { "TITLE": "Rimuovere App", "DESCRIPTION": "Vuoi davvero rimuovere questa applicazione?" diff --git a/console/src/component-themes.scss b/console/src/component-themes.scss index 17455082c..019973e2a 100644 --- a/console/src/component-themes.scss +++ b/console/src/component-themes.scss @@ -23,6 +23,7 @@ @import 'src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component'; @import 'src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component'; @import 'src/app/pages/projects/apps/app-detail/app-detail.component'; +@import 'src/app/pages/projects/apps/redirect-uris/redirect-uris.component'; @import 'src/app/modules/top-view/top-view.component'; @import 'src/app/pages/projects/projects.component'; @import 'src/app/modules/edit-text/edit-text.component.scss'; @@ -51,6 +52,7 @@ @import 'src/app/pages/actions/add-action-dialog/add-action-dialog.component'; @import 'src/app/modules/project-role-chip/project-role-chip.component'; @import 'src/app/pages/home/home.component.scss'; +@import 'src/app/modules/search-user-autocomplete/search-user-autocomplete.component.scss'; @import 'src/app/modules/policies/login-policy/factor-table/factor-table.component.scss'; @import 'src/app/modules/info-overlay/info-overlay.component.scss'; @import './styles/codemirror.scss'; @@ -67,6 +69,7 @@ @include top-view-theme($theme); @include info-overlay-theme($theme); @include app-auth-method-radio-theme($theme); + @include search-user-autocomplete-theme($theme); @include project-role-chips-theme($theme); @include card-theme($theme); @include footer-theme($theme); @@ -109,6 +112,7 @@ @include user-grants-theme($theme); @include info-row-theme($theme); @include action-dialog-theme($theme); + @include redirect-uris-theme($theme); @include action-keys-theme($theme); @include codemirror-theme($theme); @include contact-theme($theme); diff --git a/console/src/styles.scss b/console/src/styles.scss index 2cbf89b65..726e8d870 100644 --- a/console/src/styles.scss +++ b/console/src/styles.scss @@ -229,6 +229,9 @@ $caos-light-warn: ( $caos-dark-theme-text: var(--theme-dark-text); $caos-light-theme-text: var(--theme-light-text); +$caos-dark-theme-secondary-text: var(--theme-dark-secondary-text); +$caos-light-theme-secondary-text: var(--theme-light-secondary-text); + $caos-dark-theme-background: ( status-bar: map_get($caos-dark-background, 300), app-bar: map_get($caos-dark-background, 500), @@ -287,7 +290,7 @@ $caos-light-theme-background: ( unselected-chip: map_get($caos-light-background, 300), disabled-list-option: map_get($caos-light-background, 200), tooltip: map_get($mat-gray, 700), - infosection: map_get($caos-light-primary, 100), + infosection: map_get($caos-light-background, 600), warninfosection: #ffc1c1, alertinfosection: rgb(251, 191, 36), successinfosection: #cbf4c9, @@ -307,7 +310,7 @@ $caos-dark-theme-foreground: ( disabled-text: $light-disabled-text, elevation: black, hint-text: $light-disabled-text, - secondary-text: $light-secondary-text, + secondary-text: $caos-dark-theme-secondary-text, placeholder-text: rgba(white, 0.4), icon: rgba(white, 0.54), icons: rgba(white, 0.54), @@ -332,7 +335,7 @@ $caos-light-theme-foreground: ( disabled-text: $dark-disabled-text, elevation: black, hint-text: $dark-disabled-text, - secondary-text: $dark-secondary-text, + secondary-text: $caos-light-theme-secondary-text, placeholder-text: rgba(black, 0.3), icon: rgba(black, 0.54), icons: rgba(black, 0.54), @@ -340,7 +343,7 @@ $caos-light-theme-foreground: ( slider-min: rgba(black, 0.87), slider-off: rgba(black, 0.26), slider-off-active: rgba(black, 0.38), - infosection: #4a4a4a, + infosection: map-get(map-get($caos-light-background, contrast), 600), warninfosection: #620e0e, alertinfosection: rgb(146, 64, 14), successinfosection: #0e6245, @@ -514,7 +517,7 @@ $custom-typography: mat.define-typography-config( ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); background-color: map-get($background, background); border-radius: 8px; transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1) !important; diff --git a/console/src/styles/input.scss b/console/src/styles/input.scss index 5bdd4f804..53779af17 100644 --- a/console/src/styles/input.scss +++ b/console/src/styles/input.scss @@ -21,7 +21,7 @@ font-size: 1rem; border: none; border: 1px solid if($is-dark-theme, #f9f7f725, #1a191938); - background-color: if($is-dark-theme, #00000020, #00000005); + background-color: if($is-dark-theme, #00000020, #00000004); border-radius: 4px; height: 40px; padding: 10px;