diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 1a0a733ce..3c6feb6b3 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -56,6 +56,7 @@ //= require legislation_allegations //= require legislation_annotatable //= require watch_form_changes +//= require tree_navigator //= require custom var initialize_modules = function() { @@ -87,6 +88,7 @@ var initialize_modules = function() { if ( $(".legislation-annotatable").length ) App.LegislationAnnotatable.initialize(); App.WatchFormChanges.initialize(); + App.TreeNavigator.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/tree_navigator.js.coffee b/app/assets/javascripts/tree_navigator.js.coffee new file mode 100644 index 000000000..fc3dae26d --- /dev/null +++ b/app/assets/javascripts/tree_navigator.js.coffee @@ -0,0 +1,32 @@ +App.TreeNavigator = + closeNodes: (nodes) -> + children = nodes.children('ul') + + if(children.length == 0) + return + + children.each -> + link = $(this).prev('a') + $('').insertBefore(link) + $(this).hide() + App.TreeNavigator.closeNodes($(this).children()) + + initialize: -> + elem = $('[data-tree-navigator]') + if(elem.length == 0) + return + + ul = elem.find('ul:eq(0)') + if(ul.length && ul.children().length) + App.TreeNavigator.closeNodes(ul.children()) + + $('[data-tree-navigator] span').on + click: (e) -> + elem = $(this) + if(elem.hasClass('open')) + elem.removeClass('open').addClass('closed') + elem.siblings('ul').hide() + else if(elem.hasClass('closed')) + elem.removeClass('closed').addClass('open') + elem.siblings('ul').show() + diff --git a/app/views/legislation/draft_versions/show.html.erb b/app/views/legislation/draft_versions/show.html.erb index df3d49047..5d7d7aee1 100644 --- a/app/views/legislation/draft_versions/show.html.erb +++ b/app/views/legislation/draft_versions/show.html.erb @@ -38,9 +38,9 @@