@ipi-soft/ng-components
Version:
Custom Angular Components
1 lines • 4.95 kB
Source Map (JSON)
{"version":3,"file":"ipi-soft-ng-components-button.mjs","sources":["../../../../projects/ipi-soft/ng-components/button/src/button.component.ts","../../../../projects/ipi-soft/ng-components/button/src/button.component.html","../../../../projects/ipi-soft/ng-components/button/ipi-soft-ng-components-button.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { Subject, throttleTime } from 'rxjs';\n\nimport { IpiImageComponent } from '@ipi-soft/ng-components/image';\n\nexport interface IpiButtonOptions {\n iconLeft?: string;\n iconRight?: string;\n throttleTimeMs?: number;\n}\n\nconst defaultOptions: IpiButtonOptions = {\n throttleTimeMs: 300,\n}\n\n@Component({\n selector: 'ipi-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n imports: [\n CommonModule,\n RouterModule,\n IpiImageComponent,\n ],\n})\n\nexport class IpiButtonComponent {\n\n @Input() link: string | null = null;\n @Input() state: any | null = null;\n\n @Input() options!: IpiButtonOptions;\n\n @Input() ariaLabel: string = 'Button';\n\n @Output() focusChange = new EventEmitter<FocusEvent>();\n @Output() clickChange = new EventEmitter<KeyboardEvent | PointerEvent | MouseEvent>();\n\n private clickSubject = new Subject<KeyboardEvent | PointerEvent | MouseEvent>();\n\n constructor() { }\n\n public ngAfterViewInit(): void {\n this.options = { ...defaultOptions, ...this.options };\n\n this.clickSubject\n .pipe(throttleTime(this.options.throttleTimeMs!))\n .subscribe(event => this.clickChange.emit(event));\n }\n\n public onClick(event: KeyboardEvent | PointerEvent | MouseEvent): void {\n this.clickSubject.next(event);\n }\n\n public onFocusChange(event: FocusEvent): void {\n this.focusChange.emit(event);\n }\n\n public handleKeydown(event: KeyboardEvent): void {\n if (event.code === 'Enter' || event.code === 'Space') {\n event.preventDefault();\n\n this.onClick(event);\n }\n }\n\n}\n","<a [class]=\"['button']\"\n [routerLink]=\"link\"\n [state]=\"state\"\n (click)=\"onClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n (focusin)=\"onFocusChange($event)\"\n (focusout)=\"onFocusChange($event)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"ariaLabel\">\n \n <div class=\"button-wrapper\">\n @if (options && options.iconLeft) {\n <div class=\"icon left\">\n <ipi-img [src]=\"'assets/img/' + options.iconLeft\" [ariaLabel]=\"'Left side of button icon.'\"></ipi-img>\n </div>\n }\n\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (options && options.iconRight) {\n <div class=\"icon right\">\n <ipi-img [src]=\"'assets/img/' + options.iconRight\" [ariaLabel]=\"'Right side of button icon.'\"></ipi-img>\n </div>\n }\n </div>\n</a>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAcA,MAAM,cAAc,GAAqB;AACvC,IAAA,cAAc,EAAE,GAAG;CACpB;MAaY,kBAAkB,CAAA;AAc7B,IAAA,WAAA,GAAA;QAZS,IAAI,CAAA,IAAA,GAAkB,IAAI;QAC1B,IAAK,CAAA,KAAA,GAAe,IAAI;QAIxB,IAAS,CAAA,SAAA,GAAW,QAAQ;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAc;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA6C;AAE7E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAA6C;;IAIxE,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAErD,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAe,CAAC;AAC/C,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG9C,IAAA,OAAO,CAAC,KAAgD,EAAA;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGxB,IAAA,aAAa,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGvB,IAAA,aAAa,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YACpD,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;;8GApCZ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,iOC7B/B,25BA6BA,EAAA,MAAA,EAAA,CAAA,m0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,gRACZ,iBAAiB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGb,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;wBACZ,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,25BAAA,EAAA,MAAA,EAAA,CAAA,m0CAAA,CAAA,EAAA;wDAKQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,WAAW,EAAA,CAAA;sBAApB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEvCH;;AAEG;;;;"}