import {Component, Directive} from 'angular2/src/core/annotations_impl/annotations'; import {View} from 'angular2/src/core/annotations_impl/view'; import {ElementRef} from 'angular2/src/core/compiler/element_ref'; import {ProtoViewRef} from 'angular2/src/core/compiler/view_ref'; import {NgZone} from 'angular2/src/core/zone/ng_zone'; import {ViewItem} from '../view/view-item'; import * as dom from '../../util/dom'; @Component({ selector: 'ion-navbar' }) @View({ template: `
`, directives: [BackButton, Title, NavbarItem] }) export class Navbar { constructor(item: ViewItem, elementRef: ElementRef) { item.navbarElement(elementRef.domElement); } } @Directive({ selector: '.back-button', hostListeners: { '^click': 'goBack($event)' } }) class BackButton { constructor(item: ViewItem, elementRef: ElementRef) { this.item = item; item.backButtonElement(elementRef.domElement); } goBack(ev) { ev.stopPropagation(); ev.preventDefault(); this.item.viewCtrl.pop(); } } @Directive({ selector: '.navbar-title' }) export class Title { constructor(item: ViewItem, elementRef: ElementRef) { item.titleElement(elementRef.domElement); } } @Directive({ selector: '.navbar-item' }) export class NavbarItem { constructor(item: ViewItem, elementRef: ElementRef) { item.navbarItemElements(elementRef.domElement); } } /* Used to find and register headers in a view, and this directive's content will be moved up to the common navbar location, and created using the same context as the view's content area. */ @Directive({ selector: 'template[navbar]' }) export class NavbarTemplate { constructor(item: ViewItem, protoViewRef: ProtoViewRef) { item.addProtoViewRef('navbar', protoViewRef); } }