ngx-show-hide-password
Version:
> Add split input button to password or text input. Toggles input type between "text" and "password".
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"ngx-show-hide-password.mjs","sources":["../../../projects/ngx-show-hide-password/src/lib/show-hide.service.ts","../../../projects/ngx-show-hide-password/src/lib/show-hide-trigger.directive.ts","../../../projects/ngx-show-hide-password/src/lib/show-hide-status.directive.ts","../../../projects/ngx-show-hide-password/src/lib/show-hide-input.directive.ts","../../../projects/ngx-show-hide-password/src/lib/show-hide-password.component.ts","../../../projects/ngx-show-hide-password/src/public_api.ts","../../../projects/ngx-show-hide-password/src/ngx-show-hide-password.ts"],"sourcesContent":["import { Injectable, WritableSignal, signal } from '@angular/core';\n\ninterface IState {\n id: string;\n show: boolean;\n subject: WritableSignal<boolean>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShowHideService {\n private readonly states: IState[] = [];\n\n private getIO(id: string): IState {\n let io = this.states.find((o) => o.id === id);\n if (!io) {\n io = this.init(id);\n }\n return io;\n }\n\n private init(id: string): IState {\n const subject = signal(false);\n const io = {\n id,\n show: false,\n subject,\n };\n this.states.push(io);\n return io;\n }\n\n private saveAndProadcast(io: IState, show: boolean) {\n io.show = show;\n io.subject.set(io.show);\n }\n\n public getSignal(id: string): WritableSignal<boolean> {\n return this.getIO(id).subject;\n }\n\n public setShow(id: string, show: boolean): void {\n this.saveAndProadcast(this.getIO(id), show);\n }\n\n public toggleShow(id: string): void {\n const io = this.getIO(id);\n this.saveAndProadcast(io, !io.show);\n }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\nimport { ShowHideService } from './show-hide.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[showHideTrigger]',\n standalone: true,\n})\nexport class ShowHideTriggerDirective {\n private service = inject(ShowHideService);\n\n showHideTrigger = input.required<string>();\n\n @HostListener('click')\n onClick() {\n this.service.toggleShow(this.showHideTrigger());\n }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\nimport {\n Directive,\n ElementRef,\n Renderer2,\n Input,\n ErrorHandler,\n effect,\n Injector,\n inject,\n} from '@angular/core';\nimport { ShowHideService } from './show-hide.service';\n\nexport interface ShowHideStatusConfig {\n id?: string;\n show?: string;\n hide?: string;\n materialIcon?: boolean;\n}\nconst defaultConfig: Partial<ShowHideStatusConfig> = {\n show: 'visibility',\n hide: 'visibility_off',\n materialIcon: false,\n};\n\n// TODO: don't trigger on disabled element\n@Directive({\n selector: '[showHideStatus]',\n standalone: true,\n})\nexport class ShowHideStatusDirective {\n private service = inject(ShowHideService);\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private errorHandler = inject(ErrorHandler);\n private injector = inject(Injector);\n\n private config: Partial<ShowHideStatusConfig> = defaultConfig;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ required: true }) set showHideStatus(config: ShowHideStatusConfig) {\n this.init(config);\n }\n\n private init(config: ShowHideStatusConfig): void {\n this.config = {\n ...defaultConfig,\n ...config,\n };\n if (this.config.id) {\n effect(\n () => {\n this.updateStatus(this.service.getSignal(this.config.id!!)());\n },\n { injector: this.injector }\n );\n } else {\n this.errorHandler.handleError(new Error(`Status can not be set without [id].`));\n }\n }\n\n private updateStatus(show: boolean) {\n if (this.config.materialIcon) {\n this.renderer.setProperty(\n this.el.nativeElement,\n 'innerHTML',\n show ? this.config.hide : this.config.show\n );\n } else {\n this.renderer.removeClass(\n this.el.nativeElement,\n (!show ? this.config.hide : this.config.show) ?? ''\n );\n this.renderer.addClass(\n this.el.nativeElement,\n (show ? this.config.hide : this.config.show) ?? ''\n );\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnInit,\n effect,\n Injector,\n inject,\n input,\n} from '@angular/core';\nimport { ShowHideService } from './show-hide.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[showHideInput]',\n standalone: true,\n})\nexport class ShowHideInputDirective implements OnInit {\n private service = inject(ShowHideService);\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private injector = inject(Injector);\n\n id = input.required<string>();\n disabled = input(false, {\n transform: (value: boolean | string) => (typeof value === 'string' ? value === '' : value),\n });\n\n ngOnInit(): void {\n this.service.setShow(this.id(), this.el.nativeElement.type !== 'password');\n effect(\n () => {\n if (this.disabled()) return;\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'type',\n this.service.getSignal(this.id())() ? 'text' : 'password'\n );\n },\n { injector: this.injector }\n );\n }\n}\n","/* eslint-disable no-bitwise */\nimport {\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n ChangeDetectionStrategy,\n effect,\n Injector,\n inject,\n input,\n} from '@angular/core';\nimport { faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { ShowHideService } from './show-hide.service';\nimport { ShowHideStatusDirective } from './show-hide-status.directive';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { ShowHideTriggerDirective } from './show-hide-trigger.directive';\nimport { NgClass } from '@angular/common';\n\nexport enum BtnStyle {\n Primary = 'primary',\n Secondary = 'secondary',\n Success = 'success',\n Danger = 'danger',\n Warning = 'warning',\n Info = 'info',\n Dark = 'dark',\n Light = 'light',\n}\n\n// hail jed https://gist.github.com/jed/982883\nconst uuid = (a?: any) =>\n a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n\n/**\n * Add a split input button to password or text input. Toggles input type between \"text\" and \"password\".\n *\n * @example\n * <show-hide-password size=\"sm|lg\">\n * <input type=\"password\" name=... />\n * </show-hide-password>\n */\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'show-hide-password',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n <button\n class=\"btn ngx-show-hide-password\"\n [ngClass]=\"btnOutline() ? 'btn-outline-' + btnStyle() : 'btn-' + btnStyle()\"\n type=\"button\"\n [showHideTrigger]=\"id\"\n >\n <fa-icon\n [fixedWidth]=\"true\"\n size=\"lg\"\n [icon]=\"isHidden ? faEye : faEyeSlash\"\n [showHideStatus]=\"{ id: id }\"\n ></fa-icon>\n </button>\n `,\n imports: [NgClass, ShowHideTriggerDirective, FontAwesomeModule, ShowHideStatusDirective],\n})\nexport class ShowHidePasswordComponent implements OnInit {\n private service = inject(ShowHideService);\n private elem = inject(ElementRef);\n private renderer = inject(Renderer2);\n private injector = inject(Injector);\n\n btnStyle = input<BtnStyle>(BtnStyle.Secondary);\n\n btnOutline = input(true, {\n transform: (value: boolean | string) => (typeof value === 'string' ? value === '' : value),\n });\n\n size = input<'sm' | 'lg' | ''>('');\n\n public input: any;\n\n public isHidden?: boolean;\n\n public id!: string;\n\n public faEye = faEye;\n public faEyeSlash = faEyeSlash;\n\n ngOnInit(): void {\n this.input = this.elem.nativeElement.querySelector('input');\n if (!this.input) {\n throw new Error(`No input element found.`);\n }\n this.id = this.input.getAttribute('id');\n if (!this.id) {\n this.id = 'showHideInput_' + uuid();\n this.renderer.setAttribute(this.input, 'id', this.id);\n }\n this.renderer.addClass(this.elem.nativeElement, 'input-group');\n if (this.size() === 'sm') {\n this.renderer.addClass(this.elem.nativeElement, 'input-group-sm');\n } else if (this.size() === 'lg') {\n this.renderer.addClass(this.elem.nativeElement, 'input-group-lg');\n }\n this.isHidden = this.input.type === 'password';\n this.renderer.addClass(this.input, 'form-control'); // just to be sure\n this.service.setShow(this.id, this.input.type !== 'password');\n\n effect(\n () => {\n const show = this.service.getSignal(this.id)();\n this.isHidden = !show;\n this.renderer.setAttribute(this.input, 'type', show ? 'text' : 'password');\n },\n { injector: this.injector }\n );\n }\n}\n","/*\n * Public API Surface of ngx-show-hide-password\n */\n\nexport * from './lib/show-hide.service';\nexport * from './lib/show-hide-trigger.directive';\nexport * from './lib/show-hide-status.directive';\nexport * from './lib/show-hide-input.directive';\nexport * from './lib/show-hide-password.component';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}