54 lines
1.7 KiB
HTML
54 lines
1.7 KiB
HTML
@if (listResource.isLoading()) {
|
|
<app-skeleton-loader type="table" [count]="5" />
|
|
} @else if (listResource.error()) {
|
|
<app-error-state (retryAction)="listResource.reload()" />
|
|
} @else {
|
|
<h2 class="row-container space-between">
|
|
<span>Roles</span>
|
|
<a mat-button [routerLink]="['/roles', 'new']">
|
|
<mat-icon>add_box</mat-icon>
|
|
Add
|
|
</a>
|
|
</h2>
|
|
<mat-table #table [dataSource]="dataSource()" aria-label="Elements">
|
|
<!-- Name Column -->
|
|
<ng-container matColumnDef="name">
|
|
<mat-header-cell *matHeaderCellDef>Name</mat-header-cell>
|
|
<mat-cell *matCellDef="let row"
|
|
><a [routerLink]="['/roles', row.id]">{{ row.name }}</a></mat-cell
|
|
>
|
|
</ng-container>
|
|
|
|
<!-- Included Roles Column (NEW) -->
|
|
<ng-container matColumnDef="includedRoles">
|
|
<mat-header-cell *matHeaderCellDef>Includes</mat-header-cell>
|
|
<mat-cell *matCellDef="let row">
|
|
@if (row.includedRoles?.length) {
|
|
<ul>
|
|
@for (r of row.includedRoles; track r) {
|
|
<li>{{ r }}</li>
|
|
}
|
|
</ul>
|
|
} @else {
|
|
<span>-</span>
|
|
}
|
|
</mat-cell>
|
|
</ng-container>
|
|
|
|
<!-- Permissions Column -->
|
|
<ng-container matColumnDef="permissions">
|
|
<mat-header-cell *matHeaderCellDef>Permissions</mat-header-cell>
|
|
<mat-cell *matCellDef="let row">
|
|
<ul>
|
|
@for (permission of row.permissions; track permission) {
|
|
<li>{{ permission }}</li>
|
|
}
|
|
</ul>
|
|
</mat-cell>
|
|
</ng-container>
|
|
|
|
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
|
<mat-row *matRowDef="let row; columns: displayedColumns"></mat-row>
|
|
</mat-table>
|
|
}
|