From 64bccb9bbc675b8932499cb0b3a3aa49fd21ef80 Mon Sep 17 00:00:00 2001 From: Alexander Vakrilov Date: Fri, 30 Nov 2018 12:05:33 +0200 Subject: [PATCH] feat(modals): Enable modal dialog chaining in IOS (#6637) * feat(modals): fire close callback after close in IOS * chore(tests): Fix some test depending on the order of events --- .../app/ui-tests-app/modal-view/login-page.ts | 41 +++++++++---------- .../ui-tests-app/modal-view/login-page.xml | 11 +++-- .../app/ui-tests-app/modal-view/modal-view.ts | 32 ++++++++++++++- .../ui-tests-app/modal-view/modal-view.xml | 4 ++ tests/app/ui/page/page-tests-common.ts | 2 +- tests/app/ui/page/page-tests.ios.ts | 1 - tns-core-modules/ui/core/view/view-common.ts | 32 ++++++++------- tns-core-modules/ui/core/view/view.android.ts | 4 +- tns-core-modules/ui/core/view/view.ios.ts | 17 +++++--- 9 files changed, 92 insertions(+), 52 deletions(-) diff --git a/apps/app/ui-tests-app/modal-view/login-page.ts b/apps/app/ui-tests-app/modal-view/login-page.ts index 2c4d5917f..86431d84b 100644 --- a/apps/app/ui-tests-app/modal-view/login-page.ts +++ b/apps/app/ui-tests-app/modal-view/login-page.ts @@ -1,32 +1,29 @@ -import * as pages from "tns-core-modules/ui/page"; -import * as textField from "tns-core-modules/ui/text-field"; -import * as observable from "tns-core-modules/data/observable"; +import { Page, ShownModallyData } from "tns-core-modules/ui/page"; +import { EventData, fromObject } from "tns-core-modules/data/observable"; -var context: any; -var closeCallback: Function; +export function onShowingModally(args: ShownModallyData) { + console.log("login-page.onShowingModally, context: " + args.context); + const page = args.object; -var page: pages.Page; -var usernameTextField: textField.TextField; -var passwordTextField: textField.TextField; - -export function onShownModally(args: pages.ShownModallyData) { - console.log("login-page.onShownModally, context: " + args.context); - context = args.context; - closeCallback = args.closeCallback; + page.bindingContext = fromObject({ + username: "username", + password: "password", + context: args.context, + onLoginButtonTap: function() { + console.log("login-page.onLoginButtonTap"); + args.closeCallback(this.username, this.password); + } + }) } -export function onLoaded(args: observable.EventData) { +export function onShownModally(args: ShownModallyData) { + console.log("login-page.onShownModally, context: " + args.context); +} + +export function onLoaded(args: EventData) { console.log("login-page.onLoaded"); - page = args.object; - usernameTextField = page.getViewById("username"); - passwordTextField = page.getViewById("password"); } export function onUnloaded() { console.log("login-page.onUnloaded"); } - -export function onLoginButtonTap() { - console.log("login-page.onLoginButtonTap"); - closeCallback(usernameTextField.text, passwordTextField.text); -} diff --git a/apps/app/ui-tests-app/modal-view/login-page.xml b/apps/app/ui-tests-app/modal-view/login-page.xml index f2fd8c601..87c8487f3 100644 --- a/apps/app/ui-tests-app/modal-view/login-page.xml +++ b/apps/app/ui-tests-app/modal-view/login-page.xml @@ -1,8 +1,11 @@ - - - -