{"version":3,"file":"novo-elements-elements-button.mjs","sources":["../../../projects/novo-elements/src/elements/button/Button.ts","../../../projects/novo-elements/src/elements/button/Button.module.ts","../../../projects/novo-elements/src/elements/button/novo-elements-elements-button.ts"],"sourcesContent":["// NG2\nimport {\n  ChangeDetectionStrategy,\n  Component, computed,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges, signal, Signal,\n  SimpleChanges, WritableSignal,\n} from '@angular/core';\nimport { BooleanInput, Helpers, Key } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-button,button[theme]',\n    host: {\n        class: 'novo-button',\n        '[attr.theme]': 'theme',\n        '[attr.color]': 'color',\n        '[attr.icon]': 'icon',\n        '[attr.loading]': 'loading',\n        '[attr.side]': 'side',\n        '[attr.size]': 'size',\n        '[attr.role]': \"'button'\",\n    },\n    styleUrls: [\n        './styles/button.scss',\n        './styles/button-standard.scss',\n        './styles/button-primary.scss',\n        './styles/button-secondary.scss',\n        './styles/button-fab.scss',\n        './styles/button-icon.scss',\n        './styles/button-dialogue.scss',\n        './styles/button-other.scss',\n    ],\n    template: `\n    <!--Left Icon-->\n    <i *ngIf=\"((icon && side === 'left') || (secondIcon && secondSide() === 'left')) && !loading\" [ngClass]=\"leftSideIconClass()\" class=\"novo-button-icon novo-button-icon-left\"></i>\n    <!--Transcluded Content-->\n    <span #textContent class=\"button-contents\"><ng-content></ng-content></span>\n    <!--Right Icon-->\n    <i *ngIf=\"((icon && side === 'right') || (secondIcon && secondSide() === 'right')) && !loading\" [ngClass]=\"rightSideIconClass()\" class=\"novo-button-icon novo-button-icon-right\"></i>\n    <!--Loading-->\n    <i *ngIf=\"loading\" class=\"loading novo-button-loading\">\n      <svg\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns:a=\"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/\"\n        x=\"0px\"\n        y=\"0px\"\n        width=\"18.2px\"\n        height=\"18.5px\"\n        viewBox=\"0 0 18.2 18.5\"\n        style=\"enable-background:new 0 0 18.2 18.5;\"\n        xml:space=\"preserve\"\n      >\n        <style type=\"text/css\">\n          .spinner {\n            fill: #ffffff;\n          }\n        </style>\n        <path\n          class=\"spinner\"\n          d=\"M9.2,18.5C4.1,18.5,0,14.4,0,9.2S4.1,0,9.2,0c0.9,0,1.9,0.1,2.7,0.4c0.8,0.2,1.2,1.1,1,1.9\n                        c-0.2,0.8-1.1,1.2-1.9,1C10.5,3.1,9.9,3,9.2,3C5.8,3,3,5.8,3,9.2s2.8,6.2,6.2,6.2c2.8,0,5.3-1.9,6-4.7c0.2-0.8,1-1.3,1.8-1.1\n                        c0.8,0.2,1.3,1,1.1,1.8C17.1,15.7,13.4,18.5,9.2,18.5z\"\n        />\n      </svg>\n    </i>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoButtonElement implements OnChanges {\n  /**\n   * The text color of the button. Should be used for Icon buttons. see theme.\n   */\n  @Input() color: string;\n  /**\n   * The side of the button to display the icon.\n   */\n  @Input() side: string = 'right';\n  /**\n   * If a second icon is specified it will default to the opposite side as the primary icon.\n   */\n  secondSide: Signal<string> = computed(() => this.side === 'right' ? 'left' : 'right')\n  /**\n   * \tSets the size of the button. One of: sm, lg\n   */\n  @Input() size: string;\n  /**\n   * The base styling to apply to the button.\n   */\n  @Input() theme: string = 'dialogue';\n  /**\n   * Conditionally show a spinner over the top of a button.\n   */\n  @Input() loading: boolean;\n  /**\n   * Optionally display `bullhorn-icon` with the button along with the text.\n   */\n  @Input()\n  set icon(icon: string) {\n    if (icon) {\n      this._icon.set(`bhi-${icon}`);\n    }\n  }\n  get icon(): string {\n    return this._icon();\n  }\n\n  /**\n   * A second icon can be specified, and it will take the opposite side of the primary icon.\n   */\n  @Input()\n  set secondIcon(icon: string) {\n    if (icon) {\n      this._secondIcon.set(`bhi-${icon}`);\n    }\n  }\n  get secondIcon(): string {\n    return this._secondIcon();\n  }\n\n  leftSideIconClass: Signal<string> = computed(() => this.side === 'left' ? this._icon() : this._secondIcon());\n\n  rightSideIconClass: Signal<string> = computed(() => this.side === 'right' ? this._icon() : this._secondIcon());\n\n  /**\n   * Make the button non-interactive.\n   */\n  @Input()\n  @BooleanInput()\n  @HostBinding('class.novo-button-disabled')\n  disabled: boolean = false;\n\n  @HostBinding('attr.disabled')\n  disabledAttr: undefined | '' = undefined;\n\n  private _icon: WritableSignal<string> = signal(undefined);\n\n  private _secondIcon: WritableSignal<string> = signal(undefined);\n\n  constructor(public element: ElementRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.disabled && this.element.nativeElement.tagName === 'BUTTON') {\n      this.disabledAttr = changes.disabled.currentValue ? '' : undefined;\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  handleKeydown(event: KeyboardEvent) {\n    if ((Key.Enter === event.key || Key.Space === event.key) && (this.disabled || this.loading)) {\n      Helpers.swallowEvent(event);\n    }\n  }\n\n  /** Focuses the input. */\n  focus(options?: FocusOptions): void {\n    this.element.nativeElement.focus(options);\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonElement } from './Button';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [NovoButtonElement],\n  exports: [NovoButtonElement],\n})\nexport class NovoButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}