{"version":3,"file":"bootkit-angular-components-button.mjs","sources":["../../../projects/bootkit/components/button/button.directive.ts","../../../projects/bootkit/components/button/button.module.ts","../../../projects/bootkit/components/button/bootkit-angular-components-button.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Input, Directive, HostListener, Output, EventEmitter, Renderer2, ElementRef, OnInit, OnDestroy } from '@angular/core';\r\nimport { HttpRequestSendEvent, HttpService } from '@bootkit/angular/http';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n  selector: 'button[bkButton], a[bkButton], input[bkButton]',\r\n  exportAs: 'bkButton',\r\n  standalone: true,\r\n  host: {\r\n    '[class.disabled]': 'disabled',\r\n    '[prop.disabled]': 'disabled',\r\n    '[attr.aria-disabled]': 'disabled',\r\n    '[attr.tabindex]': 'disabled ? \"-1\" : \"\" ',\r\n  }\r\n})\r\nexport class ButtonDirective implements OnInit, OnDestroy {\r\n  private _disabled = false;\r\n  private _httpEventSubscription?: Subscription;\r\n  private _loadingElement: any;\r\n\r\n  get disabled() { return this._disabled; }\r\n  set disabled(value: BooleanInput) {\r\n    this._disabled = coerceBooleanProperty(value);\r\n  }\r\n\r\n  /** Disable the button when some http requests with specified IDs. */\r\n  @Input() disableOn = new Array<string>();\r\n  @Input() showLoadingOn = new Array<string>();\r\n\r\n  // Disables and show loading icon on http requests with specified IDs.\r\n  @Input() waitFor = new Array<string>();\r\n\r\n  @Output() safeClick = new EventEmitter<MouseEvent>();\r\n\r\n  constructor(private _element: ElementRef, private _renderer: Renderer2, private http: HttpService) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._renderer.setStyle(this._element.nativeElement, \"position\", \"relative\");\r\n\r\n    if (this.waitFor.length > 0) {\r\n      this.disableOn = [...this.disableOn, ...this.waitFor];\r\n      this.showLoadingOn = [...this.showLoadingOn, ...this.waitFor];\r\n    }\r\n\r\n    if (this.disableOn || this.showLoadingOn) {\r\n      this._httpEventSubscription = this.http.events.subscribe(e => {\r\n        if (this.disableOn?.find(x => x == e?.options?.id)) {\r\n          if (e instanceof HttpRequestSendEvent) {\r\n            this.disabled = true;\r\n          } else {\r\n            this.disabled = false;\r\n          }\r\n        }\r\n\r\n        if (this.showLoadingOn?.find(x => x == e?.options?.id)) {\r\n          if (e instanceof HttpRequestSendEvent) {\r\n            this._showLoading();\r\n          } else {\r\n            this._hideLoading();\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  @HostListener('click', ['$event']) private _onClick(e: MouseEvent): void {\r\n    if (!this._disabled) {\r\n      this.safeClick.emit(e);\r\n    }\r\n  }\r\n\r\n  private _showLoading() {\r\n    this._loadingElement = this._renderer.createElement(\"div\");\r\n    [\"spinner-grow\", \"spinner-grow-sm\", \"text-warning\"].forEach(s => this._renderer.addClass(this._loadingElement, s));\r\n    this._renderer.setStyle(this._loadingElement, \"position\", \"absolute\");\r\n    this._renderer.setStyle(this._loadingElement, \"top\", \"-25%\");\r\n    this._renderer.setStyle(this._loadingElement, \"left\", \"-5px\");\r\n    this._renderer.appendChild(this._element.nativeElement, this._loadingElement);\r\n  }\r\n\r\n  private _hideLoading() {\r\n    this._renderer.removeChild(this._element.nativeElement, this._loadingElement);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._httpEventSubscription?.unsubscribe();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ButtonDirective } from './button.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    ButtonDirective,\r\n  ],\r\n  exports: [\r\n    ButtonDirective,\r\n  ]\r\n})\r\nexport class ButtonModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}