{"version":3,"file":"usitsdasdesign-dds-ng-button.mjs","sources":["../../src/app/dds/button/button/constants.ts","../../src/app/dds/button/button/button.component.ts","../../src/app/dds/button/button/button.component.html","../../src/app/dds/button/button.module.ts","../../src/app/dds/button/usitsdasdesign-dds-ng-button.ts"],"sourcesContent":["import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { ButtonKind, ExtThemes, Size, WidthState } from '@usitsdasdesign/dds-ng/shared';\n\nexport const BUTTON_SPINNER_SIZE = '16px';\nexport const BUTTON_ROLE = 'button';\nexport const CHECKBOX_ROLE = 'checkbox';\nexport const BUTTON_TYPE = 'button';\nexport const BUTTON_CLASS = 'dds-btn-custom';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.lg]: 'dds-btn_lg',\n    [Size.sm]: 'dds-btn_sm',\n  },\n  [ThemeMapEnum.Kind]: {\n    [ButtonKind.primary]: 'dds-btn_primary',\n    [ButtonKind.secondary]: 'dds-btn_secondary',\n    [ButtonKind.secondaryLoud]: 'dds-btn_secondary-loud',\n    [ButtonKind.silent]: 'dds-btn_silent',\n  },\n  [ThemeMapEnum.Themes]: {\n    [ExtThemes.dark]: 'dds-btn_dark',\n    [ExtThemes.blue]: 'dds-btn_blue',\n    [ExtThemes.danger]: 'dds-btn_danger',\n  },\n  [ThemeMapEnum.WidthState]: {\n    [WidthState.full]: 'dds-btn_fluid-width',\n  },\n};\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FocusHandlerDirective, FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { AdditionalClass, ButtonKind, ExtThemes, KeyCodes, Size, SpinnerThemes, WidthState } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { SpinnerModule, SpinnerOptions } from '@usitsdasdesign/dds-ng/spinner';\nimport { BUTTON_CLASS, BUTTON_ROLE, BUTTON_SPINNER_SIZE, BUTTON_TYPE, CHECKBOX_ROLE, themeClassesMap } from './constants';\n\n@Component({\n  selector: 'dds-button, button[ddsButton]',\n  templateUrl: './button.component.html',\n  hostDirectives: [FocusHandlerDirective],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, SpinnerModule, ThemeModule],\n})\nexport class ButtonComponent implements OnInit, OnChanges {\n  // Host bindings for various attributes and classes\n  @HostBinding('attr.role') @Input() hostRole: string | undefined;\n  @HostBinding(`class.${AdditionalClass.inlineFlex}`) inlineFlex = true;\n  @HostBinding(`class.${AdditionalClass.maxWidth}`) maxWidth = true;\n  @HostBinding(`class.${AdditionalClass.disabled}`) isInDisabledState: boolean | undefined;\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) get isFullWidth(): boolean {\n    return this.width === WidthState.full;\n  }\n\n  // Host listeners for keydown and keyup events\n  @HostListener('keydown', ['$event']) onHostKeydownHandler(event: KeyboardEvent) {\n    if (this.isHostButton) {\n      this.handleKeydown(event);\n    }\n  }\n  @HostListener('keyup', ['$event']) onHostKeyupHandler(event: KeyboardEvent) {\n    if (this.isHostButton) {\n      this.handleKeyup(event);\n    }\n  }\n\n  // ViewChild references for button elements\n  @ViewChild('btnRef') btnRef: ElementRef<HTMLButtonElement>; // Button ref for external focusing\n  @ViewChild('btnText') btnText: ElementRef<HTMLElement>;\n\n  // Input properties for various button configurations\n  @Input() theme: ExtThemes | string | undefined = this.ddsConfig.getConfig().theme;\n  @Input() kind: ButtonKind | string | undefined = ButtonKind.primaryLoud;\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() width: WidthState | string | undefined;\n  @Input() icon: string | undefined;\n  @Input() ariaLabel: string | undefined;\n  @Input() customClass: string | undefined;\n  @Input() isLoading: boolean | undefined;\n  @Input() disabled: boolean | undefined;\n  @Input() ariaSelected: boolean | undefined;\n  @Input() isInverse: boolean | undefined;\n  @Input() isColorBg: boolean | undefined;\n  @Input() isIconLeft: boolean | undefined;\n  @Input() type: string | undefined = BUTTON_TYPE;\n  @Input() role: string | undefined = BUTTON_ROLE;\n  @Input() ariaChecked: boolean | undefined | null = null;\n  @Input() ariaDescribedby: string | undefined;\n  @Input() ariaCurrent: string | undefined;\n\n  // Output event emitter for button click events\n  @Output() clicked = new EventEmitter<Event>();\n\n  // Public properties for theme configuration and spinner options\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n  public spinnerOptions: SpinnerOptions = {\n    size: BUTTON_SPINNER_SIZE,\n    theme: SpinnerThemes.dark,\n    isInverse: true,\n  };\n  public isSelected = false;\n  public itemId: string;\n  public isHostButton: boolean;\n  public hostButtonRef: HTMLElement;\n\n  constructor(\n    public cdr: ChangeDetectorRef,\n    private ddsConfig: DdsConfigService,\n    private renderer: Renderer2,\n    public elementRef: ElementRef<HTMLButtonElement>\n  ) {\n    this.isHostButton = this.elementRef.nativeElement.localName === BUTTON_TYPE;\n  }\n\n  public ngOnInit(): void {\n    this.setSpinnerColor();\n    this.itemId = generateId();\n    this.hostButtonConfig();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.disabled || changes.isLoading) {\n      this.updateDisabledState();\n    }\n\n    if (changes.kind || changes.theme || changes.isInverse || changes.isLoading) {\n      this.setSpinnerColor();\n    }\n\n    if (changes.ariaChecked) {\n      this.ariaChecked = this.role === CHECKBOX_ROLE ? changes.ariaChecked.currentValue : null;\n    }\n  }\n\n  // Updates the disabled state of the button component.\n  public updateDisabledState(): void {\n    this.isInDisabledState = this.disabled || this.isLoading;\n\n    if (this.isInDisabledState) {\n      this.unFocus();\n      this.disabledHost();\n    } else {\n      this.disabledHost(false);\n    }\n  }\n\n  // Method to check if the button is loading without an icon\n  public isLoadingWithoutIcon(): boolean | undefined {\n    return this.isLoading && !this.icon;\n  }\n\n  // Method to check if the button text is empty\n  public checkBtnText(): boolean {\n    return !this.btnText?.nativeElement?.innerHTML.trim();\n  }\n\n  // Method to handle keydown events\n  public handleKeydown(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      this.selectedState(true);\n    }\n  }\n\n  // Method to handle keyup events\n  public handleKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      this.selectedState(false);\n      this.clicked.emit(event);\n    }\n  }\n\n  // Method to set the selected state of the button\n  public selectedState(isSelected: boolean): void {\n    this.isSelected = isSelected;\n    this.cdr.detectChanges();\n  }\n\n  // Method to handle button click events\n  public click(event: Event): void {\n    this.clicked.emit(event);\n  }\n\n  // Private method to configure the host button\n  private hostButtonConfig(): void {\n    if (this.isHostButton) {\n      this.hostButtonRef = this.elementRef.nativeElement;\n      this.renderer.addClass(this.hostButtonRef, BUTTON_CLASS);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  // Private method to disable or enable the host button\n  private disabledHost(disabled = true): void {\n    if (this.isHostButton) {\n      if (disabled) {\n        this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', true);\n      } else {\n        this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', false);\n      }\n    }\n  }\n\n  // Private method to set the spinner color based on button kind and theme\n  private setSpinnerColor(): void {\n    if (this.kind === ButtonKind.primaryLoud || this.kind === ButtonKind.secondaryLoud) {\n      this.spinnerOptions.theme = SpinnerThemes.dark;\n      this.spinnerOptions.isInverse = true;\n    }\n    if (this.kind === ButtonKind.primary || this.kind === ButtonKind.silent) {\n      this.spinnerOptions.theme = this.theme;\n    }\n    if (this.kind === ButtonKind.secondary) {\n      this.spinnerOptions.theme = SpinnerThemes.gray;\n    }\n    if ((this.theme === ExtThemes.dark || this.kind === ButtonKind.secondaryLoud || this.kind === ButtonKind.secondary) && this.isInverse) {\n      this.spinnerOptions.theme = SpinnerThemes.dark;\n      this.spinnerOptions.isInverse = true;\n    }\n    if (this.theme === ExtThemes.dark && this.kind === ButtonKind.primaryLoud && this.isInverse) {\n      this.spinnerOptions.theme = SpinnerThemes.dark;\n      this.spinnerOptions.isInverse = false;\n    }\n  }\n\n  // Method to focus the button\n  focus(): void {\n    if (this.btnRef) {\n      this.btnRef.nativeElement.focus();\n      this.renderer.addClass(this.btnRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n\n    if (this.isHostButton) {\n      this.elementRef.nativeElement.focus();\n      this.renderer.addClass(this.elementRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n  }\n\n  // Private method to remove focus from the button\n  private unFocus(): void {\n    if (this.btnRef) {\n      this.renderer.removeClass(this.btnRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n\n    if (this.isHostButton) {\n      this.renderer.removeClass(this.elementRef.nativeElement, AdditionalClass.keyboardFocus);\n    }\n  }\n}\n","@if (isHostButton) {\n  <div [ngClass]=\"{\n       'dds-btn_loading': isLoading,\n       'dds-btn_with-icon': icon,\n       'dds-btn_inverse': isInverse,\n       'dds-btn_color-bg': isColorBg,\n       'dds-btn_selected': isSelected,\n       'dds-btn_empty': checkBtnText()\n     }\"\n       [size]=\"size\"\n       [kind]=\"kind\"\n       [theme]=\"theme\"\n       [width]=\"width\"\n       [ddsTheme]=\"themeConfig\"\n       [id]=\"itemId\"\n       data-qa=\"button\"\n       class=\"dds-btn {{customClass}}\">\n\n    <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n  </div>\n} @else {\n  <button [ngClass]=\"{\n    'dds-btn_loading': isLoading,\n    'dds-btn_with-icon': icon,\n    'dds-btn_with-icon-left': isIconLeft,\n    'dds-btn_inverse': isInverse,\n    'dds-btn_color-bg': isColorBg,\n    'dds-btn_selected': isSelected,\n    'dds-btn_empty': checkBtnText()\n  }\"\n          [size]=\"size\"\n          [kind]=\"kind\"\n          [theme]=\"theme\"\n          [width]=\"width\"\n          [ddsTheme]=\"themeConfig\"\n          [disabled]=\"disabled || isLoading\"\n          [attr.aria-label]=\"ariaLabel\"\n          [attr.aria-disabled]=\"disabled || isLoading\"\n          [attr.aria-selected]=\"ariaSelected\"\n          [attr.aria-checked]=\"ariaChecked\"\n          [attr.aria-describedby]=\"ariaDescribedby\"\n          [attr.role]=\"role\"\n          [attr.type]=\"type\"\n          [attr.aria-current]=\"ariaCurrent\"\n          [id]=\"itemId\"\n          data-qa=\"button\"\n          class=\"dds-btn {{customClass}}\"\n          ddsFocus\n          (keydown)=\"handleKeydown($event)\"\n          (keyup)=\"handleKeyup($event)\"\n          (click)=\"click($event)\"\n          #btnRef>\n\n    <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n  </button>\n}\n\n<ng-template #buttonContent>\n\n  <div class=\"dds-btn__content\">\n    @if (icon && !isLoading && isIconLeft) {\n      <span class=\"dds-btn__icon dds-icon {{ icon }}\"\n            [ngClass]=\"{'dds-btn__icon_left': isIconLeft}\"></span>\n    }\n\n    <span [ngClass]=\"{\n                'dds-btn__text_loading': isLoadingWithoutIcon()\n              }\"\n          class=\"dds-btn__text\"\n          #btnText>\n      <ng-content></ng-content>\n    </span>\n\n    @if (icon && !isLoading && !isIconLeft) {\n      <span class=\"dds-btn__icon dds-icon {{ icon }}\"></span>\n    }\n\n    @if (isLoading) {\n      <dds-spinner [ngClass]=\"{\n           'dds-btn__icon_loading': isLoadingWithoutIcon()\n          }\"\n                   [size]=\"spinnerOptions.size\"\n                   [theme]=\"spinnerOptions.theme\"\n                   [isInverse]=\"spinnerOptions.isInverse\"\n                   class=\"dds-btn__icon\"></dds-spinner>\n    }\n\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ButtonComponent } from './button/button.component';\n\n@NgModule({\n  declarations: [],\n  imports: [ButtonComponent],\n  exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}