diff --git a/lib/assets/javascripts/react_ujs.js b/lib/assets/javascripts/react_ujs.js index 4567c483..36ace40f 100644 --- a/lib/assets/javascripts/react_ujs.js +++ b/lib/assets/javascripts/react_ujs.js @@ -2,5 +2,6 @@ //= require react_ujs_turbolinks //= require react_ujs_turbolinks_classic //= require react_ujs_turbolinks_classic_deprecated +//= require react_ujs_pjax //= require react_ujs_native //= require react_ujs_event_setup diff --git a/lib/assets/javascripts/react_ujs_event_setup.js b/lib/assets/javascripts/react_ujs_event_setup.js index 7f716749..a1048c5a 100644 --- a/lib/assets/javascripts/react_ujs_event_setup.js +++ b/lib/assets/javascripts/react_ujs_event_setup.js @@ -21,6 +21,8 @@ } else { ReactRailsUJS.TurbolinksClassicDeprecated.setup(); } + } else if ($ && typeof $.pjax === 'function') { + ReactRailsUJS.pjax.setup(); } else { ReactRailsUJS.Native.setup(); } diff --git a/lib/assets/javascripts/react_ujs_pjax.js b/lib/assets/javascripts/react_ujs_pjax.js new file mode 100644 index 00000000..a0dad921 --- /dev/null +++ b/lib/assets/javascripts/react_ujs_pjax.js @@ -0,0 +1,10 @@ +;(function(document, window) { + window.ReactRailsUJS.pjax = { + // pjax support + setup: function() { + ReactRailsUJS.handleEvent('ready', function() {window.ReactRailsUJS.mountComponents()}); + ReactRailsUJS.handleEvent('pjax:end', function(e) {window.ReactRailsUJS.mountComponents(e.target)}); + ReactRailsUJS.handleEvent('pjax:beforeReplace', function(e) {window.ReactRailsUJS.unmountComponents(e.target)}); + } + }; +})(document, window);