mirror of
https://github.com/andwati/zitadel.git
synced 2026-11-15 18:25:13 +00:00
* add custom validator for redirect inputs * change http pattern, i18n * throw out deprecated usergrant functions * remove deprecation service * show docs in app detail * reorder data promises * show redirect desc in app detail * custom validator * grant search filters * rm animations * add validation to app detail * user grant udpate * rm grantid from update req * fix project member guard * fix hasrole directive * show validation errors, i18n * fix router link from org members * navitem padding * mobile layout * policy grid mobile layout * rm unused background * lint * add stylelinter add to pipeline * update stylelint rules * lint unknown rule * disable enable rules * lint * table style lint * table classes * fix stylelinter rule, lint * overflow fix member detail * common detail page * user create, password, project grant detail clnup * move meta styles * lint * password policy indicator * lint * fix org create * common component for complexity view * lint * user grant filter * Update console/src/assets/i18n/en.json Co-authored-by: Florian Forster <[email protected]> * Update console/src/assets/i18n/en.json Co-authored-by: Florian Forster <[email protected]> * Update console/src/assets/i18n/de.json Co-authored-by: Florian Forster <[email protected]> * Update console/src/assets/i18n/de.json Co-authored-by: Florian Forster <[email protected]> * Update console/src/assets/i18n/en.json Co-authored-by: Florian Forster <[email protected]> Co-authored-by: Florian Forster <[email protected]>
91 lines
4.7 KiB
HTML
91 lines
4.7 KiB
HTML
<app-detail-layout [backRouterLink]="[ '/iam']" title="{{ 'IAM.MEMBER.TITLE' | translate }}"
|
|
description="{{ 'IAM.MEMBER.DESCRIPTION' | translate }}">
|
|
<div class="table-header-row">
|
|
<div class="col">
|
|
<ng-container *ngIf="!selection.hasValue()">
|
|
<span class="desc">{{'ORG_DETAIL.TABLE.TOTAL' | translate}}</span>
|
|
<span class="count">{{dataSource?.membersSubject.value.length}}</span>
|
|
</ng-container>
|
|
<ng-container *ngIf="selection.hasValue()">
|
|
<span class="desc">{{'ORG_DETAIL.TABLE.SELECTION' | translate}}</span>
|
|
<span class="count">{{selection?.selected?.length}}</span>
|
|
</ng-container>
|
|
</div>
|
|
<span class="fill-space"></span>
|
|
<ng-template appHasRole [appHasRole]="['iam.member.delete']">
|
|
<button color="warn" (click)="removeProjectMemberSelection()"
|
|
matTooltip="{{'ORG_DETAIL.TABLE.DELETE' | translate}}" class="icon-button" mat-icon-button
|
|
*ngIf="selection.hasValue()">
|
|
<i class="las la-trash"></i>
|
|
</button>
|
|
</ng-template>
|
|
<ng-template appHasRole [appHasRole]="['iam.member.write']">
|
|
<a color="primary" [disabled]="disabled" class="add-button" (click)="openAddMember()" color="primary"
|
|
mat-raised-button>
|
|
<mat-icon class="icon">add</mat-icon>{{ 'ACTIONS.NEW' | translate }}
|
|
</a>
|
|
</ng-template>
|
|
</div>
|
|
|
|
<div class="table-wrapper">
|
|
<div class="spinner-container" *ngIf="dataSource?.loading$ | async">
|
|
<mat-spinner diameter="50"></mat-spinner>
|
|
</div>
|
|
<table mat-table class="background-style table" aria-label="Elements" [dataSource]="dataSource">
|
|
<ng-container matColumnDef="select">
|
|
<th class="selection" mat-header-cell *matHeaderCellDef>
|
|
<mat-checkbox color="primary" (change)="$event ? masterToggle() : null"
|
|
[checked]="selection.hasValue() && isAllSelected()"
|
|
[indeterminate]="selection.hasValue() && !isAllSelected()">
|
|
</mat-checkbox>
|
|
</th>
|
|
<td class="selection" mat-cell *matCellDef="let row">
|
|
<mat-checkbox color="primary" (click)="$event.stopPropagation()"
|
|
(change)="$event ? selection.toggle(row) : null" [checked]="selection.isSelected(row)">
|
|
</mat-checkbox>
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="firstname">
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.FIRSTNAME' | translate }} </th>
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
{{member.firstName}} </td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="lastname">
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.LASTNAME' | translate }} </th>
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
{{member.lastName}} </td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="username">
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.USERNAME' | translate }} </th>
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
{{member.userName}} </td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="email">
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.EMAIL' | translate }} </th>
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
{{member.email}}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="roles">
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.ROLES' | translate }} </th>
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
<span class="role app-label" *ngFor="let role of member.rolesList; index as i">
|
|
{{ 'ROLES.'+role | translate }}</span>
|
|
</td>
|
|
</ng-container>
|
|
|
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
|
<tr class="data-row" mat-row *matRowDef="let row; columns: displayedColumns;">
|
|
</tr>
|
|
</table>
|
|
|
|
<mat-paginator class="background-style paginator" #paginator [pageSize]="50"
|
|
[pageSizeOptions]="[25, 50, 100, 250]">
|
|
</mat-paginator>
|
|
</div>
|
|
</app-detail-layout> |