diff --git a/apps/app/modaltest/app.ts b/apps/app/modaltest/app.ts
new file mode 100644
index 000000000..908d22e8c
--- /dev/null
+++ b/apps/app/modaltest/app.ts
@@ -0,0 +1,11 @@
+import * as application from "tns-core-modules/application";
+// trace.addCategories(trace.categories.All);
+// application.run({ moduleName: "page.1" });
+// application.run({ moduleName: "main-page" });
+
+application.run({ moduleName: "modal-tab" });
+// application.run({ moduleName: "textview" });
+
+// application.start({ moduleName: "modal-tab.33" });
+// application.run({ moduleName: "modal-frame" });
+// application.start({ moduleName: "page.2" });
\ No newline at end of file
diff --git a/apps/app/modaltest/main-page.ts b/apps/app/modaltest/main-page.ts
new file mode 100644
index 000000000..13cd6dc0a
--- /dev/null
+++ b/apps/app/modaltest/main-page.ts
@@ -0,0 +1,34 @@
+import { View, EventData } from "tns-core-modules/ui/core/view";
+
+export function onNavigatingTo(args: EventData) {
+ const page = args.object;
+ console.log("onNavigatingTo");
+}
+
+export function navigate(args: EventData) {
+ console.log("navigate");
+ (args.object as View).page.frame.navigate("page.1");
+}
+
+export function onModalTab(args: EventData) {
+ const view = args.object as View;
+ view.showModal("modal-tab", "context", closeModal, false);
+}
+
+export function onModalFrame(args: EventData) {
+ const view = args.object as View;
+ view.showModal("modal-frame", "context", closeModal, false);
+}
+
+export function onTap3(args: EventData) {
+ const page = (args.object as View).page;
+ page.actionBar.titleView.requestLayout();
+}
+
+function closeModal() {
+ console.log('closeModal Called');
+}
+
+export function sync(args: EventData) {
+ global.__onLiveSyncCore();
+}
\ No newline at end of file
diff --git a/apps/app/modaltest/modal-tab.ts b/apps/app/modaltest/modal-tab.ts
new file mode 100644
index 000000000..77ad7c505
--- /dev/null
+++ b/apps/app/modaltest/modal-tab.ts
@@ -0,0 +1,66 @@
+import { View, EventData } from "tns-core-modules/ui/core/view";
+
+const colors = ['red', 'orange', 'magenta'];
+let x = 0;
+
+export function onLoaded(args) {
+ // args.object.backgroundColor = colors[++x % 3];
+}
+
+export function onLiveSync() {
+ global.__onLiveSyncCore();
+}
+
+export function pageLoaded(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ console.log("Page loaded: " + page + ", isLoaded: " + page.isLoaded);
+ console.log("Frame: " + page.frame + ", currentPage: " + page.frame.currentPage);
+}
+
+export function onTap(args) {
+ const view = args.object as View;
+ const page = view.page;
+ let context = page.bindingContext || 0;
+ page.frame.navigate({ moduleName: "page.2", bindingContext: ++context, transition: { name: "fade", duration: 1000 } });
+}
+
+export function tenGoBacks(args) {
+ const view = args.object as View;
+ const page = view.page;
+ const frame = page.frame;
+
+ let context = page.bindingContext || 0;
+ let x = 4;
+ while (x--) {
+ frame.navigate({ moduleName: "page.2", bindingContext: ++context, transition: { name: "fade", duration: 1000 } });
+ }
+
+ x = 4;
+ while (x--) {
+ frame.goBack();
+ }
+}
+
+export function closeModal(args: EventData) {
+ (args.object as View).closeModal()
+}
+
+export function navigateToFrame(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ const frame = page.frame;
+ frame.navigate("modal-frame");
+}
+
+export function navigateToPageWithFrame(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ const frame = page.frame;
+ frame.navigate("modal-frame.1");
+}
+
+export function onModalFrame(args: EventData) {
+ const view = args.object as View;
+ view.showModal("modal-frame", "some context", closeModal, false);
+}
\ No newline at end of file
diff --git a/apps/app/modaltest/modal-tab.xml b/apps/app/modaltest/modal-tab.xml
index ca07236f8..e2ee53c44 100644
--- a/apps/app/modaltest/modal-tab.xml
+++ b/apps/app/modaltest/modal-tab.xml
@@ -4,8 +4,7 @@
verticalAlignment="bottom"
horizontalAlignment="right">
-
-
+
@@ -35,7 +34,7 @@
-
+
diff --git a/apps/app/modaltest/page.2.ts b/apps/app/modaltest/page.2.ts
new file mode 100644
index 000000000..6a7424df7
--- /dev/null
+++ b/apps/app/modaltest/page.2.ts
@@ -0,0 +1,46 @@
+import { View, EventData, ShownModallyData } from "tns-core-modules/ui/core/view";
+
+var x = 0;
+
+export function tenGoBacks(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ const frame = page.frame;
+
+ x = 10;
+ while (x--) {
+ console.log(`Can go Back: ${frame.canGoBack()}`);
+ frame.goBack();
+ }
+}
+export function onTap(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ let context = page.bindingContext || 0;
+ page.frame.navigate({ moduleName: "page.2", bindingContext: ++context, transition: { name: "fade", duration: 1000 } });
+}
+
+export function onBack(args: EventData) {
+ const view = args.object as View;
+ const page = view.page;
+ page.frame.goBack();
+}
+
+export function closeModal(args: EventData) {
+ (args.object as View).closeModal();
+}
+
+let modalContext = 0;
+export function showModal(args: EventData) {
+ (args.object as View).showModal("page.2", ++modalContext, function () {
+ console.log("Closed Modal: " + (args.object as View).bindingContext);
+ });
+}
+
+export function showingModally(args: ShownModallyData) {
+ (args.object as View).bindingContext = args.context;
+}
+
+export function onLivesync() {
+ global.__onLiveSyncCore();
+}
\ No newline at end of file
diff --git a/apps/app/modaltest/page.2.xml b/apps/app/modaltest/page.2.xml
index 92ea67ee1..4b6559eb5 100644
--- a/apps/app/modaltest/page.2.xml
+++ b/apps/app/modaltest/page.2.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/apps/app/modaltest/textview.xml b/apps/app/modaltest/textview.xml
deleted file mode 100644
index c337fcca9..000000000
--- a/apps/app/modaltest/textview.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file