{"version":3,"file":"tableau-ui-angular-button.mjs","sources":["../../../projects/component-library/button/src/button.component.ts","../../../projects/component-library/button/src/button.component.html","../../../projects/component-library/button/src/tableau-ui-buttons.module.ts","../../../projects/component-library/button/src/tableau-ui-angular-button.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input } from '@angular/core';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'button:not([tab-menu-button]),a[button]:not([tab-menu-button])',\n  standalone: false,\n  templateUrl: './button.component.html',\n  styleUrl: './button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[attr.type]': '$type()',\n    '[class]': '`${$color()} ${$kind()}`',\n    '[attr.disabled]': '$disabled() || $loading() ? true : null',\n    '[class.loading]': '$loading()',\n    '[attr.tabindex]': '$disabled() ? \"-1\": $tabindex()',\n    role: 'button',\n    '[attr.layout]': '$layout()',\n    '[attr.inline]': '$inline()',\n    '(click)': 'mouseClickHandler()',\n  },\n})\nexport class ButtonComponent {\n  readonly $nativeElement = inject<ElementRef<HTMLElement>>(ElementRef);\n  readonly $disabled = input(false, {\n    alias: 'disabled',\n  });\n  readonly $loading = input(false, {\n    alias: 'loading',\n  });\n  readonly $tabindex = input('0', {\n    alias: 'tabindex',\n  });\n  readonly $type = input<'button' | 'submit'>('button', {\n    alias: 'type',\n  });\n\n  readonly $kind = input<'stroked' | 'raised'>('stroked', {\n    alias: 'kind',\n  });\n  readonly $color = input<'error' | 'plain' | 'primary' | 'secondary'>('secondary', {\n    alias: 'color',\n  });\n  readonly $layout = input<'default' | 'icon' | 'small-icon'>('default', {\n    alias: 'layout',\n  });\n  readonly $inline = input(false, {\n    alias: 'inline',\n  });\n\n  readonly $noFocusOnClick = input(true, {\n    alias: 'noFocusOnClick',\n  });\n\n  private clickFromKeyboard = false;\n  @HostListener('keydown', ['$event'])\n  handleKeydown(event: KeyboardEvent) {\n    const el = this.$nativeElement.nativeElement;\n    this.clickFromKeyboard = true; // set flag to indicate click from keyboard\n    if ((el instanceof HTMLLinkElement && event.code === 'Enter') || event.code === 'Space') {\n      event.preventDefault(); // stop scroll or native behavior\n\n      el.click(); // trigger click manually\n    }\n  }\n\n  @HostListener('mousedown')\n  handleMouseDown() {\n    this.clickFromKeyboard = false; // reset flag on mouse down\n  }\n\n  @HostListener('pointerdown')\n  handlePointerDown() {\n    this.clickFromKeyboard = false; // reset flag on pointer down\n  }\n\n  @HostListener('touchstart')\n  handleTouchStart() {\n    this.clickFromKeyboard = false; // reset flag on touch start\n  }\n\n  mouseClickHandler() {\n    if (this.clickFromKeyboard) {\n      this.clickFromKeyboard = false; // reset flag after click\n      return;\n    }\n    if (this.$noFocusOnClick()) {\n      // Prevent focus on click if $noFocusOnClick is true\n      setTimeout(() => {\n        this.$nativeElement.nativeElement.blur();\n      });\n    }\n  }\n}\n","<span class=\"content-wrapper\">\n  @if ($layout() === 'default' || $loading()) {\n    <span class=\"loader-wrapper\">\n      <img\n        alt=\"Wait indicator\"\n        class=\"f79w7hb\"\n        src=\"data:image/svg+xml,%0A%3Csvg%20viewBox%3D%220%200%2050%2050%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Cstyle%3E%0A%20%20%20%20%23tail%20%7B%20fill%3A%20url(%23fade)%20%7D%0A%20%20%20%20%23head%20%7B%20fill%3A%20rgb(97%2C%20101%2C%20112)%20%7D%0A%20%20%20%20stop%20%7B%20stop-color%3A%20rgb(97%2C%20101%2C%20112)%20%7D%0A%20%20%3C%2Fstyle%3E%0A%20%20%3ClinearGradient%20id%3D%22fade%22%20x2%3D%2250%22%20y1%3D%2225%22%20y2%3D%2225%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%0A%20%20%20%20%3Cstop%20offset%3D%220%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%3Cstop%20offset%3D%22.15%22%20stop-opacity%3D%22.04%22%2F%3E%0A%20%20%20%20%3Cstop%20offset%3D%22.3%22%20stop-opacity%3D%22.16%22%2F%3E%0A%20%20%20%20%3Cstop%20offset%3D%22.45%22%20stop-opacity%3D%22.36%22%2F%3E%0A%20%20%20%20%3Cstop%20offset%3D%22.61%22%20stop-opacity%3D%22.64%22%2F%3E%0A%20%20%20%20%3Cstop%20offset%3D%22.76%22%2F%3E%0A%20%20%3C%2FlinearGradient%3E%0A%20%20%3Cpath%20id%3D%22head%22%20d%3D%22M0%2025a25%2025%200%201%200%2050%200h-3.9a21.1%2021.1%200%201%201-42.2%200%22%20%2F%3E%0A%20%20%3Cpath%20id%3D%22tail%22%20d%3D%22M50%2025a25%2025%200%200%200-50%200h3.9a21.1%2021.1%200%201%201%2042.2%200%22%20%2F%3E%0A%3C%2Fsvg%3E\"\n      />\n    </span>\n  }\n  @if ($layout() === 'default' || !$loading()) {\n    <ng-content />\n  }\n</span>\n","import { NgModule } from '@angular/core';\nimport { ButtonComponent } from './button.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ButtonComponent],\n  exports: [ButtonComponent],\n})\nexport class TableauUiButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}