<app-header>
  <bit-search
    [placeholder]="'searchGroups' | i18n"
    [formControl]="searchControl"
    class="tw-w-80"
  ></bit-search>
  <button bitButton type="button" buttonType="primary" (click)="add()" startIcon="bwi-plus">
    {{ (btnTextAddCreateFeatureFlag() ? "addGroup" : "newGroup") | i18n }}
  </button>
</app-header>

<ng-container *ngIf="loading">
  <i
    class="bwi bwi-spinner bwi-spin tw-text-muted"
    title="{{ 'loading' | i18n }}"
    aria-hidden="true"
  ></i>
  <span class="tw-sr-only">{{ "loading" | i18n }}</span>
</ng-container>
<ng-container *ngIf="!loading">
  <p *ngIf="!dataSource.filteredData.length">{{ "noGroupsInList" | i18n }}</p>
  <!-- The padding on the bottom of the cdk-virtual-scroll-viewport element is required to prevent table row content
  from overflowing the <main> element. -->
  <cdk-virtual-scroll-viewport bitScrollLayout [itemSize]="rowHeight" class="tw-pb-8">
    <bit-table *ngIf="dataSource.filteredData.length" [dataSource]="dataSource">
      <ng-container header>
        <tr>
          <th bitCell class="tw-w-20">
            <input
              type="checkbox"
              bitCheckbox
              (change)="toggleAllVisible($event)"
              [attr.aria-label]="'selectAll' | i18n"
            />
          </th>
          <th bitCell bitSortable="name" default>{{ "name" | i18n }}</th>
          <th bitCell>{{ "collections" | vfo1I18n: "sharedFolders" }}</th>
          <th bitCell class="tw-w-10">
            <button
              [bitMenuTriggerFor]="headerMenu"
              type="button"
              bitIconButton="bwi-ellipsis-v"
              size="small"
              label="{{ 'options' | i18n }}"
            ></button>

            <bit-menu #headerMenu>
              <button type="button" bitMenuItem variant="danger" (click)="deleteAllSelected()">
                <bit-icon name="bwi-trash" slot="start" />
                {{ "delete" | i18n }}
              </button>
            </bit-menu>
          </th>
        </tr>
      </ng-container>
      <ng-template body let-rows$>
        <tr bitRow *cdkVirtualFor="let g of rows$" [ngClass]="rowHeightClass">
          <td bitCell (click)="check(g)" class="tw-cursor-pointer">
            <input type="checkbox" bitCheckbox [(ngModel)]="g.checked" />
          </td>
          <td bitCell class="tw-cursor-pointer tw-font-medium" (click)="edit(g)">
            <button type="button" bitLink>
              {{ g.details.name }}
            </button>
          </td>
          <td bitCell (click)="edit(g, ModalTabType.Collections)" class="tw-cursor-pointer">
            <bit-badge-list
              [items]="g.collectionNames"
              [maxItems]="3"
              variant="secondary"
            ></bit-badge-list>
          </td>
          <td bitCell>
            <button
              [bitMenuTriggerFor]="rowMenu"
              type="button"
              bitIconButton="bwi-ellipsis-v"
              size="small"
              label="{{ 'options' | i18n }}"
            ></button>

            <bit-menu #rowMenu>
              <button type="button" bitMenuItem (click)="edit(g)">
                <i aria-hidden="true" class="bwi bwi-pencil-square"></i> {{ "editInfo" | i18n }}
              </button>
              <button type="button" bitMenuItem (click)="edit(g, ModalTabType.Members)">
                <i aria-hidden="true" class="bwi bwi-user"></i> {{ "members" | i18n }}
              </button>
              <button type="button" bitMenuItem (click)="edit(g, ModalTabType.Collections)">
                <bit-icon [name]="'bwi-collection-shared' | vfo1Icon" slot="start" />
                {{ "collections" | vfo1I18n: "sharedFolders" }}
              </button>
              <button type="button" bitMenuItem variant="danger" (click)="delete(g)">
                <bit-icon name="bwi-trash" slot="start" />
                {{ "delete" | i18n }}
              </button>
            </bit-menu>
          </td>
        </tr>
      </ng-template>
    </bit-table>
  </cdk-virtual-scroll-viewport>
</ng-container>
