diff --git a/npm/ng-packs/packages/core/src/lib/directives/index.ts b/npm/ng-packs/packages/core/src/lib/directives/index.ts index 8f05e2daae..a2f5d8e4fe 100644 --- a/npm/ng-packs/packages/core/src/lib/directives/index.ts +++ b/npm/ng-packs/packages/core/src/lib/directives/index.ts @@ -6,3 +6,4 @@ export * from './init.directive'; export * from './permission.directive'; export * from './replaceable-template.directive'; export * from './stop-propagation.directive'; +export * from './show-password.directive'; diff --git a/npm/ng-packs/packages/core/src/lib/directives/show-password.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/show-password.directive.ts new file mode 100644 index 0000000000..03dc44f6a5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/show-password.directive.ts @@ -0,0 +1,16 @@ +import { Directive, ElementRef, Input, inject } from '@angular/core'; + +@Directive({ + standalone: true, + selector: '[abpShowPassword]', +}) +export class ShowPasswordDirective { + protected readonly elementRef = inject(ElementRef); + + @Input() set abpShowPassword(visible: boolean) { + const element = this.elementRef.nativeElement as HTMLInputElement; + if (!element) return; + + element.type = visible ? 'text' : 'password'; + } +}