<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<div id="nifi-registry-admin-add-selected-users-to-group-dialog">
    <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">
        <span class="md-card-title">Add users to group</span>
        <button mat-icon-button (click)="cancel()">
            <mat-icon color="primary">close</mat-icon>
        </button>
    </div>
    <div *ngIf="filteredUsers.length > 0" class="pad-bottom-md">
        <div id="nifi-registry-users-administration-list-container-column-header" class="td-data-table">
            <div class="td-data-table-column" (click)="sortUsers(column)"
                 *ngFor="let column of usersColumns"
                 fxFlex="{{column.width}}">
                {{column.label}}
                <i *ngIf="column.active && column.sortable && column.sortOrder === 'ASC'" class="fa fa-caret-up"
                   aria-hidden="true"></i>
                <i *ngIf="column.active && column.sortable && column.sortOrder === 'DESC'" class="fa fa-caret-down"
                   aria-hidden="true"></i>
            </div>
            <div class="td-data-table-column">
                <mat-checkbox [(ngModel)]="allUsersSelected"
                              (checked)="allUsersSelected"
                              (change)="toggleUsersSelectAll()"></mat-checkbox>
            </div>
        </div>
        <div id="nifi-registry-add-selected-users-to-group-list-container">
            <div fxLayout="row" fxLayoutAlign="space-between center"
                 class="td-data-table-row"
                 [ngClass]="{'selected' : user.checked}"
                 *ngFor="let user of filteredUsers"
                 (click)="user.checked = !user.checked;determineAllUsersSelectedState();">
                <div class="td-data-table-cell" *ngFor="let column of usersColumns"
                     fxFlex="{{column.width}}">
                    <div class="ellipsis" matTooltip="{{column.format ? column.format(user[column.name]) : user[column.name]}}">
                        {{column.format ? column.format(user[column.name]) : user[column.name]}}
                    </div>
                </div>
                <div class="td-data-table-cell">
                    <mat-checkbox [(ngModel)]="user.checked"
                                  [checked]="user.checked"
                                  (change)="determineAllUsersSelectedState()"
                                  (click)="user.checked = !user.checked;determineAllUsersSelectedState()">
                    </mat-checkbox>
                </div>
            </div>
        </div>
    </div>
    <div class="mat-padding push-bottom-md" *ngIf="filteredUsers.length === 0" layout="row"
         layout-align="center center">
        <h3>All users belong to this group.</h3>
    </div>
    <div fxLayout="row">
        <span fxFlex></span>
        <button (click)="cancel()" color="fds-regular" mat-raised-button
                i18n="Cancel addition of selected users to group|A button for cancelling the addition of selected users to a group in the registry.@@nf-admin-workflow-cancel-add-selected-users-to-group-button">
            Cancel
        </button>
        <button [disabled]="isAddSelectedUsersToGroupDisabled" class="push-left-sm" (click)="addSelectedUsersToGroup()"
                color="fds-primary" mat-raised-button
                i18n="Add selected users to group button|A button for adding users to an existing group in the registry.@@nf-admin-workflow-add-selected-users-to-group-button">
            Add
        </button>
    </div>
</div>
