{"version":3,"file":"ngx-obelisco-example-search.mjs","sources":["../../../projects/ngx-obelisco/search/o-search.component.ts","../../../projects/ngx-obelisco/search/o-search.component.html","../../../projects/ngx-obelisco/search/o-search.module.ts","../../../projects/ngx-obelisco/search/ngx-obelisco-example-search.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SearchbarItem } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n  selector: 'o-search',\r\n  templateUrl: './o-search.component.html',\r\n  styleUrls: ['./o-search.component.scss']\r\n})\r\nexport class OSearchComponent implements AfterViewInit {\r\n  @Input() public searchbarItems!: SearchbarItem[];\r\n  @Input() public maxLengthResults: number = 10;\r\n  @Input() public placeholder: string = 'Buscar...';\r\n  @Input() public type: string = '';\r\n  @Input() public onSelectItem?: (item: SearchbarItem) => void;\r\n\r\n  term = '';\r\n  isHover = false;\r\n  noResults = false;\r\n  filteredResults: SearchbarItem[] = [];\r\n  selectedIndex: number = 0;\r\n\r\n  @ViewChild('inputElement') inputElement!: ElementRef;\r\n\r\n  constructor(private router: Router, private elementRef: ElementRef, private renderer: Renderer2) {}\r\n\r\n  adjustResultsWidth() {\r\n    const inputWidth = this.inputElement.nativeElement.getBoundingClientRect().width;\r\n    const searchResults = this.elementRef.nativeElement.querySelector('.search-results');\r\n    const noResults = this.elementRef.nativeElement.querySelector('.no-results');\r\n\r\n    if (searchResults && noResults) {\r\n      if (inputWidth > 0) {\r\n        this.renderer.setStyle(searchResults, 'width', inputWidth + 'px');\r\n        this.renderer.setStyle(noResults, 'width', inputWidth + 'px');\r\n      }\r\n    }\r\n  }\r\n\r\n  search() {\r\n    if (this.term === '') {\r\n      this.resetSearch();\r\n    } else {\r\n      this.filteredResults = this.searchbarItems\r\n        .filter((e) => e.title.toLowerCase().includes(this.term.toLowerCase()))\r\n        .slice(0, this.maxLengthResults);\r\n      this.noResults = this.filteredResults.length === 0;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.adjustResultsWidth();\r\n  }\r\n\r\n  resetSearch() {\r\n    this.term = '';\r\n    this.isHover = false;\r\n    this.noResults = false;\r\n    this.filteredResults = [];\r\n    this.selectedIndex = 0;\r\n  }\r\n\r\n  goTo(e: SearchbarItem) {\r\n    if (this.onSelectItem) {\r\n      this.onSelectItem(e);\r\n    } else {\r\n      this.router.navigate([e.route]);\r\n    }\r\n    this.resetSearch();\r\n  }\r\n\r\n  onEnter() {\r\n    if (this.filteredResults.length > 0) {\r\n      this.goTo(this.filteredResults[this.selectedIndex]);\r\n    }\r\n  }\r\n\r\n  onUp() {\r\n    if (this.selectedIndex > 0) {\r\n      this.selectedIndex--;\r\n      this.isHover = false;\r\n    }\r\n  }\r\n\r\n  onDown() {\r\n    if (this.selectedIndex < this.filteredResults.length - 1) {\r\n      this.selectedIndex++;\r\n      this.isHover = false;\r\n    }\r\n  }\r\n\r\n  onMouseEnter() {\r\n    this.isHover = true;\r\n  }\r\n\r\n  onMouseLeave() {\r\n    this.isHover = false;\r\n  }\r\n}\r\n","<div class=\"navbar-search\" *ngIf=\"searchbarItems\">\r\n  <form class=\"form-search\">\r\n    <div class=\"form-group\">\r\n      <label class=\"sr-only\" for=\"search-input\">Buscador</label>\r\n      <input\r\n        #inputElement\r\n        type=\"search\"\r\n        class=\"form-control input-search\"\r\n        [ngClass]=\"type ? 'bg-' + type : ''\"\r\n        id=\"name-input\"\r\n        name=\"name\"\r\n        aria-label=\"Ingrese su búsqueda\"\r\n        [placeholder]=\"placeholder\"\r\n        [(ngModel)]=\"term\"\r\n        (input)=\"search()\"\r\n        (keydown.enter)=\"onEnter()\"\r\n        (keydown.ArrowUp)=\"onUp()\"\r\n        (keydown.ArrowDown)=\"onDown()\"\r\n      />\r\n      <button class=\"reset\" type=\"reset\" aria-label=\"Borrar\" (click)=\"resetSearch()\"></button>\r\n    </div>\r\n  </form>\r\n  <div class=\"search-results\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n    <ng-container *ngIf=\"filteredResults.length > 0\">\r\n      <div\r\n        class=\"search-item\"\r\n        *ngFor=\"let result of filteredResults; let i = index\"\r\n        [class.selected-search-item]=\"i === selectedIndex\"\r\n        [class.first-search-item]=\"i === selectedIndex && !isHover\"\r\n        (click)=\"goTo(result)\"\r\n      >\r\n        {{ result.title }}\r\n      </div>\r\n    </ng-container>\r\n    <div class=\"no-results\" *ngIf=\"noResults\">No se encontraron resultados😢.</div>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OSearchComponent } from './o-search.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n  declarations: [OSearchComponent],\r\n  imports: [CommonModule, RouterModule, FormsModule],\r\n  exports: [OSearchComponent]\r\n})\r\nexport class OSearchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}