Merge pull request #1361 from NativeScript/nnikolov/TabViewExportsIssue

Added parent view for views inside TabView.
This commit is contained in:
Nedyalko Nikolov
2016-01-13 10:00:08 +02:00
8 changed files with 79 additions and 39 deletions

View File

@ -392,41 +392,4 @@ export class TabViewTest extends testModule.UITest<tabViewModule.TabView> {
export function createTestCase(): TabViewTest { export function createTestCase(): TabViewTest {
return new TabViewTest(); return new TabViewTest();
}
export function test__tabview_selectedindex_will_work_from_xml() {
var p = <pageModule.Page>builder.parse(
'<Page>' +
'<TabView selectedIndex= "1">' +
'<TabView.items>'+
'<TabViewItem title="First">' +
'<TabViewItem.view>' +
'<Label text="First View" />' +
'</TabViewItem.view>' +
'</TabViewItem>' +
'<TabViewItem title= "Second">' +
'<TabViewItem.view>' +
'<Label text="Second View" />' +
'</TabViewItem.view>' +
'</TabViewItem>' +
'</TabView.items>' +
'</TabView>' +
'</Page>');
function testAction(views: Array<viewModule.View>) {
var tab: tabViewModule.TabView = <tabViewModule.TabView>p.content;
TKUnit.wait(0.2);
TKUnit.assertEqual(tab.selectedIndex, 1);
};
helper.navigate(function () { return p; });
try {
testAction([p.content, p]);
}
finally {
helper.goBack();
}
} }

View File

@ -0,0 +1,11 @@
import {Label} from "ui/label";
import {Observable} from "data/observable";
import {Page} from "ui/page";
export function loaded(args) {
(<Observable>(<Label>args.object).page.bindingContext).set("testPassed", true);
}
export function onNavigatingTo(args) {
(<Page>args.object).bindingContext = args.context;
}

View File

@ -0,0 +1,16 @@
<Page navigatingTo="onNavigatingTo">
<TabView selectedIndex= "1">
<TabView.items>
<TabViewItem title="First">
<TabViewItem.view>
<Label text="First View" loaded="loaded"/>
</TabViewItem.view>
</TabViewItem>
<TabViewItem title= "Second">
<TabViewItem.view>
<Label text="Second View" />
</TabViewItem.view>
</TabViewItem>
</TabView.items>
</TabView>
</Page>

View File

@ -15,6 +15,8 @@ import {Label} from "ui/label";
import {Page} from "ui/page"; import {Page} from "ui/page";
import {Button} from "ui/button"; import {Button} from "ui/button";
import {View} from "ui/core/view"; import {View} from "ui/core/view";
import {TabView} from "ui/tab-view";
import {Observable} from "data/observable";
import {TemplateView} from "./template-builder-tests/template-view"; import {TemplateView} from "./template-builder-tests/template-view";
import myCustomControlWithoutXml = require("./mymodule/MyControl"); import myCustomControlWithoutXml = require("./mymodule/MyControl");
import listViewModule = require("ui/list-view"); import listViewModule = require("ui/list-view");
@ -920,4 +922,51 @@ export function test_EventInCodelessFragment() {
}); });
TKUnit.assert(notified, "Expected the child to raise the test event."); TKUnit.assert(notified, "Expected the child to raise the test event.");
}
export function test_tabview_selectedindex_will_work_from_xml() {
var p = <Page>builder.parse(
'<Page>' +
'<TabView selectedIndex= "1">' +
'<TabView.items>'+
'<TabViewItem title="First">' +
'<TabViewItem.view>' +
'<Label text="First View" />' +
'</TabViewItem.view>' +
'</TabViewItem>' +
'<TabViewItem title= "Second">' +
'<TabViewItem.view>' +
'<Label text="Second View" />' +
'</TabViewItem.view>' +
'</TabViewItem>' +
'</TabView.items>' +
'</TabView>' +
'</Page>');
function testAction(views: Array<viewModule.View>) {
var tab: TabView = <TabView>p.content;
TKUnit.wait(0.2);
TKUnit.assertEqual(tab.selectedIndex, 1);
};
helper.navigate(function () { return p; });
try {
testAction([p.content, p]);
}
finally {
helper.goBack();
}
}
export function test_TabViewHasCorrectParentChain() {
var testFunc = function(page: Page) {
TKUnit.assert(page.bindingContext.get("testPassed"));
}
var moduleName = __dirname.substr(fs.knownFolders.currentApp().path.length);
var model = new Observable();
model.set("testPassed", false);
helper.navigateToModuleAndRunTest(("." + moduleName + "/mymodulewithxml/TabViewParentChain"), model, testFunc);
} }

View File

@ -322,6 +322,7 @@
"apps/tests/xml-declaration/mainPage.ts", "apps/tests/xml-declaration/mainPage.ts",
"apps/tests/xml-declaration/mymodule/MyControl.ts", "apps/tests/xml-declaration/mymodule/MyControl.ts",
"apps/tests/xml-declaration/mymodulewithxml/MyControl.ts", "apps/tests/xml-declaration/mymodulewithxml/MyControl.ts",
"apps/tests/xml-declaration/mymodulewithxml/TabViewParentChain.ts",
"apps/tests/xml-declaration/template-builder-tests/event-in-codeless-fragment.ts", "apps/tests/xml-declaration/template-builder-tests/event-in-codeless-fragment.ts",
"apps/tests/xml-declaration/template-builder-tests/event-in-template.ts", "apps/tests/xml-declaration/template-builder-tests/event-in-template.ts",
"apps/tests/xml-declaration/template-builder-tests/template-view.ts", "apps/tests/xml-declaration/template-builder-tests/template-view.ts",

View File

@ -168,6 +168,7 @@ export class TabView extends view.View implements definition.TabView, view.AddAr
if (!newItem.view) { if (!newItem.view) {
throw new Error("TabViewItem at index " + i + " does not have a view."); throw new Error("TabViewItem at index " + i + " does not have a view.");
} }
this._addView(newItem.view, i);
} }
} }

View File

@ -241,6 +241,7 @@ export class TabView extends common.TabView {
} }
item._parent = this; item._parent = this;
this._addView(item.view, idx);
tabItems.push(this.createTabItem(item)); tabItems.push(this.createTabItem(item));
}); });

View File

@ -194,8 +194,6 @@ export class TabView extends common.TabView {
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
item = <TabViewItem>newItems[i]; item = <TabViewItem>newItems[i];
this._addView(item.view);
if (item.view.ios instanceof UIViewController) { if (item.view.ios instanceof UIViewController) {
newController = <UIViewController>item.view.ios; newController = <UIViewController>item.view.ios;
} else { } else {