app/assets/javascripts/active_admin/lib/popover.js.coffee in yousty-activeadmin-1.0.4.pre vs app/assets/javascripts/active_admin/lib/popover.js.coffee in yousty-activeadmin-1.0.5.pre

- old
+ new

@@ -1,97 +1,68 @@ +class ActiveAdmin.Popover -window.ActiveAdmin.Popover = class ActiveAdmin.Popover - constructor: (@options, @element) -> - @$element = $(@element) defaults = { fadeInDuration: 20, fadeOutDuration: 100, autoOpen: true, pageWrapperElement: "#wrapper", onClickActionItemCallback: null } - @options = $.extend({}, defaults, options) + @options = $.extend defaults, options + @isOpen = false - @$popover = null - @isOpen = false + unless (@$popover = $ @$element.attr 'href').length + @$popover = @$element.next '.popover' - if $(@$element.attr("href")).length > 0 - @$popover = $(@$element.attr("href")) - else - @$popover = @$element.next(".popover") - - @_buildPopover() @_bind() open: -> @isOpen = true @$popover.fadeIn @options.fadeInDuration - @_positionPopover() @_positionNipple() + @ - return @ - - close: -> - @isOpen = false; - @$popover.fadeOut this.options.fadeOutDuration; + @isOpen = false + @$popover.fadeOut this.options.fadeOutDuration + @ - return @ - destroy: -> - @$element.removeData('popover'); - @$element.unbind(); - @$element = null; + @$element.removeData 'popover' + @$element.unbind() + @$element = null + @ - return @ - - option: -> - # ?? - # Private _buildPopover: -> - @$popover.prepend("<div class=\"popover_nipple\"></div>") - + @$nipple = $('<div class="popover_nipple"></div>') + @$popover.prepend @$nipple @$popover.hide() + @$popover.addClass 'popover' - @$popover.addClass "popover" - _bind: -> - $(@options.pageWrapperElement).bind 'click', (e) => - if @isOpen is true - @close() + $(@options.pageWrapperElement).click => + @close() if @isOpen - if @options.autoOpen is true - @$element.bind 'click', () => - if @isOpen is true - @close() - else - @open() + if @options.autoOpen + @$element.click (e)=> + e.stopPropagation() + if @isOpen then @close() else @open() - false - _positionPopover: -> - centerOfButtonFromLeft = @$element.offset().left + @$element.outerWidth() / 2 - centerOfPopoverFromLeft = @$popover.outerWidth() / 2 - popoverLeftPos = centerOfButtonFromLeft - centerOfPopoverFromLeft - @$popover.css "left", popoverLeftPos + button_center = @$element.offset().left + @$element.outerWidth() / 2 + popover_center = @$popover.outerWidth() / 2 + @$popover.css 'left', button_center - popover_center _positionNipple: -> - centerOfPopoverFromLeft = @$popover.outerWidth() / 2 - bottomOfButtonFromTop = @$element.offset().top + @$element.outerHeight() + 10 - @$popover.css "top", bottomOfButtonFromTop - $nipple = @$popover.find(".popover_nipple") - centerOfnippleFromLeft = $nipple.outerWidth() / 2 - nippleLeftPos = centerOfPopoverFromLeft - centerOfnippleFromLeft - $nipple.css "left", nippleLeftPos + @$popover.css 'top', @$element.offset().top + @$element.outerHeight() + 10 + @$nipple.css 'left', @$popover.outerWidth() / 2 - @$nipple.outerWidth() / 2 -(($) -> - $.widget.bridge 'popover', ActiveAdmin.Popover -)(jQuery) +$.widget.bridge 'popover', ActiveAdmin.Popover