<!--
Copyright 2020 TATA ELXSI

Licensed 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.

Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
<div class="d-flex flex-row justify-content-between">
    <div class="d-flex align-items-center header-style">{{'PAGE.DASHBOARD.PROJECTS' | translate}}</div>
    <span class="button text-end">
        <button class="btn btn-primary" type="button" (click)="projectAdd()" placement="top" container="body" ngbTooltip="{{'PAGE.PROJECT.NEWPROJECT' | translate}}">
            <i class="fas fa-plus-circle" aria-hidden="true"></i>
            {{'PAGE.PROJECT.NEWPROJECT' | translate}}
        </button>
    </span>
</div>
<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
    <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
    <page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
    <ng2-smart-table [settings]="settings" [source]="dataSource" (userRowSelect)="onUserRowSelect($event)">
    </ng2-smart-table>
</div>
<app-loader [waitingMessage]="message" *ngIf="isLoadingResults"></app-loader>