From 502a37d27c4e0a5d44d82bd08800ebfbc9f1aad2 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Wed, 26 Apr 2017 14:27:24 +0300 Subject: [PATCH] Fix ios placeholder implementation (#4067) * Fix https://github.com/NativeScript/NativeScript/issues/4043 * Merge ios & android implementation --- tests/app/ui/placeholder/placeholder-tests.ts | 68 +++++++++---------- .../ui/placeholder/placeholder.android.ts | 2 +- .../ui/placeholder/placeholder.ios.ts | 17 ----- .../ui/placeholder/placeholder.ts | 12 ++++ 4 files changed, 47 insertions(+), 52 deletions(-) delete mode 100644 tns-core-modules/ui/placeholder/placeholder.ios.ts create mode 100644 tns-core-modules/ui/placeholder/placeholder.ts diff --git a/tests/app/ui/placeholder/placeholder-tests.ts b/tests/app/ui/placeholder/placeholder-tests.ts index 511d52e0c..030252e5b 100644 --- a/tests/app/ui/placeholder/placeholder-tests.ts +++ b/tests/app/ui/placeholder/placeholder-tests.ts @@ -1,7 +1,6 @@ import * as TKUnit from "../../TKUnit"; // >> article-creating-view -import * as platform from "tns-core-modules/platform"; -//var utils = require("utils/utils"); +import { isIOS, isAndroid } from "tns-core-modules/platform"; import * as utils from "tns-core-modules/utils/utils"; import * as helper from "../helper"; import * as viewModule from "tns-core-modules/ui/core/view"; @@ -11,56 +10,57 @@ import * as placeholderModule from "tns-core-modules/ui/placeholder"; // << article-require-placeholder-module function creatingView(args) { - var nativeView; - if (platform.device.os === platform.platformNames.ios) { - nativeView = UITextView.new(); - nativeView.text = "Native"; - } else if (platform.device.os === platform.platformNames.android) { - nativeView = new android.widget.TextView(utils.ad.getApplicationContext()); - nativeView.setText("Native"); - } + let nativeView; + if (isIOS) { + nativeView = UITextView.new(); + nativeView.text = "Native"; + } else if (isAndroid) { + nativeView = new android.widget.TextView(utils.ad.getApplicationContext()); + nativeView.setText("Native"); + } - args.view = nativeView; + args.view = nativeView; } exports.creatingView = creatingView; // << article-creating-view export function test_placeholder_creatingView() { - var nativeView; - - var p = new placeholderModule.Placeholder(); - p.id = "test"; + const p = new placeholderModule.Placeholder(); p.on(placeholderModule.Placeholder.creatingViewEvent, (args: placeholderModule.CreateViewEventData) => { - if (platform.device.os === platform.platformNames.ios) { - nativeView = UITextView.new(); + let nativeView; + if (isIOS) { + nativeView = UITextView.new(); nativeView.text = "Native"; - } else if (platform.device.os === platform.platformNames.android) { + } else if (isAndroid) { nativeView = new android.widget.TextView(utils.ad.getApplicationContext()); nativeView.setText("Native"); } - + args.view = nativeView; }); - if (platform.device.os === platform.platformNames.ios) { - TKUnit.assert(p.ios instanceof UITextView, "ios property should be UITextView. Current value: " + p.ios); - } else if (platform.device.os === platform.platformNames.android) { - p._emit("creatingView"); - TKUnit.assert(nativeView instanceof android.widget.TextView, "Native view should be android.widget.TextView. Current value: " + nativeView); - } -} - -export function test_placeholder_will_not_crash_wihout_creatingView() { - var p = new placeholderModule.Placeholder(); - function testAction(views: Array) { - if (platform.device.os === platform.platformNames.ios) { - TKUnit.assert(p.ios === undefined, "ios property should be undefined. Current value: " + p.ios); - } else if (platform.device.os === platform.platformNames.android) { - TKUnit.assert(p.android === undefined, "android view should be undefined. Current value: " + p.android); + if (isIOS) { + TKUnit.assert(p.nativeView instanceof UITextView, "nativeView property should be UITextView. Current value: " + p.nativeView); + } else if (isAndroid) { + TKUnit.assert(p.nativeView instanceof android.widget.TextView, "Native view should be android.widget.TextView. Current value: " + p.nativeView); } }; helper.buildUIAndRunTest(p, testAction); } + +export function test_placeholder_will_not_crash_wihout_creatingView() { + const p = new placeholderModule.Placeholder(); + + function testAction(views: Array) { + if (isIOS) { + TKUnit.assert(p.ios === undefined, "ios property should be undefined. Current value: " + p.ios); + } else if (isAndroid) { + TKUnit.assert(p.android === undefined, "android view should be undefined. Current value: " + p.android); + } + }; + + helper.buildUIAndRunTest(p, testAction); +} \ No newline at end of file diff --git a/tns-core-modules/ui/placeholder/placeholder.android.ts b/tns-core-modules/ui/placeholder/placeholder.android.ts index 306329fd5..f3a79c7ac 100644 --- a/tns-core-modules/ui/placeholder/placeholder.android.ts +++ b/tns-core-modules/ui/placeholder/placeholder.android.ts @@ -5,7 +5,7 @@ export class Placeholder extends View implements PlaceholderDefinition { public static creatingViewEvent = "creatingView"; public createNativeView() { - let args = { eventName: Placeholder.creatingViewEvent, object: this, view: undefined, context: this._context }; + const args = { eventName: Placeholder.creatingViewEvent, object: this, view: undefined, context: this._context }; this.notify(args); return args.view; } diff --git a/tns-core-modules/ui/placeholder/placeholder.ios.ts b/tns-core-modules/ui/placeholder/placeholder.ios.ts deleted file mode 100644 index 3e1989e54..000000000 --- a/tns-core-modules/ui/placeholder/placeholder.ios.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Placeholder as PlaceholderDefinition, CreateViewEventData } from "." -import { View } from "../core/view" - -export class Placeholder extends View implements PlaceholderDefinition { - public static creatingViewEvent = "creatingView"; - - private _ios: UIView; - - get ios(): UIView { - if (!this._ios) { - var args = { eventName: Placeholder.creatingViewEvent, object: this, view: undefined, context: undefined }; - super.notify(args); - this.nativeView = this._ios = args.view; - } - return this._ios; - } -} \ No newline at end of file diff --git a/tns-core-modules/ui/placeholder/placeholder.ts b/tns-core-modules/ui/placeholder/placeholder.ts new file mode 100644 index 000000000..b986756c8 --- /dev/null +++ b/tns-core-modules/ui/placeholder/placeholder.ts @@ -0,0 +1,12 @@ +import { Placeholder as PlaceholderDefinition, CreateViewEventData } from "." +import { View } from "../core/view" + +export class Placeholder extends View implements PlaceholderDefinition { + public static creatingViewEvent = "creatingView"; + + public createNativeView() { + const args = { eventName: Placeholder.creatingViewEvent, object: this, view: undefined, context: this._context }; + this.notify(args); + return args.view; + } +} \ No newline at end of file