From 5a493d84ad7c5671d4bbd39e2639dfd8d5702b3e Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 12 Feb 2016 11:42:59 -0800 Subject: [PATCH] Add support for one-of attribute selector while not breaking support for general sibling combinator. Fixes #3023. Fix taken from #3067. --- src/lib/style-transformer.html | 2 +- test/unit/styling-scoped-elements.html | 28 ++++++++++++++++++++++++++ test/unit/styling-scoped.html | 9 +++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/lib/style-transformer.html b/src/lib/style-transformer.html index 5845a94bb9..711dc9337a 100644 --- a/src/lib/style-transformer.html +++ b/src/lib/style-transformer.html @@ -253,7 +253,7 @@ var SCOPE_DOC_SELECTOR = ':not([' + SCOPE_NAME + '])' + ':not(.' + SCOPE_NAME + ')'; var COMPLEX_SELECTOR_SEP = ','; - var SIMPLE_SELECTOR_SEP = /(^|[\s>+~]+)([^\s>+~]+)/g; + var SIMPLE_SELECTOR_SEP = /(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g; var HOST = ':host'; var ROOT = ':root'; // NOTE: this supports 1 nested () pair for things like diff --git a/test/unit/styling-scoped-elements.html b/test/unit/styling-scoped-elements.html index a9ab13c3f0..db1c0db6f2 100644 --- a/test/unit/styling-scoped-elements.html +++ b/test/unit/styling-scoped-elements.html @@ -505,3 +505,31 @@ is: 'x-overriding' }); + + + + + diff --git a/test/unit/styling-scoped.html b/test/unit/styling-scoped.html index d3215818d6..21574ad88c 100644 --- a/test/unit/styling-scoped.html +++ b/test/unit/styling-scoped.html @@ -236,6 +236,14 @@ document.body.removeChild(el); }); + test('attribute inclusive selector and general sibling selectors', function() { + var e = document.createElement('x-attr-selector'); + document.body.appendChild(e); + assertComputed(e.$.bar1, '2px'); + assertComputed(e.$.bar2, '4px'); + assertComputed(e.$.bar3, '6px'); + }); + suite('scoped-styling-shady-only', function() { suiteSetup(function() { @@ -333,6 +341,7 @@ computed = getComputedStyle(circle); assert.equal(computed['fill-opacity'], '0.5'); }); + });