{"version":3,"file":"sdcorejs-angular-components-button.mjs","sources":["../../../projects/sdcorejs-angular/components/button/src/button.component.ts","../../../projects/sdcorejs-angular/components/button/src/button.component.html","../../../projects/sdcorejs-angular/components/button/sdcorejs-angular-components-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  booleanAttribute,\n  computed,\n  inject,\n  input,\n  output,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Color } from '@sdcorejs/utils/models';\nimport { SdIcon, type SdIconSet } from '@sdcorejs/angular/modules/icon';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, throttleTime } from 'rxjs/operators';\n\n// Export các Type ra ngoài để tái sử dụng ở file config/interface\nexport type SdButtonType = 'fill' | 'light' | 'outline' | 'text';\nexport type SdButtonSize = 'sm' | 'md' | 'lg';\nexport type SdButtonHtmlType = 'button' | 'submit' | 'reset';\nexport type SdButtonColor = Color | 'black';\n\n@Component({\n  selector: 'sd-button',\n  templateUrl: './button.component.html',\n  styleUrl: './button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, MatTooltipModule, SdIcon],\n  host: {\n    '[class.sd-disabled]': 'disabled()',\n    '[class.sd-loading]': 'loading()',\n    '[class.sd-block]': 'block()',\n    '[attr.disabled]': 'disabled() ? \"true\" : null',\n  },\n})\nexport class SdButton implements OnInit, OnDestroy {\n  // ==========================================\n  // 1. INJECTS\n  // ==========================================\n  private el = inject(ElementRef);\n\n  // ==========================================\n  // 2. SIGNAL INPUTS (Bảo mật 100% với Null/Undefined)\n  // ==========================================\n  autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n\n  type = input<SdButtonType, SdButtonType | undefined | null>('light', {\n    transform: value => value || 'light',\n  });\n\n  color = input<SdButtonColor, SdButtonColor | undefined | null>('secondary', {\n    transform: value => value || 'secondary',\n  });\n\n  size = input<SdButtonSize, SdButtonSize | undefined | null>('sm', {\n    transform: value => value || 'sm',\n  });\n\n  fontSet = input<SdIconSet | undefined, SdIconSet | undefined | null>(undefined, {\n    transform: value => value ?? undefined,\n  });\n\n  title = input<string | undefined | null>(undefined);\n  width = input<string | undefined | null>(undefined);\n  tooltip = input<string | undefined | null>(undefined);\n  prefixIcon = input<string | undefined | null>(undefined);\n  suffixIcon = input<string | undefined | null>(undefined);\n\n  disabled = input(false, { transform: booleanAttribute });\n  loading = input(false, { transform: booleanAttribute });\n  block = input(false, { transform: booleanAttribute });\n\n  htmlType = input<SdButtonHtmlType, SdButtonHtmlType | undefined | null>('button', {\n    transform: value => value || 'button',\n  });\n\n  // ==========================================\n  // 3. COMPUTED STATE\n  // ==========================================\n  autoId = computed(() => (this.autoIdInput() ? `components-button-${this.autoIdInput()}` : undefined));\n\n  buttonClasses = computed(() => ({\n    'c-square': (this.prefixIcon() || this.suffixIcon()) && !this.title(),\n    'c-sm': this.size() === 'sm',\n    'c-md': this.size() === 'md',\n    'c-lg': this.size() === 'lg',\n    'c-black': this.color() === 'black',\n    'c-disabled': this.disabled(),\n    'c-block': this.block(),\n  }));\n\n  // ==========================================\n  // 4. OUTPUT & RXJS STREAMS\n  // ==========================================\n  click = output<Event>();\n\n  #clickSubject = new Subject<Event>();\n  #subscription = new Subscription();\n\n  constructor() {\n    // Kỹ thuật Đánh chặn sự kiện (Capture Phase)\n    // Tóm sống mọi sự kiện click ngay khi nó vừa chạm vào component\n    this.el.nativeElement.addEventListener(\n      'click',\n      (event: Event) => {\n        if (this.disabled() || this.loading()) {\n          // Nghiền nát sự kiện, không cho Angular phát (click) ra component cha\n          event.preventDefault();\n          event.stopPropagation();\n          event.stopImmediatePropagation();\n        }\n      },\n      { capture: true }\n    );\n  }\n\n  ngOnInit() {\n    this.#subscription.add(\n      this.#clickSubject\n        .pipe(\n          throttleTime(300, undefined, { leading: true, trailing: false }),\n          filter(() => !this.disabled() && !this.loading())\n        )\n        .subscribe(event => {\n          this.click.emit(event);\n        })\n    );\n  }\n\n  // Nhận click từ thẻ button con bên trong\n  onInternalClick(event: Event) {\n    event.stopPropagation();\n\n    if (this.disabled() || this.loading()) {\n      return;\n    }\n\n    this.#clickSubject.next(event);\n  }\n\n  ngOnDestroy() {\n    this.#subscription.unsubscribe();\n  }\n}\n","@let _type = type();\n@let _loading = loading();\n@let _title = title();\n@let _prefixIcon = prefixIcon();\n@let _suffixIcon = suffixIcon();\n@let _fontSet = fontSet();\n@let _htmlType = htmlType();\n@let _disabled = disabled();\n@let _color = color();\n@let _autoId = autoId();\n@let _width = width();\n@let _tooltip = tooltip();\n\n@if (_type === 'fill') {\n  <button\n    mat-flat-button\n    class=\"c-button c-fill\"\n    [type]=\"_htmlType\"\n    [ngClass]=\"buttonClasses()\"\n    [disabled]=\"_disabled\"\n    [color]=\"_color\"\n    [attr.data-autoId]=\"_autoId\"\n    [attr.data-disabled]=\"_disabled ? 'true' : 'false'\"\n    [attr.data-loading]=\"_loading ? 'true' : 'false'\"\n    [style.width]=\"_width\"\n    [matTooltip]=\"_tooltip || ''\"\n    matTooltipPosition=\"above\"\n    (click)=\"onInternalClick($event)\">\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </button>\n} @else if (_type === 'light') {\n  <button\n    mat-flat-button\n    class=\"c-button c-light\"\n    [type]=\"_htmlType\"\n    [ngClass]=\"buttonClasses()\"\n    [disabled]=\"_disabled\"\n    [color]=\"_color\"\n    [attr.data-autoId]=\"_autoId\"\n    [attr.data-disabled]=\"_disabled ? 'true' : 'false'\"\n    [attr.data-loading]=\"_loading ? 'true' : 'false'\"\n    [style.width]=\"_width\"\n    [matTooltip]=\"_tooltip || ''\"\n    matTooltipPosition=\"above\"\n    (click)=\"onInternalClick($event)\">\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </button>\n} @else if (_type === 'outline') {\n  <button\n    mat-stroked-button\n    class=\"c-button c-outline\"\n    [type]=\"_htmlType\"\n    [ngClass]=\"buttonClasses()\"\n    [disabled]=\"_disabled\"\n    [color]=\"_color\"\n    [attr.data-autoId]=\"_autoId\"\n    [attr.data-disabled]=\"_disabled ? 'true' : 'false'\"\n    [attr.data-loading]=\"_loading ? 'true' : 'false'\"\n    [style.width]=\"_width\"\n    [matTooltip]=\"_tooltip || ''\"\n    matTooltipPosition=\"above\"\n    (click)=\"onInternalClick($event)\">\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </button>\n} @else if (_type === 'text') {\n  <button\n    mat-button\n    class=\"c-button c-text\"\n    [type]=\"_htmlType\"\n    [ngClass]=\"buttonClasses()\"\n    [disabled]=\"_disabled\"\n    [color]=\"_color\"\n    [attr.data-autoId]=\"_autoId\"\n    [attr.data-disabled]=\"_disabled ? 'true' : 'false'\"\n    [attr.data-loading]=\"_loading ? 'true' : 'false'\"\n    [style.width]=\"_width\"\n    [matTooltip]=\"_tooltip || ''\"\n    matTooltipPosition=\"above\"\n    (click)=\"onInternalClick($event)\">\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </button>\n}\n\n<ng-template #contentTpl>\n  <div class=\"c-button-content-wrapper\">\n    @if (_loading) {\n      <mat-spinner mode=\"indeterminate\" diameter=\"18\" strokeWidth=\"2\" class=\"c-spinner\"></mat-spinner>\n    } @else if (_prefixIcon) {\n      <sd-icon [name]=\"_prefixIcon\" [fontSet]=\"_fontSet\" [size]=\"size()\" class=\"c-icon-prefix\"></sd-icon>\n    }\n\n    @if (_title) {\n      <span class=\"c-title\" [class.ml-8]=\"_loading || _prefixIcon\" [class.mr-8]=\"_suffixIcon && !_loading\">\n        {{ _title }}\n      </span>\n    }\n\n    @if (_suffixIcon && !_loading) {\n      <sd-icon [name]=\"_suffixIcon\" [fontSet]=\"_fontSet\" [size]=\"size()\" class=\"c-icon-suffix\"></sd-icon>\n    }\n\n    @if (!_title && !_prefixIcon && !_loading && _suffixIcon) {\n      <sd-icon [name]=\"_suffixIcon\" [fontSet]=\"_fontSet\" [size]=\"size()\"></sd-icon>\n    }\n  </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}