UNPKG

primeng

Version:

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primeng.svg)](https://badge.fury.io/js/primeng) [![Build Status](https://travis-ci.org/primefaces/primeng.

196 lines (190 loc) 10.9 kB
import { ElementRef, Renderer2, Input, Component, ChangeDetectionStrategy, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { DomHandler } from 'primeng/dom'; import { RouterModule } from '@angular/router'; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; let MegaMenu = class MegaMenu { constructor(el, renderer) { this.el = el; this.renderer = renderer; this.orientation = 'horizontal'; this.autoZIndex = true; this.baseZIndex = 0; } onItemMouseEnter(event, item, menuitem) { if (menuitem.disabled) { return; } if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout = null; } this.activeItem = item; if (menuitem.items) { let submenu = item.children[0].nextElementSibling; if (submenu) { if (this.autoZIndex) { submenu.style.zIndex = String(this.baseZIndex + (++DomHandler.zindex)); } if (this.orientation === 'horizontal') { submenu.style.top = DomHandler.getOuterHeight(item.children[0]) + 'px'; submenu.style.left = '0px'; } else if (this.orientation === 'vertical') { submenu.style.top = '0px'; submenu.style.left = DomHandler.getOuterWidth(item.children[0]) + 'px'; } } } } onItemMouseLeave(event, link) { this.hideTimeout = setTimeout(() => { this.activeItem = null; }, 1000); } itemClick(event, item) { if (item.disabled) { event.preventDefault(); return; } if (!item.url) { event.preventDefault(); } if (item.command) { item.command({ originalEvent: event, item: item }); } this.activeItem = null; } getColumnClass(menuitem) { let length = menuitem.items ? menuitem.items.length : 0; let columnClass; switch (length) { case 2: columnClass = 'ui-g-6'; break; case 3: columnClass = 'ui-g-4'; break; case 4: columnClass = 'ui-g-3'; break; case 6: columnClass = 'ui-g-2'; break; default: columnClass = 'ui-g-12'; break; } return columnClass; } }; MegaMenu.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; __decorate([ Input() ], MegaMenu.prototype, "model", void 0); __decorate([ Input() ], MegaMenu.prototype, "style", void 0); __decorate([ Input() ], MegaMenu.prototype, "styleClass", void 0); __decorate([ Input() ], MegaMenu.prototype, "orientation", void 0); __decorate([ Input() ], MegaMenu.prototype, "autoZIndex", void 0); __decorate([ Input() ], MegaMenu.prototype, "baseZIndex", void 0); MegaMenu = __decorate([ Component({ selector: 'p-megaMenu', template: ` <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'ui-megamenu ui-widget ui-widget-content ui-corner-all':true,'ui-megamenu-horizontal': orientation == 'horizontal','ui-megamenu-vertical': orientation == 'vertical'}"> <ul class="ui-megamenu-root-list" role="menubar"> <ng-template ngFor let-category [ngForOf]="model"> <li *ngIf="category.separator" class="ui-menu-separator ui-widget-content" [ngClass]="{'ui-helper-hidden': category.visible === false}"> <li *ngIf="!category.separator" #item [ngClass]="{'ui-menuitem ui-corner-all':true,'ui-menuitem-active':item==activeItem, 'ui-helper-hidden': category.visible === false}" (mouseenter)="onItemMouseEnter($event, item, category)" (mouseleave)="onItemMouseLeave($event, item)"> <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="itemClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'" [ngClass]="{'ui-menuitem-link ui-corner-all':true,'ui-state-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"> <span class="ui-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span> <span class="ui-menuitem-text">{{category.label}}</span> <span *ngIf="category.items" class="ui-submenu-icon pi pi-fw" [ngClass]="{'pi-caret-down':orientation=='horizontal','pi-caret-right':orientation=='vertical'}"></span> </a> <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'ui-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="itemClick($event, category)" [ngClass]="{'ui-menuitem-link ui-corner-all':true,'ui-state-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state"> <span class="ui-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span> <span class="ui-menuitem-text">{{category.label}}</span> </a> <div class="ui-megamenu-panel ui-widget-content ui-corner-all ui-shadow" *ngIf="category.items"> <div class="ui-g"> <ng-template ngFor let-column [ngForOf]="category.items"> <div [class]="getColumnClass(category)"> <ng-template ngFor let-submenu [ngForOf]="column"> <ul class="ui-megamenu-submenu" role="menu"> <li class="ui-widget-header ui-megamenu-submenu-header ui-corner-all">{{submenu.label}}</li> <ng-template ngFor let-item [ngForOf]="submenu.items"> <li *ngIf="item.separator" class="ui-menu-separator ui-widget-content" [ngClass]="{'ui-helper-hidden': item.visible === false}" role="separator"> <li *ngIf="!item.separator" class="ui-menuitem ui-corner-all" [ngClass]="{'ui-helper-hidden': item.visible === false}" role="none"> <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'" [ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)"> <span class="ui-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span> <span class="ui-menuitem-text">{{item.label}}</span> </a> <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'ui-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)" [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state"> <span class="ui-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span> <span class="ui-menuitem-text">{{item.label}}</span> </a> </li> </ng-template> </ul> </ng-template> </div> </ng-template> </div> </div> </li> </ng-template> <li class="ui-menuitem ui-menuitem-custom ui-corner-all" *ngIf="orientation === 'horizontal'"> <ng-content></ng-content> </li> </ul> </div> `, changeDetection: ChangeDetectionStrategy.Default }) ], MegaMenu); let MegaMenuModule = class MegaMenuModule { }; MegaMenuModule = __decorate([ NgModule({ imports: [CommonModule, RouterModule], exports: [MegaMenu, RouterModule], declarations: [MegaMenu] }) ], MegaMenuModule); /** * Generated bundle index. Do not edit. */ export { MegaMenu, MegaMenuModule }; //# sourceMappingURL=primeng-megamenu.js.map