diff --git a/core/misc/states.es6.js b/core/misc/states.es6.js index 09c1ba4b0e..c71c4731d4 100644 --- a/core/misc/states.es6.js +++ b/core/misc/states.es6.js @@ -254,11 +254,16 @@ // bogus, we don't want to end up with an infinite loop. else if ($.isPlainObject(constraints)) { // This constraint is an object (AND). - result = Object.keys(constraints).every(constraint => this.checkConstraints( - constraints[constraint], - selector, - constraint, - )); + Object.keys(constraints).some((constraint) => { + result = ternary(result, this.checkConstraints(constraints[constraint], selector, constraint)); + // False and anything else will evaluate to false, so return true when + // any false condition is found to break out of the .some loop. + if (result === false) { + return true; + } + // Continue checking constraints. + return false; + }); } return result; }, diff --git a/core/misc/states.js b/core/misc/states.js index 2d2bfc680d..b24b5303e2 100644 --- a/core/misc/states.js +++ b/core/misc/states.js @@ -128,8 +128,14 @@ } } } else if ($.isPlainObject(constraints)) { - result = Object.keys(constraints).every(function (constraint) { - return _this3.checkConstraints(constraints[constraint], selector, constraint); + Object.keys(constraints).some(function (constraint) { + result = ternary(result, _this3.checkConstraints(constraints[constraint], selector, constraint)); + + if (result === false) { + return true; + } + + return false; }); } return result;