unignore bower_components
[bootswatch] / 2 / bower_components / bootstrap / js / bootstrap-popover.js
1 /* ===========================================================
2  * bootstrap-popover.js v2.3.2
3  * http://getbootstrap.com/2.3.2/javascript.html#popovers
4  * ===========================================================
5  * Copyright 2013 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);