import {Ancestor, Parent} from 'angular2/src/core/annotations_impl/visibility'; import {Optional} from 'angular2/src/di/annotations_impl' import {Directive, Component} 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 {Compiler} from 'angular2/angular2'; import {DynamicComponentLoader} from 'angular2/src/core/compiler/dynamic_component_loader'; import {Injector} from 'angular2/di'; import {NgFor} from 'angular2/angular2'; import {ViewContainerRef} from 'angular2/src/core/compiler/view_container_ref'; import {IonicComponent} from '../../config/component'; import {Tab} from './tab'; import {TabButton} from './tab-button'; import {Icon} from '../icon/icon'; import {Nav, NavPane} from '../nav/nav'; import {NavItem} from '../nav/nav-item'; import {NavBase} from '../nav/nav-base'; @Component({ selector: 'ion-tabs', properties: [ 'tabBarPlacement', 'tabBarIcons' ] }) @View({ template: `
`, directives: [NgFor, TabButton, Icon] }) export class Tabs { constructor( @Optional() parentNavBase: NavBase, compiler: Compiler, elementRef: ElementRef, loader: DynamicComponentLoader, injector: Injector ) { this.navBase = new NavBase(parentNavBase, compiler, elementRef, loader, injector); this.domElement = elementRef.domElement; this.config = Tabs.config.invoke(this); } addTab(tabItem) { this.navBase.add(tabItem); if (this.navBase.length() === 1) { this.selectTab(tabItem.instance); } } get tabs() { return this.navBase.instances(); } selectTab(tabInstance) { let enteringItem = this.navBase.findByInstance(tabInstance); this.navBase.switchActive(enteringItem); } } new IonicComponent(Tabs, { properties: { tabBarPlacement: { defaults: { ios: 'bottom', android: 'top', core: 'bottom' } }, tabBarIcons: { defaults: { ios: 'top', android: 'top', core: 'top' } } } });