From: Geoff Kimball Date: Wed, 2 Mar 2016 18:22:15 +0000 (-0800) Subject: Prevent Interchange from failing if its _init() method is called more than once,... X-Git-Tag: v6.2.1~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13c278c6d63bc4b54cda1f284277dcdf799096a4;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Prevent Interchange from failing if its _init() method is called more than once, fixes #8321 --- diff --git a/js/foundation.responsiveMenu.js b/js/foundation.responsiveMenu.js index 559fe1fd7..a7bb389a8 100644 --- a/js/foundation.responsiveMenu.js +++ b/js/foundation.responsiveMenu.js @@ -38,25 +38,28 @@ class ResponsiveMenu { * @private */ _init() { - var rulesTree = {}; - - // Parse rules from "classes" in data attribute - var rules = this.rules.split(' '); - - // Iterate through every rule found - for (var i = 0; i < rules.length; i++) { - var rule = rules[i].split('-'); - var ruleSize = rule.length > 1 ? rule[0] : 'small'; - var rulePlugin = rule.length > 1 ? rule[1] : rule[0]; - - if (MenuPlugins[rulePlugin] !== null) { - rulesTree[ruleSize] = MenuPlugins[rulePlugin]; + // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules + if (typeof this.rules === 'string') { + let rulesTree = {}; + + // Parse rules from "classes" pulled from data attribute + let rules = this.rules.split(' '); + + // Iterate through every rule found + for (let i = 0; i < rules.length; i++) { + let rule = rules[i].split('-'); + let ruleSize = rule.length > 1 ? rule[0] : 'small'; + let rulePlugin = rule.length > 1 ? rule[1] : rule[0]; + + if (MenuPlugins[rulePlugin] !== null) { + rulesTree[ruleSize] = MenuPlugins[rulePlugin]; + } } - } - this.rules = rulesTree; + this.rules = rulesTree; + } - if (!$.isEmptyObject(rulesTree)) { + if (!$.isEmptyObject(this.rules)) { this._checkMediaQueries(); } } diff --git a/test/visual/responsive-menu/re-init.html b/test/visual/responsive-menu/re-init.html new file mode 100644 index 000000000..b81c0f3dd --- /dev/null +++ b/test/visual/responsive-menu/re-init.html @@ -0,0 +1,55 @@ + + + + + + + Foundation for Sites Testing + + + +
+

Responsive Menu: reInit

+ + +
+ + + + + +