lib/assets/javascripts/react_ujs.js.erb in react-rails-1.3.1 vs lib/assets/javascripts/react_ujs.js.erb in react-rails-1.3.2

- old
+ new

@@ -12,21 +12,33 @@ RAILS_ENV_DEVELOPMENT: <%= Rails.env == "development" %>, // helper method for the mount and unmount methods to find the // `data-react-class` DOM elements findDOMNodes: function(searchSelector) { // we will use fully qualified paths as we do not bind the callbacks - var selector; - if (typeof searchSelector === 'undefined') { - var selector = '[' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']'; - } else { - var selector = searchSelector + ' [' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']'; + var selector, parent; + + switch (typeof searchSelector) { + case 'undefined': + selector = '[' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']'; + parent = document; + break; + case 'object': + selector = '[' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']'; + parent = searchSelector; + break; + case 'string': + selector = searchSelector + ' [' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']'; + parent = document; + break + default: + break; } if ($) { - return $(selector); + return $(selector, parent); } else { - return document.querySelectorAll(selector); + return parent.querySelectorAll(selector); } }, mountComponents: function(searchSelector) { var nodes = window.ReactRailsUJS.findDOMNodes(searchSelector); @@ -39,10 +51,13 @@ // Fallback to eval to handle cases like 'My.React.ComponentName'. var constructor = window[className] || eval.call(window, className); var propsJson = node.getAttribute(window.ReactRailsUJS.PROPS_ATTR); var props = propsJson && JSON.parse(propsJson); - React.render(React.createElement(constructor, props), node); + // Prefer ReactDOM if defined (introduced in 0.14) + var renderer = (typeof ReactDOM == "object") ? ReactDOM : React; + + renderer.render(React.createElement(constructor, props), node); } }, unmountComponents: function(searchSelector) { var nodes = window.ReactRailsUJS.findDOMNodes(searchSelector);