<ion-header [translucent]="true"> <ion-toolbar color="primary"> <ion-buttons slot="start"> <ion-back-button></ion-back-button> </ion-buttons> <ion-title>{{title}}</ion-title> </ion-toolbar> </ion-header> <form style="display: contents;" id="adminForm" (ngSubmit)="onSubmit()" #adminForm="ngForm"> <ion-content> <ion-item> <ion-label color="secondary" position="floating">{{'lang.label' | translate}} *</ion-label> <ion-input name="label" [maxlength]="128" [(ngModel)]="group.label" required> </ion-input> </ion-item> <ion-item lines="none" *ngIf="!creationMode"> <ion-label color="secondary">{{'lang.privileges' | translate}} :</ion-label> </ion-item> <div style="display: grid;grid-gap: 10px;" [class.grid-2-col]="signaturesService.mobileMode" [class.grid-3-col]="!signaturesService.mobileMode"> <ion-item style="cursor: pointer" *ngFor="let privilege of group.privileges"> <ion-toggle slot="start" [name]="privilege.id" color="primary" [checked]="privilege.checked" [(ngModel)]="privilege.checked" (click)="togglePrivilege(privilege, true)"></ion-toggle> <ion-label (click)="togglePrivilege(privilege, false)">{{'lang.' + privilege.id + 'Admin' | translate}}</ion-label> </ion-item> </div> <!--<ion-grid *ngIf="!creationMode"> <ion-row> <ion-col [size]="!signaturesService.mobileMode ? 2 : 2" *ngFor="let privilege of group.privileges"> <ion-item style="cursor: pointer"> <ion-toggle slot="start" [name]="privilege.id" color="primary" [checked]="privilege.checked" [(ngModel)]="privilege.checked" (click)="togglePrivilege(privilege, true)"></ion-toggle> <ion-label (click)="togglePrivilege(privilege, false)">{{'lang.' + privilege.id + 'Admin' | translate}}</ion-label> </ion-item> </ion-col> </ion-row> </ion-grid>--> <ion-item lines="none" *ngIf="!creationMode"> <ion-label color="secondary">{{'lang.linkedUsers' | translate}} :</ion-label> </ion-item> <ion-card *ngIf="!creationMode" style="height: 400px;"> <ion-list> <ion-item style="display: flex;"> <ion-label color="primary" matSort [matSortActive]="displayedColumns[1]" matSortDirection='asc' style="display: flex;font-size: 12px;align-items: center;" (matSortChange)="sortData($event)"> <ng-container *ngFor="let col of displayedColumns"> <div [mat-sort-header]="col" disableClear style="flex: 1" *ngIf="col!=='actions'"> {{'lang.' + col | translate}} </div> </ng-container> <div style="flex: 1;text-align: right;" *ngIf="displayedColumns.indexOf('actions') > -1"> <ion-button slot="end" color="primary" fille="outline" shape="round" (click)="openUserList()"> {{'lang.add' | translate}} </ion-button> </div> </ion-label> <ion-button slot="end" fill="clear" shape="round" disabled> <ion-icon></ion-icon> </ion-button> </ion-item> <ion-virtual-scroll [items]="sortedData" approxItemHeight="50px"> <ion-item *virtualItem="let element" style="display: flex;"> <ion-label style="display: flex;cursor: pointer;" routerLink="/administration/users/{{element.id}}"> <div style="flex: 1" *ngFor="let col of displayedColumns"> {{element[col]}} </div> </ion-label> <ion-button slot="end" fill="clear" shape="round" (click)="$event.stopPropagation();unlinkUser(element)" title="{{'lang.unlinkUser' | translate}}"> <ion-icon color="danger" slot="icon-only" name="close-outline"></ion-icon> </ion-button> </ion-item> </ion-virtual-scroll> </ion-list> </ion-card> <ion-item text-center lines="none" style="position: sticky;bottom:0px;z-index:1;"> <div style="display: flex;align-items: center;justify-content: center;width: 100%;background: white;"> <ion-button type="submit" shape="round" size="large" fill="outline" color="primary" [disabled]="!adminForm.form.valid || !canValidate()"> <ion-label style="font-size: 13px;">{{'lang.validate' | translate}}</ion-label> </ion-button> <ion-button *ngIf="!creationMode" type="button" shape="round" size="large" fill="outline" color="danger" (click)="deleteGroup()"> <ion-label style="font-size: 13px;">{{'lang.delete' | translate}}</ion-label> </ion-button> </div> </ion-item> </ion-content> </form>