From d6478237ec4f4d8fa4b457f39bddcc463e90643c Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Mon, 9 Oct 2023 12:00:21 -0700 Subject: [PATCH] feat(css): text-stroke support (#10399) closes https://github.com/NativeScript/NativeScript/issues/3597 closes https://github.com/NativeScript/NativeScript/issues/3972 --- apps/toolbox/src/pages/labels.ts | 23 ++++- apps/toolbox/src/pages/labels.xml | 3 + .../platforms/android/widgets-release.aar | Bin 282143 -> 282955 bytes .../platforms/ios/src/UIView+NativeScript.h | 2 + .../platforms/ios/src/UIView+NativeScript.m | 15 ++++ packages/core/ui/index.ts | 2 +- packages/core/ui/label/index.android.ts | 12 +-- packages/core/ui/styling/css-shadow.ts | 83 ++++++------------ packages/core/ui/styling/css-stroke.spec.ts | 30 +++++++ packages/core/ui/styling/css-stroke.ts | 23 +++++ packages/core/ui/styling/style/index.ts | 2 + packages/core/ui/text-base/index.android.ts | 22 +++-- packages/core/ui/text-base/index.d.ts | 2 + packages/core/ui/text-base/index.ios.ts | 14 ++- .../core/ui/text-base/text-base-common.ts | 11 +++ .../lib/android/org.nativescript.widgets.d.ts | 7 ++ .../src/lib/ios/objc-x86_64/objc!UIKit.d.ts | 5 +- .../widgets/StyleableTextView.java | 50 +++++++++++ 18 files changed, 230 insertions(+), 76 deletions(-) create mode 100644 packages/core/ui/styling/css-stroke.spec.ts create mode 100644 packages/core/ui/styling/css-stroke.ts create mode 100644 packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/StyleableTextView.java diff --git a/apps/toolbox/src/pages/labels.ts b/apps/toolbox/src/pages/labels.ts index 6a625c8f3..445138a06 100644 --- a/apps/toolbox/src/pages/labels.ts +++ b/apps/toolbox/src/pages/labels.ts @@ -1,4 +1,4 @@ -import { Page, Observable, EventData } from '@nativescript/core'; +import { Page, Observable, EventData, Label, Color } from '@nativescript/core'; let page: Page; @@ -7,4 +7,23 @@ export function navigatingTo(args: EventData) { page.bindingContext = new SampleData(); } -export class SampleData extends Observable {} +export class SampleData extends Observable { + strokeLabel: Label; + + loadedStrokeLabel(args) { + this.strokeLabel = args.object; + } + + toggleStrokeStyle() { + if (this.strokeLabel.style.textStroke) { + this.strokeLabel.style.color = new Color('black'); + this.strokeLabel.style.textStroke = null; + } else { + this.strokeLabel.style.color = new Color('white'); + this.strokeLabel.style.textStroke = { + color: new Color('black'), + width: { value: 2, unit: 'px' }, + }; + } + } +} diff --git a/apps/toolbox/src/pages/labels.xml b/apps/toolbox/src/pages/labels.xml index 6d6175529..a9239d3e9 100644 --- a/apps/toolbox/src/pages/labels.xml +++ b/apps/toolbox/src/pages/labels.xml @@ -25,6 +25,9 @@