Skip to content

Instantly share code, notes, and snippets.

@koriroys
Forked from alexspeller/gist:92b569851665faac92de
Created November 27, 2015 10:44
Show Gist options
  • Select an option

  • Save koriroys/74a6b9eb117ed7dbe2af to your computer and use it in GitHub Desktop.

Select an option

Save koriroys/74a6b9eb117ed7dbe2af to your computer and use it in GitHub Desktop.

Revisions

  1. @alexspeller alexspeller revised this gist Apr 10, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.coffee
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ App.ClickElsewhereMixin = Ember.Mixin.create

    #bound version of our instance method
    clickHandler: Em.computed ->
    @onClickElsewhere.bind(@)
    Em.run.bind @, 'onClickElsewhere'

    #logic for determining of a click has landed anywhere but our view
    elsewhereHandler: (e) ->
  2. @alexspeller alexspeller revised this gist Apr 7, 2015. 1 changed file with 5 additions and 9 deletions.
    14 changes: 5 additions & 9 deletions gistfile1.coffee
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,12 @@
    #original attribution https://gist.github.com/alexspeller/6251054

    bound = (fnName) -> Ember.computed fnName -> @get(fnName).bind(@)
    #original attribution https://gist.github.com/alexspeller/6251054 & https://gist.github.com/stevekane/6356006

    App.ClickElsewhereMixin = Ember.Mixin.create

    #use this method hook to define your desired behavior
    onClickElsewhere: Ember.K

    #bound version of our instance method
    clickHandler: bound "elsewhereHandler"
    clickHandler: Em.computed ->
    @onClickElsewhere.bind(@)

    #logic for determining of a click has landed anywhere but our view
    elsewhereHandler: (e) ->
    @@ -18,11 +16,9 @@ App.ClickElsewhereMixin = Ember.Mixin.create
    unless thisIsElement then @onClickElsewhere event

    #attach event listener to window when view in DOM
    didInsertElement: ->
    @_super.apply(@, arguments)
    setupClickEvent: Em.on 'didInsertElement', ->
    $(window).on "click", @get "clickHandler"

    #remove window event listener when view removed from DOM
    willDestroyElement: ->
    teardownClickEvent: Em.on 'willDestroyElement', ->
    $(window).off "click", @get "clickHandler"
    @_super.apply(@, arguments)
  3. @stevekane stevekane created this gist Aug 27, 2013.
    28 changes: 28 additions & 0 deletions gistfile1.coffee
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    #original attribution https://gist.github.com/alexspeller/6251054

    bound = (fnName) -> Ember.computed fnName -> @get(fnName).bind(@)

    App.ClickElsewhereMixin = Ember.Mixin.create

    #use this method hook to define your desired behavior
    onClickElsewhere: Ember.K

    #bound version of our instance method
    clickHandler: bound "elsewhereHandler"

    #logic for determining of a click has landed anywhere but our view
    elsewhereHandler: (e) ->
    element = @get "element"
    $target = $ e.target
    thisIsElement = $target.closest(element).length is 1
    unless thisIsElement then @onClickElsewhere event

    #attach event listener to window when view in DOM
    didInsertElement: ->
    @_super.apply(@, arguments)
    $(window).on "click", @get "clickHandler"

    #remove window event listener when view removed from DOM
    willDestroyElement: ->
    $(window).off "click", @get "clickHandler"
    @_super.apply(@, arguments)