{"version":3,"file":"catrx-ui-dropdown.mjs","sources":["../../../../projects/catrx/ui/dropdown/src/dropdown-content.component.ts","../../../../projects/catrx/ui/dropdown/src/cat-dropdown.directive.ts","../../../../projects/catrx/ui/dropdown/src/dropdown.component.ts","../../../../projects/catrx/ui/dropdown/src/cat-dropdown.module.ts","../../../../projects/catrx/ui/dropdown/catrx-ui-dropdown.ts"],"sourcesContent":["import { Component, ElementRef, TemplateRef } from '@angular/core';\n\n@Component({\n  template: `\n    <div\n      class=\"cat-dropdown-content\"\n      [style.left]=\"left + 'px'\"\n      [style.top]=\"top + 'px'\"\n      [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n    >\n      <ng-component *ngTemplateOutlet=\"dropdownContent\" />\n    </div>\n  `,\n})\nexport class DropdownContentComponent {\n  dropdownContent: TemplateRef<any>;\n  left = 0;\n  top = 0;\n  visible = false;\n\n  constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  HostListener,\n  Injector,\n  Input,\n  OnDestroy,\n  TemplateRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { interval } from 'rxjs/internal/observable/interval';\nimport { startWith } from 'rxjs/internal/operators/startWith';\nimport { takeUntil } from 'rxjs/internal/operators/takeUntil';\nimport { DropdownContentComponent } from './dropdown-content.component';\nimport { CatDropdownPosition } from './dropdown.interface';\n\nexport interface DropdownConfig {\n  insideClick: boolean;\n  disabled: boolean;\n  templateRef: TemplateRef<any>;\n  position: CatDropdownPosition;\n  onClose: (isClosed: boolean) => void;\n  close: Subject<boolean>;\n}\n\n@Directive({\n  selector: '[catDropdown]',\n})\nexport class CatDropdownDirective implements OnDestroy {\n  @Input() catDropdown: DropdownConfig;\n\n  private wasTrigged = false;\n  private componentRef: ComponentRef<DropdownContentComponent> = null;\n  private intervalObserveTriggerDestroy: Subscription;\n  private destroySubscriptions$ = new Subject();\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) { }\n\n  @HostListener('click')\n  onClick(): void {\n    if (!this.catDropdown.disabled) {\n      this.validateWasTrigger();\n      this.initializeDropdown();\n      setTimeout(() => (this.wasTrigged = true), 1);\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickout(event: PointerEvent): void {\n    if (this.componentRef?.instance && this.wasTrigged) {\n      if (\n        this.componentRef.instance.elementRef.nativeElement.contains(\n          event.target as Node\n        )\n      ) {\n        if (!this.catDropdown.insideClick) {\n          this.destroy();\n        }\n      } else {\n        this.destroy();\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy();\n  }\n\n  destroy(): void {\n    if (this.componentRef !== null) {\n      this.appRef.detachView(this.componentRef.hostView);\n      this.componentRef.destroy();\n      this.componentRef = null;\n      this.wasTrigged = false;\n      this.catDropdown.onClose(true);\n      this.destroySubscriptions$.next(true);\n    }\n    this.intervalObserveTriggerDestroy?.unsubscribe();\n  }\n\n  private initializeDropdown() {\n    if (this.componentRef === null) {\n      const componentFactory =\n        this.componentFactoryResolver.resolveComponentFactory(\n          DropdownContentComponent\n        );\n      this.componentRef = componentFactory.create(this.injector);\n      this.appRef.attachView(this.componentRef.hostView);\n      const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n      document.querySelector('main').appendChild(domElem);\n      this.setDropdownComponentProperties();\n    }\n  }\n\n  private setDropdownComponentProperties() {\n    if (this.componentRef !== null) {\n      this.componentRef.instance.dropdownContent = this.catDropdown.templateRef;\n\n      setTimeout(() => {\n        const position = this.calcPosition();\n\n        if (this.componentRef) {\n          this.componentRef.instance.left = position.leftPosition;\n          this.componentRef.instance.top = position.topPosition;\n          this.componentRef.instance.visible = true;\n        }\n\n        this.observeTriggerDestroy();\n\n        this.showDropdown();\n      }, 1);\n    }\n  }\n\n  private showDropdown() {\n    if (this.componentRef !== null) {\n      this.componentRef.instance.visible = true;\n      this.catDropdown.close\n        .pipe(takeUntil(this.destroySubscriptions$))\n        .subscribe(() => this.destroy());\n    }\n  }\n\n  private observeTriggerDestroy() {\n    this.intervalObserveTriggerDestroy = interval(50)\n      .pipe(startWith(0))\n      .subscribe(() => {\n        if (!this.elementRef.nativeElement.isConnected) this.destroy();\n      });\n  }\n\n  private calcPosition(withoutSwitches = false) {\n    const bodyWidth = document.body.clientWidth;\n    const bodyHeigth = document.body.clientHeight;\n\n    let topPosition = 0;\n    let leftPosition = 0;\n    let absolutePosition = 0;\n\n    const { left, right, bottom, top, width, height } =\n      this.elementRef.nativeElement.getBoundingClientRect();\n    const elDropdownContent = document.querySelector('.cat-dropdown-content');\n    const dropdownWidth = elDropdownContent?.clientWidth;\n    const dropdownHeigth = elDropdownContent?.clientHeight;\n    const absoluteHorizontalPosition = left + width + dropdownWidth;\n    const absoluteVerticalPosition = top + height + dropdownHeigth;\n    const isMobile = bodyWidth <= 980;\n\n    if (withoutSwitches) {\n      if (\n        this.calcPosition(true).topPosition < 0 &&\n        this.catDropdown.position === 'top'\n      )\n        this.catDropdown.position = 'bottom';\n      if (\n        absoluteHorizontalPosition > bodyWidth &&\n        this.catDropdown.position === 'right'\n      )\n        this.catDropdown.position = 'left';\n      if (\n        this.calcPosition(true).leftPosition < 0 &&\n        this.catDropdown.position === 'left'\n      )\n        this.catDropdown.position = 'right';\n      if (\n        absoluteVerticalPosition > bodyHeigth &&\n        this.catDropdown.position === 'bottom'\n      )\n        this.catDropdown.position = 'top';\n    }\n\n    if (isMobile) {\n      leftPosition = 5;\n    }\n\n    switch (this.catDropdown.position) {\n      case 'top':\n        if (!isMobile) leftPosition = left;\n\n        topPosition = top - dropdownHeigth - 5;\n        if (topPosition < 0) topPosition = 5;\n        break;\n      case 'bottom':\n        if (!isMobile)\n          leftPosition =\n            absoluteHorizontalPosition > bodyWidth ? left - width : left;\n\n        topPosition = bottom + 5;\n        break;\n      case 'left':\n        if (!isMobile) {\n          leftPosition = left - dropdownWidth - 5;\n          if (leftPosition < 0) {\n            leftPosition = 5;\n          } else if (absoluteVerticalPosition > bodyHeigth) {\n            topPosition -= dropdownHeigth - height;\n          }\n        }\n\n        topPosition = top;\n        break;\n      case 'right':\n        if (!isMobile) {\n          leftPosition = right + 5;\n          if (leftPosition > absoluteHorizontalPosition)\n            leftPosition = absoluteHorizontalPosition - 5;\n        }\n\n        topPosition = top;\n\n        absolutePosition = topPosition + dropdownHeigth + height;\n        if (topPosition < 0) {\n          topPosition = 5;\n        } else if (absoluteVerticalPosition > bodyHeigth) {\n          topPosition -= dropdownHeigth - height;\n        }\n        break;\n    }\n\n    return { topPosition, leftPosition };\n  }\n\n  private validateWasTrigger() {\n    if (this.wasTrigged && !this.componentRef) {\n      this.wasTrigged = false;\n    }\n  }\n}\n","import { DropdownConfig } from './cat-dropdown.directive';\nimport {\n  Component,\n  Input,\n  ViewChild,\n  TemplateRef,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { CatDropdownPosition } from './dropdown.interface';\nimport { Subject } from 'rxjs/internal/Subject';\n\n@Component({\n  selector: 'cat-dropdown',\n  template: `\n    <div [catDropdown]=\"getDropdownConfig()\">\n      <ng-content select=\"[trigger]\"></ng-content>\n      <ng-template #dropdownContent>\n        <ng-content select=\"[content]\"></ng-content>\n      </ng-template>\n    </div>\n  `,\n})\nexport class DropdownComponent {\n  @Input() position: CatDropdownPosition = 'top';\n  @Input() insideClick = true;\n  @Input() disabled = false;\n  @Output() onClose = new EventEmitter<boolean>();\n\n  @ViewChild('dropdownContent') dropdownContent: TemplateRef<any>;\n\n  private closeDropdown$ = new Subject<boolean>();\n\n  close() {\n    this.closeDropdown$.next(true);\n  }\n\n  getDropdownConfig() {\n    return {\n      templateRef: this.dropdownContent,\n      disabled: this.disabled,\n      insideClick: this.insideClick,\n      position: this.position,\n      onClose: (isClosed: boolean) => {\n        if (isClosed) this.onClose.emit(isClosed);\n      },\n      close: this.closeDropdown$,\n    } as DropdownConfig;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CatDropdownDirective } from './cat-dropdown.directive';\nimport { DropdownContentComponent } from './dropdown-content.component';\nimport { DropdownComponent } from './dropdown.component';\n\n@NgModule({\n  declarations: [\n    CatDropdownDirective,\n    DropdownContentComponent,\n    DropdownComponent,\n  ],\n  exports: [DropdownComponent],\n  imports: [CommonModule],\n})\nexport class CatDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CatDropdownDirective"],"mappings":"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"}