diff --git a/apps/tests/xml-declaration/xml-declaration-tests.ts b/apps/tests/xml-declaration/xml-declaration-tests.ts index 8d9f20354..8a030799c 100644 --- a/apps/tests/xml-declaration/xml-declaration-tests.ts +++ b/apps/tests/xml-declaration/xml-declaration-tests.ts @@ -19,6 +19,7 @@ import helper = require("../ui/helper"); import viewModule = require("ui/core/view"); import platform = require("platform"); import gesturesModule = require("ui/gestures"); +import segmentedBar = require("ui/segmented-bar"); export function test_load_IsDefined() { TKUnit.assert(types.isFunction(builder.load), "ui/builder should have load method!"); @@ -322,6 +323,15 @@ export function test_parse_CanBindBackgroundImage() { TKUnit.assert(sw.backgroundImage === expected, "Expected result: " + expected + "; Actual result: " + sw.backgroundImage); }; +export function test_parse_ShouldParseLowerCaseDashedComponentDeclaration() { + var p = builder.parse(''); + var ctrl = p.content; + + TKUnit.assert(ctrl instanceof stackLayoutModule.StackLayout, "Expected result: StackLayout!; Actual result: " + ctrl); + TKUnit.assert(ctrl.getChildAt(0) instanceof labelModule.Label, "Expected result: Label!; Actual result: " + ctrl.getChildAt(0)); + TKUnit.assert(ctrl.getChildAt(1) instanceof segmentedBar.SegmentedBar, "Expected result: Label!; Actual result: " + ctrl.getChildAt(0)); +}; + export function test_parse_ShouldParseCustomComponentWithoutXml() { var p = builder.parse(''); var ctrl = p.content; diff --git a/ui/builder/component-builder.ts b/ui/builder/component-builder.ts index 7337216a2..a8d4fae81 100644 --- a/ui/builder/component-builder.ts +++ b/ui/builder/component-builder.ts @@ -35,6 +35,9 @@ export function getComponentModule(elementName: string, namespace: string, attri var instanceModule: Object; var componentModule: definition.ComponentModule; + // Support lower-case-dashed component declaration in the XML (https://github.com/NativeScript/NativeScript/issues/309). + elementName = elementName.split("-").map(s => { return s[0].toUpperCase() + s.substring(1) }).join(""); + // Get module id. var moduleId = MODULES[elementName] || UI_PATH + (elementName.toLowerCase().indexOf("layout") !== -1 ? "layouts/" : "") +