Replaced checked in package-lock.json by regenerated one. Ran ng update @angular/core@20 @angular/cli@20 Ran npm install @angular-builders/jest@^20.0.0 @fortawesome/angular-fontawesome@^3.0.0 @swimlane/ngx-graph@^11 Ran npm install ngx-mat-select-search@^8.0.2. Ran ng update @angular/material@20. Updated all eslint and typescript to the latest versions. Removed @angular-devkit/schematics. Updated fontawesome. Updated rxjs and tslib. Moved required node version from 16 to 20. Updated jest-preset-angular. Set preserveWhitespaces to false. Corrected two type declarations in two typescript files to make ng serve run without errors. Removed unused angular-devkit/schematics from view-user.component.ts . Updated list of supported browsers. Upgraded prettier. Ran prettier . --write the first time. Ran prettier . --write the second time. Ran ng generate @angular/core:inject with defaults, excepted a handful of files. Fixed remaining eslint problems. Added dist directory to ignores in eslint.config.js. Let prettier fix formatting, almost everything is just line breaks. Made htmlhint ignore @if and @for Angular constructs. Updated node version in Github workflow to 22.12.0 (build.yml). Updated .env.ts. Updated Angular datetime format strings from YYYY-MM-DD to yyyy-MM-dd. Merged changes from dev into angular20 branch.
61 lines
2.1 KiB
HTML
61 lines
2.1 KiB
HTML
<div class="container layout-row gap-3percent">
|
|
<mat-card class="group-card flex-fill layout-column gap-2percent">
|
|
<mat-form-field class="flex-30">
|
|
<mat-label>{{ 'labels.inputs.Add Groups' | translate }}</mat-label>
|
|
<input matInput [formControl]="groupChoice" [matAutocomplete]="groupsAutocomplete" />
|
|
</mat-form-field>
|
|
|
|
<mat-autocomplete autoActiveFirstOption #groupsAutocomplete="matAutocomplete" [displayWith]="displayGroup">
|
|
@for (group of groupsData; track group) {
|
|
<mat-option [value]="group">
|
|
{{ group.name }}
|
|
</mat-option>
|
|
}
|
|
</mat-autocomplete>
|
|
|
|
<div class="mat-table">
|
|
<div class="mat-header-row">
|
|
<div class="mat-header-cell">{{ 'labels.inputs.Group Details' | translate }}</div>
|
|
<button mat-icon-button (click)="addGroup()">
|
|
<fa-icon icon="plus"></fa-icon>
|
|
</button>
|
|
</div>
|
|
<div class="mat-row">
|
|
<div class="mat-cell">{{ 'labels.inputs.name' | translate }}</div>
|
|
<div class="mat-cell">{{ groupChoice.value.name }}</div>
|
|
</div>
|
|
<div class="mat-row">
|
|
<div class="mat-cell">{{ 'labels.inputs.Id' | translate }}</div>
|
|
<div class="mat-cell">{{ groupChoice.value.id }}</div>
|
|
</div>
|
|
<div class="mat-row">
|
|
<div class="mat-cell">{{ 'labels.inputs.Office' | translate }}</div>
|
|
<div class="mat-cell">{{ groupChoice.value.officeName }}</div>
|
|
</div>
|
|
</div>
|
|
</mat-card>
|
|
|
|
<mat-card class="flex-50">
|
|
<h3 matSubheader>{{ 'labels.heading.Group Members' | translate }}</h3>
|
|
|
|
@if (groupMembers?.length) {
|
|
<mat-nav-list>
|
|
@for (group of groupMembers; track group; let i = $index) {
|
|
<div mat-list-item class="member-item center-gap">
|
|
<span matLine class="p-t-10">{{ group.name }}</span>
|
|
<button
|
|
mat-icon-button
|
|
color="warn"
|
|
class="delete-btn"
|
|
aria-label="Remove group"
|
|
(click)="removeGroup(i, group)"
|
|
>
|
|
<fa-icon icon="trash"></fa-icon>
|
|
</button>
|
|
</div>
|
|
}
|
|
</mat-nav-list>
|
|
}
|
|
</mat-card>
|
|
</div>
|