Commit 08622e5

mo khan <mo@mokhan.ca>
2017-03-05 20:14:56
define api for loading behaviours.
1 parent 8ab9277
app/assets/javascripts/lib/behaviours/hamburger_menu.js.coffee
@@ -1,3 +1,6 @@
-$(document).on "turbolinks:load", () ->
-  $(".nav-toggle").on "click", (event) ->
-    $(".nav-menu").toggleClass "is-active"
+class HamburgerMenu extends Stronglifters.Behaviour
+  @on "turbolinks:load"
+
+  execute: ->
+    $(".nav-toggle").on "click", (event) ->
+      $(".nav-menu").toggleClass "is-active"
app/assets/javascripts/lib/autoview.js.coffee
@@ -25,7 +25,3 @@ class Stronglifters.Autoview extends Backbone.View
       el: element
       $el: $element
     view.render()
-
-document.addEventListener "turbolinks:load", ->
-  for element in $("[data-autoview-name]")
-    Stronglifters.Autoview.install(element)
app/assets/javascripts/lib/behaviour.js.coffee
@@ -0,0 +1,11 @@
+class Stronglifters.Behaviour
+  @events: {}
+
+  @on: (event) ->
+    @events[event] ?= []
+    @events[event].push(this)
+
+  @install: () ->
+    for event of @events
+      for behaviour in @events[event]
+        new behaviour().execute()
app/assets/javascripts/application.js.coffee
@@ -31,7 +31,10 @@ window.Stronglifters ?= {}
 
 $(document).on 'turbolinks:load', () =>
   new Stronglifters.Startup().start()
+  Stronglifters.Behaviour.install()
   for element in $("[data-autovue]")
     window.app = new Vue
       el: element
       data: gon
+  for element in $("[data-autoview-name]")
+    Stronglifters.Autoview.install(element)