{"version":3,"file":"acorex-components-dropdown-button.mjs","sources":["../../../../packages/components/dropdown-button/src/lib/dropdown-button.component.ts","../../../../packages/components/dropdown-button/src/lib/dropdown-button.component.html","../../../../packages/components/dropdown-button/src/lib/dropdown-button.module.ts","../../../../packages/components/dropdown-button/src/acorex-components-dropdown-button.ts"],"sourcesContent":["import {\n  AXClickEvent,\n  AXClosableComponent,\n  AXComponent,\n  AXStyleColorType,\n  AXStyleLookType,\n  MXButtonBaseComponent,\n} from '@acorex/cdk/common';\nimport { AXButtonComponent, AXButtonType } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\n// import { AXButtonType } from './button-item.class';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-dropdown-button',\n  templateUrl: './dropdown-button.component.html',\n  styleUrls: ['./dropdown-button.component.css'],\n  inputs: ['disabled', 'size', 'text'],\n  outputs: ['onBlur', 'onFocus', 'onClick', 'selectedChange', 'lookChange', 'colorChange', 'disabledChange'],\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: AXClosableComponent,\n      useExisting: AXDropdownButtonComponent,\n    },\n    { provide: AXComponent, useExisting: AXDropdownButtonComponent },\n  ],\n  imports: [\n    AXDropdownPanelComponent,\n    AXButtonComponent,\n    NgTemplateOutlet,\n    AXDecoratorGenericComponent,\n    AXDecoratorIconComponent,\n  ],\n})\nexport class AXDropdownButtonComponent extends MXButtonBaseComponent implements AfterViewInit {\n  @Input({ alias: 'color' })\n  dropdownColor: AXStyleColorType = 'default';\n\n  @Input({ alias: 'look' })\n  dropdownLook: AXStyleLookType = 'solid';\n\n  /**\n   *  Fires each time the user clicks the button.\n   *  @event\n   */\n  onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n  /**\n   *  @ignore\n   */\n  @ViewChild('panel') dropdownPanel: AXClosableComponent;\n\n  /**\n   * Defines the type of the button element.\n   *\n   *  @defaultValue 'button'\n   */\n  @Input()\n  type: AXButtonType = 'button';\n\n  /**\n   * Specifies the mode of the button.\n   * Can be either 'split' or 'dropdown'.\n   *\n   *  @defaultValue 'split'\n   */\n  @Input() mode: 'split' | 'dropdown' = 'split';\n\n  /**\n   *  @ignore\n   */\n  ngAfterViewInit(): void {\n    this.getHostElement().removeAttribute('tabindex');\n  }\n\n  /**\n   *  @ignore\n   */\n  private getButton(): HTMLButtonElement {\n    return this.getHostElement().firstElementChild as HTMLButtonElement;\n  }\n\n  /**\n   *  @ignore\n   */\n  _handleClick(e: MouseEvent) {\n    if (this.disabled) {\n      e.preventDefault();\n      return;\n    }\n    this.onClick.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n      nativeEvent: e,\n    });\n\n    // TODO: check keyboard event\n    setTimeout(() => {\n      this.blur();\n    });\n  }\n\n  /**\n   * Simulates a click event on the button element.\n   *\n   * @returns void - No return value. The button click is simulated.\n   */\n  click() {\n    this.getButton()?.click();\n  }\n\n  /**\n   * Sets focus to the button and adds a focus state class.\n   *\n   * @returns void - No return value. The button receives focus.\n   */\n  override focus() {\n    this.getButton()?.focus();\n    this.getButton().classList.add('ax-state-focus');\n  }\n\n  /**\n   * Removes the focus state class from the button.\n   *\n   * @returns void - No return value. The button loses focus.\n   */\n  override blur() {\n    this.getButton().classList.remove('ax-state-focus');\n  }\n\n  /**\n   * Closes the dropdown panel.\n   *\n   * @returns void - No return value. The dropdown panel is closed.\n   */\n  close() {\n    this.dropdownPanel.close();\n  }\n\n  @HostBinding('class')\n  private get __hostClass(): string {\n    return this.disabled ? 'ax-state-disabled ' : '';\n  }\n}\n","<ng-template #dropdown>\n  <ax-dropdown-panel placement=\"bottom-end\" #panel>\n    <ng-content select=\"ax-button-item-list\"></ng-content>\n  </ax-dropdown-panel>\n</ng-template>\n<ng-template #decorator>\n  <ng-content select=\"ax-prefix, ax-loading, ax-loading-spinner\"> </ng-content>\n</ng-template>\n\n@if (mode === 'dropdown') {\n  <ax-button\n    [look]=\"dropdownLook\"\n    [color]=\"dropdownColor\"\n    [disabled]=\"disabled\"\n    (focus)=\"emitOnFocusEvent($event)\"\n    (blur)=\"emitOnBlurEvent($event)\"\n    (click)=\"_handleClick($event)\"\n    [text]=\"text\"\n  >\n    <ax-prefix> <ng-container [ngTemplateOutlet]=\"decorator\"></ng-container></ax-prefix>\n\n    <ax-suffix>\n      <ax-icon class=\"far fa-chevron-down\"> </ax-icon>\n    </ax-suffix>\n\n    <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n  </ax-button>\n} @else {\n  <ax-button\n    class=\"ax-dropdown-split-button\"\n    [look]=\"dropdownLook\"\n    [color]=\"dropdownColor\"\n    [disabled]=\"disabled\"\n    (focus)=\"emitOnFocusEvent($event)\"\n    (blur)=\"emitOnBlurEvent($event)\"\n    (click)=\"_handleClick($event)\"\n    [text]=\"text\"\n  >\n    <ax-prefix> <ng-container [ngTemplateOutlet]=\"decorator\"></ng-container></ax-prefix>\n  </ax-button>\n\n  <ax-divider class=\"ax-dropdown-split-button-divider\"></ax-divider>\n\n  <ax-button class=\"ax-dropdown-split-button-arrow\" [look]=\"dropdownLook\" [color]=\"dropdownColor\" [disabled]=\"disabled\">\n    <ax-icon class=\"far fa-chevron-down\"> </ax-icon>\n\n    <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n  </ax-button>\n}\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDropdownButtonComponent } from './dropdown-button.component';\n\nconst COMPONENT = [AXDropdownButtonComponent];\nconst MODULES = [\n  CommonModule,\n  AXCommonModule,\n  AXDecoratorModule,\n  AXLoadingModule,\n  AXRippleDirective,\n  AXDropdownModule,\n  AXButtonModule,\n];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXDropdownButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAqBA;AAEA;;;;AAIG;AAwBG,MAAO,yBAA0B,SAAQ,qBAAqB,CAAA;AAvBpE,IAAA,WAAA,GAAA;;QAyBE,IAAA,CAAA,aAAa,GAAqB,SAAS;QAG3C,IAAA,CAAA,YAAY,GAAoB,OAAO;AAEvC;;;AAGG;AACH,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,YAAY,EAAgB;AAOtE;;;;AAIG;QAEH,IAAA,CAAA,IAAI,GAAiB,QAAQ;AAE7B;;;;;AAKG;QACM,IAAA,CAAA,IAAI,GAAyB,OAAO;AA6E9C,IAAA;AA3EC;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;IACnD;AAEA;;AAEG;IACK,SAAS,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,iBAAsC;IACrE;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,CAAa,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE;YAClB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,WAAW,EAAE,CAAC;AACf,SAAA,CAAC;;QAGF,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IAC3B;AAEA;;;;AAIG;IACM,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAClD;AAEA;;;;AAIG;IACM,IAAI,GAAA;QACX,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACrD;AAEA;;;;AAIG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5B;AAEA,IAAA,IACY,WAAW,GAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,EAAE;IAClD;8GA5GW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAfzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,yBAAyB;AACvC,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;SACjE,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CH,mlDAiDA,EAAA,MAAA,EAAA,CAAA,+2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLI,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,iBAAiB,2UACjB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,2BAA2B,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,wBAAwB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAvBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,MAAA,EAGtB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAA,OAAA,EAC3B,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAE3F,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA,yBAA2B;AACvC,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,2BAA2B,EAAE;qBACjE,EAAA,OAAA,EACQ;wBACP,wBAAwB;wBACxB,iBAAiB;wBACjB,gBAAgB;wBAChB,2BAA2B;wBAC3B,wBAAwB;AACzB,qBAAA,EAAA,QAAA,EAAA,mlDAAA,EAAA,MAAA,EAAA,CAAA,+2EAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE;;sBAGxB,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE;;sBAYvB,SAAS;uBAAC,OAAO;;sBAOjB;;sBASA;;sBAyEA,WAAW;uBAAC,OAAO;;;AEnJtB,MAAM,SAAS,GAAG,CAAC,yBAAyB,CAAC;AAC7C,MAAM,OAAO,GAAG;IACd,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;CACf;MAOY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAdjC,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,cAAc,EARG,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAAzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAgB/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAdjC,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,eAAe;YAEf,gBAAgB;AAChB,YAAA,cAAc,EAIW,SAAS,CAAA,EAAA,CAAA,CAAA;;2FAIvB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ACxBD;;AAEG;;;;"}