<ng-container *ngIf="!loading">
    <plugin-autocomplete *ngIf="adminMode && canUpdateRoles()" #test [labelPlaceholder]="this.translate.instant('lang.addUserOrEntity')"
        [routeDatas]="['/rest/autocomplete/users','/rest/autocomplete/entities']" [targetSearchKey]="'idToDisplay'"
        [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElem($event)" appearance="ouline"></plugin-autocomplete>
    <div *ngIf="isEmptyList() && !loading" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;">
        {{'lang.noDiffusionList' | translate}}
    </div>
    <div *ngIf="hasNoDest" class="alert-message alert-message-danger" role="alert" [innerHTML]="this.translate.instant('lang.diffNoDestmsg')"></div>
    <ng-container *ngFor="let role of availableRoles">
        <mat-expansion-panel *ngIf="diffList[role.id].items.length > 0" class="diffusionList"
            [expanded]="role.id === 'dest' || this.adminMode || expanded">
            <mat-expansion-panel-header>
                <mat-panel-title>
                    {{role.label}} <ng-container *ngIf="role.id !== 'dest'">({{diffList[role.id].items.length}})
                    </ng-container>
                </mat-panel-title>
            </mat-expansion-panel-header>
            <mat-list>
                <mat-list-item disableRipple class="item-diffusion-list"
                    *ngFor="let diffusion of diffList[role.id].items;let i=index">
                    <mat-icon mat-list-icon color="primary" class="fa"
                        [class.fa-user]="diffusion.item_type === 'user_id' || diffusion.item_type === 'user'"
                        [class.fa-sitemap]="diffusion.item_type === 'entity_id' || diffusion.item_type === 'entity'"></mat-icon>
                    <div class="item-diffusion">
                        <p mat-line [title]="diffusion.itemLabel">{{diffusion.itemLabel}}</p>
                        <p mat-line class="subInfo" [title]="diffusion.itemSubLabel">
                            {{diffusion.itemSubLabel}}</p>
                    </div>
                    <div *ngIf="role.id === 'dest' && target === 'redirect' && adminMode" >
                        <button mat-icon-button (click)="loadDestUserList()" [matMenuTriggerFor]="menuDestUserList"
                            title="{{'lang.chooseAnotherEntityUser' | translate}}">
                            <mat-icon class="fa fa-edit" color="primary"></mat-icon>
                        </button>
                        <mat-menu #menuDestUserList="matMenu">
                            <button mat-menu-item *ngFor="let userDest of userDestList" (click)="changeDest(userDest)">
                                <span>{{userDest.labelToDisplay}}</span>
                            </button>
                        </mat-menu>
                    </div>
                    <div *ngIf="role.id !== 'dest' && adminMode && (diffusion.item_type === 'user_id' || diffusion.item_type === 'user')">
                        <button mat-button [matMenuTriggerFor]="menu" [disabled]="!canUpdateRoles()">{{role.label}} <i
                                class="fa fa-chevron-down"></i></button>
                        <mat-menu #menu="matMenu" [class]="'roleListMenu'">
                            <ng-container *ngFor="let selectRole of availableRoles">
                                <button mat-menu-item *ngIf="(selectRole.canUpdate && target !== 'redirect')  || (selectRole.id !== 'dest' && target === 'redirect' && selectRole.canUpdate)"
                                    (click)="changeRole(diffusion,role,selectRole)"
                                    style="font-size:13px;">{{selectRole.label}}</button>
                            </ng-container>
                        </mat-menu>
                    </div>
                    <div *ngIf="role.id !== 'dest' && adminMode">
                        <button mat-icon-button color="warn" (click)="deleteItem(role.id,i)" [disabled]="!canUpdateRoles()">
                            <mat-icon class="fa fa-trash" style="height:auto;"></mat-icon>
                        </button>
                    </div>
                </mat-list-item>
            </mat-list>
        </mat-expansion-panel>
    </ng-container>
</ng-container>
<div *ngIf="loading" style="display:flex;">
    <mat-spinner style="margin:auto;"></mat-spinner>
</div>