diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -8,7 +8,7 @@ return array( 'names' => array( 'core.pkg.css' => 'ca3f6a60', - 'core.pkg.js' => '3331b919', + 'core.pkg.js' => 'e9484a4e', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => 'bb338e4b', 'differential.pkg.js' => '3cfa26f9', @@ -205,7 +205,7 @@ 'rsrc/externals/javelin/lib/JSON.js' => '69adf288', 'rsrc/externals/javelin/lib/Leader.js' => '331b1611', 'rsrc/externals/javelin/lib/Mask.js' => '8a41885b', - 'rsrc/externals/javelin/lib/Quicksand.js' => '7ba665f5', + 'rsrc/externals/javelin/lib/Quicksand.js' => '977e1f47', 'rsrc/externals/javelin/lib/Request.js' => '94b750d2', 'rsrc/externals/javelin/lib/Resource.js' => '44959b73', 'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692', @@ -488,7 +488,7 @@ 'rsrc/js/core/behavior-scrollbar.js' => '834a1173', 'rsrc/js/core/behavior-search-typeahead.js' => '048330fa', 'rsrc/js/core/behavior-select-on-click.js' => '4e3e79a6', - 'rsrc/js/core/behavior-toggle-class.js' => 'e566f52c', + 'rsrc/js/core/behavior-toggle-class.js' => '5d7c9f33', 'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884', 'rsrc/js/core/behavior-tooltip.js' => '3ee3408b', 'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d', @@ -659,7 +659,7 @@ 'javelin-behavior-slowvote-embed' => '887ad43f', 'javelin-behavior-stripe-payment-form' => '3f5d6dbf', 'javelin-behavior-test-payment-form' => 'fc91ab6c', - 'javelin-behavior-toggle-class' => 'e566f52c', + 'javelin-behavior-toggle-class' => '5d7c9f33', 'javelin-behavior-typeahead-browse' => '635de1ec', 'javelin-behavior-typeahead-search' => '93d0c9e3', 'javelin-behavior-view-placeholder' => '47830651', @@ -677,7 +677,7 @@ 'javelin-leader' => '331b1611', 'javelin-magical-init' => '3010e992', 'javelin-mask' => '8a41885b', - 'javelin-quicksand' => '7ba665f5', + 'javelin-quicksand' => '977e1f47', 'javelin-reactor' => '2b8de964', 'javelin-reactor-dom' => 'c90a04fc', 'javelin-reactor-node-calmer' => '76f4ebed', @@ -1234,6 +1234,11 @@ 'javelin-dom', 'javelin-vector', ), + '5d7c9f33' => array( + 'javelin-behavior', + 'javelin-stratcom', + 'javelin-dom', + ), '5e9f347c' => array( 'javelin-behavior', 'multirow-row-manager', @@ -1408,9 +1413,6 @@ 'javelin-stratcom', 'javelin-util', ), - '7ba665f5' => array( - 'javelin-install', - ), '7cbe244b' => array( 'javelin-install', 'javelin-util', @@ -1594,6 +1596,9 @@ 'javelin-resource', 'javelin-routable', ), + '977e1f47' => array( + 'javelin-install', + ), '988040b4' => array( 'javelin-install', 'javelin-dom', @@ -1895,11 +1900,6 @@ 'javelin-behavior', 'javelin-dom', ), - 'e566f52c' => array( - 'javelin-behavior', - 'javelin-stratcom', - 'javelin-dom', - ), 'e5822781' => array( 'javelin-behavior', 'javelin-dom', diff --git a/webroot/rsrc/externals/javelin/lib/Quicksand.js b/webroot/rsrc/externals/javelin/lib/Quicksand.js --- a/webroot/rsrc/externals/javelin/lib/Quicksand.js +++ b/webroot/rsrc/externals/javelin/lib/Quicksand.js @@ -53,6 +53,7 @@ var path = self._getRelativeURI(window.location); self._id = window.history.state || 0; var id = self._id; + self._onpage = id; self._history.push({path: path, id: id}); self._responses[id] = first_response; diff --git a/webroot/rsrc/js/core/behavior-toggle-class.js b/webroot/rsrc/js/core/behavior-toggle-class.js --- a/webroot/rsrc/js/core/behavior-toggle-class.js +++ b/webroot/rsrc/js/core/behavior-toggle-class.js @@ -14,17 +14,32 @@ * Optionally, you may provide a `state` key to set the default state of the * element. */ -JX.behavior('toggle-class', function() { - JX.Stratcom.listen( - ['touchstart', 'mousedown'], - 'jx-toggle-class', - function(e) { - e.kill(); +JX.behavior('toggle-class', function(config, statics) { + statics.install = statics.install || install(); - var t = e.getNodeData('jx-toggle-class'); - t.state = !t.state; - for (var k in t.map) { - JX.DOM.alterClass(JX.$(k), t.map[k], t.state); - } - }); + function install() { + JX.Stratcom.listen( + ['touchstart', 'mousedown'], + 'jx-toggle-class', + function(e) { + e.kill(); + + var t = e.getNodeData('jx-toggle-class'); + t.state = !t.state; + for (var k in t.map) { + JX.DOM.alterClass(JX.$(k), t.map[k], t.state); + } + }); + + // Swallow the regular click handler event so e.g. Quicksand + // click handler doesn't get a hold of it + JX.Stratcom.listen( + ['click'], + 'jx-toggle-class', + function(e) { + e.kill(); + }); + + return true; + } });