diff --git a/tests/app/ui/search-bar/search-bar-tests-native.android.ts b/tests/app/ui/search-bar/search-bar-tests-native.android.ts index 743638199..77b316d2b 100644 --- a/tests/app/ui/search-bar/search-bar-tests-native.android.ts +++ b/tests/app/ui/search-bar/search-bar-tests-native.android.ts @@ -23,6 +23,15 @@ export function getNativeHintColor(searchBar: searchBarModule.SearchBar): colorM return undefined; } +export function getNativeTextFieldBackgroundColor(searchBar: searchBarModule.SearchBar): colorModule.Color { + var textView = getTextView(searchBar.android); + + if (textView) { + return new colorModule.Color((textView.getBackground()).getColor()); + } + return undefined; +} + export function getNativeFontSize(searchBar: searchBarModule.SearchBar): number { var textView = getTextView(searchBar.android); diff --git a/tests/app/ui/search-bar/search-bar-tests-native.d.ts b/tests/app/ui/search-bar/search-bar-tests-native.d.ts index 30a126a99..2f62edce7 100644 --- a/tests/app/ui/search-bar/search-bar-tests-native.d.ts +++ b/tests/app/ui/search-bar/search-bar-tests-native.d.ts @@ -3,4 +3,5 @@ import * as searchBarModule from "tns-core-modules/ui/search-bar"; import * as colorModule from "tns-core-modules/color"; export declare function getNativeHintColor(textView: searchBarModule.SearchBar): colorModule.Color; +export declare function getNativeTextFieldBackgroundColor(textView: searchBarModule.SearchBar): colorModule.Color; export declare function getNativeFontSize(searchBar: searchBarModule.SearchBar): number; diff --git a/tests/app/ui/search-bar/search-bar-tests-native.ios.ts b/tests/app/ui/search-bar/search-bar-tests-native.ios.ts index 3f4b158c3..ca87c46fe 100644 --- a/tests/app/ui/search-bar/search-bar-tests-native.ios.ts +++ b/tests/app/ui/search-bar/search-bar-tests-native.ios.ts @@ -5,6 +5,11 @@ import { getColor } from "../helper"; export function getNativeHintColor(searchBar: SearchBar): Color { return (searchBar)._placeholderLabel ? getColor((searchBar)._placeholderLabel.textColor) : undefined; } + +export function getNativeTextFieldBackgroundColor(searchBar: SearchBar): Color { + return (searchBar)._textField ? getColor((searchBar)._textField.backgroundColor) : undefined; +} + export function getNativeFontSize(searchBar: SearchBar): number { return (searchBar)._textField ? (searchBar)._textField.font.pointSize : undefined; } diff --git a/tests/app/ui/search-bar/search-bar-tests.ts b/tests/app/ui/search-bar/search-bar-tests.ts index e7c417c77..446abb66b 100644 --- a/tests/app/ui/search-bar/search-bar-tests.ts +++ b/tests/app/ui/search-bar/search-bar-tests.ts @@ -28,7 +28,7 @@ export function test_recycling() { helper.nativeView_recycling_test(() => new searchBarModule.SearchBar()); } -export var testSearchBarHintColorAndroid = function () { +export var testSearchBarHintColor = function () { helper.buildUIAndRunTest(_createSearchBarFunc(), function (views: Array) { var searchBar = views[0]; @@ -50,6 +50,28 @@ export var testSearchBarHintColorAndroid = function () { }); }; +export var testSearchBarTextFieldBackgroundColor = function () { + helper.buildUIAndRunTest(_createSearchBarFunc(), function (views: Array) { + var searchBar = views[0]; + + searchBar.text = ""; + searchBar.hint = ""; + + var expectedNormalizedValue; + var actualValue; + + searchBar.textFieldBackgroundColor = new colorModule.Color("blue"); + expectedNormalizedValue = "#0000FF"; // blue + actualValue = searchBarTestsNative.getNativeTextFieldBackgroundColor(searchBar).hex; + TKUnit.assert(actualValue === expectedNormalizedValue, "Actual: " + actualValue + "; Expected: " + expectedNormalizedValue); + + searchBar.textFieldBackgroundColor = new colorModule.Color("red"); + expectedNormalizedValue = "#FF0000"; // red + actualValue = searchBarTestsNative.getNativeTextFieldBackgroundColor(searchBar).hex; + TKUnit.assert(actualValue === expectedNormalizedValue, "Actual: " + actualValue + "; Expected: " + expectedNormalizedValue); + }); +}; + export var testSearchBarFontSize = function () { helper.buildUIAndRunTest(_createSearchBarFunc(), function (views: Array) { var searchBar = views[0]; @@ -66,6 +88,32 @@ export var testSearchBarFontSize = function () { }); }; +export var testSearchBarPropertiesWithCSS = function () { + helper.buildUIAndRunTest(_createSearchBarFunc(), function (views: Array) { + var searchBar = views[0]; + + const expectedHintColor = "#0000FF"; // blue + const expectedTextFieldBackgroundColor = "#FF0000"; // red + const expectedFontSize = 30; + + const hintColorActualValue = searchBarTestsNative.getNativeHintColor(searchBar).hex; + const textFieldBackgroundColorActualValue = searchBarTestsNative.getNativeTextFieldBackgroundColor(searchBar).hex; + const fontSizeActualValue = searchBarTestsNative.getNativeFontSize(searchBar); + + TKUnit.assert(hintColorActualValue === expectedHintColor, "HintColor - Actual: " + hintColorActualValue + "; Expected: " + expectedHintColor); + TKUnit.assert(expectedTextFieldBackgroundColor === textFieldBackgroundColorActualValue, "Text Background Color - Actual: " + textFieldBackgroundColorActualValue + "; Expected: " + expectedTextFieldBackgroundColor); + TKUnit.assertAreClose(expectedFontSize, fontSizeActualValue, 0.2, "Font Size - Actual: " + fontSizeActualValue + "; Expected: " + expectedFontSize); + }, { pageCss: ` + SearchBar { + text: test; + hint: test; + text-field-hint-color: blue; + text-field-background-color: red; + font-size: 30; + } + `}); +}; + export function test_DummyTestForSnippetOnly() { // >> article-searching var searchBar = new searchBarModule.SearchBar(); diff --git a/tns-core-modules/ui/styling/style-scope.ts b/tns-core-modules/ui/styling/style-scope.ts index a915b559d..a643f5a93 100644 --- a/tns-core-modules/ui/styling/style-scope.ts +++ b/tns-core-modules/ui/styling/style-scope.ts @@ -481,7 +481,8 @@ export class CssState { if (property in this.view.style) { this.view.style[`css:${property}`] = value; } else { - this.view[property] = value; + const camelCasedProperty = property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); + this.view[camelCasedProperty] = value; } } catch (e) { traceWrite(`Failed to apply property [${property}] with value [${value}] to ${this.view}. ${e}`, traceCategories.Error, traceMessageType.error);