Skip to content

Commit

Permalink
Fixed #888
Browse files Browse the repository at this point in the history
  • Loading branch information
Çağatay Çivici committed Jun 8, 2017
1 parent 217c7d3 commit 4f8620a
Show file tree
Hide file tree
Showing 20 changed files with 122 additions and 63 deletions.
1 change: 1 addition & 0 deletions src/app/components/common/menuitem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ export interface MenuItem {
visible?: boolean;
target?: string;
routerLinkActiveOptions?: any;
separator?: boolean;
}
3 changes: 2 additions & 1 deletion src/app/components/contextmenu/contextmenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import {RouterModule} from '@angular/router';
<ul [ngClass]="{'ui-helper-reset':root, 'ui-widget-content ui-corner-all ui-helper-clearfix ui-menu-child ui-shadow':!root}" class="ui-menu-list"
(click)="listClick($event)">
<ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
<li #item [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-menuitem-active':item==activeItem}"
<li *ngIf="child.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!child.separator" #item [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-menuitem-active':item==activeItem}"
(mouseenter)="onItemMouseEnter($event,item,child)" (mouseleave)="onItemMouseLeave($event,item)" [style.display]="child.visible === false ? 'none' : 'block'">
<a *ngIf="!child.routerLink" [href]="child.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="child.target"
[ngClass]="{'ui-state-disabled':child.disabled}" (click)="itemClick($event, child)">
Expand Down
30 changes: 17 additions & 13 deletions src/app/components/megamenu/megamenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import {RouterModule} from '@angular/router';
[ngClass]="{'ui-menu ui-menubar ui-megamenu ui-widget ui-widget-content ui-corner-all ui-helper-clearfix':true,'ui-megamenu-vertical': orientation == 'vertical'}">
<ul class="ui-menu-list ui-helper-reset ui-menubar-root-list">
<ng-template ngFor let-category [ngForOf]="model">
<li #item [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':category.items,'ui-menuitem-active':item==activeItem}"
<li *ngIf="category.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!category.separator" #item [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':category.items,'ui-menuitem-active':item==activeItem}"
(mouseenter)="onItemMouseEnter($event, item, category)" (mouseleave)="onItemMouseLeave($event, item)">
<a class="ui-menuitem-link ui-corner-all ui-submenu-link" [ngClass]="{'ui-state-disabled':category.disabled}">
<span class="ui-menuitem-icon fa fa-fw" [ngClass]="category.icon"></span>
Expand All @@ -26,18 +27,21 @@ import {RouterModule} from '@angular/router';
<ng-template ngFor let-submenu [ngForOf]="column">
<ul class="ui-menu-list ui-helper-reset">
<li class="ui-widget-header ui-corner-all"><h3>{{submenu.label}}</h3></li>
<li *ngFor="let item of submenu.items" class="ui-menuitem ui-widget ui-corner-all">
<a *ngIf="!item.routerLink" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
<a *ngIf="item.routerLink" [routerLink]="item.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
</li>
<ng-template ngFor let-item [ngForOf]="submenu.items">
<li *ngIf="item.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!item.separator" class="ui-menuitem ui-widget ui-corner-all">
<a *ngIf="!item.routerLink" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
<a *ngIf="item.routerLink" [routerLink]="item.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
</li>
</ng-template>
</ul>
</ng-template>
</div>
Expand Down
20 changes: 20 additions & 0 deletions src/app/components/menu/menu.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
position:relative;
}

.ui-menu-separator {
border-width: 1px 0 0 0;
}

.ui-menu.ui-menu-dynamic {
position: absolute;
display: none;
Expand Down Expand Up @@ -115,6 +119,17 @@
width: auto;
}

.ui-menubar:not(.ui-megamenu-vertical) .ui-menubar-root-list > .ui-menu-separator {
display: inline-block;
border-width: 0 0 0 1px;
width: 1px;
text-indent: -9999999px;
}

.ui-menubar:not(.ui-megamenu-vertical) .ui-menubar-root-list > .ui-menu-separator:before {
content: 'ui-menu-separator';
}

.ui-menubar .ui-menu-child .ui-menuitem {
width: 100%;
}
Expand Down Expand Up @@ -269,6 +284,11 @@
padding: 0;
}

.ui-panelmenu .ui-menu-separator {
width: 95%;
margin: 0 auto;
}

.ui-panelmenu .ui-menuitem-link {
display: block;
outline: none;
Expand Down
59 changes: 32 additions & 27 deletions src/app/components/menu/menu.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,48 @@
import {NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,Renderer2,HostListener,EventEmitter,ViewChild} from '@angular/core';
import {NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,Renderer2,HostListener,EventEmitter,ViewChild,Inject,forwardRef} from '@angular/core';
import {CommonModule} from '@angular/common';
import {DomHandler} from '../dom/domhandler';
import {MenuItem} from '../common/menuitem';
import {RouterModule} from '@angular/router';

@Component({
selector: '[pMenuItemContent]',
template: `
<a *ngIf="!item.routerLink" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="menu.itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
<a *ngIf="item.routerLink" [routerLink]="item.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="menu.itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
`
})
export class MenuItemContent {

@Input("pMenuItemContent") item: MenuItem;

constructor(@Inject(forwardRef(() => Menu)) public menu: Menu) {}
}

@Component({
selector: 'p-menu',
template: `
<div #container [ngClass]="{'ui-menu ui-widget ui-widget-content ui-corner-all ui-helper-clearfix':true,'ui-menu-dynamic ui-shadow':popup}"
[class]="styleClass" [ngStyle]="style" (click)="preventDocumentDefault=true">
<ul class="ui-menu-list ui-helper-reset">
<ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
<li class="ui-widget-header ui-corner-all"><h3>{{submenu.label}}</h3></li>
<li *ngFor="let item of submenu.items" class="ui-menuitem ui-widget ui-corner-all">
<a *ngIf="!item.routerLink" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
<a *ngIf="item.routerLink" [routerLink]="item.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
</li>
<li class="ui-menu-separator ui-widget-content" *ngIf="submenu.separator">
<li class="ui-widget-header ui-corner-all" *ngIf="!submenu.separator"><h3>{{submenu.label}}</h3></li>
<ng-template ngFor let-item [ngForOf]="submenu.items">
<li class="ui-menu-separator ui-widget-content" *ngIf="item.separator">
<li class="ui-menuitem ui-widget ui-corner-all" *ngIf="!item.separator" [pMenuItemContent]="item"></li>
</ng-template>
</ng-template>
<ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
<li class="ui-menuitem ui-widget ui-corner-all">
<a *ngIf="!item.routerLink" [href]="item.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
<a *ngIf="item.routerLink" [routerLink]="item.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all" [attr.target]="item.target"
[ngClass]="{'ui-state-disabled':item.disabled}" (click)="itemClick($event, item)">
<span class="ui-menuitem-icon fa fa-fw" *ngIf="item.icon" [ngClass]="item.icon"></span>
<span class="ui-menuitem-text">{{item.label}}</span>
</a>
</li>
<li class="ui-menu-separator ui-widget-content" *ngIf="item.separator">
<li class="ui-menuitem ui-widget ui-corner-all" *ngIf="!item.separator" [pMenuItemContent]="item"></li>
</ng-template>
</ul>
</div>
Expand Down Expand Up @@ -189,6 +194,6 @@ export class Menu implements AfterViewInit,OnDestroy {
@NgModule({
imports: [CommonModule,RouterModule],
exports: [Menu,RouterModule],
declarations: [Menu]
declarations: [Menu,MenuItemContent]
})
export class MenuModule { }
3 changes: 2 additions & 1 deletion src/app/components/menubar/menubar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import {RouterModule} from '@angular/router';
<ul [ngClass]="{'ui-menubar-root-list ui-helper-clearfix':root, 'ui-widget-content ui-corner-all ui-helper-clearfix ui-menu-child ui-shadow':!root}" class="ui-menu-list"
(click)="listClick($event)">
<ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
<li #listItem [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-menuitem-active':listItem==activeItem}"
<li *ngIf="child.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!child.separator" #listItem [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-menuitem-active':listItem==activeItem}"
(mouseenter)="onItemMouseEnter($event,listItem,child)" (mouseleave)="onItemMouseLeave($event)">
<a *ngIf="!child.routerLink" [href]="child.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="child.target"
[ngClass]="{'ui-state-disabled':child.disabled}" (click)="itemClick($event, child)">
Expand Down
37 changes: 20 additions & 17 deletions src/app/components/panelmenu/panelmenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,26 @@ export class BasePanelMenuItem {
selector: 'p-panelMenuSub',
template: `
<ul class="ui-menu-list ui-helper-reset" [style.display]="expanded ? 'block' : 'none'">
<li *ngFor="let child of item.items" class="ui-menuitem ui-corner-all" [ngClass]="{'ui-menu-parent':child.items}">
<a *ngIf="!child.routerLink" [href]="child.url||'#'" class="ui-menuitem-link ui-corner-all"
[ngClass]="{'ui-menuitem-link-hasicon':child.icon&&child.items,'ui-state-disabled':child.disabled}"
(click)="handleClick($event,child)" [attr.target]="child.target">
<span class="ui-panelmenu-icon fa fa-fw" [ngClass]="{'fa-caret-right':!child.expanded,'fa-caret-down':child.expanded}" *ngIf="child.items"></span
><span class="ui-menuitem-icon fa fa-fw" [ngClass]="child.icon" *ngIf="child.icon"></span
><span class="ui-menuitem-text">{{child.label}}</span>
</a>
<a *ngIf="child.routerLink" [routerLink]="child.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all"
[ngClass]="{'ui-menuitem-link-hasicon':child.icon&&child.items,'ui-state-disabled':child.disabled}"
(click)="handleClick($event,child)" [attr.target]="child.target">
<span class="ui-panelmenu-icon fa fa-fw" [ngClass]="{'fa-caret-right':!child.expanded,'fa-caret-down':child.expanded}" *ngIf="child.items"></span
><span class="ui-menuitem-icon fa fa-fw" [ngClass]="child.icon" *ngIf="child.icon"></span
><span class="ui-menuitem-text">{{child.label}}</span>
</a>
<p-panelMenuSub [item]="child" [expanded]="child.expanded" *ngIf="child.items"></p-panelMenuSub>
</li>
<ng-template ngFor let-child [ngForOf]="item.items">
<li *ngIf="child.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!child.separator" class="ui-menuitem ui-corner-all" [ngClass]="{'ui-menu-parent':child.items}">
<a *ngIf="!child.routerLink" [href]="child.url||'#'" class="ui-menuitem-link ui-corner-all"
[ngClass]="{'ui-menuitem-link-hasicon':child.icon&&child.items,'ui-state-disabled':child.disabled}"
(click)="handleClick($event,child)" [attr.target]="child.target">
<span class="ui-panelmenu-icon fa fa-fw" [ngClass]="{'fa-caret-right':!child.expanded,'fa-caret-down':child.expanded}" *ngIf="child.items"></span
><span class="ui-menuitem-icon fa fa-fw" [ngClass]="child.icon" *ngIf="child.icon"></span
><span class="ui-menuitem-text">{{child.label}}</span>
</a>
<a *ngIf="child.routerLink" [routerLink]="child.routerLink" [routerLinkActive]="'ui-state-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="ui-menuitem-link ui-corner-all"
[ngClass]="{'ui-menuitem-link-hasicon':child.icon&&child.items,'ui-state-disabled':child.disabled}"
(click)="handleClick($event,child)" [attr.target]="child.target">
<span class="ui-panelmenu-icon fa fa-fw" [ngClass]="{'fa-caret-right':!child.expanded,'fa-caret-down':child.expanded}" *ngIf="child.items"></span
><span class="ui-menuitem-icon fa fa-fw" [ngClass]="child.icon" *ngIf="child.icon"></span
><span class="ui-menuitem-text">{{child.label}}</span>
</a>
<p-panelMenuSub [item]="child" [expanded]="child.expanded" *ngIf="child.items"></p-panelMenuSub>
</li>
</ng-template>
</ul>
`
})
Expand Down
5 changes: 3 additions & 2 deletions src/app/components/slidemenu/slidemenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import {RouterModule} from '@angular/router';
[style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
[style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
<ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
<li #listitem [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-slidemenuitem-active':listitem==activeItem}">
<li *ngIf="child.separator" class="ui-menu-separator ui-widget-content">
<li *ngIf="!child.separator" #listitem [ngClass]="{'ui-menuitem ui-widget ui-corner-all':true,'ui-menu-parent':child.items,'ui-slidemenuitem-active':listitem==activeItem}">
<a *ngIf="!item.routerLink" [href]="child.url||'#'" class="ui-menuitem-link ui-corner-all" [attr.target]="child.target"
[ngClass]="{'ui-menuitem-link-parent':child.items,'ui-state-disabled':child.disabled}"
(click)="itemClick($event, child, listitem)">
Expand Down Expand Up @@ -117,7 +118,7 @@ export class SlideMenu implements AfterViewInit,OnDestroy {

@Input() viewportHeight: number = 175;

@Input() effectDuration: any = 500;
@Input() effectDuration: any = 250;

@Input() easing: string = 'ease-out';

Expand Down
Loading

0 comments on commit 4f8620a

Please sign in to comment.