10000 Merge branch 'master' into tsenov/bump-version-6.2.0 · NativeScript/NativeScript@a39a4db · GitHub
[go: up one dir, main page]

Skip to content

Commit a39a4db

Browse files
Merge branch 'master' into tsenov/bump-version-6.2.0
2 parents d772d21 + 5520213 commit a39a4db

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

tests/app/ui/styling/style-tests.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,29 @@ export function test_class_selector() {
198198
TKUnit.assert(btnWithNoClass.style.color === undefined, "Color should not have a value");
199199
}
200200

201+
export function test_class_selector_with_escape_characters() {
202+
let page = helper.getClearCurrentPage();
203+
let btnWithClass1: buttonModule.Button;
204+
let btnWithClass2: buttonModule.Button;
205+
206+
page.css = ".test-1 { color: red; } .test-1\\/2 { color: blue }";
207+
208+
//// Will be styled
209+
btnWithClass1 = new buttonModule.Button();
210+
btnWithClass1.className = "test-1";
211+
212+
btnWithClass2 = new buttonModule.Button();
213+
btnWithClass2.className = "test-1/2";
214+
215+
const stack = new stackModule.StackLayout();
216+
page.content = stack;
217+
stack.addChild(btnWithClass1);
218+
stack.addChild(btnWithClass2);
219+
220+
helper.assertViewColor(btnWithClass1, "#FF0000");
221+
helper.assertViewColor(btnWithClass2, "#0000FF");
222+
}
223+
201224
export function test_multiple_class_selector() {
202225
let page = helper.getClearCurrentPage();
203226
let btnWithClasses: buttonModule.Button;

tns-core-modules/css/parser.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ function parseArgumentsList<T>(text: string, start: number, argument: (value: st
546546
}
547547
end = arg.end;
548548
value.push(arg);
549-
549+
550550
closingBracketOrCommaRegEx.lastIndex = end;
551551
const closingBracketOrComma = closingBracketOrCommaRegEx.exec(text);
552552
if (closingBracketOrComma) {
@@ -734,7 +734,7 @@ export function parseUniversalSelector(text: string, start: number = 0): Parsed<
734734
return { start, end, value: { type: "*" }};
735735
}
736736

737-
const simpleIdentifierSelectorRegEx = /(#|\.|:|\b)([_-\w][_-\w\d]*)/gy;
737+
const simpleIdentifierSelectorRegEx = /(#|\.|:|\b)([_-\w][_-\w\d\\/]*)/gy;
738738
export function parseSimpleIdentifierSelector(text: string, start: number = 0): Parsed<TypeSelector | ClassSelector | IdSelector | PseudoClassSelector> {
739739
simpleIdentifierSelectorRegEx.lastIndex = start;
740740
const result = simpleIdentifierSelectorRegEx.exec(text);
@@ -743,7 +743,7 @@ export function parseSimpleIdentifierSelector(text: string, start: number = 0):
743743
}
744744
const end = simpleIdentifierSelectorRegEx.lastIndex;
745745
const type = <"#" | "." | ":" | "">result[1];
746-
const identifier: string = result[2];
746+
const identifier: string = result[2].replace(/\\/g, "");
747747
const value = <TypeSelector | ClassSelector | IdSelector | PseudoClassSelector>{ type, identifier };
748748

749749
return { start, end, value };
@@ -1617,4 +1617,4 @@ export class CSSNativeScript {
16171617

16181618
return selectors;
16191619
}
1620-
}
1620+
}

0 commit comments

Comments
 (0)
0