mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-15 17:02:13 +00:00
* cli core * update material * imports * schematics * lint * rm ng-qrcode, ngx-quicklink * replace qr code lib * rm shared module as quicklink is removed * lazy loading imports * rm public * chore(deps): bump @grpc/grpc-js from 1.7.1 to 1.8.0 in /console (#4857) Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.7.1 to 1.8.0. - [Release notes](https://github.com/grpc/grpc-node/releases) - [Commits](https://github.com/grpc/grpc-node/compare/v1.7.1...@grpc/grpc-js@1.8.0) --- updated-dependencies: - dependency-name: "@grpc/grpc-js" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump libphonenumber-js from 1.10.13 to 1.10.15 in /console (#4861) Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.10.13 to 1.10.15. - [Release notes](https://gitlab.com/catamphetamine/libphonenumber-js/tags) - [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md) - [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.10.13...v1.10.15) --- updated-dependencies: - dependency-name: libphonenumber-js dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * rxjs * chore(deps): bump engine.io from 6.2.0 to 6.2.1 in /console (#4734) Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/socketio/engine.io/releases) - [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/engine.io/compare/6.2.0...6.2.1) --- updated-dependencies: - dependency-name: engine.io dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * lock * lint * rm comments * tsconfig ES2022 * get rid of polyfills file * use node 18 * rm age policy, legacy components * packages * build beta prerelease * remove pre-release build Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Florian Forster <florian@zitadel.com> Co-authored-by: Livio Spring <livio.a@gmail.com>
127 lines
5.0 KiB
HTML
127 lines
5.0 KiB
HTML
<div class="grid-main-container" *ngIf="projectType$ | async as type">
|
|
<div class="loading-sp-wrapper" *ngIf="loading$ | async">
|
|
<mat-spinner diameter="25" class="spinner" color="primary"> </mat-spinner>
|
|
</div>
|
|
|
|
<div class="owned-project-grid-container">
|
|
<div
|
|
class="item card"
|
|
matRipple
|
|
*ngFor="let item of selection.selected; index as i"
|
|
(click)="navigateToProject(type, item, $event)"
|
|
[ngClass]="{ inactive: item.state !== ProjectState.PROJECT_STATE_ACTIVE }"
|
|
>
|
|
<div class="text-part">
|
|
<span *ngIf="item.details && item.details.changeDate" class="top cnsl-secondary-text"
|
|
>{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}
|
|
{{ item.details.changeDate | timestampToDate | localizedDate : 'EEE dd. MMM, HH:mm' }}</span
|
|
>
|
|
<div class="name-row">
|
|
<span class="name" *ngIf="$any(item).name">{{ $any(item).name }}</span>
|
|
<span class="name" *ngIf="$any(item).projectName">{{ $any(item).projectName }}</span>
|
|
|
|
<div
|
|
class="state-dot"
|
|
[ngClass]="{
|
|
active: item.state === ProjectState.PROJECT_STATE_ACTIVE,
|
|
inactive: item.state === ProjectState.PROJECT_STATE_INACTIVE
|
|
}"
|
|
></div>
|
|
</div>
|
|
|
|
<span *ngIf="item.details && item.details.creationDate" class="created"
|
|
>{{ 'PROJECT.PAGES.CREATEDON' | translate }}
|
|
{{ item.details.creationDate | timestampToDate | localizedDate : 'EEE dd. MMM, HH:mm' }}</span
|
|
>
|
|
<span class="fill-space"></span>
|
|
</div>
|
|
|
|
<template [ngTemplateOutlet]="deleteButton" [ngTemplateOutletContext]="{ key: item }"></template>
|
|
<template [ngTemplateOutlet]="toggleButton" [ngTemplateOutletContext]="{ key: item }"></template>
|
|
</div>
|
|
</div>
|
|
<div class="owned-project-grid-container">
|
|
<div
|
|
class="item card"
|
|
matRipple
|
|
*ngFor="let item of notPinned; index as i"
|
|
(click)="navigateToProject(type, $any(item), $event)"
|
|
[ngClass]="{ inactive: item.state !== ProjectState.PROJECT_STATE_ACTIVE }"
|
|
data-e2e="grid-card"
|
|
>
|
|
<div class="text-part">
|
|
<span *ngIf="item.details && item.details.changeDate" class="top cnsl-secondary-text"
|
|
>{{ 'PROJECT.PAGES.LASTMODIFIED' | translate }}
|
|
{{ item.details.changeDate | timestampToDate | localizedDate : 'EEE dd. MMM, HH:mm' }}</span
|
|
>
|
|
<div class="name-row">
|
|
<span class="name" *ngIf="$any(item).name">{{ $any(item).name }}</span>
|
|
<span class="name" *ngIf="$any(item).projectName">{{ $any(item).projectName }}</span>
|
|
|
|
<div
|
|
class="state-dot"
|
|
[ngClass]="{
|
|
active: item.state === ProjectState.PROJECT_STATE_ACTIVE,
|
|
inactive: item.state === ProjectState.PROJECT_STATE_INACTIVE
|
|
}"
|
|
></div>
|
|
</div>
|
|
|
|
<span class="owning-org" *ngIf="$any(item).projectOwnerName">{{ $any(item).projectOwnerName }}</span>
|
|
<span *ngIf="item.details && item.details.creationDate" class="created cnsl-secondary-text"
|
|
>{{ 'PROJECT.PAGES.CREATEDON' | translate }}
|
|
{{ item.details.creationDate | timestampToDate | localizedDate : 'EEE dd. MMM, HH:mm' }}</span
|
|
>
|
|
<span class="fill-space"></span>
|
|
</div>
|
|
|
|
<ng-container *ngIf="type === ProjectType.PROJECTTYPE_OWNED">
|
|
<template [ngTemplateOutlet]="deleteButton" [ngTemplateOutletContext]="{ key: item }"></template>
|
|
</ng-container>
|
|
<template [ngTemplateOutlet]="toggleButton" [ngTemplateOutletContext]="{ key: item }"></template>
|
|
</div>
|
|
|
|
<p class="n-items cnsl-secondary-text" *ngIf="(loading$ | async) === false && projectList.length === 0">
|
|
{{ 'PROJECT.PAGES.NOITEMS' | translate }}
|
|
</p>
|
|
|
|
<ng-container *ngIf="type === ProjectType.PROJECTTYPE_OWNED">
|
|
<ng-template cnslHasRole [hasRole]="['project.create']">
|
|
<div class="add-project-button card" matRipple (click)="addItem()">
|
|
<mat-icon class="icon">add</mat-icon>
|
|
<span>{{ 'PROJECT.PAGES.ADDNEW' | translate }}</span>
|
|
<cnsl-action-keys [doNotUseContrast]="true" [withoutMargin]="true" (actionTriggered)="addItem()">
|
|
</cnsl-action-keys>
|
|
</div>
|
|
</ng-template>
|
|
</ng-container>
|
|
</div>
|
|
</div>
|
|
|
|
<ng-template #deleteButton let-key="key">
|
|
<button
|
|
*ngIf="key.id !== zitadelProjectId"
|
|
matTooltip="{{ 'ACTIONS.DELETE' | translate }}"
|
|
color="warn"
|
|
(click)="deleteProject($event, key)"
|
|
class="delete-button"
|
|
mat-icon-button
|
|
data-e2e="delete-project-button"
|
|
>
|
|
<i class="las la-trash"></i>
|
|
</button>
|
|
</ng-template>
|
|
|
|
<ng-template #toggleButton let-key="key">
|
|
<button
|
|
matTooltip="{{ 'ACTIONS.PIN' | translate }}"
|
|
[ngClass]="{ selected: selection.isSelected(key) }"
|
|
(click)="toggle(key, $event)"
|
|
class="edit-button"
|
|
mat-icon-button
|
|
>
|
|
<mat-icon *ngIf="selection.isSelected(key)" svgIcon="mdi_pin"></mat-icon>
|
|
<mat-icon svgIcon="mdi_pin_outline" *ngIf="!selection.isSelected(key)"></mat-icon>
|
|
</button>
|
|
</ng-template>
|