select tabs update

This commit is contained in:
Adam Bradley
2015-06-08 11:16:49 -05:00
parent 87c81a7e19
commit 219352c05b
4 changed files with 32 additions and 28 deletions

View File

@ -190,24 +190,6 @@ export class NavBase {
return promise;
}
select(enteringItem, opts = {}) {
if (!enteringItem || !enteringItem.instance || this.isTransitioning()) {
return;
}
enteringItem.instance.loadInitial();
opts.animation = 'none';
let leavingItem = this.getActive() || new NavItem();
leavingItem.shouldDestroy = false;
leavingItem.shouldCache = true;
leavingItem.willCache();
this.transition(enteringItem, leavingItem, opts, () => {
});
}
transition(enteringItem, leavingItem, opts, callback) {
if (!enteringItem || enteringItem === leavingItem) {
return callback();

View File

@ -31,6 +31,6 @@ export class TabButton {
onClick(ev) {
ev.stopPropagation();
ev.preventDefault();
this.tabs.selectTab(this.tab);
this.tabs.select(this.tab);
}
}

View File

@ -79,10 +79,14 @@ export class Tab extends NavBase {
}
}
loadInitial() {
if (this.initial && !this._loaded) {
this.push(this.initial);
loadInitial(callback) {
if (!this._loaded && this.initial) {
this.push(this.initial).then(() => {
callback && callback();
});
this._loaded = true;
} else {
callback && callback();
}
}

View File

@ -58,18 +58,36 @@ export class Tabs extends NavBase {
this.add(tabItem);
if (this.length() === 1) {
this.selectTab(0);
this.select(0);
}
}
selectTab(tab) {
let item = null;
select(tab) {
let enteringItem = null;
if (typeof tab === 'number') {
item = this.getByIndex(tab);
enteringItem = this.getByIndex(tab);
} else {
item = this.getByInstance(tab)
enteringItem = this.getByInstance(tab)
}
this.select(item);
if (!enteringItem || !enteringItem.instance || this.isTransitioning()) {
return;
}
enteringItem.instance.loadInitial(() => {
let opts = {
animation: 'none'
};
let leavingItem = this.getActive() || new NavItem();
leavingItem.shouldDestroy = false;
leavingItem.shouldCache = true;
leavingItem.willCache();
this.transition(enteringItem, leavingItem, opts, () => {
console.log('tab selected')
});
});
}
get tabs() {