</li>
<li [ngbNavItem]="4" class="d-md-none">
- <a ngbNavLink>Preview</a>
- <ng-template ngbNavContent *ngIf="pdfPreview.offsetParent == undefined">
- <ng-container *ngIf="getContentType() == 'application/pdf'">
- <div class="preview-sticky pdf-viewer-container" *ngIf="!useNativePdfViewer ; else nativePdfViewer">
- <pdf-viewer [src]="previewUrl" [original-size]="false" [show-borders]="true" [show-all]="true" [render-text-mode]="2"></pdf-viewer>
+ <a ngbNavLink>Preview</a>
+ <ng-template ngbNavContent *ngIf="pdfPreview.offsetParent == undefined">
+ <div class="position-relative">
+ <ng-container *ngIf="getContentType() == 'application/pdf'">
+ <div class="preview-sticky pdf-viewer-container" *ngIf="!useNativePdfViewer ; else nativePdfViewer">
+ <pdf-viewer [src]="{ url: previewUrl, password: password }" [original-size]="false" [show-borders]="true" [show-all]="true" [(page)]="previewCurrentPage" [render-text-mode]="2" (error)="onError($event)" (after-load-complete)="pdfPreviewLoaded($event)"></pdf-viewer>
+ </div>
+ <ng-template #nativePdfViewer>
+ <object [data]="previewUrl | safeUrl" class="preview-sticky" width="100%"></object>
+ </ng-template>
+ </ng-container>
+ <ng-container *ngIf="getContentType() == 'text/plain'">
+ <object [data]="previewUrl | safeUrl" type="text/plain" class="preview-sticky bg-white" width="100%"></object>
+ </ng-container>
+ <div *ngIf="requiresPassword" class="password-prompt">
+ <form>
+ <input autocomplete="" class="form-control" i18n-placeholder placeholder="Enter Password" type="password" (keyup)="onPasswordKeyUp($event)" />
+ </form>
+ </div>
</div>
- <ng-template #nativePdfViewer>
- <object [data]="previewUrl | safeUrl" class="preview-sticky" width="100%"></object>
- </ng-template>
- </ng-container>
- <ng-container *ngIf="getContentType() == 'text/plain'">
- <object [data]="previewUrl | safeUrl" type="text/plain" class="preview-sticky bg-white" width="100%"></object>
- </ng-container>
- </ng-template>
+ </ng-template>
</li>
</ul>
</form>
</div>
- <div class="col-md-6 col-xl-8 mb-3 d-none d-md-block" #pdfPreview>
+ <div class="col-md-6 col-xl-8 mb-3 d-none d-md-block position-relative" #pdfPreview>
<ng-container *ngIf="getContentType() == 'application/pdf'">
<div class="preview-sticky pdf-viewer-container" *ngIf="!useNativePdfViewer ; else nativePdfViewer">
- <pdf-viewer [src]="previewUrl" [original-size]="false" [show-borders]="true" [show-all]="true" [(page)]="previewCurrentPage" [render-text-mode]="2" (after-load-complete)="pdfPreviewLoaded($event)"></pdf-viewer>
+ <pdf-viewer [src]="{ url: previewUrl, password: password }" [original-size]="false" [show-borders]="true" [show-all]="true" [(page)]="previewCurrentPage" [render-text-mode]="2" (error)="onError($event)" (after-load-complete)="pdfPreviewLoaded($event)"></pdf-viewer>
</div>
<ng-template #nativePdfViewer>
<object [data]="previewUrl | safeUrl" class="preview-sticky" width="100%"></object>
<ng-container *ngIf="getContentType() == 'text/plain'">
<object [data]="previewUrl | safeUrl" type="text/plain" class="preview-sticky bg-white" width="100%"></object>
</ng-container>
+ <div *ngIf="requiresPassword" class="password-prompt">
+ <form>
+ <input autocomplete="" class="form-control" i18n-placeholder placeholder="Enter Password" type="password" (keyup)="onPasswordKeyUp($event)" />
+ </form>
+ </div>
</div>
+
</div>
-import {
- Component,
- OnInit,
- OnDestroy,
- ViewChild,
- ElementRef,
-} from '@angular/core'
+import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core'
import { FormControl, FormGroup } from '@angular/forms'
import { ActivatedRoute, Router } from '@angular/router'
import { NgbModal, NgbNav } from '@ng-bootstrap/ng-bootstrap'
isDirty$: Observable<boolean>
unsubscribeNotifier: Subject<any> = new Subject()
+ requiresPassword: boolean = false
+ password: string
+
@ViewChild('nav') nav: NgbNav
@ViewChild('pdfPreview') set pdfPreview(element) {
// this gets called when compontent added or removed from DOM
pdfPreviewLoaded(pdf: PDFDocumentProxy) {
this.previewNumPages = pdf.numPages
+ if (this.password) this.requiresPassword = false
+ }
+
+ onError(event) {
+ if (event.name == 'PasswordException') {
+ this.requiresPassword = true
+ }
+ }
+
+ onPasswordKeyUp(event: KeyboardEvent) {
+ if ('Enter' == event.key) {
+ this.password = (event.target as HTMLInputElement).value
+ }
}
}