Sha256: 6aa6787d6e33e071a0b76b5790cf9aaabb92a751285ef55ec54c8d05e0d4d105

Contents?: true

Size: 1.57 KB

Versions: 19

Compression:

Stored size: 1.57 KB

Contents

class ActiveAdmin.Popover

  constructor: (@options, @element) ->
    @$element = $(@element)

    defaults = {
      fadeInDuration: 20,
      fadeOutDuration: 100,
      autoOpen: true,
      pageWrapperElement: "#wrapper",
      onClickActionItemCallback: null
    }

    @options = $.extend defaults, options
    @isOpen  = false

    unless (@$popover = $ @$element.attr 'href').length
      @$popover = @$element.next '.popover'

    @_buildPopover()
    @_bind()

  open: ->
    @isOpen = true
    @$popover.fadeIn @options.fadeInDuration
    @_positionPopover()
    @_positionNipple()
    @

  close: ->
    @isOpen = false
    @$popover.fadeOut this.options.fadeOutDuration
    @

  destroy: ->
    @$element.removeData 'popover'
    @$element.unbind()
    @$element = null
    @

  # Private

  _buildPopover: ->
    @$nipple = $('<div class="popover_nipple"></div>')
    @$popover.prepend @$nipple
    @$popover.hide()
    @$popover.addClass 'popover'


  _bind: ->
    $(@options.pageWrapperElement).click =>
      @close() if @isOpen

    if @options.autoOpen
      @$element.click (e)=>
        e.stopPropagation()
        if @isOpen then @close() else @open()

  _positionPopover: ->
    button_center = @$element.offset().left + @$element.outerWidth() / 2
    popover_center = @$popover.outerWidth() / 2
    @$popover.css 'left', button_center - popover_center

  _positionNipple: ->
    @$popover.css 'top', @$element.offset().top     + @$element.outerHeight() + 10
    @$nipple.css 'left', @$popover.outerWidth() / 2 - @$nipple.outerWidth() / 2

$.widget.bridge 'popover', ActiveAdmin.Popover

Version data entries

19 entries across 19 versions & 4 rubygems

Version Path
yousty-activeadmin-1.0.17.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.16.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.15.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.14.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.13.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.12.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.11.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.10.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.9.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.8.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
activeadmin-1.0.0.pre1 app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.7.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.6.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
yousty-activeadmin-1.0.5.pre app/assets/javascripts/active_admin/lib/popover.js.coffee
active_administration-0.0.3 app/assets/javascripts/active_admin/lib/popover.js.coffee
activeadministration-0.0.2 app/assets/javascripts/active_admin/lib/popover.js.coffee
active_administration-0.0.2 app/assets/javascripts/active_admin/lib/popover.js.coffee
activeadministration-0.0.1 app/assets/javascripts/active_admin/lib/popover.js.coffee
active_administration-0.0.1 app/assets/javascripts/active_admin/lib/popover.js.coffee