Skip to content

Commit 4f490f4

Browse files
author
Robert Mosolgo
committed
Merge pull request #466 from goodreads/ujs-custom-selector
add ability to pass in a custom selector function to mountComponents
2 parents 58842d4 + c99fa13 commit 4f490f4

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

lib/assets/javascripts/react_ujs_mount.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
parent = searchSelector;
2828
break;
2929
case 'string':
30-
selector = searchSelector + ' [' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']';
30+
selector = searchSelector + '[' + window.ReactRailsUJS.CLASS_NAME_ATTR + '], ' +
31+
searchSelector + ' [' + window.ReactRailsUJS.CLASS_NAME_ATTR + ']';
3132
parent = document;
3233
break
3334
default:

test/dummy/app/views/pages/show.html.erb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
<li><%= link_to 'Bob', page_path(:id => 1) %></li>
44
</ul>
55

6-
<div id='test-component'>
7-
<%= react_component 'HelloMessage', :name => @name %>
6+
<div id='component-parent'>
7+
<%= react_component 'HelloMessage', { :name => @name }, { :id => 'component' } %>
88
</div>
99

10-
<a href='#' onClick="ReactRailsUJS.unmountComponents('#test-component')">Unmount at selector #test-component</a>
11-
<a href='#' onClick="ReactRailsUJS.mountComponents('#test-component')">Mount at selector #test-component</a>
10+
<a href='#' onClick="ReactRailsUJS.unmountComponents('#component-parent')">Unmount at selector #component-parent</a>
11+
<a href='#' onClick="ReactRailsUJS.mountComponents('#component-parent')">Mount at selector #component-parent</a>
1212

13-
<a href='#' onClick="ReactRailsUJS.unmountComponents(document.querySelector('#test-component'))">Unmount at node #test-component</a>
14-
<a href='#' onClick="ReactRailsUJS.mountComponents(document.querySelector('#test-component'))">Mount at node #test-component</a>
13+
<a href='#' onClick="ReactRailsUJS.unmountComponents('#component')">Unmount at selector #component</a>
14+
<a href='#' onClick="ReactRailsUJS.mountComponents('#component')">Mount at selector #component</a>
15+
16+
<a href='#' onClick="ReactRailsUJS.unmountComponents(document.querySelector('#component-parent'))">Unmount at node #component-parent</a>
17+
<a href='#' onClick="ReactRailsUJS.mountComponents(document.querySelector('#component-parent'))">Mount at node #component-parent</a>

test/react/rails/react_rails_ujs_test.rb

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,25 +91,36 @@ class ReactRailsUJSTest < ActionDispatch::IntegrationTest
9191
assert page.has_content?('Hello Bob')
9292
end
9393

94-
test 'react_ujs can unmount/mount using a selector reference' do
94+
test 'react_ujs can unmount/mount using a selector reference for a component parent' do
9595
visit '/pages/1'
9696
assert page.has_content?('Hello Bob')
9797

98-
page.click_link "Unmount at selector #test-component"
98+
page.click_link "Unmount at selector #component-parent"
9999
assert page.has_no_content?('Hello Bob')
100100

101-
page.click_link "Mount at selector #test-component"
101+
page.click_link "Mount at selector #component-parent"
102+
assert page.has_content?('Hello Bob')
103+
end
104+
105+
test 'react_ujs can unmount/mount using a selector reference for the component' do
106+
visit '/pages/1'
107+
assert page.has_content?('Hello Bob')
108+
109+
page.click_link "Unmount at selector #component"
110+
assert page.has_no_content?('Hello Bob')
111+
112+
page.click_link "Mount at selector #component"
102113
assert page.has_content?('Hello Bob')
103114
end
104115

105116
test 'react_ujs can unmount/mount using a dom node context' do
106117
visit '/pages/1'
107118
assert page.has_content?('Hello Bob')
108119

109-
page.click_link "Unmount at node #test-component"
120+
page.click_link "Unmount at node #component-parent"
110121
assert page.has_no_content?('Hello Bob')
111122

112-
page.click_link "Mount at node #test-component"
123+
page.click_link "Mount at node #component-parent"
113124
assert page.has_content?('Hello Bob')
114125
end
115126

0 commit comments

Comments
 (0)