|
1 /* =========================================================== |
|
2 * bootstrap-popover.js v2.3.1 |
|
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); |