diff --git a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.html b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.html index f2cb8566f3..e410e4c760 100644 --- a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.html +++ b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.html @@ -9,10 +9,9 @@ data-automation-id='adf-password-dialog-input' type="password" placeholder="{{ 'ADF_VIEWER.PDF_DIALOG.PLACEHOLDER' | translate }}" - [formControl]="passwordFormControl" /> - @if (isError()) { - {{ 'ADF_VIEWER.PDF_DIALOG.ERROR' | translate }} - } + [formControl]="passwordFormControl" + [errorStateMatcher]="passwordErrorStateMatcher" /> + {{ 'ADF_VIEWER.PDF_DIALOG.ERROR' | translate }} diff --git a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.spec.ts b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.spec.ts index 11c2b368ff..25459c9a41 100644 --- a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.spec.ts +++ b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.spec.ts @@ -55,21 +55,21 @@ describe('PdfPasswordDialogComponent', () => { expect(component.passwordFormControl.value).toBe(''); }); - describe('isError', () => { + describe('passwordErrorStateMatcher', () => { beforeEach(() => { fixture.detectChanges(); }); - it('should return false', () => { - component.data.reason = pdfjsLib.PasswordResponses.NEED_PASSWORD; - - expect(component.isError()).toBe(false); - }); - - it('should return true', () => { + it('should report error state when password is incorrect', () => { component.data.reason = pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; - expect(component.isError()).toBe(true); + expect(component.passwordErrorStateMatcher.isErrorState(null, null)).toBe(true); + }); + + it('should not report error state when password is needed', () => { + component.data.reason = pdfjsLib.PasswordResponses.NEED_PASSWORD; + + expect(component.passwordErrorStateMatcher.isErrorState(null, null)).toBe(false); }); }); diff --git a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.ts b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.ts index e853a66557..bd60f80791 100644 --- a/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.ts +++ b/lib/core/viewer/pdf/src/lib/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.ts @@ -19,6 +19,7 @@ import { Component, OnInit, ViewEncapsulation, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; import { ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms'; +import { ErrorStateMatcher } from '@angular/material/core'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { TranslatePipe } from '@ngx-translate/core'; @@ -38,12 +39,15 @@ export class PdfPasswordDialogComponent implements OnInit { data = inject(MAT_DIALOG_DATA); passwordFormControl: UntypedFormControl; + passwordErrorStateMatcher: ErrorStateMatcher = { + isErrorState: () => this.isError() + }; ngOnInit() { this.passwordFormControl = new UntypedFormControl('', [Validators.required]); } - isError(): boolean { + private isError(): boolean { return this.data.reason === pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; }