diff --git a/packages/alpinejs/src/utils/classes.js b/packages/alpinejs/src/utils/classes.js index 0fd02aa8a..69db66eda 100644 --- a/packages/alpinejs/src/utils/classes.js +++ b/packages/alpinejs/src/utils/classes.js @@ -11,10 +11,12 @@ export function setClasses(el, value) { return setClassesFromString(el, value) } -function setClassesFromString(el, classString) { - let split = classString => classString.split(' ').filter(Boolean) +function splitClasses(classString) { + return classString.split(/\s/).filter(Boolean) +} - let missingClasses = classString => classString.split(' ').filter(i => ! el.classList.contains(i)).filter(Boolean) +function setClassesFromString(el, classString) { + let missingClasses = classString => splitClasses(classString).filter(i => ! el.classList.contains(i)).filter(Boolean) let addClassesAndReturnUndo = classes => { el.classList.add(...classes) @@ -29,10 +31,8 @@ function setClassesFromString(el, classString) { } function setClassesFromObject(el, classObject) { - let split = classString => classString.split(' ').filter(Boolean) - - let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean) - let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => ! bool ? split(classString) : false).filter(Boolean) + let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? splitClasses(classString) : false).filter(Boolean) + let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => ! bool ? splitClasses(classString) : false).filter(Boolean) let added = [] let removed = [] diff --git a/tests/cypress/integration/directives/x-bind-class.spec.js b/tests/cypress/integration/directives/x-bind-class.spec.js index 486a60b1a..e25ad3bba 100644 --- a/tests/cypress/integration/directives/x-bind-class.spec.js +++ b/tests/cypress/integration/directives/x-bind-class.spec.js @@ -82,13 +82,13 @@ test('classes are removed before being added', } ) -test('extra whitespace in class binding string syntax is ignored', +test.only('extra whitespace in class binding string syntax is ignored', html`