diff options
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/bootstrap.js (renamed from src/js/bootstrap-3.3.7.js) | 397 |
1 files changed, 300 insertions, 97 deletions
diff --git a/src/js/bootstrap-3.3.7.js b/src/js/bootstrap.js index 8a2e99a..170bd60 100644 --- a/src/js/bootstrap-3.3.7.js +++ b/src/js/bootstrap.js | |||
@@ -1,6 +1,6 @@ | |||
1 | /*! | 1 | /*! |
2 | * Bootstrap v3.3.7 (http://getbootstrap.com) | 2 | * Bootstrap v3.4.1 (https://getbootstrap.com/) |
3 | * Copyright 2011-2016 Twitter, Inc. | 3 | * Copyright 2011-2019 Twitter, Inc. |
4 | * Licensed under the MIT license | 4 | * Licensed under the MIT license |
5 | */ | 5 | */ |
6 | 6 | ||
@@ -17,10 +17,10 @@ if (typeof jQuery === 'undefined') { | |||
17 | }(jQuery); | 17 | }(jQuery); |
18 | 18 | ||
19 | /* ======================================================================== | 19 | /* ======================================================================== |
20 | * Bootstrap: transition.js v3.3.7 | 20 | * Bootstrap: transition.js v3.4.1 |
21 | * http://getbootstrap.com/javascript/#transitions | 21 | * https://getbootstrap.com/docs/3.4/javascript/#transitions |
22 | * ======================================================================== | 22 | * ======================================================================== |
23 | * Copyright 2011-2016 Twitter, Inc. | 23 | * Copyright 2011-2019 Twitter, Inc. |
24 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 24 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
25 | * ======================================================================== */ | 25 | * ======================================================================== */ |
26 | 26 | ||
@@ -28,7 +28,7 @@ if (typeof jQuery === 'undefined') { | |||
28 | +function ($) { | 28 | +function ($) { |
29 | 'use strict'; | 29 | 'use strict'; |
30 | 30 | ||
31 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) | 31 | // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/) |
32 | // ============================================================ | 32 | // ============================================================ |
33 | 33 | ||
34 | function transitionEnd() { | 34 | function transitionEnd() { |
@@ -50,7 +50,7 @@ if (typeof jQuery === 'undefined') { | |||
50 | return false // explicit for ie8 ( ._.) | 50 | return false // explicit for ie8 ( ._.) |
51 | } | 51 | } |
52 | 52 | ||
53 | // http://blog.alexmaccaw.com/css-transitions | 53 | // https://blog.alexmaccaw.com/css-transitions |
54 | $.fn.emulateTransitionEnd = function (duration) { | 54 | $.fn.emulateTransitionEnd = function (duration) { |
55 | var called = false | 55 | var called = false |
56 | var $el = this | 56 | var $el = this |
@@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') { | |||
77 | }(jQuery); | 77 | }(jQuery); |
78 | 78 | ||
79 | /* ======================================================================== | 79 | /* ======================================================================== |
80 | * Bootstrap: alert.js v3.3.7 | 80 | * Bootstrap: alert.js v3.4.1 |
81 | * http://getbootstrap.com/javascript/#alerts | 81 | * https://getbootstrap.com/docs/3.4/javascript/#alerts |
82 | * ======================================================================== | 82 | * ======================================================================== |
83 | * Copyright 2011-2016 Twitter, Inc. | 83 | * Copyright 2011-2019 Twitter, Inc. |
84 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 84 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
85 | * ======================================================================== */ | 85 | * ======================================================================== */ |
86 | 86 | ||
@@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') { | |||
96 | $(el).on('click', dismiss, this.close) | 96 | $(el).on('click', dismiss, this.close) |
97 | } | 97 | } |
98 | 98 | ||
99 | Alert.VERSION = '3.3.7' | 99 | Alert.VERSION = '3.4.1' |
100 | 100 | ||
101 | Alert.TRANSITION_DURATION = 150 | 101 | Alert.TRANSITION_DURATION = 150 |
102 | 102 | ||
@@ -109,7 +109,8 @@ if (typeof jQuery === 'undefined') { | |||
109 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 | 109 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 |
110 | } | 110 | } |
111 | 111 | ||
112 | var $parent = $(selector === '#' ? [] : selector) | 112 | selector = selector === '#' ? [] : selector |
113 | var $parent = $(document).find(selector) | ||
113 | 114 | ||
114 | if (e) e.preventDefault() | 115 | if (e) e.preventDefault() |
115 | 116 | ||
@@ -172,10 +173,10 @@ if (typeof jQuery === 'undefined') { | |||
172 | }(jQuery); | 173 | }(jQuery); |
173 | 174 | ||
174 | /* ======================================================================== | 175 | /* ======================================================================== |
175 | * Bootstrap: button.js v3.3.7 | 176 | * Bootstrap: button.js v3.4.1 |
176 | * http://getbootstrap.com/javascript/#buttons | 177 | * https://getbootstrap.com/docs/3.4/javascript/#buttons |
177 | * ======================================================================== | 178 | * ======================================================================== |
178 | * Copyright 2011-2016 Twitter, Inc. | 179 | * Copyright 2011-2019 Twitter, Inc. |
179 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 180 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
180 | * ======================================================================== */ | 181 | * ======================================================================== */ |
181 | 182 | ||
@@ -192,7 +193,7 @@ if (typeof jQuery === 'undefined') { | |||
192 | this.isLoading = false | 193 | this.isLoading = false |
193 | } | 194 | } |
194 | 195 | ||
195 | Button.VERSION = '3.3.7' | 196 | Button.VERSION = '3.4.1' |
196 | 197 | ||
197 | Button.DEFAULTS = { | 198 | Button.DEFAULTS = { |
198 | loadingText: 'loading...' | 199 | loadingText: 'loading...' |
@@ -298,10 +299,10 @@ if (typeof jQuery === 'undefined') { | |||
298 | }(jQuery); | 299 | }(jQuery); |
299 | 300 | ||
300 | /* ======================================================================== | 301 | /* ======================================================================== |
301 | * Bootstrap: carousel.js v3.3.7 | 302 | * Bootstrap: carousel.js v3.4.1 |
302 | * http://getbootstrap.com/javascript/#carousel | 303 | * https://getbootstrap.com/docs/3.4/javascript/#carousel |
303 | * ======================================================================== | 304 | * ======================================================================== |
304 | * Copyright 2011-2016 Twitter, Inc. | 305 | * Copyright 2011-2019 Twitter, Inc. |
305 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 306 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
306 | * ======================================================================== */ | 307 | * ======================================================================== */ |
307 | 308 | ||
@@ -329,7 +330,7 @@ if (typeof jQuery === 'undefined') { | |||
329 | .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) | 330 | .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) |
330 | } | 331 | } |
331 | 332 | ||
332 | Carousel.VERSION = '3.3.7' | 333 | Carousel.VERSION = '3.4.1' |
333 | 334 | ||
334 | Carousel.TRANSITION_DURATION = 600 | 335 | Carousel.TRANSITION_DURATION = 600 |
335 | 336 | ||
@@ -443,7 +444,9 @@ if (typeof jQuery === 'undefined') { | |||
443 | var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" | 444 | var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" |
444 | if ($.support.transition && this.$element.hasClass('slide')) { | 445 | if ($.support.transition && this.$element.hasClass('slide')) { |
445 | $next.addClass(type) | 446 | $next.addClass(type) |
446 | $next[0].offsetWidth // force reflow | 447 | if (typeof $next === 'object' && $next.length) { |
448 | $next[0].offsetWidth // force reflow | ||
449 | } | ||
447 | $active.addClass(direction) | 450 | $active.addClass(direction) |
448 | $next.addClass(direction) | 451 | $next.addClass(direction) |
449 | $active | 452 | $active |
@@ -505,10 +508,17 @@ if (typeof jQuery === 'undefined') { | |||
505 | // ================= | 508 | // ================= |
506 | 509 | ||
507 | var clickHandler = function (e) { | 510 | var clickHandler = function (e) { |
508 | var href | ||
509 | var $this = $(this) | 511 | var $this = $(this) |
510 | var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 | 512 | var href = $this.attr('href') |
513 | if (href) { | ||
514 | href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 | ||
515 | } | ||
516 | |||
517 | var target = $this.attr('data-target') || href | ||
518 | var $target = $(document).find(target) | ||
519 | |||
511 | if (!$target.hasClass('carousel')) return | 520 | if (!$target.hasClass('carousel')) return |
521 | |||
512 | var options = $.extend({}, $target.data(), $this.data()) | 522 | var options = $.extend({}, $target.data(), $this.data()) |
513 | var slideIndex = $this.attr('data-slide-to') | 523 | var slideIndex = $this.attr('data-slide-to') |
514 | if (slideIndex) options.interval = false | 524 | if (slideIndex) options.interval = false |
@@ -536,10 +546,10 @@ if (typeof jQuery === 'undefined') { | |||
536 | }(jQuery); | 546 | }(jQuery); |
537 | 547 | ||
538 | /* ======================================================================== | 548 | /* ======================================================================== |
539 | * Bootstrap: collapse.js v3.3.7 | 549 | * Bootstrap: collapse.js v3.4.1 |
540 | * http://getbootstrap.com/javascript/#collapse | 550 | * https://getbootstrap.com/docs/3.4/javascript/#collapse |
541 | * ======================================================================== | 551 | * ======================================================================== |
542 | * Copyright 2011-2016 Twitter, Inc. | 552 | * Copyright 2011-2019 Twitter, Inc. |
543 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 553 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
544 | * ======================================================================== */ | 554 | * ======================================================================== */ |
545 | 555 | ||
@@ -567,7 +577,7 @@ if (typeof jQuery === 'undefined') { | |||
567 | if (this.options.toggle) this.toggle() | 577 | if (this.options.toggle) this.toggle() |
568 | } | 578 | } |
569 | 579 | ||
570 | Collapse.VERSION = '3.3.7' | 580 | Collapse.VERSION = '3.4.1' |
571 | 581 | ||
572 | Collapse.TRANSITION_DURATION = 350 | 582 | Collapse.TRANSITION_DURATION = 350 |
573 | 583 | ||
@@ -674,7 +684,7 @@ if (typeof jQuery === 'undefined') { | |||
674 | } | 684 | } |
675 | 685 | ||
676 | Collapse.prototype.getParent = function () { | 686 | Collapse.prototype.getParent = function () { |
677 | return $(this.options.parent) | 687 | return $(document).find(this.options.parent) |
678 | .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') | 688 | .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') |
679 | .each($.proxy(function (i, element) { | 689 | .each($.proxy(function (i, element) { |
680 | var $element = $(element) | 690 | var $element = $(element) |
@@ -697,7 +707,7 @@ if (typeof jQuery === 'undefined') { | |||
697 | var target = $trigger.attr('data-target') | 707 | var target = $trigger.attr('data-target') |
698 | || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 | 708 | || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 |
699 | 709 | ||
700 | return $(target) | 710 | return $(document).find(target) |
701 | } | 711 | } |
702 | 712 | ||
703 | 713 | ||
@@ -749,10 +759,10 @@ if (typeof jQuery === 'undefined') { | |||
749 | }(jQuery); | 759 | }(jQuery); |
750 | 760 | ||
751 | /* ======================================================================== | 761 | /* ======================================================================== |
752 | * Bootstrap: dropdown.js v3.3.7 | 762 | * Bootstrap: dropdown.js v3.4.1 |
753 | * http://getbootstrap.com/javascript/#dropdowns | 763 | * https://getbootstrap.com/docs/3.4/javascript/#dropdowns |
754 | * ======================================================================== | 764 | * ======================================================================== |
755 | * Copyright 2011-2016 Twitter, Inc. | 765 | * Copyright 2011-2019 Twitter, Inc. |
756 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 766 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
757 | * ======================================================================== */ | 767 | * ======================================================================== */ |
758 | 768 | ||
@@ -769,7 +779,7 @@ if (typeof jQuery === 'undefined') { | |||
769 | $(element).on('click.bs.dropdown', this.toggle) | 779 | $(element).on('click.bs.dropdown', this.toggle) |
770 | } | 780 | } |
771 | 781 | ||
772 | Dropdown.VERSION = '3.3.7' | 782 | Dropdown.VERSION = '3.4.1' |
773 | 783 | ||
774 | function getParent($this) { | 784 | function getParent($this) { |
775 | var selector = $this.attr('data-target') | 785 | var selector = $this.attr('data-target') |
@@ -779,7 +789,7 @@ if (typeof jQuery === 'undefined') { | |||
779 | selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 | 789 | selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 |
780 | } | 790 | } |
781 | 791 | ||
782 | var $parent = selector && $(selector) | 792 | var $parent = selector !== '#' ? $(document).find(selector) : null |
783 | 793 | ||
784 | return $parent && $parent.length ? $parent : $this.parent() | 794 | return $parent && $parent.length ? $parent : $this.parent() |
785 | } | 795 | } |
@@ -915,10 +925,10 @@ if (typeof jQuery === 'undefined') { | |||
915 | }(jQuery); | 925 | }(jQuery); |
916 | 926 | ||
917 | /* ======================================================================== | 927 | /* ======================================================================== |
918 | * Bootstrap: modal.js v3.3.7 | 928 | * Bootstrap: modal.js v3.4.1 |
919 | * http://getbootstrap.com/javascript/#modals | 929 | * https://getbootstrap.com/docs/3.4/javascript/#modals |
920 | * ======================================================================== | 930 | * ======================================================================== |
921 | * Copyright 2011-2016 Twitter, Inc. | 931 | * Copyright 2011-2019 Twitter, Inc. |
922 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 932 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
923 | * ======================================================================== */ | 933 | * ======================================================================== */ |
924 | 934 | ||
@@ -930,15 +940,16 @@ if (typeof jQuery === 'undefined') { | |||
930 | // ====================== | 940 | // ====================== |
931 | 941 | ||
932 | var Modal = function (element, options) { | 942 | var Modal = function (element, options) { |
933 | this.options = options | 943 | this.options = options |
934 | this.$body = $(document.body) | 944 | this.$body = $(document.body) |
935 | this.$element = $(element) | 945 | this.$element = $(element) |
936 | this.$dialog = this.$element.find('.modal-dialog') | 946 | this.$dialog = this.$element.find('.modal-dialog') |
937 | this.$backdrop = null | 947 | this.$backdrop = null |
938 | this.isShown = null | 948 | this.isShown = null |
939 | this.originalBodyPad = null | 949 | this.originalBodyPad = null |
940 | this.scrollbarWidth = 0 | 950 | this.scrollbarWidth = 0 |
941 | this.ignoreBackdropClick = false | 951 | this.ignoreBackdropClick = false |
952 | this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom' | ||
942 | 953 | ||
943 | if (this.options.remote) { | 954 | if (this.options.remote) { |
944 | this.$element | 955 | this.$element |
@@ -949,7 +960,7 @@ if (typeof jQuery === 'undefined') { | |||
949 | } | 960 | } |
950 | } | 961 | } |
951 | 962 | ||
952 | Modal.VERSION = '3.3.7' | 963 | Modal.VERSION = '3.4.1' |
953 | 964 | ||
954 | Modal.TRANSITION_DURATION = 300 | 965 | Modal.TRANSITION_DURATION = 300 |
955 | Modal.BACKDROP_TRANSITION_DURATION = 150 | 966 | Modal.BACKDROP_TRANSITION_DURATION = 150 |
@@ -966,7 +977,7 @@ if (typeof jQuery === 'undefined') { | |||
966 | 977 | ||
967 | Modal.prototype.show = function (_relatedTarget) { | 978 | Modal.prototype.show = function (_relatedTarget) { |
968 | var that = this | 979 | var that = this |
969 | var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) | 980 | var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) |
970 | 981 | ||
971 | this.$element.trigger(e) | 982 | this.$element.trigger(e) |
972 | 983 | ||
@@ -1057,8 +1068,8 @@ if (typeof jQuery === 'undefined') { | |||
1057 | .off('focusin.bs.modal') // guard against infinite focus loop | 1068 | .off('focusin.bs.modal') // guard against infinite focus loop |
1058 | .on('focusin.bs.modal', $.proxy(function (e) { | 1069 | .on('focusin.bs.modal', $.proxy(function (e) { |
1059 | if (document !== e.target && | 1070 | if (document !== e.target && |
1060 | this.$element[0] !== e.target && | 1071 | this.$element[0] !== e.target && |
1061 | !this.$element.has(e.target).length) { | 1072 | !this.$element.has(e.target).length) { |
1062 | this.$element.trigger('focus') | 1073 | this.$element.trigger('focus') |
1063 | } | 1074 | } |
1064 | }, this)) | 1075 | }, this)) |
@@ -1160,7 +1171,7 @@ if (typeof jQuery === 'undefined') { | |||
1160 | var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight | 1171 | var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight |
1161 | 1172 | ||
1162 | this.$element.css({ | 1173 | this.$element.css({ |
1163 | paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', | 1174 | paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', |
1164 | paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' | 1175 | paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' |
1165 | }) | 1176 | }) |
1166 | } | 1177 | } |
@@ -1185,11 +1196,26 @@ if (typeof jQuery === 'undefined') { | |||
1185 | Modal.prototype.setScrollbar = function () { | 1196 | Modal.prototype.setScrollbar = function () { |
1186 | var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) | 1197 | var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) |
1187 | this.originalBodyPad = document.body.style.paddingRight || '' | 1198 | this.originalBodyPad = document.body.style.paddingRight || '' |
1188 | if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) | 1199 | var scrollbarWidth = this.scrollbarWidth |
1200 | if (this.bodyIsOverflowing) { | ||
1201 | this.$body.css('padding-right', bodyPad + scrollbarWidth) | ||
1202 | $(this.fixedContent).each(function (index, element) { | ||
1203 | var actualPadding = element.style.paddingRight | ||
1204 | var calculatedPadding = $(element).css('padding-right') | ||
1205 | $(element) | ||
1206 | .data('padding-right', actualPadding) | ||
1207 | .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px') | ||
1208 | }) | ||
1209 | } | ||
1189 | } | 1210 | } |
1190 | 1211 | ||
1191 | Modal.prototype.resetScrollbar = function () { | 1212 | Modal.prototype.resetScrollbar = function () { |
1192 | this.$body.css('padding-right', this.originalBodyPad) | 1213 | this.$body.css('padding-right', this.originalBodyPad) |
1214 | $(this.fixedContent).each(function (index, element) { | ||
1215 | var padding = $(element).data('padding-right') | ||
1216 | $(element).removeData('padding-right') | ||
1217 | element.style.paddingRight = padding ? padding : '' | ||
1218 | }) | ||
1193 | } | 1219 | } |
1194 | 1220 | ||
1195 | Modal.prototype.measureScrollbar = function () { // thx walsh | 1221 | Modal.prototype.measureScrollbar = function () { // thx walsh |
@@ -1207,8 +1233,8 @@ if (typeof jQuery === 'undefined') { | |||
1207 | 1233 | ||
1208 | function Plugin(option, _relatedTarget) { | 1234 | function Plugin(option, _relatedTarget) { |
1209 | return this.each(function () { | 1235 | return this.each(function () { |
1210 | var $this = $(this) | 1236 | var $this = $(this) |
1211 | var data = $this.data('bs.modal') | 1237 | var data = $this.data('bs.modal') |
1212 | var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) | 1238 | var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) |
1213 | 1239 | ||
1214 | if (!data) $this.data('bs.modal', (data = new Modal(this, options))) | 1240 | if (!data) $this.data('bs.modal', (data = new Modal(this, options))) |
@@ -1219,7 +1245,7 @@ if (typeof jQuery === 'undefined') { | |||
1219 | 1245 | ||
1220 | var old = $.fn.modal | 1246 | var old = $.fn.modal |
1221 | 1247 | ||
1222 | $.fn.modal = Plugin | 1248 | $.fn.modal = Plugin |
1223 | $.fn.modal.Constructor = Modal | 1249 | $.fn.modal.Constructor = Modal |
1224 | 1250 | ||
1225 | 1251 | ||
@@ -1236,10 +1262,13 @@ if (typeof jQuery === 'undefined') { | |||
1236 | // ============== | 1262 | // ============== |
1237 | 1263 | ||
1238 | $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { | 1264 | $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { |
1239 | var $this = $(this) | 1265 | var $this = $(this) |
1240 | var href = $this.attr('href') | 1266 | var href = $this.attr('href') |
1241 | var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 | 1267 | var target = $this.attr('data-target') || |
1242 | var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) | 1268 | (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 |
1269 | |||
1270 | var $target = $(document).find(target) | ||
1271 | var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) | ||
1243 | 1272 | ||
1244 | if ($this.is('a')) e.preventDefault() | 1273 | if ($this.is('a')) e.preventDefault() |
1245 | 1274 | ||
@@ -1255,18 +1284,148 @@ if (typeof jQuery === 'undefined') { | |||
1255 | }(jQuery); | 1284 | }(jQuery); |
1256 | 1285 | ||
1257 | /* ======================================================================== | 1286 | /* ======================================================================== |
1258 | * Bootstrap: tooltip.js v3.3.7 | 1287 | * Bootstrap: tooltip.js v3.4.1 |
1259 | * http://getbootstrap.com/javascript/#tooltip | 1288 | * https://getbootstrap.com/docs/3.4/javascript/#tooltip |
1260 | * Inspired by the original jQuery.tipsy by Jason Frame | 1289 | * Inspired by the original jQuery.tipsy by Jason Frame |
1261 | * ======================================================================== | 1290 | * ======================================================================== |
1262 | * Copyright 2011-2016 Twitter, Inc. | 1291 | * Copyright 2011-2019 Twitter, Inc. |
1263 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 1292 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
1264 | * ======================================================================== */ | 1293 | * ======================================================================== */ |
1265 | 1294 | ||
1266 | |||
1267 | +function ($) { | 1295 | +function ($) { |
1268 | 'use strict'; | 1296 | 'use strict'; |
1269 | 1297 | ||
1298 | var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'] | ||
1299 | |||
1300 | var uriAttrs = [ | ||
1301 | 'background', | ||
1302 | 'cite', | ||
1303 | 'href', | ||
1304 | 'itemtype', | ||
1305 | 'longdesc', | ||
1306 | 'poster', | ||
1307 | 'src', | ||
1308 | 'xlink:href' | ||
1309 | ] | ||
1310 | |||
1311 | var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i | ||
1312 | |||
1313 | var DefaultWhitelist = { | ||
1314 | // Global attributes allowed on any supplied element below. | ||
1315 | '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], | ||
1316 | a: ['target', 'href', 'title', 'rel'], | ||
1317 | area: [], | ||
1318 | b: [], | ||
1319 | br: [], | ||
1320 | col: [], | ||
1321 | code: [], | ||
1322 | div: [], | ||
1323 | em: [], | ||
1324 | hr: [], | ||
1325 | h1: [], | ||
1326 | h2: [], | ||
1327 | h3: [], | ||
1328 | h4: [], | ||
1329 | h5: [], | ||
1330 | h6: [], | ||
1331 | i: [], | ||
1332 | img: ['src', 'alt', 'title', 'width', 'height'], | ||
1333 | li: [], | ||
1334 | ol: [], | ||
1335 | p: [], | ||
1336 | pre: [], | ||
1337 | s: [], | ||
1338 | small: [], | ||
1339 | span: [], | ||
1340 | sub: [], | ||
1341 | sup: [], | ||
1342 | strong: [], | ||
1343 | u: [], | ||
1344 | ul: [] | ||
1345 | } | ||
1346 | |||
1347 | /** | ||
1348 | * A pattern that recognizes a commonly useful subset of URLs that are safe. | ||
1349 | * | ||
1350 | * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts | ||
1351 | */ | ||
1352 | var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi | ||
1353 | |||
1354 | /** | ||
1355 | * A pattern that matches safe data URLs. Only matches image, video and audio types. | ||
1356 | * | ||
1357 | * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts | ||
1358 | */ | ||
1359 | var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i | ||
1360 | |||
1361 | function allowedAttribute(attr, allowedAttributeList) { | ||
1362 | var attrName = attr.nodeName.toLowerCase() | ||
1363 | |||
1364 | if ($.inArray(attrName, allowedAttributeList) !== -1) { | ||
1365 | if ($.inArray(attrName, uriAttrs) !== -1) { | ||
1366 | return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)) | ||
1367 | } | ||
1368 | |||
1369 | return true | ||
1370 | } | ||
1371 | |||
1372 | var regExp = $(allowedAttributeList).filter(function (index, value) { | ||
1373 | return value instanceof RegExp | ||
1374 | }) | ||
1375 | |||
1376 | // Check if a regular expression validates the attribute. | ||
1377 | for (var i = 0, l = regExp.length; i < l; i++) { | ||
1378 | if (attrName.match(regExp[i])) { | ||
1379 | return true | ||
1380 | } | ||
1381 | } | ||
1382 | |||
1383 | return false | ||
1384 | } | ||
1385 | |||
1386 | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { | ||
1387 | if (unsafeHtml.length === 0) { | ||
1388 | return unsafeHtml | ||
1389 | } | ||
1390 | |||
1391 | if (sanitizeFn && typeof sanitizeFn === 'function') { | ||
1392 | return sanitizeFn(unsafeHtml) | ||
1393 | } | ||
1394 | |||
1395 | // IE 8 and below don't support createHTMLDocument | ||
1396 | if (!document.implementation || !document.implementation.createHTMLDocument) { | ||
1397 | return unsafeHtml | ||
1398 | } | ||
1399 | |||
1400 | var createdDocument = document.implementation.createHTMLDocument('sanitization') | ||
1401 | createdDocument.body.innerHTML = unsafeHtml | ||
1402 | |||
1403 | var whitelistKeys = $.map(whiteList, function (el, i) { return i }) | ||
1404 | var elements = $(createdDocument.body).find('*') | ||
1405 | |||
1406 | for (var i = 0, len = elements.length; i < len; i++) { | ||
1407 | var el = elements[i] | ||
1408 | var elName = el.nodeName.toLowerCase() | ||
1409 | |||
1410 | if ($.inArray(elName, whitelistKeys) === -1) { | ||
1411 | el.parentNode.removeChild(el) | ||
1412 | |||
1413 | continue | ||
1414 | } | ||
1415 | |||
1416 | var attributeList = $.map(el.attributes, function (el) { return el }) | ||
1417 | var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []) | ||
1418 | |||
1419 | for (var j = 0, len2 = attributeList.length; j < len2; j++) { | ||
1420 | if (!allowedAttribute(attributeList[j], whitelistedAttributes)) { | ||
1421 | el.removeAttribute(attributeList[j].nodeName) | ||
1422 | } | ||
1423 | } | ||
1424 | } | ||
1425 | |||
1426 | return createdDocument.body.innerHTML | ||
1427 | } | ||
1428 | |||
1270 | // TOOLTIP PUBLIC CLASS DEFINITION | 1429 | // TOOLTIP PUBLIC CLASS DEFINITION |
1271 | // =============================== | 1430 | // =============================== |
1272 | 1431 | ||
@@ -1282,7 +1441,7 @@ if (typeof jQuery === 'undefined') { | |||
1282 | this.init('tooltip', element, options) | 1441 | this.init('tooltip', element, options) |
1283 | } | 1442 | } |
1284 | 1443 | ||
1285 | Tooltip.VERSION = '3.3.7' | 1444 | Tooltip.VERSION = '3.4.1' |
1286 | 1445 | ||
1287 | Tooltip.TRANSITION_DURATION = 150 | 1446 | Tooltip.TRANSITION_DURATION = 150 |
1288 | 1447 | ||
@@ -1299,7 +1458,10 @@ if (typeof jQuery === 'undefined') { | |||
1299 | viewport: { | 1458 | viewport: { |
1300 | selector: 'body', | 1459 | selector: 'body', |
1301 | padding: 0 | 1460 | padding: 0 |
1302 | } | 1461 | }, |
1462 | sanitize : true, | ||
1463 | sanitizeFn : null, | ||
1464 | whiteList : DefaultWhitelist | ||
1303 | } | 1465 | } |
1304 | 1466 | ||
1305 | Tooltip.prototype.init = function (type, element, options) { | 1467 | Tooltip.prototype.init = function (type, element, options) { |
@@ -1307,7 +1469,7 @@ if (typeof jQuery === 'undefined') { | |||
1307 | this.type = type | 1469 | this.type = type |
1308 | this.$element = $(element) | 1470 | this.$element = $(element) |
1309 | this.options = this.getOptions(options) | 1471 | this.options = this.getOptions(options) |
1310 | this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) | 1472 | this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) |
1311 | this.inState = { click: false, hover: false, focus: false } | 1473 | this.inState = { click: false, hover: false, focus: false } |
1312 | 1474 | ||
1313 | if (this.$element[0] instanceof document.constructor && !this.options.selector) { | 1475 | if (this.$element[0] instanceof document.constructor && !this.options.selector) { |
@@ -1340,7 +1502,15 @@ if (typeof jQuery === 'undefined') { | |||
1340 | } | 1502 | } |
1341 | 1503 | ||
1342 | Tooltip.prototype.getOptions = function (options) { | 1504 | Tooltip.prototype.getOptions = function (options) { |
1343 | options = $.extend({}, this.getDefaults(), this.$element.data(), options) | 1505 | var dataAttributes = this.$element.data() |
1506 | |||
1507 | for (var dataAttr in dataAttributes) { | ||
1508 | if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) { | ||
1509 | delete dataAttributes[dataAttr] | ||
1510 | } | ||
1511 | } | ||
1512 | |||
1513 | options = $.extend({}, this.getDefaults(), dataAttributes, options) | ||
1344 | 1514 | ||
1345 | if (options.delay && typeof options.delay == 'number') { | 1515 | if (options.delay && typeof options.delay == 'number') { |
1346 | options.delay = { | 1516 | options.delay = { |
@@ -1349,6 +1519,10 @@ if (typeof jQuery === 'undefined') { | |||
1349 | } | 1519 | } |
1350 | } | 1520 | } |
1351 | 1521 | ||
1522 | if (options.sanitize) { | ||
1523 | options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn) | ||
1524 | } | ||
1525 | |||
1352 | return options | 1526 | return options |
1353 | } | 1527 | } |
1354 | 1528 | ||
@@ -1460,7 +1634,7 @@ if (typeof jQuery === 'undefined') { | |||
1460 | .addClass(placement) | 1634 | .addClass(placement) |
1461 | .data('bs.' + this.type, this) | 1635 | .data('bs.' + this.type, this) |
1462 | 1636 | ||
1463 | this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) | 1637 | this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element) |
1464 | this.$element.trigger('inserted.bs.' + this.type) | 1638 | this.$element.trigger('inserted.bs.' + this.type) |
1465 | 1639 | ||
1466 | var pos = this.getPosition() | 1640 | var pos = this.getPosition() |
@@ -1562,7 +1736,16 @@ if (typeof jQuery === 'undefined') { | |||
1562 | var $tip = this.tip() | 1736 | var $tip = this.tip() |
1563 | var title = this.getTitle() | 1737 | var title = this.getTitle() |
1564 | 1738 | ||
1565 | $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) | 1739 | if (this.options.html) { |
1740 | if (this.options.sanitize) { | ||
1741 | title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn) | ||
1742 | } | ||
1743 | |||
1744 | $tip.find('.tooltip-inner').html(title) | ||
1745 | } else { | ||
1746 | $tip.find('.tooltip-inner').text(title) | ||
1747 | } | ||
1748 | |||
1566 | $tip.removeClass('fade in top bottom left right') | 1749 | $tip.removeClass('fade in top bottom left right') |
1567 | } | 1750 | } |
1568 | 1751 | ||
@@ -1743,6 +1926,9 @@ if (typeof jQuery === 'undefined') { | |||
1743 | }) | 1926 | }) |
1744 | } | 1927 | } |
1745 | 1928 | ||
1929 | Tooltip.prototype.sanitizeHtml = function (unsafeHtml) { | ||
1930 | return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn) | ||
1931 | } | ||
1746 | 1932 | ||
1747 | // TOOLTIP PLUGIN DEFINITION | 1933 | // TOOLTIP PLUGIN DEFINITION |
1748 | // ========================= | 1934 | // ========================= |
@@ -1776,10 +1962,10 @@ if (typeof jQuery === 'undefined') { | |||
1776 | }(jQuery); | 1962 | }(jQuery); |
1777 | 1963 | ||
1778 | /* ======================================================================== | 1964 | /* ======================================================================== |
1779 | * Bootstrap: popover.js v3.3.7 | 1965 | * Bootstrap: popover.js v3.4.1 |
1780 | * http://getbootstrap.com/javascript/#popovers | 1966 | * https://getbootstrap.com/docs/3.4/javascript/#popovers |
1781 | * ======================================================================== | 1967 | * ======================================================================== |
1782 | * Copyright 2011-2016 Twitter, Inc. | 1968 | * Copyright 2011-2019 Twitter, Inc. |
1783 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 1969 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
1784 | * ======================================================================== */ | 1970 | * ======================================================================== */ |
1785 | 1971 | ||
@@ -1796,7 +1982,7 @@ if (typeof jQuery === 'undefined') { | |||
1796 | 1982 | ||
1797 | if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') | 1983 | if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') |
1798 | 1984 | ||
1799 | Popover.VERSION = '3.3.7' | 1985 | Popover.VERSION = '3.4.1' |
1800 | 1986 | ||
1801 | Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { | 1987 | Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { |
1802 | placement: 'right', | 1988 | placement: 'right', |
@@ -1822,10 +2008,25 @@ if (typeof jQuery === 'undefined') { | |||
1822 | var title = this.getTitle() | 2008 | var title = this.getTitle() |
1823 | var content = this.getContent() | 2009 | var content = this.getContent() |
1824 | 2010 | ||
1825 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) | 2011 | if (this.options.html) { |
1826 | $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events | 2012 | var typeContent = typeof content |
1827 | this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' | 2013 | |
1828 | ](content) | 2014 | if (this.options.sanitize) { |
2015 | title = this.sanitizeHtml(title) | ||
2016 | |||
2017 | if (typeContent === 'string') { | ||
2018 | content = this.sanitizeHtml(content) | ||
2019 | } | ||
2020 | } | ||
2021 | |||
2022 | $tip.find('.popover-title').html(title) | ||
2023 | $tip.find('.popover-content').children().detach().end()[ | ||
2024 | typeContent === 'string' ? 'html' : 'append' | ||
2025 | ](content) | ||
2026 | } else { | ||
2027 | $tip.find('.popover-title').text(title) | ||
2028 | $tip.find('.popover-content').children().detach().end().text(content) | ||
2029 | } | ||
1829 | 2030 | ||
1830 | $tip.removeClass('fade top bottom left right in') | 2031 | $tip.removeClass('fade top bottom left right in') |
1831 | 2032 | ||
@@ -1844,8 +2045,8 @@ if (typeof jQuery === 'undefined') { | |||
1844 | 2045 | ||
1845 | return $e.attr('data-content') | 2046 | return $e.attr('data-content') |
1846 | || (typeof o.content == 'function' ? | 2047 | || (typeof o.content == 'function' ? |
1847 | o.content.call($e[0]) : | 2048 | o.content.call($e[0]) : |
1848 | o.content) | 2049 | o.content) |
1849 | } | 2050 | } |
1850 | 2051 | ||
1851 | Popover.prototype.arrow = function () { | 2052 | Popover.prototype.arrow = function () { |
@@ -1885,10 +2086,10 @@ if (typeof jQuery === 'undefined') { | |||
1885 | }(jQuery); | 2086 | }(jQuery); |
1886 | 2087 | ||
1887 | /* ======================================================================== | 2088 | /* ======================================================================== |
1888 | * Bootstrap: scrollspy.js v3.3.7 | 2089 | * Bootstrap: scrollspy.js v3.4.1 |
1889 | * http://getbootstrap.com/javascript/#scrollspy | 2090 | * https://getbootstrap.com/docs/3.4/javascript/#scrollspy |
1890 | * ======================================================================== | 2091 | * ======================================================================== |
1891 | * Copyright 2011-2016 Twitter, Inc. | 2092 | * Copyright 2011-2019 Twitter, Inc. |
1892 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 2093 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
1893 | * ======================================================================== */ | 2094 | * ======================================================================== */ |
1894 | 2095 | ||
@@ -1914,7 +2115,7 @@ if (typeof jQuery === 'undefined') { | |||
1914 | this.process() | 2115 | this.process() |
1915 | } | 2116 | } |
1916 | 2117 | ||
1917 | ScrollSpy.VERSION = '3.3.7' | 2118 | ScrollSpy.VERSION = '3.4.1' |
1918 | 2119 | ||
1919 | ScrollSpy.DEFAULTS = { | 2120 | ScrollSpy.DEFAULTS = { |
1920 | offset: 10 | 2121 | offset: 10 |
@@ -2058,10 +2259,10 @@ if (typeof jQuery === 'undefined') { | |||
2058 | }(jQuery); | 2259 | }(jQuery); |
2059 | 2260 | ||
2060 | /* ======================================================================== | 2261 | /* ======================================================================== |
2061 | * Bootstrap: tab.js v3.3.7 | 2262 | * Bootstrap: tab.js v3.4.1 |
2062 | * http://getbootstrap.com/javascript/#tabs | 2263 | * https://getbootstrap.com/docs/3.4/javascript/#tabs |
2063 | * ======================================================================== | 2264 | * ======================================================================== |
2064 | * Copyright 2011-2016 Twitter, Inc. | 2265 | * Copyright 2011-2019 Twitter, Inc. |
2065 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 2266 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
2066 | * ======================================================================== */ | 2267 | * ======================================================================== */ |
2067 | 2268 | ||
@@ -2078,7 +2279,7 @@ if (typeof jQuery === 'undefined') { | |||
2078 | // jscs:enable requireDollarBeforejQueryAssignment | 2279 | // jscs:enable requireDollarBeforejQueryAssignment |
2079 | } | 2280 | } |
2080 | 2281 | ||
2081 | Tab.VERSION = '3.3.7' | 2282 | Tab.VERSION = '3.4.1' |
2082 | 2283 | ||
2083 | Tab.TRANSITION_DURATION = 150 | 2284 | Tab.TRANSITION_DURATION = 150 |
2084 | 2285 | ||
@@ -2107,7 +2308,7 @@ if (typeof jQuery === 'undefined') { | |||
2107 | 2308 | ||
2108 | if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return | 2309 | if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return |
2109 | 2310 | ||
2110 | var $target = $(selector) | 2311 | var $target = $(document).find(selector) |
2111 | 2312 | ||
2112 | this.activate($this.closest('li'), $ul) | 2313 | this.activate($this.closest('li'), $ul) |
2113 | this.activate($target, $target.parent(), function () { | 2314 | this.activate($target, $target.parent(), function () { |
@@ -2132,15 +2333,15 @@ if (typeof jQuery === 'undefined') { | |||
2132 | $active | 2333 | $active |
2133 | .removeClass('active') | 2334 | .removeClass('active') |
2134 | .find('> .dropdown-menu > .active') | 2335 | .find('> .dropdown-menu > .active') |
2135 | .removeClass('active') | 2336 | .removeClass('active') |
2136 | .end() | 2337 | .end() |
2137 | .find('[data-toggle="tab"]') | 2338 | .find('[data-toggle="tab"]') |
2138 | .attr('aria-expanded', false) | 2339 | .attr('aria-expanded', false) |
2139 | 2340 | ||
2140 | element | 2341 | element |
2141 | .addClass('active') | 2342 | .addClass('active') |
2142 | .find('[data-toggle="tab"]') | 2343 | .find('[data-toggle="tab"]') |
2143 | .attr('aria-expanded', true) | 2344 | .attr('aria-expanded', true) |
2144 | 2345 | ||
2145 | if (transition) { | 2346 | if (transition) { |
2146 | element[0].offsetWidth // reflow for transition | 2347 | element[0].offsetWidth // reflow for transition |
@@ -2152,10 +2353,10 @@ if (typeof jQuery === 'undefined') { | |||
2152 | if (element.parent('.dropdown-menu').length) { | 2353 | if (element.parent('.dropdown-menu').length) { |
2153 | element | 2354 | element |
2154 | .closest('li.dropdown') | 2355 | .closest('li.dropdown') |
2155 | .addClass('active') | 2356 | .addClass('active') |
2156 | .end() | 2357 | .end() |
2157 | .find('[data-toggle="tab"]') | 2358 | .find('[data-toggle="tab"]') |
2158 | .attr('aria-expanded', true) | 2359 | .attr('aria-expanded', true) |
2159 | } | 2360 | } |
2160 | 2361 | ||
2161 | callback && callback() | 2362 | callback && callback() |
@@ -2214,10 +2415,10 @@ if (typeof jQuery === 'undefined') { | |||
2214 | }(jQuery); | 2415 | }(jQuery); |
2215 | 2416 | ||
2216 | /* ======================================================================== | 2417 | /* ======================================================================== |
2217 | * Bootstrap: affix.js v3.3.7 | 2418 | * Bootstrap: affix.js v3.4.1 |
2218 | * http://getbootstrap.com/javascript/#affix | 2419 | * https://getbootstrap.com/docs/3.4/javascript/#affix |
2219 | * ======================================================================== | 2420 | * ======================================================================== |
2220 | * Copyright 2011-2016 Twitter, Inc. | 2421 | * Copyright 2011-2019 Twitter, Inc. |
2221 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | 2422 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
2222 | * ======================================================================== */ | 2423 | * ======================================================================== */ |
2223 | 2424 | ||
@@ -2231,7 +2432,9 @@ if (typeof jQuery === 'undefined') { | |||
2231 | var Affix = function (element, options) { | 2432 | var Affix = function (element, options) { |
2232 | this.options = $.extend({}, Affix.DEFAULTS, options) | 2433 | this.options = $.extend({}, Affix.DEFAULTS, options) |
2233 | 2434 | ||
2234 | this.$target = $(this.options.target) | 2435 | var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target) |
2436 | |||
2437 | this.$target = target | ||
2235 | .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) | 2438 | .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) |
2236 | .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) | 2439 | .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) |
2237 | 2440 | ||
@@ -2243,7 +2446,7 @@ if (typeof jQuery === 'undefined') { | |||
2243 | this.checkPosition() | 2446 | this.checkPosition() |
2244 | } | 2447 | } |
2245 | 2448 | ||
2246 | Affix.VERSION = '3.3.7' | 2449 | Affix.VERSION = '3.4.1' |
2247 | 2450 | ||
2248 | Affix.RESET = 'affix affix-top affix-bottom' | 2451 | Affix.RESET = 'affix affix-top affix-bottom' |
2249 | 2452 | ||