diff --git a/apps/tests/ui/style/style-tests.ts b/apps/tests/ui/style/style-tests.ts index 2e539387f..870b2ab5f 100644 --- a/apps/tests/ui/style/style-tests.ts +++ b/apps/tests/ui/style/style-tests.ts @@ -824,6 +824,25 @@ export function test_set_invalid_CSS_values_dont_cause_crash() { }, invalidCSS); } +// Check Mixed, Upper and lower case properties +var casedCSS = ".cased {" + + "cOlOr: blue; " + + "FONT-SIZE: 30; " + + "background-color: red; " + + "}"; + +export function test_set_mixed_CSS_cases_works() { + var testButton = new buttonModule.Button(); + testButton.text = "Test"; + testButton.cssClass = "cased"; + + helper.buildUIAndRunTest(testButton, function (views: Array) { + TKUnit.assertEqual(30, testButton.style.fontSize); + helper.assertViewBackgroundColor(testButton, "#FF0000"); + helper.assertViewColor(testButton, "#0000FF"); + }, casedCSS); +} + // // For information and example how to use style properties please refer to special [**Styling**](../../../styling.md) topic. // diff --git a/ui/styling/style-scope.ts b/ui/styling/style-scope.ts index e64352d92..74c422782 100644 --- a/ui/styling/style-scope.ts +++ b/ui/styling/style-scope.ts @@ -200,7 +200,6 @@ export class StyleScope { var rules = ast.stylesheet.rules; var rule: cssParser.Rule; - var filteredDeclarations: cssParser.Declaration[]; var i; var j; @@ -209,11 +208,25 @@ export class StyleScope { rule = rules[i]; // Skip comment nodes. if (rule.type === "rule") { + // Filter comment nodes. - filteredDeclarations = rule.declarations.filter((val, i, arr) => { return val.type === "declaration" }); - for (j = 0; j < rule.selectors.length; j++) { - result.push(cssSelector.createSelector(rule.selectors[j], filteredDeclarations)); + var filteredDeclarations = []; + if (rule.declarations) { + for (j = 0; j < rule.declarations.length; j++) { + var declaration = rule.declarations[j]; + if (declaration.type === "declaration") { + filteredDeclarations.push({ + property: declaration.property.toLowerCase(), + value: declaration.value + }); + } + } } + + for (j = 0; j < rule.selectors.length; j++) { + result.push(cssSelector.createSelector(rule.selectors[j], filteredDeclarations)); + } + //} } }