diff --git a/packages/metal-dom/src/domNamed.js b/packages/metal-dom/src/domNamed.js index 66254b71..9e831db7 100644 --- a/packages/metal-dom/src/domNamed.js +++ b/packages/metal-dom/src/domNamed.js @@ -340,7 +340,8 @@ export function hasClass(element, className) { * @private */ function hasClassWithNative_(element, className) { - return element.classList.contains(className); + return className.indexOf(' ') === -1 && + element.classList.contains(className); } /** @@ -351,7 +352,8 @@ function hasClassWithNative_(element, className) { * @private */ function hasClassWithoutNative_(element, className) { - return (` ${element.className} `).indexOf(` ${className} `) >= 0; + return (` ${element.className} `).indexOf(` ${className} `) >= 0 && + className.split(' ').length === 1; } /** diff --git a/packages/metal-dom/test/dom.js b/packages/metal-dom/test/dom.js index aa80b4e0..9eb9eb3e 100644 --- a/packages/metal-dom/test/dom.js +++ b/packages/metal-dom/test/dom.js @@ -150,6 +150,16 @@ describe('dom', function() { dom.toggleClasses(element, 'adipiscing elit lorem sit consectetur'); assert.strictEqual('ipsum dolor amet adipiscing elit consectetur', element.className); }); + + it('should return false when checking if a classname with spaces exists', function() { + let el = document.createElement('div'); + dom.addClasses(el, 'foo'); + dom.addClasses(el, 'bar'); + assert.strictEqual(dom.hasClass(el, 'foo'), true); + assert.strictEqual(dom.hasClass(el, 'bar'), true); + assert.strictEqual(dom.hasClass(el, 'foo bar'), false); + assert.strictEqual(dom.hasClass(el, 'bar foo'), false); + }); }); describe('contains', function() {