From 1255e6bd4acd44a030ae7f6f0525894043fced0a Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Mon, 19 Dec 2016 11:56:32 +0200 Subject: [PATCH 1/3] Visibility --- .../activity-indicator.android.ts | 33 +++++++++++--- .../activity-indicator.ios.ts | 10 ++--- tns-core-modules/ui/core/view-base.ts | 11 ----- tns-core-modules/ui/core/view-common.ts | 22 +++++++-- tns-core-modules/ui/core/view.android.ts | 45 ++++++++++--------- tns-core-modules/ui/core/view.d.ts | 11 ++++- tns-core-modules/ui/core/view.ios.ts | 20 ++++++--- tns-core-modules/ui/styling/converters.ts | 10 ----- tns-core-modules/ui/styling/style.d.ts | 4 +- tns-core-modules/ui/styling/style.ts | 4 +- 10 files changed, 105 insertions(+), 65 deletions(-) diff --git a/tns-core-modules/ui/activity-indicator/activity-indicator.android.ts b/tns-core-modules/ui/activity-indicator/activity-indicator.android.ts index 489607fd0..b0a1d2246 100644 --- a/tns-core-modules/ui/activity-indicator/activity-indicator.android.ts +++ b/tns-core-modules/ui/activity-indicator/activity-indicator.android.ts @@ -1,4 +1,4 @@ -import { ActivityIndicatorBase, busyProperty, colorProperty, visibilityProperty } from "./activity-indicator-common"; +import { ActivityIndicatorBase, busyProperty, colorProperty, visibilityProperty, Visibility } from "./activity-indicator-common"; export * from "./activity-indicator-common"; @@ -22,12 +22,33 @@ export class ActivityIndicator extends ActivityIndicatorBase { this._progressBar.setVisibility(value ? android.view.View.VISIBLE : android.view.View.INVISIBLE); } - get [visibilityProperty.native](): number { - return this._progressBar.getVisibility(); + get [visibilityProperty.native](): Visibility { + let nativeVisibility = this._progressBar.getVisibility(); + switch (nativeVisibility) { + case android.view.View.VISIBLE: + return Visibility.VISIBLE; + case android.view.View.INVISIBLE: + return Visibility.HIDDEN; + case android.view.View.GONE: + return Visibility.COLLAPSE; + default: + throw new Error(`Unsupported android.view.View visibility: ${nativeVisibility}. Currently supported values are android.view.View.VISIBLE, android.view.View.INVISIBLE, android.view.View.GONE.`); + } } - set [visibilityProperty.native](value: number) { - this.busy = value === android.view.View.VISIBLE; - this._progressBar.setVisibility(value); + set [visibilityProperty.native](value: Visibility) { + switch (value) { + case Visibility.VISIBLE: + this._progressBar.setVisibility(android.view.View.VISIBLE); + break; + case Visibility.HIDDEN: + this._progressBar.setVisibility(android.view.View.INVISIBLE); + break; + case Visibility.COLLAPSE: + this._progressBar.setVisibility(android.view.View.GONE); + break; + default: + throw new Error(`Invalid visibility value: ${value}. Valid values are: "${Visibility.VISIBLE}", "${Visibility.HIDDEN}", "${Visibility.COLLAPSE}".`); + } } get [colorProperty.native](): number { diff --git a/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts b/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts index d96349ee9..6198f6bb0 100644 --- a/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts +++ b/tns-core-modules/ui/activity-indicator/activity-indicator.ios.ts @@ -1,4 +1,4 @@ -import { ActivityIndicatorBase, busyProperty, colorProperty, visibilityProperty } from "./activity-indicator-common"; +import { ActivityIndicatorBase, busyProperty, colorProperty, visibilityProperty, Visibility } from "./activity-indicator-common"; import { ios } from "utils/utils"; export * from "./activity-indicator-common"; @@ -33,11 +33,11 @@ export class ActivityIndicator extends ActivityIndicatorBase { } } - get [visibilityProperty.native](): string { - return this.nativeView.hidden ? "collapse" : "visible"; + get [visibilityProperty.native](): Visibility { + return this.nativeView.hidden ? Visibility.COLLAPSE : Visibility.VISIBLE; } - set [visibilityProperty.native](value: string) { - this.nativeView.hidden = value !== "visible"; + set [visibilityProperty.native](value: Visibility) { + this.nativeView.hidden = value !== Visibility.VISIBLE; } get [colorProperty.native](): UIColor { diff --git a/tns-core-modules/ui/core/view-base.ts b/tns-core-modules/ui/core/view-base.ts index 6e3045d29..e31524dc9 100644 --- a/tns-core-modules/ui/core/view-base.ts +++ b/tns-core-modules/ui/core/view-base.ts @@ -500,17 +500,6 @@ export class ViewBase extends Observable implements ViewBaseDefinition { } } -export const visibilityProperty = new CssProperty({ - name: "visibility", cssName: "visibility", defaultValue: "visible", affectsLayout: isIOS, valueChanged: (target, newValue) => { - if (newValue !== "visible" && newValue !== "collapse" && newValue !== "collapsed" && newValue !== "hidden") { - throw new Error(`Invalid visibility value: ${newValue}`); - } - - target.view.isCollapsed = (newValue === "collapse" || newValue === "collapsed"); - } -}); -visibilityProperty.register(Style); - export const bindingContextProperty = new InheritedProperty({ name: "bindingContext" }); bindingContextProperty.register(ViewBase); diff --git a/tns-core-modules/ui/core/view-common.ts b/tns-core-modules/ui/core/view-common.ts index 6980cb159..3c25e6613 100644 --- a/tns-core-modules/ui/core/view-common.ts +++ b/tns-core-modules/ui/core/view-common.ts @@ -396,10 +396,10 @@ export abstract class ViewCommon extends ViewBase implements ViewDefinition { this.style.verticalAlignment = value; } - get visibility(): "visible" | "hidden" | "collapse" | "collapsed" { + get visibility(): Visibility { return this.style.visibility; } - set visibility(value: "visible" | "hidden" | "collapse" | "collapsed") { + set visibility(value: Visibility) { this.style.visibility = value; } @@ -1863,4 +1863,20 @@ const fontProperty = new ShorthandProperty