bootstrap-sass 3.3.6 → 3.3.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bootstrap-sass might be problematic. Click here for more details.

Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +10 -4
  4. data/LICENSE +2 -1
  5. data/README.md +50 -16
  6. data/assets/javascripts/bootstrap-sprockets.js +3 -3
  7. data/assets/javascripts/bootstrap.js +64 -50
  8. data/assets/javascripts/bootstrap.min.js +4 -4
  9. data/assets/javascripts/bootstrap/affix.js +3 -3
  10. data/assets/javascripts/bootstrap/alert.js +4 -4
  11. data/assets/javascripts/bootstrap/button.js +13 -8
  12. data/assets/javascripts/bootstrap/carousel.js +3 -3
  13. data/assets/javascripts/bootstrap/collapse.js +4 -3
  14. data/assets/javascripts/bootstrap/dropdown.js +3 -3
  15. data/assets/javascripts/bootstrap/modal.js +6 -4
  16. data/assets/javascripts/bootstrap/popover.js +3 -3
  17. data/assets/javascripts/bootstrap/scrollspy.js +3 -3
  18. data/assets/javascripts/bootstrap/tab.js +3 -3
  19. data/assets/javascripts/bootstrap/tooltip.js +13 -7
  20. data/assets/javascripts/bootstrap/transition.js +2 -2
  21. data/assets/stylesheets/_bootstrap.scss +2 -2
  22. data/assets/stylesheets/bootstrap/_button-groups.scss +1 -1
  23. data/assets/stylesheets/bootstrap/_forms.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_input-groups.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_panels.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_scaffolding.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_theme.scss +2 -2
  28. data/assets/stylesheets/bootstrap/_variables.scss +1 -1
  29. data/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +3 -3
  30. data/bower.json +2 -2
  31. data/eyeglass-exports.js +7 -0
  32. data/lib/bootstrap-sass/version.rb +2 -2
  33. data/package.json +19 -5
  34. data/templates/project/_bootstrap-variables.sass +2 -2
  35. data/test/gemfiles/sass_3_3.gemfile +3 -0
  36. data/test/support/dummy_rails_integration.rb +1 -1
  37. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55139f6cb78bf3543a9bfa371598eafbecfc743d
4
- data.tar.gz: ab0260cc09e54be379f9c7f1c1b93f490d85c7ef
3
+ metadata.gz: 013bb0c0a90ddf8a44535fa62101bdd689b546e3
4
+ data.tar.gz: 25f3ca5f87b51c621ccc005a1f928e942fdf1150
5
5
  SHA512:
6
- metadata.gz: e4284b5dbb1561011e953993a4264d12cc373e0aa94a0bb1221714d842819073bd2755b78134094b961344d12275237eded8424eff05f8b3d0d3de910e82386c
7
- data.tar.gz: 25ca22cf946b3f8b286cef43a9d71d851f57268fd44fb72c4463e4938861a48498912a98cfccece688572966e4fe5ca4edee0e18355e53ae3c0c3630e41e32f9
6
+ metadata.gz: e5a94c51d3bf95ef518fbc2ad79415db4895927fc81d0762dc4768b63f8a750e6526aeeaefd56843d119f940538e2263081f65d1271bb7b6dba671654f3476c8
7
+ data.tar.gz: 9a298b7413d8d280786eca28e13f877ea093d33e2b36b82044c316e223a3c1735aa9a8cb8e93710dd43552123962dbca9b3f86e6852844b1dc64d0bca3deb19b
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ test/dummy_rails/log/*.log
17
17
  test/dummy_rails/public/assets/
18
18
  .DS_Store
19
19
  node_modules
20
+ /.idea
@@ -1,11 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.3.7
4
+
5
+ * Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048)
6
+ * Adds the `style` and `sass` fields to package.json. [#1045](https://github.com/twbs/bootstrap-sass/issues/1045)
7
+ * Adds Eyeglass support. [#1007](https://github.com/twbs/bootstrap-sass/pull/1007)
8
+
3
9
  ## 3.3.6
4
10
 
5
- Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root.
6
- Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986)
7
- Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919)
8
- Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965)
11
+ * Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root.
12
+ * Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986)
13
+ * Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919)
14
+ * Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965)
9
15
 
10
16
  Framework version: Bootstrap **v3.3.6**
11
17
 
data/LICENSE CHANGED
@@ -1,6 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2013-2015 Twitter, Inc
3
+ Copyright (c) 2011-2016 Twitter, Inc
4
+ Copyright (c) 2011-2016 The Bootstrap Authors
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -15,6 +15,7 @@ Please see the appropriate guide for your environment of choice:
15
15
  * [Ruby on Rails](#a-ruby-on-rails).
16
16
  * [Compass](#b-compass-without-rails) not on Rails.
17
17
  * [Bower](#c-bower).
18
+ * [npm / Node.js](#d-npm--nodejs).
18
19
 
19
20
  ### a. Ruby on Rails
20
21
 
@@ -157,7 +158,7 @@ This is compatible by default with asset managers such as [wiredep](https://gith
157
158
 
158
159
  #### Node.js Mincer
159
160
 
160
- If you use [mincer][mincer] with node-sass, import bootstrap like so:
161
+ If you use [mincer][mincer] with node-sass, import Bootstrap like so:
161
162
 
162
163
  In `application.css.ejs.scss` (NB **.css.ejs.scss**):
163
164
 
@@ -175,10 +176,15 @@ In `application.js`:
175
176
 
176
177
  See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer.
177
178
 
179
+ ### d. npm / Node.js
180
+ ```console
181
+ $ npm install bootstrap-sass
182
+ ```
178
183
 
179
- ### Configuration
180
184
 
181
- #### Sass
185
+ ## Configuration
186
+
187
+ ### Sass
182
188
 
183
189
  By default all of Bootstrap is imported.
184
190
 
@@ -191,25 +197,39 @@ In the application Sass file, replace `@import 'bootstrap'` with:
191
197
  @import 'bootstrap-custom';
192
198
  ```
193
199
 
194
- #### Sass: Number Precision
200
+ ### Sass: Number Precision
195
201
 
196
202
  bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5).
197
203
 
198
204
  Precision is set for Rails and Compass automatically.
199
- When using ruby Sass compiler standalone or with the Bower version you can set it with:
205
+ When using Ruby Sass compiler standalone or with the Bower version you can set it with:
200
206
 
201
207
  ```ruby
202
208
  ::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
203
209
  ```
204
210
 
205
- #### Sass: Autoprefixer
211
+ ### Sass: Autoprefixer
206
212
 
207
213
  Bootstrap requires the use of [Autoprefixer][autoprefixer].
208
214
  [Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](http://caniuse.com/).
209
215
 
210
- #### JavaScript
216
+ To match [upstream Bootstrap's level of browser compatibility](http://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to:
217
+ ```json
218
+ [
219
+ "Android 2.3",
220
+ "Android >= 4",
221
+ "Chrome >= 20",
222
+ "Firefox >= 24",
223
+ "Explorer >= 8",
224
+ "iOS >= 6",
225
+ "Opera >= 12",
226
+ "Safari >= 6"
227
+ ]
228
+ ```
229
+
230
+ ### JavaScript
211
231
 
212
- [`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap JavaScript,
232
+ [`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap's JavaScript,
213
233
  concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js).
214
234
 
215
235
 
@@ -231,7 +251,7 @@ You can check dependencies in the [Bootstrap JS documentation][jsdocs].
231
251
  //= require bootstrap/dropdown
232
252
  ```
233
253
 
234
- #### Fonts
254
+ ### Fonts
235
255
 
236
256
  The fonts are referenced as:
237
257
 
@@ -252,19 +272,19 @@ When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** impor
252
272
 
253
273
  ### Sass
254
274
 
255
- Import Bootstrap into a Sass file (for example, application.scss) to get all of Bootstrap's styles, mixins and variables!
275
+ Import Bootstrap into a Sass file (for example, `application.scss`) to get all of Bootstrap's styles, mixins and variables!
256
276
 
257
277
  ```scss
258
278
  @import "bootstrap";
259
279
  ```
260
280
 
261
- You can also include optional bootstrap theme:
281
+ You can also include optional Bootstrap theme:
262
282
 
263
283
  ```scss
264
284
  @import "bootstrap/theme";
265
285
  ```
266
286
 
267
- The full list of bootstrap variables can be found [here](http://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.:
287
+ The full list of Bootstrap variables can be found [here](http://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.:
268
288
 
269
289
  ```scss
270
290
  $navbar-default-bg: #312312;
@@ -274,6 +294,22 @@ $navbar-default-color: $light-orange;
274
294
  @import "bootstrap";
275
295
  ```
276
296
 
297
+ ### Eyeglass
298
+
299
+ Bootstrap is available as an [Eyeglass](https://github.com/sass-eyeglass/eyeglass) module. After installing Bootstrap via NPM you can import the Bootstrap library via:
300
+
301
+ ```scss
302
+ @import "bootstrap-sass/bootstrap"
303
+ ```
304
+
305
+ or import only the parts of Bootstrap you need:
306
+
307
+ ```scss
308
+ @import "bootstrap-sass/bootstrap/variables";
309
+ @import "bootstrap-sass/bootstrap/mixins";
310
+ @import "bootstrap-sass/bootstrap/carousel";
311
+ ```
312
+
277
313
  ## Version
278
314
 
279
315
  Bootstrap for Sass version may differ from the upstream version in the last number, known as
@@ -287,9 +323,7 @@ The upstream versions vs the Bootstrap for Sass versions are:
287
323
 
288
324
  | Upstream | Sass |
289
325
  |---------:|--------:|
290
- | 3.3.6 | 3.3.6 |
291
- | 3.3.5 | 3.3.5 |
292
- | 3.3.4 | 3.3.4 |
326
+ | 3.3.4+ | same |
293
327
  | 3.3.2 | 3.3.3 |
294
328
  | <= 3.3.1 | 3.3.1.x |
295
329
 
@@ -320,7 +354,7 @@ To convert a specific branch or version, pass the branch name or the commit hash
320
354
 
321
355
  The latest converter script is located [here][converter] and does the following:
322
356
 
323
- * Converts upstream bootstrap LESS files to its matching SCSS file.
357
+ * Converts upstream Bootstrap LESS files to its matching SCSS file.
324
358
  * Copies all upstream JavaScript into `assets/javascripts/bootstrap`, a Sprockets manifest at `assets/javascripts/bootstrap-sprockets.js`, and a concatenation at `assets/javascripts/bootstrap.js`.
325
359
  * Copies all upstream font files into `assets/fonts/bootstrap`.
326
360
  * Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha.
@@ -1,12 +1,12 @@
1
- //= require ./bootstrap/affix
1
+ //= require ./bootstrap/transition
2
2
  //= require ./bootstrap/alert
3
3
  //= require ./bootstrap/button
4
4
  //= require ./bootstrap/carousel
5
5
  //= require ./bootstrap/collapse
6
6
  //= require ./bootstrap/dropdown
7
7
  //= require ./bootstrap/modal
8
- //= require ./bootstrap/scrollspy
9
8
  //= require ./bootstrap/tab
10
- //= require ./bootstrap/transition
9
+ //= require ./bootstrap/affix
10
+ //= require ./bootstrap/scrollspy
11
11
  //= require ./bootstrap/tooltip
12
12
  //= require ./bootstrap/popover
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Bootstrap v3.3.6 (http://getbootstrap.com)
3
- * Copyright 2011-2015 Twitter, Inc.
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
4
  * Licensed under the MIT license
5
5
  */
6
6
 
@@ -11,16 +11,16 @@ if (typeof jQuery === 'undefined') {
11
11
  +function ($) {
12
12
  'use strict';
13
13
  var version = $.fn.jquery.split(' ')[0].split('.')
14
- if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
15
- throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
14
+ if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
15
+ throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
16
16
  }
17
17
  }(jQuery);
18
18
 
19
19
  /* ========================================================================
20
- * Bootstrap: transition.js v3.3.6
20
+ * Bootstrap: transition.js v3.3.7
21
21
  * http://getbootstrap.com/javascript/#transitions
22
22
  * ========================================================================
23
- * Copyright 2011-2015 Twitter, Inc.
23
+ * Copyright 2011-2016 Twitter, Inc.
24
24
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25
25
  * ======================================================================== */
26
26
 
@@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') {
77
77
  }(jQuery);
78
78
 
79
79
  /* ========================================================================
80
- * Bootstrap: alert.js v3.3.6
80
+ * Bootstrap: alert.js v3.3.7
81
81
  * http://getbootstrap.com/javascript/#alerts
82
82
  * ========================================================================
83
- * Copyright 2011-2015 Twitter, Inc.
83
+ * Copyright 2011-2016 Twitter, Inc.
84
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
96
  $(el).on('click', dismiss, this.close)
97
97
  }
98
98
 
99
- Alert.VERSION = '3.3.6'
99
+ Alert.VERSION = '3.3.7'
100
100
 
101
101
  Alert.TRANSITION_DURATION = 150
102
102
 
@@ -109,7 +109,7 @@ if (typeof jQuery === 'undefined') {
109
109
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
110
110
  }
111
111
 
112
- var $parent = $(selector)
112
+ var $parent = $(selector === '#' ? [] : selector)
113
113
 
114
114
  if (e) e.preventDefault()
115
115
 
@@ -172,10 +172,10 @@ if (typeof jQuery === 'undefined') {
172
172
  }(jQuery);
173
173
 
174
174
  /* ========================================================================
175
- * Bootstrap: button.js v3.3.6
175
+ * Bootstrap: button.js v3.3.7
176
176
  * http://getbootstrap.com/javascript/#buttons
177
177
  * ========================================================================
178
- * Copyright 2011-2015 Twitter, Inc.
178
+ * Copyright 2011-2016 Twitter, Inc.
179
179
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
180
180
  * ======================================================================== */
181
181
 
@@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
192
192
  this.isLoading = false
193
193
  }
194
194
 
195
- Button.VERSION = '3.3.6'
195
+ Button.VERSION = '3.3.7'
196
196
 
197
197
  Button.DEFAULTS = {
198
198
  loadingText: 'loading...'
@@ -214,10 +214,10 @@ if (typeof jQuery === 'undefined') {
214
214
 
215
215
  if (state == 'loadingText') {
216
216
  this.isLoading = true
217
- $el.addClass(d).attr(d, d)
217
+ $el.addClass(d).attr(d, d).prop(d, true)
218
218
  } else if (this.isLoading) {
219
219
  this.isLoading = false
220
- $el.removeClass(d).removeAttr(d)
220
+ $el.removeClass(d).removeAttr(d).prop(d, false)
221
221
  }
222
222
  }, this), 0)
223
223
  }
@@ -281,10 +281,15 @@ if (typeof jQuery === 'undefined') {
281
281
 
282
282
  $(document)
283
283
  .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
284
- var $btn = $(e.target)
285
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
284
+ var $btn = $(e.target).closest('.btn')
286
285
  Plugin.call($btn, 'toggle')
287
- if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
286
+ if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
287
+ // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
288
+ e.preventDefault()
289
+ // The target component still receive the focus
290
+ if ($btn.is('input,button')) $btn.trigger('focus')
291
+ else $btn.find('input:visible,button:visible').first().trigger('focus')
292
+ }
288
293
  })
289
294
  .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
290
295
  $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@@ -293,10 +298,10 @@ if (typeof jQuery === 'undefined') {
293
298
  }(jQuery);
294
299
 
295
300
  /* ========================================================================
296
- * Bootstrap: carousel.js v3.3.6
301
+ * Bootstrap: carousel.js v3.3.7
297
302
  * http://getbootstrap.com/javascript/#carousel
298
303
  * ========================================================================
299
- * Copyright 2011-2015 Twitter, Inc.
304
+ * Copyright 2011-2016 Twitter, Inc.
300
305
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
301
306
  * ======================================================================== */
302
307
 
@@ -324,7 +329,7 @@ if (typeof jQuery === 'undefined') {
324
329
  .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
325
330
  }
326
331
 
327
- Carousel.VERSION = '3.3.6'
332
+ Carousel.VERSION = '3.3.7'
328
333
 
329
334
  Carousel.TRANSITION_DURATION = 600
330
335
 
@@ -531,13 +536,14 @@ if (typeof jQuery === 'undefined') {
531
536
  }(jQuery);
532
537
 
533
538
  /* ========================================================================
534
- * Bootstrap: collapse.js v3.3.6
539
+ * Bootstrap: collapse.js v3.3.7
535
540
  * http://getbootstrap.com/javascript/#collapse
536
541
  * ========================================================================
537
- * Copyright 2011-2015 Twitter, Inc.
542
+ * Copyright 2011-2016 Twitter, Inc.
538
543
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
539
544
  * ======================================================================== */
540
545
 
546
+ /* jshint latedef: false */
541
547
 
542
548
  +function ($) {
543
549
  'use strict';
@@ -561,7 +567,7 @@ if (typeof jQuery === 'undefined') {
561
567
  if (this.options.toggle) this.toggle()
562
568
  }
563
569
 
564
- Collapse.VERSION = '3.3.6'
570
+ Collapse.VERSION = '3.3.7'
565
571
 
566
572
  Collapse.TRANSITION_DURATION = 350
567
573
 
@@ -743,10 +749,10 @@ if (typeof jQuery === 'undefined') {
743
749
  }(jQuery);
744
750
 
745
751
  /* ========================================================================
746
- * Bootstrap: dropdown.js v3.3.6
752
+ * Bootstrap: dropdown.js v3.3.7
747
753
  * http://getbootstrap.com/javascript/#dropdowns
748
754
  * ========================================================================
749
- * Copyright 2011-2015 Twitter, Inc.
755
+ * Copyright 2011-2016 Twitter, Inc.
750
756
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
751
757
  * ======================================================================== */
752
758
 
@@ -763,7 +769,7 @@ if (typeof jQuery === 'undefined') {
763
769
  $(element).on('click.bs.dropdown', this.toggle)
764
770
  }
765
771
 
766
- Dropdown.VERSION = '3.3.6'
772
+ Dropdown.VERSION = '3.3.7'
767
773
 
768
774
  function getParent($this) {
769
775
  var selector = $this.attr('data-target')
@@ -909,10 +915,10 @@ if (typeof jQuery === 'undefined') {
909
915
  }(jQuery);
910
916
 
911
917
  /* ========================================================================
912
- * Bootstrap: modal.js v3.3.6
918
+ * Bootstrap: modal.js v3.3.7
913
919
  * http://getbootstrap.com/javascript/#modals
914
920
  * ========================================================================
915
- * Copyright 2011-2015 Twitter, Inc.
921
+ * Copyright 2011-2016 Twitter, Inc.
916
922
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
917
923
  * ======================================================================== */
918
924
 
@@ -943,7 +949,7 @@ if (typeof jQuery === 'undefined') {
943
949
  }
944
950
  }
945
951
 
946
- Modal.VERSION = '3.3.6'
952
+ Modal.VERSION = '3.3.7'
947
953
 
948
954
  Modal.TRANSITION_DURATION = 300
949
955
  Modal.BACKDROP_TRANSITION_DURATION = 150
@@ -1050,7 +1056,9 @@ if (typeof jQuery === 'undefined') {
1050
1056
  $(document)
1051
1057
  .off('focusin.bs.modal') // guard against infinite focus loop
1052
1058
  .on('focusin.bs.modal', $.proxy(function (e) {
1053
- if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
1059
+ if (document !== e.target &&
1060
+ this.$element[0] !== e.target &&
1061
+ !this.$element.has(e.target).length) {
1054
1062
  this.$element.trigger('focus')
1055
1063
  }
1056
1064
  }, this))
@@ -1247,11 +1255,11 @@ if (typeof jQuery === 'undefined') {
1247
1255
  }(jQuery);
1248
1256
 
1249
1257
  /* ========================================================================
1250
- * Bootstrap: tooltip.js v3.3.6
1258
+ * Bootstrap: tooltip.js v3.3.7
1251
1259
  * http://getbootstrap.com/javascript/#tooltip
1252
1260
  * Inspired by the original jQuery.tipsy by Jason Frame
1253
1261
  * ========================================================================
1254
- * Copyright 2011-2015 Twitter, Inc.
1262
+ * Copyright 2011-2016 Twitter, Inc.
1255
1263
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1256
1264
  * ======================================================================== */
1257
1265
 
@@ -1274,7 +1282,7 @@ if (typeof jQuery === 'undefined') {
1274
1282
  this.init('tooltip', element, options)
1275
1283
  }
1276
1284
 
1277
- Tooltip.VERSION = '3.3.6'
1285
+ Tooltip.VERSION = '3.3.7'
1278
1286
 
1279
1287
  Tooltip.TRANSITION_DURATION = 150
1280
1288
 
@@ -1565,9 +1573,11 @@ if (typeof jQuery === 'undefined') {
1565
1573
 
1566
1574
  function complete() {
1567
1575
  if (that.hoverState != 'in') $tip.detach()
1568
- that.$element
1569
- .removeAttr('aria-describedby')
1570
- .trigger('hidden.bs.' + that.type)
1576
+ if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1577
+ that.$element
1578
+ .removeAttr('aria-describedby')
1579
+ .trigger('hidden.bs.' + that.type)
1580
+ }
1571
1581
  callback && callback()
1572
1582
  }
1573
1583
 
@@ -1610,7 +1620,10 @@ if (typeof jQuery === 'undefined') {
1610
1620
  // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1611
1621
  elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1612
1622
  }
1613
- var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
1623
+ var isSvg = window.SVGElement && el instanceof window.SVGElement
1624
+ // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1625
+ // See https://github.com/twbs/bootstrap/issues/20280
1626
+ var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1614
1627
  var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1615
1628
  var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1616
1629
 
@@ -1726,6 +1739,7 @@ if (typeof jQuery === 'undefined') {
1726
1739
  that.$tip = null
1727
1740
  that.$arrow = null
1728
1741
  that.$viewport = null
1742
+ that.$element = null
1729
1743
  })
1730
1744
  }
1731
1745
 
@@ -1762,10 +1776,10 @@ if (typeof jQuery === 'undefined') {
1762
1776
  }(jQuery);
1763
1777
 
1764
1778
  /* ========================================================================
1765
- * Bootstrap: popover.js v3.3.6
1779
+ * Bootstrap: popover.js v3.3.7
1766
1780
  * http://getbootstrap.com/javascript/#popovers
1767
1781
  * ========================================================================
1768
- * Copyright 2011-2015 Twitter, Inc.
1782
+ * Copyright 2011-2016 Twitter, Inc.
1769
1783
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1770
1784
  * ======================================================================== */
1771
1785
 
@@ -1782,7 +1796,7 @@ if (typeof jQuery === 'undefined') {
1782
1796
 
1783
1797
  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1784
1798
 
1785
- Popover.VERSION = '3.3.6'
1799
+ Popover.VERSION = '3.3.7'
1786
1800
 
1787
1801
  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1788
1802
  placement: 'right',
@@ -1871,10 +1885,10 @@ if (typeof jQuery === 'undefined') {
1871
1885
  }(jQuery);
1872
1886
 
1873
1887
  /* ========================================================================
1874
- * Bootstrap: scrollspy.js v3.3.6
1888
+ * Bootstrap: scrollspy.js v3.3.7
1875
1889
  * http://getbootstrap.com/javascript/#scrollspy
1876
1890
  * ========================================================================
1877
- * Copyright 2011-2015 Twitter, Inc.
1891
+ * Copyright 2011-2016 Twitter, Inc.
1878
1892
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1879
1893
  * ======================================================================== */
1880
1894
 
@@ -1900,7 +1914,7 @@ if (typeof jQuery === 'undefined') {
1900
1914
  this.process()
1901
1915
  }
1902
1916
 
1903
- ScrollSpy.VERSION = '3.3.6'
1917
+ ScrollSpy.VERSION = '3.3.7'
1904
1918
 
1905
1919
  ScrollSpy.DEFAULTS = {
1906
1920
  offset: 10
@@ -2044,10 +2058,10 @@ if (typeof jQuery === 'undefined') {
2044
2058
  }(jQuery);
2045
2059
 
2046
2060
  /* ========================================================================
2047
- * Bootstrap: tab.js v3.3.6
2061
+ * Bootstrap: tab.js v3.3.7
2048
2062
  * http://getbootstrap.com/javascript/#tabs
2049
2063
  * ========================================================================
2050
- * Copyright 2011-2015 Twitter, Inc.
2064
+ * Copyright 2011-2016 Twitter, Inc.
2051
2065
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2052
2066
  * ======================================================================== */
2053
2067
 
@@ -2064,7 +2078,7 @@ if (typeof jQuery === 'undefined') {
2064
2078
  // jscs:enable requireDollarBeforejQueryAssignment
2065
2079
  }
2066
2080
 
2067
- Tab.VERSION = '3.3.6'
2081
+ Tab.VERSION = '3.3.7'
2068
2082
 
2069
2083
  Tab.TRANSITION_DURATION = 150
2070
2084
 
@@ -2200,10 +2214,10 @@ if (typeof jQuery === 'undefined') {
2200
2214
  }(jQuery);
2201
2215
 
2202
2216
  /* ========================================================================
2203
- * Bootstrap: affix.js v3.3.6
2217
+ * Bootstrap: affix.js v3.3.7
2204
2218
  * http://getbootstrap.com/javascript/#affix
2205
2219
  * ========================================================================
2206
- * Copyright 2011-2015 Twitter, Inc.
2220
+ * Copyright 2011-2016 Twitter, Inc.
2207
2221
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2208
2222
  * ======================================================================== */
2209
2223
 
@@ -2229,7 +2243,7 @@ if (typeof jQuery === 'undefined') {
2229
2243
  this.checkPosition()
2230
2244
  }
2231
2245
 
2232
- Affix.VERSION = '3.3.6'
2246
+ Affix.VERSION = '3.3.7'
2233
2247
 
2234
2248
  Affix.RESET = 'affix affix-top affix-bottom'
2235
2249