UNPKG

ngx-obelisco-example

Version:

Componentes funcionales y reutilizables para Angular.

1 lines 36.3 kB
{"version":3,"file":"ngx-obelisco-example-navbar.mjs","sources":["../../../projects/ngx-obelisco/navbar/o-navbar.component.ts","../../../projects/ngx-obelisco/navbar/o-navbar.component.html","../../../projects/ngx-obelisco/navbar/o-navbar.module.ts","../../../projects/ngx-obelisco/navbar/ngx-obelisco-example-navbar.ts"],"sourcesContent":["import {\n LogoHeader,\n NavbarRoute,\n NavbarRouteAccount,\n NavbarRouteLogin,\n SearchbarItem\n} from 'ngx-obelisco-example/core/models';\nimport { OCustomContentDirective } from 'ngx-obelisco-example/directives';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'o-navbar',\n templateUrl: './o-navbar.component.html',\n styleUrls: ['./o-navbar.component.scss']\n})\nexport class ONavbarComponent implements OnInit, AfterViewInit, OnDestroy {\n // Navbar\n @Input() public id: string = 'ONavbar';\n @Input() public logo: LogoHeader = {\n route: '/',\n img: [\n {\n src: 'https://buenosaires.gob.ar/assets/img/logos/LogoBA.svg',\n alt: 'Gobierno de la Ciudad de Buenos Aires - Inicio',\n customClasses: 'header-logo',\n height: 41,\n width: 76\n }\n ]\n };\n @Input() public isRouteExact: boolean = false;\n @Input() public routes!: NavbarRoute[];\n @Input() public routesExtended!: NavbarRoute[];\n @Input() public routesAccount!: NavbarRouteAccount;\n @Input() public routesLogin!: NavbarRouteLogin;\n @Input() public idMain!: string;\n @Input() public customClasses: string = '';\n\n //Searchbar\n @Input() public searchbarItems!: SearchbarItem[];\n @Input() public maxLengthResults: number = 10;\n @Input() public placeholder: string = 'Buscar...';\n @ViewChild('navbarSearchResponsive', { static: false }) navbarSearchResponsive!: ElementRef;\n @ViewChild('searchResults', { static: false }) searchResults!: ElementRef;\n @ViewChild('navbarContent') navbarContent!: ElementRef;\n\n term = '';\n isHover = false;\n noResults = false;\n filteredResults: SearchbarItem[] = [];\n selectedIndex: number = 0;\n isMenuExpanded: boolean = false;\n\n public loginClassMobile = { classMobile: '-mobile' };\n\n private clickOutsideListener = () => {};\n\n constructor(private router: Router, private elementRef: ElementRef, private renderer: Renderer2) {}\n\n @ContentChild(OCustomContentDirective, { static: true }) oCustomContent?: OCustomContentDirective;\n\n //Searchbar logic\n ngOnInit() {\n this.clickOutsideListener = this.renderer.listen('document', 'click', (event) => {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.resetSearch();\n }\n });\n }\n\n ngAfterViewInit() {\n if (this.navbarSearchResponsive) {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width - 2;\n if (this.searchResults) {\n this.renderer.setStyle(this.searchResults.nativeElement, 'width', `${width}px`);\n this.renderer.setStyle(this.searchResults.nativeElement, 'max-width', `${width}px`);\n }\n }\n });\n\n resizeObserver.observe(this.navbarSearchResponsive.nativeElement);\n }\n }\n\n search() {\n if (this.term === '') {\n this.resetSearch();\n } else {\n this.filteredResults = this.searchbarItems\n .filter((e) => e.title.toLowerCase().includes(this.term.toLowerCase()))\n .slice(0, this.maxLengthResults);\n this.noResults = this.filteredResults.length === 0;\n }\n }\n\n resetSearch() {\n this.term = '';\n this.isHover = false;\n this.noResults = false;\n this.filteredResults = [];\n this.selectedIndex = 0;\n }\n\n goTo(e: SearchbarItem) {\n this.router.navigate([e.route]);\n this.resetSearch();\n this.closeDropdownMenu();\n }\n\n onEnter() {\n if (this.filteredResults.length > 0) {\n this.goTo(this.filteredResults[this.selectedIndex]);\n this.closeDropdownMenu();\n }\n }\n\n onUp() {\n if (this.selectedIndex > 0) {\n this.selectedIndex--;\n this.isHover = false;\n }\n }\n\n onDown() {\n if (this.selectedIndex < this.filteredResults.length) {\n this.selectedIndex++;\n this.isHover = false;\n }\n }\n\n onMouseEnter() {\n this.isHover = true;\n }\n\n onMouseLeave() {\n this.isHover = false;\n }\n\n scrollToContent() {\n if (this.idMain) {\n const element = document.getElementById(this.idMain);\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }\n }\n\n ngOnDestroy() {\n if (this.clickOutsideListener) {\n this.clickOutsideListener();\n }\n }\n\n closeDropdownMenu() {\n if (this.navbarContent) {\n this.navbarContent.nativeElement.classList.remove('show');\n this.isMenuExpanded = false;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onClick(event: MouseEvent) {\n const backdrop = event.target as HTMLElement;\n if (backdrop && backdrop.classList.contains('header-backdrop')) {\n this.closeDropdownMenu();\n }\n }\n\n toggleMenu() {\n this.isMenuExpanded = !this.isMenuExpanded;\n }\n}\n","<header class=\"navbar navbar-light navbar-expand-lg\" role=\"banner\" [ngClass]=\"customClasses\">\n <a href=\"javascript:void(0)\" class=\"skip-to-main-content-link\" (click)=\"scrollToContent()\">\n Ir al contenido principal\n </a>\n <div class=\"container header-container\">\n <ng-container *ngIf=\"!oCustomContent\">\n <!-- Logo ↓ -->\n <a class=\"navbar-brand\" [routerLink]=\"logo.route\" *ngIf=\"logo\">\n <img\n *ngFor=\"let media of logo.img\"\n [ngClass]=\"media.customClasses\"\n [src]=\"media.src\"\n [alt]=\"media.alt\"\n [attr.width]=\"media.width\"\n [attr.height]=\"media.height\"\n />\n </a>\n <!-- Login button Mobile ↓ -->\n <ng-container *ngTemplateOutlet=\"loginButton; context: loginClassMobile\"></ng-container>\n <!-- Menu button ↓ -->\n <ng-container [ngTemplateOutlet]=\"menuButton\"></ng-container>\n <div #navbarContent class=\"collapse navbar-collapse\" [id]=\"id + 'navbarContent'\">\n <div class=\"navbar-content\">\n <!-- Sections ↓ -->\n <ng-container [ngTemplateOutlet]=\"sections\"></ng-container>\n <!-- Searchbar ↓ -->\n <ng-container [ngTemplateOutlet]=\"searchBar\"></ng-container>\n <!-- Login button Desktop ↓ -->\n <ng-container [ngTemplateOutlet]=\"loginButton\"></ng-container>\n <!-- Account button Desktop ↓ -->\n <ng-container [ngTemplateOutlet]=\"accountButtonDesktop\"></ng-container>\n </div>\n <!-- Sections extended ↓ -->\n <ng-container [ngTemplateOutlet]=\"sectionsExtended\"></ng-container>\n <!-- Account button Mobile ↓ -->\n <ng-container [ngTemplateOutlet]=\"accountButtonMobile\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"oCustomContent\" [ngTemplateOutlet]=\"oCustomContent.template\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n <div class=\"header-backdrop\"></div>\n</header>\n\n<!-- TEMPLATES -->\n<ng-template #iconTemplate let-icon=\"icon\">\n <i *ngIf=\"icon && icon.includes('bx')\" class=\"{{ icon }}\"></i>\n <span *ngIf=\"icon && !icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{ icon }}</span>\n</ng-template>\n\n<ng-template #iconTemplateLink let-icon=\"icon\">\n <i *ngIf=\"icon && icon.includes('bx')\" class=\"{{ icon }}\"></i>\n <span *ngIf=\"icon && !icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{ icon }}</span>\n <span *ngIf=\"!icon\" class=\"material-icons-round\" aria-hidden=\"true\">arrow_forward</span>\n</ng-template>\n\n<ng-template #iconTemplateDropdown let-icon=\"icon\">\n <i *ngIf=\"icon && icon.includes('bx')\" class=\"{{ icon }}\"></i>\n <span *ngIf=\"icon && !icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{ icon }}</span>\n <span *ngIf=\"!icon\" class=\"material-icons-round btn-dropdown-icon\"> expand_more </span>\n</ng-template>\n\n<ng-template #iconTemplateAccount let-icon=\"icon\">\n <i *ngIf=\"icon && icon.includes('bx')\" class=\"{{ icon }}\"></i>\n <span *ngIf=\"icon && !icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{ icon }}</span>\n <span *ngIf=\"!icon\" class=\"material-icons-round\" aria-hidden=\"true\">person</span>\n</ng-template>\n\n<ng-template #iconTemplateLogout let-icon=\"icon\">\n <i *ngIf=\"icon && icon.includes('bx')\" class=\"{{ icon }}\"></i>\n <span *ngIf=\"icon && !icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{ icon }}</span>\n <span *ngIf=\"!icon\" class=\"material-icons-round\" aria-hidden=\"true\">logout</span>\n</ng-template>\n\n<ng-template #accountButtonMobile>\n <div class=\"navbar-user-mobile\" *ngIf=\"routesAccount\">\n <nav>\n <p class=\"navbar-user-mobile-title\">{{ routesAccount.title }}</p>\n <ul class=\"nav flex-column nav-pills nav-user\">\n <ng-container *ngFor=\"let accountChild of routesAccount.children\">\n <li class=\"nav-item\">\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-lg\"\n [routerLink]=\"accountChild.route\"\n *ngIf=\"!accountChild.isDangerTitle\"\n >\n <span>{{ accountChild.title }}</span>\n <span class=\"item-notifications\" *ngIf=\"accountChild.isWithNotification\"></span>\n </a>\n </li>\n <li class=\"nav-item\" *ngIf=\"accountChild.isDangerTitle\">\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-danger nav-link-lg\"\n [routerLink]=\"accountChild.route\"\n >\n <div class=\"nav-icon\">\n <span class=\"material-icons-round\" aria-hidden=\"true\">logout</span>\n <span>Cerrar sesión</span>\n </div>\n </a>\n </li>\n </ng-container>\n </ul>\n </nav>\n </div>\n</ng-template>\n\n<ng-template #sections>\n <div class=\"navbar-sections\" *ngIf=\"routes\">\n <nav>\n <p class=\"navbar-sections-title\">Secciones</p>\n <ul class=\"nav nav-pills nav-sections\">\n <ng-container *ngFor=\"let routeItem of routes\">\n <li class=\"dropdown\" *ngIf=\"routeItem.children\">\n <button\n type=\"button\"\n class=\"btn btn-dropdown btn-dropdown-lg dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconLeft }\"\n ></ng-container>\n <span class=\"btn-dropdown-text\">{{ routeItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateDropdown\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconRight }\"\n ></ng-container>\n </button>\n <div class=\"dropdown-menu\">\n <ng-container *ngFor=\"let routeItemChild of routeItem.children\">\n <!-- Rutas con RouterLink -->\n <a\n class=\"dropdown-item\"\n [routerLink]=\"routeItemChild.route\"\n *ngIf=\"routeItemChild.route && !routeItemChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ routeItemChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n </a>\n <a\n class=\"dropdown-item item-link\"\n [routerLink]=\"routeItemChild.route\"\n *ngIf=\"routeItemChild.route && routeItemChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ routeItemChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateLink\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n </a>\n <!-- Rutas con Href -->\n <a\n class=\"dropdown-item\"\n [href]=\"routeItemChild.link\"\n target=\"_blank\"\n *ngIf=\"routeItemChild.link && !routeItemChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ routeItemChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n </a>\n <a\n class=\"dropdown-item item-link\"\n [href]=\"routeItemChild.link\"\n target=\"_blank\"\n *ngIf=\"routeItemChild.link && routeItemChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ routeItemChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateLink\"\n [ngTemplateOutletContext]=\"{ icon: routeItemChild.iconLeft }\"\n ></ng-container>\n </a>\n </ng-container>\n </div>\n </li>\n <li class=\"nav-item\" *ngIf=\"!routeItem.children\">\n <!-- Ruta con RouterLink -->\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-lg\"\n *ngIf=\"routeItem.route\"\n [routerLink]=\"routeItem.route\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconLeft }\"\n ></ng-container>\n <span>{{ routeItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconLeft }\"\n ></ng-container>\n </a>\n <!-- Ruta con Href -->\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-lg\"\n *ngIf=\"routeItem.link\"\n [href]=\"routeItem.link\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconLeft }\"\n ></ng-container>\n <span>{{ routeItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routeItem!.iconLeft }\"\n ></ng-container>\n </a>\n </li>\n </ng-container>\n </ul>\n </nav>\n </div>\n</ng-template>\n\n<ng-template #sectionsExtended>\n <div class=\"navbar-content-extended\" *ngIf=\"routesExtended\">\n <nav>\n <p class=\"navbar-sections-title\">Secciones</p>\n <ul class=\"nav nav-pills nav-sections\">\n <ng-container *ngFor=\"let extendedItem of routesExtended; let i = index\">\n <li class=\"nav-item\" *ngIf=\"!extendedItem.children\">\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-lg\"\n *ngIf=\"extendedItem.route\"\n [routerLink]=\"extendedItem.route\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconLeft }\"\n ></ng-container>\n <span>{{ extendedItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconRight }\"\n ></ng-container>\n </a>\n <a\n (click)=\"closeDropdownMenu()\"\n class=\"nav-link nav-link-lg\"\n *ngIf=\"extendedItem.link\"\n [href]=\"extendedItem.link\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconLeft }\"\n ></ng-container>\n <span>{{ extendedItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconRight }\"\n ></ng-container>\n </a>\n </li>\n <li class=\"dropdown\" *ngIf=\"extendedItem.children\">\n <button\n type=\"button\"\n class=\"btn btn-dropdown btn-dropdown-lg dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconLeft }\"\n ></ng-container>\n <span class=\"btn-dropdown-text\">{{ extendedItem.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateDropdown\"\n [ngTemplateOutletContext]=\"{ icon: extendedItem.iconRight }\"\n ></ng-container>\n </button>\n <div class=\"dropdown-menu\">\n <ng-container *ngFor=\"let extendedChild of extendedItem.children\">\n <!-- Rutas con RouterLink -->\n <a\n class=\"dropdown-item\"\n [routerLink]=\"extendedChild.route\"\n *ngIf=\"extendedChild.route && !extendedChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ extendedChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n </a>\n <a\n class=\"dropdown-item item-link\"\n [routerLink]=\"extendedChild.route\"\n *ngIf=\"extendedChild.route && extendedChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ extendedChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateLink\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n </a>\n <!-- Rutas con Href -->\n <a\n class=\"dropdown-item\"\n [href]=\"extendedChild.link\"\n target=\"_blank\"\n *ngIf=\"extendedChild.link && !extendedChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ extendedChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n </a>\n <a\n class=\"dropdown-item item-link\"\n [href]=\"extendedChild.link\"\n target=\"_blank\"\n *ngIf=\"extendedChild.link && extendedChild.isOverviewItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ extendedChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateLink\"\n [ngTemplateOutletContext]=\"{ icon: extendedChild.iconLeft }\"\n ></ng-container>\n </a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ul>\n </nav>\n </div>\n</ng-template>\n\n<ng-template #loginButton let-classMobile=\"classMobile\">\n <ng-container *ngIf=\"routesLogin\">\n <div class=\"navbar-login{{ classMobile }}\" *ngIf=\"!routesAccount\">\n <a class=\"btn btn-lg btn-icon btn-outline-link\" [routerLink]=\"routesLogin.route\" target=\"_blank\">\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateAccount\"\n [ngTemplateOutletContext]=\"{ icon: routesLogin.iconLeft }\"\n ></ng-container>\n <span class=\"btn-text\">{{ routesLogin.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routesLogin.iconRight }\"\n ></ng-container>\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #searchBar>\n <div class=\"navbar-search\" *ngIf=\"searchbarItems\">\n <form class=\"form-search\">\n <div class=\"form-group\">\n <label class=\"sr-only\" for=\"search-input\">Buscador</label>\n <input\n type=\"search\"\n class=\"form-control input-search\"\n id=\"search-input\"\n name=\"name\"\n aria-label=\"Ingrese su búsqueda\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"term\"\n (input)=\"search()\"\n (keydown.enter)=\"onEnter()\"\n (keydown.ArrowUp)=\"onUp()\"\n (keydown.ArrowDown)=\"onDown()\"\n />\n <button class=\"reset\" type=\"reset\" aria-label=\"Borrar\" (click)=\"resetSearch()\"></button>\n <button\n class=\"submit-search\"\n type=\"submit\"\n aria-label=\"Buscar\"\n (click)=\"onEnter()\"\n (keydown.enter)=\"onEnter()\"\n ></button>\n </div>\n </form>\n <div class=\"search-results\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <ng-container *ngIf=\"filteredResults.length > 0\">\n <div\n class=\"search-item\"\n *ngFor=\"let result of filteredResults; let i = index\"\n [class.selected-search-item]=\"i === selectedIndex\"\n [class.first-search-item]=\"i === selectedIndex && !isHover\"\n (click)=\"goTo(result)\"\n >\n {{ result.title }}\n </div>\n </ng-container>\n <div class=\"no-results\" *ngIf=\"noResults\">No se encontraron resultados😢.</div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #accountButtonDesktop>\n <div class=\"navbar-user\" *ngIf=\"routesAccount\">\n <div class=\"dropdown\">\n <button\n type=\"button\"\n class=\"btn btn-dropdown btn-dropdown-lg btn-dropdown-border dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateAccount\"\n [ngTemplateOutletContext]=\"{ icon: routesAccount.iconLeft }\"\n ></ng-container>\n <span class=\"btn-dropdown-text\">{{ routesAccount.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: routesAccount.iconLeft }\"\n ></ng-container>\n </button>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <ng-container *ngFor=\"let accountChild of routesAccount.children\">\n <a class=\"dropdown-item\" [routerLink]=\"accountChild.route\" *ngIf=\"!accountChild.isDangerTitle\">\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: accountChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">{{ accountChild.title }}</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: accountChild.iconRight }\"\n ></ng-container>\n <span class=\"item-notifications\" *ngIf=\"accountChild.isWithNotification\"></span>\n </a>\n <a class=\"dropdown-item item-danger\" [routerLink]=\"accountChild.route\" *ngIf=\"accountChild.isDangerTitle\">\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ icon: accountChild.iconLeft }\"\n ></ng-container>\n <span class=\"item-text\">Cerrar sesión</span>\n <ng-container\n [ngTemplateOutlet]=\"iconTemplateLogout\"\n [ngTemplateOutletContext]=\"{ icon: accountChild.iconLeft }\"\n ></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #menuButton>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n data-toggle=\"collapse\"\n [attr.data-target]=\"'#' + id + 'navbarContent'\"\n [attr.aria-controls]=\"id + 'navbarContent'\"\n [attr.aria-expanded]=\"isMenuExpanded ? 'true' : 'false'\"\n aria-label=\"Menú\"\n (click)=\"toggleMenu()\"\n *ngIf=\"routes || routesExtended || routesAccount || searchbarItems\"\n ></button>\n</ng-template>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ONavbarComponent } from './o-navbar.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [ONavbarComponent],\r\n imports: [CommonModule, RouterModule, FormsModule],\r\n exports: [ONavbarComponent]\r\n})\r\nexport class ONavbarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}