mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 19:17:13 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<div class="col p-2 h-100">
 | 
						|
  <div class="card h-100 shadow-sm document-card" [class.card-selected]="selected" [class.popover-hidden]="popoverHidden" (mouseleave)="mouseLeaveCard()">
 | 
						|
    <div class="border-bottom doc-img-container" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)" (dblclick)="dblClickDocument.emit(this)">
 | 
						|
      <img class="card-img doc-img rounded-top" [class.inverted]="getIsThumbInverted()" [src]="getThumbUrl()">
 | 
						|
 | 
						|
      <div class="border-end border-bottom bg-light py-1 px-2 document-card-check">
 | 
						|
        <div class="form-check">
 | 
						|
          <input type="checkbox" class="form-check-input" id="smallCardCheck{{document.id}}" [checked]="selected" (click)="this.toggleSelected.emit($event)">
 | 
						|
          <label class="form-check-label" for="smallCardCheck{{document.id}}"></label>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <div class="tags d-flex flex-column text-end position-absolute me-1 fs-6">
 | 
						|
        <app-tag *ngFor="let t of getTagsLimited$() | async" [tag]="t" (click)="clickTag.emit(t.id);$event.stopPropagation()" [clickable]="true" linkTitle="Toggle tag filter" i18n-linkTitle></app-tag>
 | 
						|
        <div *ngIf="moreTags">
 | 
						|
          <span class="badge text-dark">+ {{moreTags}}</span>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <a *ngIf="notesEnabled && document.notes.length" routerLink="/documents/{{document.id}}/notes" class="document-card-notes py-2 px-1">
 | 
						|
      <span class="badge rounded-pill bg-light border text-primary">
 | 
						|
      <svg class="metadata-icon ms-1 me-1" fill="currentColor">
 | 
						|
        <use xlink:href="assets/bootstrap-icons.svg#chat-left-text"/>
 | 
						|
      </svg>
 | 
						|
      {{document.notes.length}}</span>
 | 
						|
    </a>
 | 
						|
 | 
						|
    <div class="card-body bg-light p-2">
 | 
						|
      <p class="card-text">
 | 
						|
        <ng-container *ngIf="document.correspondent">
 | 
						|
          <a title="Toggle correspondent filter" i18n-title (click)="clickCorrespondent.emit(document.correspondent);$event.stopPropagation()" class="fw-bold btn-link">{{(document.correspondent$ | async)?.name}}</a>:
 | 
						|
        </ng-container>
 | 
						|
        {{document.title | documentTitle}}
 | 
						|
      </p>
 | 
						|
    </div>
 | 
						|
    <div class="card-footer pt-0 pb-2 px-2">
 | 
						|
      <div class="list-group list-group-flush border-0 pt-1 pb-2 card-info">
 | 
						|
        <button *ngIf="document.document_type" type="button" class="list-group-item list-group-item-action bg-transparent ps-0 p-1 border-0" title="Toggle document type filter" i18n-title
 | 
						|
         (click)="clickDocumentType.emit(document.document_type);$event.stopPropagation()">
 | 
						|
          <svg class="metadata-icon me-2 text-muted" fill="currentColor">
 | 
						|
            <use xlink:href="assets/bootstrap-icons.svg#file-earmark"/>
 | 
						|
          </svg>
 | 
						|
          <small>{{(document.document_type$ | async)?.name}}</small>
 | 
						|
        </button>
 | 
						|
        <button *ngIf="document.storage_path" type="button" class="list-group-item list-group-item-action bg-transparent ps-0 p-1 border-0" title="Toggle storage path filter" i18n-title
 | 
						|
         (click)="clickStoragePath.emit(document.storage_path);$event.stopPropagation()">
 | 
						|
          <svg class="metadata-icon me-2 text-muted" fill="currentColor">
 | 
						|
            <use xlink:href="assets/bootstrap-icons.svg#folder"/>
 | 
						|
          </svg>
 | 
						|
          <small>{{(document.storage_path$ | async)?.name}}</small>
 | 
						|
        </button>
 | 
						|
        <div class="list-group-item bg-transparent p-0 border-0 d-flex flex-wrap-reverse justify-content-between">
 | 
						|
          <ng-template #dateTooltip>
 | 
						|
            <div class="d-flex flex-column text-light">
 | 
						|
              <span i18n>Created: {{ document.created | customDate }}</span>
 | 
						|
              <span i18n>Added: {{ document.added | customDate }}</span>
 | 
						|
              <span i18n>Modified: {{ document.modified | customDate }}</span>
 | 
						|
            </div>
 | 
						|
          </ng-template>
 | 
						|
          <div class="ps-0 p-1" placement="top" [ngbTooltip]="dateTooltip">
 | 
						|
            <svg class="metadata-icon me-2 text-muted" fill="currentColor">
 | 
						|
              <use xlink:href="assets/bootstrap-icons.svg#calendar-event"/>
 | 
						|
            </svg>
 | 
						|
            <small>{{document.created_date | customDate:'mediumDate'}}</small>
 | 
						|
          </div>
 | 
						|
        </div>
 | 
						|
        <div *ngIf="document.archive_serial_number" class="ps-0 p-1">
 | 
						|
          <svg class="metadata-icon me-2 text-muted" fill="currentColor">
 | 
						|
            <use xlink:href="assets/bootstrap-icons.svg#upc-scan"/>
 | 
						|
          </svg>
 | 
						|
          <small>#{{document.archive_serial_number}}</small>
 | 
						|
        </div>
 | 
						|
        <div *ngIf="document.owner && document.owner !== settingsService.currentUser.id" class="ps-0 p-1">
 | 
						|
          <svg class="metadata-icon me-2 text-muted" fill="currentColor">
 | 
						|
            <use xlink:href="assets/bootstrap-icons.svg#person-fill-lock"/>
 | 
						|
          </svg>
 | 
						|
          <small>{{document.owner | username}}</small>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
      <div class="d-flex justify-content-between align-items-center">
 | 
						|
        <div class="btn-group w-100">
 | 
						|
          <a routerLink="/documents/{{document.id}}" class="btn btn-sm btn-outline-secondary" title="Edit" i18n-title *appIfPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n-title>
 | 
						|
            <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-pencil" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
 | 
						|
              <path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"/>
 | 
						|
            </svg>
 | 
						|
          </a>
 | 
						|
          <a [href]="previewUrl" target="_blank" class="btn btn-sm btn-outline-secondary"
 | 
						|
          [ngbPopover]="previewContent" [popoverTitle]="document.title | documentTitle"
 | 
						|
          autoClose="true" popoverClass="shadow" (mouseenter)="mouseEnterPreview()" (mouseleave)="mouseLeavePreview()" #popover="ngbPopover">
 | 
						|
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye" viewBox="0 0 16 16">
 | 
						|
              <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"/>
 | 
						|
              <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"/>
 | 
						|
            </svg>
 | 
						|
          </a>
 | 
						|
          <ng-template #previewContent>
 | 
						|
            <object [data]="previewUrl | safeUrl" class="preview" width="100%"></object>
 | 
						|
          </ng-template>
 | 
						|
          <a [href]="getDownloadUrl()" class="btn btn-sm btn-outline-secondary" title="Download" i18n-title (click)="$event.stopPropagation()">
 | 
						|
            <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-download" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
 | 
						|
              <path fill-rule="evenodd" d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/>
 | 
						|
              <path fill-rule="evenodd" d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/>
 | 
						|
            </svg>
 | 
						|
          </a>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
</div>
 |