summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2017-03-05 13:14:56 -0700
committermo khan <mo@mokhan.ca>2017-03-05 13:14:56 -0700
commit08622e51537256ad8972e8c58f62fcd9008ceab7 (patch)
treef0009b44a855d06d0af43804c2ace37ca0d78b4b
parent8ab9277103074339972f17f55a3c5fd222d59e23 (diff)
define api for loading behaviours.
-rw-r--r--app/assets/javascripts/application.js.coffee3
-rw-r--r--app/assets/javascripts/lib/autoview.js.coffee4
-rw-r--r--app/assets/javascripts/lib/behaviour.js.coffee11
-rw-r--r--app/assets/javascripts/lib/behaviours/hamburger_menu.js.coffee9
4 files changed, 20 insertions, 7 deletions
diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee
index 9445d8c..0dec3be 100644
--- a/app/assets/javascripts/application.js.coffee
+++ b/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)
diff --git a/app/assets/javascripts/lib/autoview.js.coffee b/app/assets/javascripts/lib/autoview.js.coffee
index 8957248..91c79f6 100644
--- a/app/assets/javascripts/lib/autoview.js.coffee
+++ b/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)
diff --git a/app/assets/javascripts/lib/behaviour.js.coffee b/app/assets/javascripts/lib/behaviour.js.coffee
new file mode 100644
index 0000000..c2a5183
--- /dev/null
+++ b/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()
diff --git a/app/assets/javascripts/lib/behaviours/hamburger_menu.js.coffee b/app/assets/javascripts/lib/behaviours/hamburger_menu.js.coffee
index 5d11dcf..b12a682 100644
--- a/app/assets/javascripts/lib/behaviours/hamburger_menu.js.coffee
+++ b/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"