scala-news-reader

rss/atom news reader in scala

git clone https://9o.is/git/scala-news-reader.git

bootstrap-popover.js

(3115B)


      1 /* ===========================================================
      2  * bootstrap-popover.js v2.3.2
      3  * http://twitter.github.com/bootstrap/javascript.html#popovers
      4  * ===========================================================
      5  * Copyright 2012 Twitter, Inc.
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  * http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  * =========================================================== */
     19 
     20 
     21 !function ($) {
     22 
     23   "use strict"; // jshint ;_;
     24 
     25 
     26  /* POPOVER PUBLIC CLASS DEFINITION
     27   * =============================== */
     28 
     29   var Popover = function (element, options) {
     30     this.init('popover', element, options)
     31   }
     32 
     33 
     34   /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
     35      ========================================== */
     36 
     37   Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
     38 
     39     constructor: Popover
     40 
     41   , setContent: function () {
     42       var $tip = this.tip()
     43         , title = this.getTitle()
     44         , content = this.getContent()
     45 
     46       $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
     47       $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
     48 
     49       $tip.removeClass('fade top bottom left right in')
     50     }
     51 
     52   , hasContent: function () {
     53       return this.getTitle() || this.getContent()
     54     }
     55 
     56   , getContent: function () {
     57       var content
     58         , $e = this.$element
     59         , o = this.options
     60 
     61       content = (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
     62         || $e.attr('data-content')
     63 
     64       return content
     65     }
     66 
     67   , tip: function () {
     68       if (!this.$tip) {
     69         this.$tip = $(this.options.template)
     70       }
     71       return this.$tip
     72     }
     73 
     74   , destroy: function () {
     75       this.hide().$element.off('.' + this.type).removeData(this.type)
     76     }
     77 
     78   })
     79 
     80 
     81  /* POPOVER PLUGIN DEFINITION
     82   * ======================= */
     83 
     84   var old = $.fn.popover
     85 
     86   $.fn.popover = function (option) {
     87     return this.each(function () {
     88       var $this = $(this)
     89         , data = $this.data('popover')
     90         , options = typeof option == 'object' && option
     91       if (!data) $this.data('popover', (data = new Popover(this, options)))
     92       if (typeof option == 'string') data[option]()
     93     })
     94   }
     95 
     96   $.fn.popover.Constructor = Popover
     97 
     98   $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
     99     placement: 'right'
    100   , trigger: 'click'
    101   , content: ''
    102   , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
    103   })
    104 
    105 
    106  /* POPOVER NO CONFLICT
    107   * =================== */
    108 
    109   $.fn.popover.noConflict = function () {
    110     $.fn.popover = old
    111     return this
    112   }
    113 
    114 }(window.jQuery);