ngx-obelisco-example
Version:
Componentes funcionales y reutilizables para Angular.
1 lines • 29 kB
Source Map (JSON)
{"version":3,"file":"ngx-obelisco-example-nav.mjs","sources":["../../../projects/ngx-obelisco/nav/o-nav-horizontal/o-nav-horizontal.component.ts","../../../projects/ngx-obelisco/nav/o-nav-horizontal/o-nav-horizontal.component.html","../../../projects/ngx-obelisco/nav/o-nav-vertical/o-nav-vertical.component.ts","../../../projects/ngx-obelisco/nav/o-nav-vertical/o-nav-vertical.component.html","../../../projects/ngx-obelisco/nav/o-tabs/o-tabs.component.ts","../../../projects/ngx-obelisco/nav/o-tabs/o-tabs.component.html","../../../projects/ngx-obelisco/nav/o-nav.module.ts","../../../projects/ngx-obelisco/nav/ngx-obelisco-example-nav.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, Input, QueryList, Renderer2, ViewChildren } from '@angular/core';\r\nimport { NavHorizontalItems } from 'ngx-obelisco-example/core/models';\r\nimport { Sizes } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n selector: 'o-nav-horizontal',\r\n templateUrl: './o-nav-horizontal.component.html',\r\n styleUrls: ['./o-nav-horizontal.component.scss']\r\n})\r\nexport class ONavHorizontalComponent implements AfterViewInit {\r\n @Input() public navHorItems: NavHorizontalItems[] = [];\r\n @Input() public isBordered: boolean = false;\r\n @Input() public size: Sizes = 'md';\r\n @Input() public exactRouteActive: boolean = false;\r\n @Input() public customClasses: string = '';\r\n\r\n @ViewChildren('navLink') public navLinks!: QueryList<ElementRef>;\r\n\r\n constructor(private readonly renderer: Renderer2) {}\r\n\r\n public ngAfterViewInit(): void {\r\n const indexArr = this.navHorItems.map((_, i) => i);\r\n\r\n this.navLinks.forEach((e, index) => {\r\n if ((e.nativeElement.href === '' || !e.nativeElement.href) && indexArr.includes(index)) {\r\n this.renderer.setAttribute(e.nativeElement, 'href', this.navHorItems[index].link!);\r\n }\r\n });\r\n }\r\n\r\n // public scrollToTop(): void {\r\n // window.scrollTo({ top: 0, behavior: 'smooth' });\r\n // }\r\n}\r\n","<nav [ngClass]=\"customClasses\">\r\n <ul class=\"nav flex-row nav-pills\">\r\n <li class=\"nav-item\" *ngFor=\"let item of navHorItems; index as i\">\r\n <a\r\n #navLink\r\n class=\"nav-link\"\r\n [class.border-link]=\"isBordered\"\r\n [class.disabled]=\"item.isDisabled\"\r\n routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: exactRouteActive ? true : false }\"\r\n [routerLink]=\"item.route\"\r\n [ngClass]=\"size ? 'nav-link-' + size : ''\"\r\n >\r\n <div *ngIf=\"i === 0 && item.icon; else simpleTitle\" class=\"nav-icon\">\r\n <i [class]=\"item.icon\"></i>\r\n <span>{{ item.title }}</span>\r\n </div>\r\n <ng-template #simpleTitle>\r\n <span>{{ item.title }}</span>\r\n </ng-template>\r\n </a>\r\n </li>\r\n </ul>\r\n</nav>\r\n<!-- (click)=\"scrollToTop()\" -->\r\n","import { Component, Input } from '@angular/core';\r\nimport { NavVerticalItems } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n selector: 'o-nav-vertical',\r\n templateUrl: './o-nav-vertical.component.html',\r\n styleUrls: ['./o-nav-vertical.component.scss']\r\n})\r\nexport class ONavVerticalComponent {\r\n @Input() public navVertItems: NavVerticalItems[] = [];\r\n @Input() public exactRouteActive: boolean = false;\r\n @Input() public customClasses: string = '';\r\n\r\n public scrollToTop(): void {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }\r\n}\r\n","<nav [ngClass]=\"customClasses\">\r\n <ul class=\"nav flex-column nav-pills nav-lg\">\r\n <li class=\"nav-item\" *ngFor=\"let item of navVertItems; index as i\">\r\n <a\r\n *ngIf=\"item.children && item.children?.length !== 0; else templateChild\"\r\n routerLinkActive=\"active-child\"\r\n class=\"nav-link\"\r\n [class.active-child]=\"navLink.isActive\"\r\n #navLink=\"routerLinkActive\"\r\n [class.disabled]=\"item.isDisabled\"\r\n [routerLink]=\"item.route\"\r\n (click)=\"scrollToTop()\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"item.icon\">\r\n <i *ngIf=\"item.icon.includes('bx')\" [ngClass]=\"item.icon\"></i>\r\n <span *ngIf=\"!item.icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{\r\n item.icon\r\n }}</span>\r\n </ng-container>\r\n <span>{{ item.title }}</span>\r\n </div>\r\n </a>\r\n <ng-template #templateChild>\r\n <a\r\n class=\"nav-link\"\r\n [class.active]=\"navLinkSecondLevel.isActive\"\r\n routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: exactRouteActive ? true : false }\"\r\n #navLinkSecondLevel=\"routerLinkActive\"\r\n [routerLink]=\"item.route\"\r\n [class.disabled]=\"item.isDisabled\"\r\n (click)=\"scrollToTop()\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"item.icon\">\r\n <i *ngIf=\"item.icon.includes('bx')\" [ngClass]=\"item.icon\"></i>\r\n <span *ngIf=\"!item.icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{\r\n item.icon\r\n }}</span>\r\n </ng-container>\r\n <span>{{ item.title }}</span>\r\n </div>\r\n </a>\r\n </ng-template>\r\n <ul *ngFor=\"let secondItem of item.children; index as j\" class=\"nav flex-column nav-pills\">\r\n <li class=\"nav-item\">\r\n <a\r\n *ngIf=\"secondItem.children && secondItem.children?.length !== 0; else templateChild\"\r\n class=\"nav-link\"\r\n [class.active-child]=\"navLinkSecondLevel.isActive\"\r\n routerLinkActive=\"active-child\"\r\n #navLinkSecondLevel=\"routerLinkActive\"\r\n [routerLink]=\"secondItem.route\"\r\n [class.disabled]=\"item.isDisabled\"\r\n (click)=\"scrollToTop()\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"secondItem.icon\">\r\n <i *ngIf=\"secondItem.icon.includes('bx')\" [ngClass]=\"secondItem.icon\"></i>\r\n <span *ngIf=\"!secondItem.icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{\r\n secondItem.icon\r\n }}</span>\r\n </ng-container>\r\n <i class=\"bx bxs-info-circle\"></i>\r\n <span>{{ secondItem.title }} </span>\r\n </div>\r\n </a>\r\n <ng-template #templateChild>\r\n <a\r\n class=\"nav-link\"\r\n [class.active]=\"navLinkSecondLevel.isActive\"\r\n routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: exactRouteActive ? true : false }\"\r\n #navLinkSecondLevel=\"routerLinkActive\"\r\n [routerLink]=\"secondItem.route\"\r\n [class.disabled]=\"item.isDisabled\"\r\n (click)=\"scrollToTop()\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"secondItem.icon\">\r\n <i *ngIf=\"secondItem.icon.includes('bx')\" [ngClass]=\"secondItem.icon\"></i>\r\n <span *ngIf=\"!secondItem.icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{\r\n secondItem.icon\r\n }}</span>\r\n </ng-container>\r\n <span>{{ secondItem.title }} </span>\r\n </div>\r\n </a>\r\n </ng-template>\r\n <ul *ngFor=\"let thirdItem of secondItem.children; index as z\" class=\"nav flex-column nav-pills\">\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link\"\r\n [class.active]=\"navLinkThirdLevel.isActive\"\r\n routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: exactRouteActive ? true : false }\"\r\n #navLinkThirdLevel=\"routerLinkActive\"\r\n [routerLink]=\"thirdItem.route\"\r\n [class.disabled]=\"item.isDisabled\"\r\n (click)=\"scrollToTop()\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"thirdItem.icon\">\r\n <i *ngIf=\"thirdItem.icon.includes('bx')\" [ngClass]=\"thirdItem.icon\"></i>\r\n <span *ngIf=\"!thirdItem.icon.includes('bx')\" class=\"material-icons-round\" aria-hidden=\"true\">{{\r\n thirdItem.icon\r\n }}</span>\r\n </ng-container>\r\n <span>{{ thirdItem.title }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n</nav>\r\n","import {\r\n Component,\r\n Input,\r\n ComponentRef,\r\n ViewContainerRef,\r\n Renderer2,\r\n AfterViewInit,\r\n ElementRef,\r\n ViewChild,\r\n HostListener,\r\n ChangeDetectorRef,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { Sizes, TabsProps } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n selector: 'o-tabs',\r\n templateUrl: './o-tabs.component.html',\r\n styleUrls: ['./o-tabs.component.scss']\r\n})\r\nexport class OTabsComponent implements AfterViewInit, OnDestroy {\r\n @Input() public navTabsItems: TabsProps[] = [];\r\n @Input() public isFixedWidth: boolean = false;\r\n @Input() public isItemsRounded: boolean = false;\r\n @Input() public isItemsRoundedLight: boolean = false;\r\n @Input() public size: Sizes = 'md';\r\n @Input() public isSlidered: boolean = false;\r\n @Input() public customClasses: string = '';\r\n\r\n @ViewChild('tabContentContainer', { read: ViewContainerRef }) tabContentContainer!: ViewContainerRef;\r\n @ViewChild('tabsList') tabsListRef!: ElementRef;\r\n\r\n public activeTabComponentRef: ComponentRef<any> | null = null;\r\n public activeTabIndex: number | null = null;\r\n private isDragging = false;\r\n private dragStartPositionX = 0;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngAfterViewInit() {\r\n const initialActiveTabIndex = this.navTabsItems.findIndex((tab) => tab.isActive);\r\n if (initialActiveTabIndex !== -1) {\r\n this.activateTab(initialActiveTabIndex);\r\n }\r\n\r\n this.cdr.detectChanges();\r\n\r\n // Agregar event listeners a los botones de flecha\r\n const arrowIcons = this.tabsListRef.nativeElement.parentElement.querySelectorAll('.icon');\r\n if (arrowIcons.length >= 2) {\r\n arrowIcons[0].addEventListener('click', () => this.handleArrowClick('left'));\r\n arrowIcons[1].addEventListener('click', () => this.handleArrowClick('right'));\r\n }\r\n }\r\n\r\n handleArrowClick(direction: 'left' | 'right') {\r\n const movementX = direction === 'left' ? -340 : 340;\r\n const newScrollLeft = this.tabsListRef.nativeElement.scrollLeft + movementX;\r\n\r\n this.tabsListRef.nativeElement.scrollTo({\r\n left: newScrollLeft,\r\n behavior: 'smooth'\r\n });\r\n\r\n this.handleIcons(newScrollLeft);\r\n }\r\n\r\n activateTab(tabIndex: number) {\r\n if (!this.navTabsItems[tabIndex].isDisabled) {\r\n if (this.activeTabIndex !== null) {\r\n this.navTabsItems[this.activeTabIndex].isActive = false;\r\n }\r\n\r\n this.activeTabIndex = tabIndex;\r\n this.navTabsItems[tabIndex].isActive = true;\r\n\r\n if (this.activeTabComponentRef) {\r\n this.activeTabComponentRef.destroy();\r\n }\r\n\r\n if (this.navTabsItems[tabIndex].child) {\r\n this.activeTabComponentRef = this.viewContainerRef.createComponent(this.navTabsItems[tabIndex].child);\r\n } else {\r\n this.activeTabComponentRef = null;\r\n }\r\n }\r\n }\r\n\r\n handleTabClick(tabIndex: number, event: MouseEvent) {\r\n this.activateTab(tabIndex);\r\n }\r\n\r\n handleTabKeyup(event: KeyboardEvent, tabIndex: number) {\r\n if (event.key === 'Enter') {\r\n this.activateTab(tabIndex);\r\n }\r\n }\r\n\r\n // Función para el evento 'mousedown'\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (target.classList.contains('material-icons-round')) {\r\n return;\r\n }\r\n\r\n this.isDragging = true;\r\n this.dragStartPositionX = event.clientX;\r\n this.renderer.addClass(this.tabsListRef.nativeElement, 'dragging');\r\n\r\n this.renderer.setStyle(this.tabsListRef.nativeElement, 'cursor', 'grabbing');\r\n this.renderer.setStyle(document.body, 'user-select', 'none');\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.renderer.removeClass(this.tabsListRef.nativeElement, 'dragging');\r\n }\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.isDragging) {\r\n const movementX = event.clientX - this.dragStartPositionX;\r\n this.dragStartPositionX = event.clientX;\r\n this.renderer.setProperty(\r\n this.tabsListRef.nativeElement,\r\n 'scrollLeft',\r\n this.tabsListRef.nativeElement.scrollLeft - movementX\r\n );\r\n this.handleIcons(this.tabsListRef.nativeElement.scrollLeft);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // Función para el evento 'mouseup'\r\n @HostListener('mouseup')\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.renderer.removeClass(this.tabsListRef.nativeElement, 'dragging');\r\n\r\n this.renderer.removeStyle(this.tabsListRef.nativeElement, 'cursor');\r\n this.renderer.removeStyle(document.body, 'user-select');\r\n }\r\n\r\n // Función para mostrar u ocultar las flechas de navegación\r\n private handleIcons(scrollVal: number) {\r\n const arrowIcons = this.tabsListRef.nativeElement.parentElement.querySelectorAll('.icon');\r\n const maxScrollableWidth = this.tabsListRef.nativeElement.scrollWidth - this.tabsListRef.nativeElement.clientWidth;\r\n\r\n if (arrowIcons[0]) {\r\n arrowIcons[0].style.display = scrollVal <= 0 ? 'none' : 'flex';\r\n }\r\n if (arrowIcons[1]) {\r\n arrowIcons[1].style.display = maxScrollableWidth - scrollVal <= 1 ? 'none' : 'flex';\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.activeTabComponentRef) {\r\n this.activeTabComponentRef.destroy();\r\n }\r\n }\r\n}\r\n","<nav\r\n [class.tabs-slider]=\"true\"\r\n [class.px-0]=\"!isSlidered\"\r\n [ngClass]=\"customClasses\"\r\n aria-label=\"Navegación por pestañas\"\r\n>\r\n <ul\r\n #tabsList\r\n class=\"nav nav-pills tabs\"\r\n [class.nav-box]=\"isItemsRounded\"\r\n [class.nav-box-bg]=\"isItemsRoundedLight\"\r\n [class.fixedWidth]=\"isFixedWidth\"\r\n >\r\n <li class=\"nav-item\" *ngFor=\"let tab of navTabsItems; let i = index\">\r\n <a\r\n class=\"nav-link\"\r\n [class.active]=\"i === activeTabIndex\"\r\n [class.disabled]=\"tab.isDisabled\"\r\n (click)=\"handleTabClick(i, $event)\"\r\n [ngClass]=\"{\r\n 'nav-link-lg': size === 'lg',\r\n 'nav-link-sm': size === 'sm'\r\n }\"\r\n tabindex=\"0\"\r\n (keyup)=\"handleTabKeyup($event, i)\"\r\n >\r\n <div class=\"nav-icon\">\r\n <ng-container *ngIf=\"tab.icon\">\r\n <ng-container *ngIf=\"tab.icon.includes('bx')\">\r\n <i [ngClass]=\"tab.icon\"></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"!tab.icon.includes('bx')\">\r\n <span class=\"material-icons-round\" aria-hidden=\"true\">{{ tab.icon }}</span>\r\n </ng-container>\r\n </ng-container>\r\n {{ tab.title }}\r\n <ng-container *ngIf=\"tab.iconRight\">\r\n <ng-container *ngIf=\"tab.icon && tab.icon.includes('bx')\">\r\n <i [ngClass]=\"tab.icon\"></i>\r\n </ng-container>\r\n <ng-container *ngIf=\"tab.icon && !tab.icon.includes('bx')\">\r\n <span class=\"material-icons-round\" aria-hidden=\"true\">{{ tab.icon }}</span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"icons-container\" *ngIf=\"isSlidered\">\r\n <button type=\"button\" class=\"right-left icon\" id=\"left\">\r\n <span class=\"material-icons-round\" aria-hidden=\"true\">arrow_back_ios</span>\r\n </button>\r\n <button type=\"button\" class=\"right-left icon\" id=\"right\">\r\n <span class=\"material-icons-round\" aria-hidden=\"true\">arrow_forward_ios</span>\r\n </button>\r\n </div>\r\n</nav>\r\n","import { RouterModule } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ONavHorizontalComponent } from './o-nav-horizontal/o-nav-horizontal.component';\r\nimport { ONavVerticalComponent } from './o-nav-vertical/o-nav-vertical.component';\r\nimport { OTabsComponent } from './o-tabs/o-tabs.component';\r\n\r\n@NgModule({\r\n declarations: [ONavHorizontalComponent, ONavVerticalComponent, OTabsComponent],\r\n imports: [CommonModule, RouterModule],\r\n exports: [ONavHorizontalComponent, ONavVerticalComponent, OTabsComponent]\r\n})\r\nexport class ONavModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}