From 603a61d070580257242234ee4fa2ab46d13361b9 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Fri, 12 Jun 2015 16:13:11 -0500 Subject: [PATCH] tab navbars --- ionic/components/nav-bar/nav-bar.js | 1 - ionic/components/view/view-controller.js | 2 +- ionic/components/view/view-item.js | 57 ++++++++++++++++++++++-- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/ionic/components/nav-bar/nav-bar.js b/ionic/components/nav-bar/nav-bar.js index 3a21025e32..9607fb9997 100644 --- a/ionic/components/nav-bar/nav-bar.js +++ b/ionic/components/nav-bar/nav-bar.js @@ -40,7 +40,6 @@ export class Navbar { constructor(item: ViewItem, elementRef: ElementRef) { item.navbarElement(elementRef.domElement); } - } @Directive({ diff --git a/ionic/components/view/view-controller.js b/ionic/components/view/view-controller.js index 0f5bc8a24f..6250e2a653 100644 --- a/ionic/components/view/view-controller.js +++ b/ionic/components/view/view-controller.js @@ -212,7 +212,7 @@ export class ViewController { let swipeBackPromise = new Promise(res => { this.sbResolve = res; }); swipeBackPromise.then((completeSwipeBack) => { -console.log('completeSwipeBack', completeSwipeBack) + if (completeSwipeBack) { // swipe back has completed, update each item's state enteringItem.state = ACTIVE_STATE; diff --git a/ionic/components/view/view-item.js b/ionic/components/view/view-item.js index 22e9928d26..ad6e7418aa 100644 --- a/ionic/components/view/view-item.js +++ b/ionic/components/view/view-item.js @@ -199,29 +199,78 @@ export class ViewItem { navbarElement() { if (arguments.length) { this._nbEle = arguments[0]; + return; + } + if (this._nbEle) { + // this ViewItem already has an assigned navbarElement + return this._nbEle; + } + + let instance = this.instance; + if (instance && instance.parentNavbar && instance.parentNavbar()) { + // this View doesn't actually have it's own navbar + // for example, Tab does not have a navbar, but Tabs does + // so if this is true, then get the active ViewItem inside this instance + let activeChildViewItem = instance.getActive(); + if (activeChildViewItem) { + return activeChildViewItem.navbarElement(); + } } - return this._nbEle; } titleElement() { if (arguments.length) { this._ttEle = arguments[0]; + return; + } + if (this._ttEle) { + return this._ttEle; + } + + let instance = this.instance; + if (instance && instance.parentNavbar && instance.parentNavbar()) { + let activeChildViewItem = instance.getActive(); + if (activeChildViewItem) { + return activeChildViewItem.titleElement(); + } } - return this._ttEle; } backButtonElement() { if (arguments.length) { this._bbEle = arguments[0]; + return; + } + if (this._bbEle) { + return this._bbEle; + } + + let instance = this.instance; + if (instance && instance.parentNavbar && instance.parentNavbar()) { + let activeChildViewItem = instance.getActive(); + if (activeChildViewItem) { + return activeChildViewItem.backButtonElement(); + } } - return this._bbEle; } navbarItemElements() { if (arguments.length) { this._nbItms.push(arguments[0]); + return; + } + if (this._nbItms) { + return this._nbItms; + } + + + let instance = this.instance; + if (instance && instance.parentNavbar && instance.parentNavbar()) { + let activeChildViewItem = instance.getActive(); + if (activeChildViewItem) { + return activeChildViewItem.navbarItemElements(); + } } - return this._nbItms; }