@if (minimal) {
  <ng-container *ngTemplateOutlet="select"></ng-container>
} @else {
  <div class="mb-3 paperless-input-select" [class.disabled]="disabled">
    <div class="row">
      <div class="d-flex align-items-center position-relative hidden-button-container" [class.col-md-3]="horizontal">
        @if (title) {
          <label class="form-label" [class.mb-md-0]="horizontal" [for]="inputId">{{title}}</label>
        }
        @if (removable) {
          <button type="button" class="btn btn-sm btn-danger position-absolute left-0" (click)="removed.emit(this)">
            <i-bs name="x" class="me-1"></i-bs><ng-container i18n>Remove</ng-container>
          </button>
        }
      </div>
      <div [class.col-md-9]="horizontal">
        <ng-container *ngTemplateOutlet="select"></ng-container>
        @if (hint) {
          <small class="form-text text-muted">{{hint}}</small>
        }
      </div>
    </div>
  </div>
}

<ng-template #select>
  <ng-select name="inputId" [(ngModel)]="selectedDocuments"
    [disabled]="disabled"
    [items]="foundDocuments$ | async"
    [placeholder]="placeholder"
    [notFoundText]="notFoundText"
    [multiple]="true"
    [compareWith]="compareDocuments"
    [trackByFn]="trackByFn"
    [minTermLength]="2"
    [loading]="loading"
    [typeahead]="documentsInput$"
    (mousedown)="$event.stopImmediatePropagation()"
    (change)="onChange(selectedDocumentIDs)">
    <ng-template ng-label-tmp let-document="item">
      <div class="d-flex align-items-center">
        @if (!disabled) {
          <button class="btn p-0 lh-1" (click)="unselect(document)" (mousedown)="$event.stopImmediatePropagation()" type="button" title="Remove link" i18n-title><i-bs name="x"></i-bs></button>
        }
        @if (document.title) {
          <a routerLink="/documents/{{document.id}}" class="badge bg-light text-primary" (mousedown)="$event.stopImmediatePropagation();" title="Open link" i18n-title>
            <i-bs width="0.9em" height="0.9em" name="file-text" class="me-1"></i-bs><span>{{document.title}}</span>
          </a>
        } @else {
          <span class="badge bg-light text-muted" (click)="unselect(document)" (mousedown)="$event.stopImmediatePropagation()" type="button" title="Remove link" i18n-title>
            <i-bs width="0.9em" height="0.9em" name="exclamation-triangle-fill" class="me-1"></i-bs><span i18n>Not found</span>
          </span>
        }
      </div>
    </ng-template>
    <ng-template ng-loadingspinner-tmp>
      <div class="spinner-border spinner-border-sm fw-normal ms-2 me-auto" role="status"></div>
      <div class="visually-hidden" i18n>Loading...</div>
    </ng-template>
    <ng-template ng-option-tmp let-document="item" let-index="index" let-search="searchTerm">
      <div>{{document.title}} <small class="text-muted">({{document.created | customDate:'shortDate'}})</small></div>
    </ng-template>
  </ng-select>
</ng-template>
