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;
}