diff --git a/app/assets/javascripts/modules/collapsible_group.js b/app/assets/javascripts/modules/collapsible_group.js index e5df36fda..75f6971dc 100644 --- a/app/assets/javascripts/modules/collapsible_group.js +++ b/app/assets/javascripts/modules/collapsible_group.js @@ -16,7 +16,7 @@ $links = element.find('.js-toggle-all'); element.on('click', '.js-toggle-all', toggleAll); - element.on('shown.bs.collapse hidden.bs.collapse', updateLinkText); + element.on('shown.bs.collapse hidden.bs.collapse nested:fieldRemoved nested:fieldAdded', updateLinkText); function toggleAll(event) { var action = hasOpenItems() ? 'hide' : 'show'; @@ -26,7 +26,7 @@ } function hasOpenItems() { - return element.find('.collapse.in').length > 0; + return element.find('.collapse.in:visible').length > 0; } function updateLinkText() { diff --git a/app/views/shared/_part.html.erb b/app/views/shared/_part.html.erb index 7b5161b11..f5fd5e64b 100644 --- a/app/views/shared/_part.html.erb +++ b/app/views/shared/_part.html.erb @@ -7,7 +7,7 @@ -
+
<%= f.inputs do %> <%= f.input :title, diff --git a/spec/javascripts/spec/collapsible_group.spec.js b/spec/javascripts/spec/collapsible_group.spec.js index c4dd2ad7f..2c91f1f82 100644 --- a/spec/javascripts/spec/collapsible_group.spec.js +++ b/spec/javascripts/spec/collapsible_group.spec.js @@ -92,4 +92,16 @@ describe('A collapsible group module', function() { }); }); + describe('when a new group is added or removed', function() { + it('updates the link text', function() { + element.find('.collapse').first().addClass('in'); + element.trigger('nested:fieldAdded'); + expect(element.find('.js-toggle-all').text()).toBe('Collapse'); + + element.find('.collapse.in').first().hide(); + element.trigger('nested:fieldRemoved'); + expect(element.find('.js-toggle-all').text()).toBe('Expand'); + }); + }); + });