bootstrap-sass 3.3.7 → 3.4.0

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 (103) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +4 -10
  3. data/CHANGELOG.md +5 -0
  4. data/Gemfile +1 -4
  5. data/README.md +26 -58
  6. data/Rakefile +10 -8
  7. data/assets/javascripts/bootstrap-sprockets.js +3 -3
  8. data/assets/javascripts/bootstrap.js +120 -89
  9. data/assets/javascripts/bootstrap.min.js +3 -4
  10. data/assets/javascripts/bootstrap/affix.js +7 -5
  11. data/assets/javascripts/bootstrap/alert.js +6 -5
  12. data/assets/javascripts/bootstrap/button.js +4 -4
  13. data/assets/javascripts/bootstrap/carousel.js +16 -7
  14. data/assets/javascripts/bootstrap/collapse.js +6 -6
  15. data/assets/javascripts/bootstrap/dropdown.js +5 -5
  16. data/assets/javascripts/bootstrap/modal.js +43 -24
  17. data/assets/javascripts/bootstrap/popover.js +6 -6
  18. data/assets/javascripts/bootstrap/scrollspy.js +4 -4
  19. data/assets/javascripts/bootstrap/tab.js +10 -10
  20. data/assets/javascripts/bootstrap/tooltip.js +6 -6
  21. data/assets/javascripts/bootstrap/transition.js +5 -5
  22. data/assets/stylesheets/_bootstrap.scss +2 -2
  23. data/assets/stylesheets/bootstrap/_alerts.scss +3 -3
  24. data/assets/stylesheets/bootstrap/_badges.scss +3 -3
  25. data/assets/stylesheets/bootstrap/_breadcrumbs.scss +2 -2
  26. data/assets/stylesheets/bootstrap/_button-groups.scss +5 -5
  27. data/assets/stylesheets/bootstrap/_buttons.scss +4 -4
  28. data/assets/stylesheets/bootstrap/_carousel.scss +26 -25
  29. data/assets/stylesheets/bootstrap/_close.scss +1 -0
  30. data/assets/stylesheets/bootstrap/_code.scss +3 -3
  31. data/assets/stylesheets/bootstrap/_component-animations.scss +1 -0
  32. data/assets/stylesheets/bootstrap/_dropdowns.scss +20 -23
  33. data/assets/stylesheets/bootstrap/_forms.scss +47 -57
  34. data/assets/stylesheets/bootstrap/_glyphicons.scss +9 -9
  35. data/assets/stylesheets/bootstrap/_grid.scss +10 -0
  36. data/assets/stylesheets/bootstrap/_input-groups.scss +2 -2
  37. data/assets/stylesheets/bootstrap/_jumbotron.scss +5 -5
  38. data/assets/stylesheets/bootstrap/_labels.scss +1 -1
  39. data/assets/stylesheets/bootstrap/_list-group.scss +30 -32
  40. data/assets/stylesheets/bootstrap/_media.scss +1 -1
  41. data/assets/stylesheets/bootstrap/_modals.scss +6 -6
  42. data/assets/stylesheets/bootstrap/_navbar.scss +75 -81
  43. data/assets/stylesheets/bootstrap/_navs.scss +4 -4
  44. data/assets/stylesheets/bootstrap/_normalize.scss +5 -2
  45. data/assets/stylesheets/bootstrap/_pager.scss +2 -2
  46. data/assets/stylesheets/bootstrap/_pagination.scss +12 -15
  47. data/assets/stylesheets/bootstrap/_panels.scss +4 -4
  48. data/assets/stylesheets/bootstrap/_popovers.scss +47 -52
  49. data/assets/stylesheets/bootstrap/_print.scss +90 -92
  50. data/assets/stylesheets/bootstrap/_progress-bars.scss +3 -3
  51. data/assets/stylesheets/bootstrap/_responsive-embed.scss +2 -2
  52. data/assets/stylesheets/bootstrap/_responsive-utilities.scss +3 -3
  53. data/assets/stylesheets/bootstrap/_scaffolding.scss +7 -7
  54. data/assets/stylesheets/bootstrap/_tables.scss +23 -23
  55. data/assets/stylesheets/bootstrap/_theme.scss +21 -17
  56. data/assets/stylesheets/bootstrap/_thumbnails.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_tooltip.scss +38 -27
  58. data/assets/stylesheets/bootstrap/_type.scss +10 -10
  59. data/assets/stylesheets/bootstrap/_variables.scss +6 -6
  60. data/assets/stylesheets/bootstrap/_wells.scss +2 -2
  61. data/assets/stylesheets/bootstrap/mixins/_alerts.scss +2 -1
  62. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +4 -4
  63. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -10
  64. data/assets/stylesheets/bootstrap/mixins/_center-block.scss +1 -1
  65. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +1 -1
  66. data/assets/stylesheets/bootstrap/mixins/_forms.scss +4 -4
  67. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +6 -8
  68. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +1 -1
  69. data/assets/stylesheets/bootstrap/mixins/_grid.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_image.scss +5 -10
  71. data/assets/stylesheets/bootstrap/mixins/_opacity.scss +2 -3
  72. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +4 -4
  73. data/assets/stylesheets/bootstrap/mixins/_resize.scss +1 -1
  74. data/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +0 -4
  75. data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +1 -1
  76. data/bootstrap-sass.gemspec +5 -4
  77. data/bower.json +1 -1
  78. data/composer.json +1 -1
  79. data/lib/bootstrap-sass.rb +13 -16
  80. data/lib/bootstrap-sass/version.rb +2 -2
  81. data/package-lock.json +1611 -0
  82. data/package.json +3 -3
  83. data/tasks/converter/less_conversion.rb +7 -8
  84. data/tasks/converter/network.rb +2 -2
  85. data/templates/project/_bootstrap-variables.sass +7 -7
  86. data/test/compilation_test.rb +24 -12
  87. data/test/dummy_rails/config/application.rb +1 -0
  88. data/test/dummy_rails/config/boot.rb +1 -1
  89. data/test/dummy_sass_only/Gemfile +1 -1
  90. data/test/dummy_sass_only/compile.rb +14 -7
  91. data/test/dummy_sass_only/import_all.scss +2 -0
  92. data/test/gemfiles/default.gemfile +3 -0
  93. data/test/node_sass_compile_test.sh +4 -3
  94. data/test/sass_test.rb +10 -7
  95. data/test/sprockets_rails_test.rb +12 -8
  96. data/test/test_helper.rb +2 -1
  97. metadata +33 -26
  98. data/test/compass_test.rb +0 -9
  99. data/test/dummy_sass_only/import_all.sass +0 -2
  100. data/test/gemfiles/rails_head.gemfile +0 -17
  101. data/test/gemfiles/sass_3_3.gemfile +0 -9
  102. data/test/gemfiles/sass_3_4.gemfile +0 -7
  103. data/test/gemfiles/sass_head.gemfile +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 013bb0c0a90ddf8a44535fa62101bdd689b546e3
4
- data.tar.gz: 25f3ca5f87b51c621ccc005a1f928e942fdf1150
2
+ SHA256:
3
+ metadata.gz: '07850cc5ac85a4f204ab4cbe524fc42449a1762ca221683251cfeb3081157f9d'
4
+ data.tar.gz: a66f6e021f0448cb037cedd5ab7aff7b86eb094f5cd77e4e57008d7e900b4223
5
5
  SHA512:
6
- metadata.gz: e5a94c51d3bf95ef518fbc2ad79415db4895927fc81d0762dc4768b63f8a750e6526aeeaefd56843d119f940538e2263081f65d1271bb7b6dba671654f3476c8
7
- data.tar.gz: 9a298b7413d8d280786eca28e13f877ea093d33e2b36b82044c316e223a3c1735aa9a8cb8e93710dd43552123962dbca9b3f86e6852844b1dc64d0bca3deb19b
6
+ metadata.gz: f5d1ed2c991b539000b7f50542c112b6269552c57a778eb07c14a48924107acd915a35805ee6c7764a2702b927974d00f31d71dc8b56cbb25e1ef3c66a535493
7
+ data.tar.gz: 9c0ef034d7059f44b7daa5579f70bfd33a7b4bccb3114f32cc626e97ee5b40e56514a20ba0b846742eaa557d133ec64d8918b338e3f921be572fb88844ed5175
@@ -1,25 +1,19 @@
1
+ dist: xenial
1
2
  language: ruby
2
3
  cache: bundler
3
4
  bundler_args: --path ../../vendor/bundle --without debug
4
5
  rvm:
5
- - 2.2.3
6
+ - 2.5.1
6
7
  gemfile:
7
- - test/gemfiles/rails_head.gemfile
8
- - test/gemfiles/sass_3_3.gemfile
9
- - test/gemfiles/sass_3_4.gemfile
10
- - test/gemfiles/sass_head.gemfile
8
+ - test/gemfiles/default.gemfile
11
9
  before_install:
12
10
  - "nvm install stable"
13
11
  - "npm install"
14
- matrix:
15
- allow_failures:
16
- - gemfile: test/gemfiles/rails_head.gemfile
17
- - gemfile: test/gemfiles/sass_head.gemfile
18
12
  notifications:
19
13
  slack: heybb:3n88HHilXn76ji9vV4gL819Y
20
14
  env:
21
15
  global:
22
16
  - VERBOSE=1
23
17
  script:
24
- bundle exec rake && sh test/*.sh
18
+ bundle exec rake && bash test/*.sh
25
19
  sudo: false
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.4.0
4
+
5
+ * Bootstrap rubygem now depends on SassC instead of Sass.
6
+ * Compass no longer supported.
7
+
3
8
  ## 3.3.7
4
9
 
5
10
  * Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048)
data/Gemfile CHANGED
@@ -2,9 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- # Compass for the dummy app
6
- gem 'compass', require: false
7
-
8
5
  group :development do
9
- gem 'byebug', platforms: [:mri_21, :mri_22], require: false
6
+ gem 'byebug', platform: :mri, require: false
10
7
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Bootstrap for Sass
1
+ # Bootstrap 3 for Sass
2
2
  [![Gem Version](https://badge.fury.io/rb/bootstrap-sass.svg)](http://badge.fury.io/rb/bootstrap-sass)
3
3
  [![npm version](https://img.shields.io/npm/v/bootstrap-sass.svg?style=flat)](https://www.npmjs.com/package/bootstrap-sass)
4
4
  [![Bower Version](https://badge.fury.io/bo/bootstrap-sass.svg)](http://badge.fury.io/bo/bootstrap-sass)
@@ -6,16 +6,15 @@
6
6
 
7
7
  `bootstrap-sass` is a Sass-powered version of [Bootstrap](https://github.com/twbs/bootstrap) 3, ready to drop right into your Sass powered applications.
8
8
 
9
- This is Bootstrap 3. For Bootstrap 4 use the [Bootstrap Ruby gem](http://github.com/twbs/bootstrap-rubygem) if you use Ruby, and the [main repo](http://github.com/twbs/bootstrap) otherwise.
9
+ This is Bootstrap **3**. For Bootstrap **4** use the [Bootstrap rubygem](https://github.com/twbs/bootstrap-rubygem) if you use Ruby, and the [main repo](https://github.com/twbs/bootstrap) otherwise.
10
10
 
11
11
  ## Installation
12
12
 
13
13
  Please see the appropriate guide for your environment of choice:
14
14
 
15
15
  * [Ruby on Rails](#a-ruby-on-rails).
16
- * [Compass](#b-compass-without-rails) not on Rails.
17
- * [Bower](#c-bower).
18
- * [npm / Node.js](#d-npm--nodejs).
16
+ * [Bower](#b-bower).
17
+ * [npm / Node.js](#c-npm--nodejs).
19
18
 
20
19
  ### a. Ruby on Rails
21
20
 
@@ -24,8 +23,8 @@ Please see the appropriate guide for your environment of choice:
24
23
  In your Gemfile you need to add the `bootstrap-sass` gem, and ensure that the `sass-rails` gem is present - it is added to new Rails applications by default.
25
24
 
26
25
  ```ruby
27
- gem 'bootstrap-sass', '~> 3.3.6'
28
- gem 'sass-rails', '>= 3.2'
26
+ gem 'bootstrap-sass', '~> 3.4.0'
27
+ gem 'sassc-rails', '>= 2.0.0'
29
28
  ```
30
29
 
31
30
  `bundle install` and restart your server to make the files available through the pipeline.
@@ -51,6 +50,17 @@ Then, remove all the `*= require_self` and `*= require_tree .` statements from t
51
50
 
52
51
  Do not use `*= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables.
53
52
 
53
+ Bootstrap JavaScript depends on jQuery.
54
+ If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
55
+
56
+ ```ruby
57
+ gem 'jquery-rails'
58
+ ```
59
+
60
+ ```console
61
+ $ bundle install
62
+ ```
63
+
54
64
  Require Bootstrap Javascripts in `app/assets/javascripts/application.js`:
55
65
 
56
66
  ```js
@@ -101,49 +111,7 @@ Please make sure `sprockets-rails` is at least v2.1.4.
101
111
 
102
112
  bootstrap-sass is no longer compatible with Rails 3. The latest version of bootstrap-sass compatible with Rails 3.2 is v3.1.1.0.
103
113
 
104
- ### b. Compass without Rails
105
-
106
- Install the gem:
107
-
108
- ```console
109
- $ gem install bootstrap-sass
110
- ```
111
-
112
- If you have an existing Compass project:
113
-
114
- 1. Require `bootstrap-sass` in `config.rb`:
115
-
116
- ```ruby
117
- require 'bootstrap-sass'
118
- ```
119
-
120
- 2. Install Bootstrap with:
121
-
122
- ```console
123
- $ bundle exec compass install bootstrap -r bootstrap-sass
124
- ```
125
-
126
- If you are creating a new Compass project, you can generate it with bootstrap-sass support:
127
-
128
- ```console
129
- $ bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap
130
- ```
131
-
132
- or, alternatively, if you're not using a Gemfile for your dependencies:
133
-
134
- ```console
135
- $ compass create my-new-project -r bootstrap-sass --using bootstrap
136
- ```
137
-
138
- This will create a new Compass project with the following files in it:
139
-
140
- * [styles.sass](/templates/project/styles.sass) - main project Sass file, imports Bootstrap and variables.
141
- * [_bootstrap-variables.sass](/templates/project/_bootstrap-variables.sass) - all of Bootstrap variables, override them here.
142
-
143
- Some bootstrap-sass mixins may conflict with the Compass ones.
144
- If this happens, change the import order so that Compass mixins are loaded later.
145
-
146
- ### c. Bower
114
+ ### b. Bower
147
115
 
148
116
  bootstrap-sass Bower package is compatible with node-sass 3.2.0+. You can install it with:
149
117
 
@@ -176,7 +144,7 @@ In `application.js`:
176
144
 
177
145
  See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer.
178
146
 
179
- ### d. npm / Node.js
147
+ ### c. npm / Node.js
180
148
  ```console
181
149
  $ npm install bootstrap-sass
182
150
  ```
@@ -201,8 +169,8 @@ In the application Sass file, replace `@import 'bootstrap'` with:
201
169
 
202
170
  bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5).
203
171
 
204
- Precision is set for Rails and Compass automatically.
205
- When using Ruby Sass compiler standalone or with the Bower version you can set it with:
172
+ Precision is set for Ruby automatically when using the `sassc-rails` gem.
173
+ When using the npm or Bower version with Ruby, you can set it with:
206
174
 
207
175
  ```ruby
208
176
  ::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
@@ -211,9 +179,9 @@ When using Ruby Sass compiler standalone or with the Bower version you can set i
211
179
  ### Sass: Autoprefixer
212
180
 
213
181
  Bootstrap requires the use of [Autoprefixer][autoprefixer].
214
- [Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](http://caniuse.com/).
182
+ [Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](https://caniuse.com/).
215
183
 
216
- To match [upstream Bootstrap's level of browser compatibility](http://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to:
184
+ To match [upstream Bootstrap's level of browser compatibility](https://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to:
217
185
  ```json
218
186
  [
219
187
  "Android 2.3",
@@ -284,7 +252,7 @@ You can also include optional Bootstrap theme:
284
252
  @import "bootstrap/theme";
285
253
  ```
286
254
 
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.:
255
+ The full list of Bootstrap variables can be found [here](https://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.:
288
256
 
289
257
  ```scss
290
258
  $navbar-default-bg: #312312;
@@ -313,7 +281,7 @@ or import only the parts of Bootstrap you need:
313
281
  ## Version
314
282
 
315
283
  Bootstrap for Sass version may differ from the upstream version in the last number, known as
316
- [PATCH](http://semver.org/spec/v2.0.0.html). The patch version may be ahead of the corresponding upstream minor.
284
+ [PATCH](https://semver.org/spec/v2.0.0.html). The patch version may be ahead of the corresponding upstream minor.
317
285
  This happens when we need to release Sass-specific changes.
318
286
 
319
287
  Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for
@@ -384,7 +352,7 @@ Michael Hartl's [Rails Tutorial](https://www.railstutorial.org/), [gitlabhq](htt
384
352
  [version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb
385
353
  [contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors
386
354
  [antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595
387
- [jsdocs]: http://getbootstrap.com/javascript/#transitions
355
+ [jsdocs]: https://getbootstrap.com/javascript/#transitions
388
356
  [sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method
389
357
  [mincer]: https://github.com/nodeca/mincer
390
358
  [autoprefixer]: https://github.com/postcss/autoprefixer
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- lib_path = File.join(File.dirname(__FILE__), 'lib')
1
+ lib_path = File.join(__dir__, 'lib')
2
2
  $:.unshift(lib_path) unless $:.include?(lib_path)
3
3
 
4
4
  load './tasks/bower.rake'
@@ -42,11 +42,12 @@ end
42
42
 
43
43
  desc 'Dumps output to a CSS file for testing'
44
44
  task :debug do
45
- require 'sass'
45
+ require 'sassc'
46
+ require 'bootstrap-sass'
46
47
  path = Bootstrap.stylesheets_path
47
- %w(bootstrap).each do |file|
48
- engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
49
- File.open("./#{file}.css", 'w') { |f| f.write(engine.render) }
48
+ %w(_bootstrap).each do |file|
49
+ engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: ['.', path])
50
+ File.open("tmp/#{file}.css", 'w') { |f| f.write(engine.render) }
50
51
  end
51
52
  end
52
53
 
@@ -64,7 +65,8 @@ end
64
65
 
65
66
  desc 'Compile bootstrap-sass to tmp/ (or first arg)'
66
67
  task :compile, :css_path do |t, args|
67
- require 'sass'
68
+ require 'sassc'
69
+ require 'bootstrap-sass'
68
70
  require 'term/ansicolor'
69
71
 
70
72
  path = 'assets/stylesheets'
@@ -74,8 +76,8 @@ task :compile, :css_path do |t, args|
74
76
  %w(_bootstrap bootstrap/_theme).each do |file|
75
77
  save_path = "#{css_path}/#{file.sub(/(^|\/)?_+/, '\1').sub('/', '-')}.css"
76
78
  puts Term::ANSIColor.cyan(" #{save_path}") + '...'
77
- engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
78
- css = engine.render
79
+ engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: ['.', path])
80
+ css = engine.render
79
81
  File.open(save_path, 'w') { |f| f.write css }
80
82
  end
81
83
  end
@@ -1,12 +1,12 @@
1
- //= require ./bootstrap/transition
1
+ //= require ./bootstrap/affix
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/tab
9
- //= require ./bootstrap/affix
10
8
  //= require ./bootstrap/scrollspy
9
+ //= require ./bootstrap/tab
10
+ //= require ./bootstrap/transition
11
11
  //= require ./bootstrap/tooltip
12
12
  //= require ./bootstrap/popover
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 Twitter, Inc.
2
+ * Bootstrap v3.4.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2018 Twitter, Inc.
4
4
  * Licensed under the MIT license
5
5
  */
6
6
 
@@ -17,10 +17,10 @@ if (typeof jQuery === 'undefined') {
17
17
  }(jQuery);
18
18
 
19
19
  /* ========================================================================
20
- * Bootstrap: transition.js v3.3.7
21
- * http://getbootstrap.com/javascript/#transitions
20
+ * Bootstrap: transition.js v3.4.0
21
+ * https://getbootstrap.com/docs/3.4/javascript/#transitions
22
22
  * ========================================================================
23
- * Copyright 2011-2016 Twitter, Inc.
23
+ * Copyright 2011-2018 Twitter, Inc.
24
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
28
  +function ($) {
29
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
34
  function transitionEnd() {
@@ -50,7 +50,7 @@ if (typeof jQuery === 'undefined') {
50
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
54
  $.fn.emulateTransitionEnd = function (duration) {
55
55
  var called = false
56
56
  var $el = this
@@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') {
77
77
  }(jQuery);
78
78
 
79
79
  /* ========================================================================
80
- * Bootstrap: alert.js v3.3.7
81
- * http://getbootstrap.com/javascript/#alerts
80
+ * Bootstrap: alert.js v3.4.0
81
+ * https://getbootstrap.com/docs/3.4/javascript/#alerts
82
82
  * ========================================================================
83
- * Copyright 2011-2016 Twitter, Inc.
83
+ * Copyright 2011-2018 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.7'
99
+ Alert.VERSION = '3.4.0'
100
100
 
101
101
  Alert.TRANSITION_DURATION = 150
102
102
 
@@ -109,7 +109,8 @@ if (typeof jQuery === 'undefined') {
109
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
115
  if (e) e.preventDefault()
115
116
 
@@ -172,10 +173,10 @@ if (typeof jQuery === 'undefined') {
172
173
  }(jQuery);
173
174
 
174
175
  /* ========================================================================
175
- * Bootstrap: button.js v3.3.7
176
- * http://getbootstrap.com/javascript/#buttons
176
+ * Bootstrap: button.js v3.4.0
177
+ * https://getbootstrap.com/docs/3.4/javascript/#buttons
177
178
  * ========================================================================
178
- * Copyright 2011-2016 Twitter, Inc.
179
+ * Copyright 2011-2018 Twitter, Inc.
179
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
193
  this.isLoading = false
193
194
  }
194
195
 
195
- Button.VERSION = '3.3.7'
196
+ Button.VERSION = '3.4.0'
196
197
 
197
198
  Button.DEFAULTS = {
198
199
  loadingText: 'loading...'
@@ -298,10 +299,10 @@ if (typeof jQuery === 'undefined') {
298
299
  }(jQuery);
299
300
 
300
301
  /* ========================================================================
301
- * Bootstrap: carousel.js v3.3.7
302
- * http://getbootstrap.com/javascript/#carousel
302
+ * Bootstrap: carousel.js v3.4.0
303
+ * https://getbootstrap.com/docs/3.4/javascript/#carousel
303
304
  * ========================================================================
304
- * Copyright 2011-2016 Twitter, Inc.
305
+ * Copyright 2011-2018 Twitter, Inc.
305
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
330
  .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
330
331
  }
331
332
 
332
- Carousel.VERSION = '3.3.7'
333
+ Carousel.VERSION = '3.4.0'
333
334
 
334
335
  Carousel.TRANSITION_DURATION = 600
335
336
 
@@ -443,7 +444,9 @@ if (typeof jQuery === 'undefined') {
443
444
  var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
444
445
  if ($.support.transition && this.$element.hasClass('slide')) {
445
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
450
  $active.addClass(direction)
448
451
  $next.addClass(direction)
449
452
  $active
@@ -505,10 +508,17 @@ if (typeof jQuery === 'undefined') {
505
508
  // =================
506
509
 
507
510
  var clickHandler = function (e) {
508
- var href
509
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
520
  if (!$target.hasClass('carousel')) return
521
+
512
522
  var options = $.extend({}, $target.data(), $this.data())
513
523
  var slideIndex = $this.attr('data-slide-to')
514
524
  if (slideIndex) options.interval = false
@@ -536,10 +546,10 @@ if (typeof jQuery === 'undefined') {
536
546
  }(jQuery);
537
547
 
538
548
  /* ========================================================================
539
- * Bootstrap: collapse.js v3.3.7
540
- * http://getbootstrap.com/javascript/#collapse
549
+ * Bootstrap: collapse.js v3.4.0
550
+ * https://getbootstrap.com/docs/3.4/javascript/#collapse
541
551
  * ========================================================================
542
- * Copyright 2011-2016 Twitter, Inc.
552
+ * Copyright 2011-2018 Twitter, Inc.
543
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
577
  if (this.options.toggle) this.toggle()
568
578
  }
569
579
 
570
- Collapse.VERSION = '3.3.7'
580
+ Collapse.VERSION = '3.4.0'
571
581
 
572
582
  Collapse.TRANSITION_DURATION = 350
573
583
 
@@ -674,7 +684,7 @@ if (typeof jQuery === 'undefined') {
674
684
  }
675
685
 
676
686
  Collapse.prototype.getParent = function () {
677
- return $(this.options.parent)
687
+ return $(document).find(this.options.parent)
678
688
  .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
679
689
  .each($.proxy(function (i, element) {
680
690
  var $element = $(element)
@@ -697,7 +707,7 @@ if (typeof jQuery === 'undefined') {
697
707
  var target = $trigger.attr('data-target')
698
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
759
  }(jQuery);
750
760
 
751
761
  /* ========================================================================
752
- * Bootstrap: dropdown.js v3.3.7
753
- * http://getbootstrap.com/javascript/#dropdowns
762
+ * Bootstrap: dropdown.js v3.4.0
763
+ * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
754
764
  * ========================================================================
755
- * Copyright 2011-2016 Twitter, Inc.
765
+ * Copyright 2011-2018 Twitter, Inc.
756
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
779
  $(element).on('click.bs.dropdown', this.toggle)
770
780
  }
771
781
 
772
- Dropdown.VERSION = '3.3.7'
782
+ Dropdown.VERSION = '3.4.0'
773
783
 
774
784
  function getParent($this) {
775
785
  var selector = $this.attr('data-target')
@@ -779,7 +789,7 @@ if (typeof jQuery === 'undefined') {
779
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)
783
793
 
784
794
  return $parent && $parent.length ? $parent : $this.parent()
785
795
  }
@@ -915,10 +925,10 @@ if (typeof jQuery === 'undefined') {
915
925
  }(jQuery);
916
926
 
917
927
  /* ========================================================================
918
- * Bootstrap: modal.js v3.3.7
919
- * http://getbootstrap.com/javascript/#modals
928
+ * Bootstrap: modal.js v3.4.0
929
+ * https://getbootstrap.com/docs/3.4/javascript/#modals
920
930
  * ========================================================================
921
- * Copyright 2011-2016 Twitter, Inc.
931
+ * Copyright 2011-2018 Twitter, Inc.
922
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
942
  var Modal = function (element, options) {
933
- this.options = options
934
- this.$body = $(document.body)
935
- this.$element = $(element)
936
- this.$dialog = this.$element.find('.modal-dialog')
937
- this.$backdrop = null
938
- this.isShown = null
939
- this.originalBodyPad = null
940
- this.scrollbarWidth = 0
943
+ this.options = options
944
+ this.$body = $(document.body)
945
+ this.$element = $(element)
946
+ this.$dialog = this.$element.find('.modal-dialog')
947
+ this.$backdrop = null
948
+ this.isShown = null
949
+ this.originalBodyPad = null
950
+ this.scrollbarWidth = 0
941
951
  this.ignoreBackdropClick = false
952
+ this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
942
953
 
943
954
  if (this.options.remote) {
944
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.0'
953
964
 
954
965
  Modal.TRANSITION_DURATION = 300
955
966
  Modal.BACKDROP_TRANSITION_DURATION = 150
@@ -966,7 +977,7 @@ if (typeof jQuery === 'undefined') {
966
977
 
967
978
  Modal.prototype.show = function (_relatedTarget) {
968
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
982
  this.$element.trigger(e)
972
983
 
@@ -1057,8 +1068,8 @@ if (typeof jQuery === 'undefined') {
1057
1068
  .off('focusin.bs.modal') // guard against infinite focus loop
1058
1069
  .on('focusin.bs.modal', $.proxy(function (e) {
1059
1070
  if (document !== e.target &&
1060
- this.$element[0] !== e.target &&
1061
- !this.$element.has(e.target).length) {
1071
+ this.$element[0] !== e.target &&
1072
+ !this.$element.has(e.target).length) {
1062
1073
  this.$element.trigger('focus')
1063
1074
  }
1064
1075
  }, this))
@@ -1160,7 +1171,7 @@ if (typeof jQuery === 'undefined') {
1160
1171
  var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1161
1172
 
1162
1173
  this.$element.css({
1163
- paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1174
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1164
1175
  paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1165
1176
  })
1166
1177
  }
@@ -1185,11 +1196,26 @@ if (typeof jQuery === 'undefined') {
1185
1196
  Modal.prototype.setScrollbar = function () {
1186
1197
  var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1187
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
1212
  Modal.prototype.resetScrollbar = function () {
1192
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
1221
  Modal.prototype.measureScrollbar = function () { // thx walsh
@@ -1207,8 +1233,8 @@ if (typeof jQuery === 'undefined') {
1207
1233
 
1208
1234
  function Plugin(option, _relatedTarget) {
1209
1235
  return this.each(function () {
1210
- var $this = $(this)
1211
- var data = $this.data('bs.modal')
1236
+ var $this = $(this)
1237
+ var data = $this.data('bs.modal')
1212
1238
  var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1213
1239
 
1214
1240
  if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
@@ -1219,7 +1245,7 @@ if (typeof jQuery === 'undefined') {
1219
1245
 
1220
1246
  var old = $.fn.modal
1221
1247
 
1222
- $.fn.modal = Plugin
1248
+ $.fn.modal = Plugin
1223
1249
  $.fn.modal.Constructor = Modal
1224
1250
 
1225
1251
 
@@ -1236,10 +1262,13 @@ if (typeof jQuery === 'undefined') {
1236
1262
  // ==============
1237
1263
 
1238
1264
  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1239
- var $this = $(this)
1240
- var href = $this.attr('href')
1241
- var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
1242
- var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1265
+ var $this = $(this)
1266
+ var href = $this.attr('href')
1267
+ var target = $this.attr('data-target') ||
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
1273
  if ($this.is('a')) e.preventDefault()
1245
1274
 
@@ -1255,11 +1284,11 @@ if (typeof jQuery === 'undefined') {
1255
1284
  }(jQuery);
1256
1285
 
1257
1286
  /* ========================================================================
1258
- * Bootstrap: tooltip.js v3.3.7
1259
- * http://getbootstrap.com/javascript/#tooltip
1287
+ * Bootstrap: tooltip.js v3.4.0
1288
+ * https://getbootstrap.com/docs/3.4/javascript/#tooltip
1260
1289
  * Inspired by the original jQuery.tipsy by Jason Frame
1261
1290
  * ========================================================================
1262
- * Copyright 2011-2016 Twitter, Inc.
1291
+ * Copyright 2011-2018 Twitter, Inc.
1263
1292
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1264
1293
  * ======================================================================== */
1265
1294
 
@@ -1282,7 +1311,7 @@ if (typeof jQuery === 'undefined') {
1282
1311
  this.init('tooltip', element, options)
1283
1312
  }
1284
1313
 
1285
- Tooltip.VERSION = '3.3.7'
1314
+ Tooltip.VERSION = '3.4.0'
1286
1315
 
1287
1316
  Tooltip.TRANSITION_DURATION = 150
1288
1317
 
@@ -1307,7 +1336,7 @@ if (typeof jQuery === 'undefined') {
1307
1336
  this.type = type
1308
1337
  this.$element = $(element)
1309
1338
  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))
1339
+ 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
1340
  this.inState = { click: false, hover: false, focus: false }
1312
1341
 
1313
1342
  if (this.$element[0] instanceof document.constructor && !this.options.selector) {
@@ -1460,7 +1489,7 @@ if (typeof jQuery === 'undefined') {
1460
1489
  .addClass(placement)
1461
1490
  .data('bs.' + this.type, this)
1462
1491
 
1463
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1492
+ this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
1464
1493
  this.$element.trigger('inserted.bs.' + this.type)
1465
1494
 
1466
1495
  var pos = this.getPosition()
@@ -1776,10 +1805,10 @@ if (typeof jQuery === 'undefined') {
1776
1805
  }(jQuery);
1777
1806
 
1778
1807
  /* ========================================================================
1779
- * Bootstrap: popover.js v3.3.7
1780
- * http://getbootstrap.com/javascript/#popovers
1808
+ * Bootstrap: popover.js v3.4.0
1809
+ * https://getbootstrap.com/docs/3.4/javascript/#popovers
1781
1810
  * ========================================================================
1782
- * Copyright 2011-2016 Twitter, Inc.
1811
+ * Copyright 2011-2018 Twitter, Inc.
1783
1812
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1784
1813
  * ======================================================================== */
1785
1814
 
@@ -1796,7 +1825,7 @@ if (typeof jQuery === 'undefined') {
1796
1825
 
1797
1826
  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1798
1827
 
1799
- Popover.VERSION = '3.3.7'
1828
+ Popover.VERSION = '3.4.0'
1800
1829
 
1801
1830
  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1802
1831
  placement: 'right',
@@ -1844,8 +1873,8 @@ if (typeof jQuery === 'undefined') {
1844
1873
 
1845
1874
  return $e.attr('data-content')
1846
1875
  || (typeof o.content == 'function' ?
1847
- o.content.call($e[0]) :
1848
- o.content)
1876
+ o.content.call($e[0]) :
1877
+ o.content)
1849
1878
  }
1850
1879
 
1851
1880
  Popover.prototype.arrow = function () {
@@ -1885,10 +1914,10 @@ if (typeof jQuery === 'undefined') {
1885
1914
  }(jQuery);
1886
1915
 
1887
1916
  /* ========================================================================
1888
- * Bootstrap: scrollspy.js v3.3.7
1889
- * http://getbootstrap.com/javascript/#scrollspy
1917
+ * Bootstrap: scrollspy.js v3.4.0
1918
+ * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
1890
1919
  * ========================================================================
1891
- * Copyright 2011-2016 Twitter, Inc.
1920
+ * Copyright 2011-2018 Twitter, Inc.
1892
1921
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1893
1922
  * ======================================================================== */
1894
1923
 
@@ -1914,7 +1943,7 @@ if (typeof jQuery === 'undefined') {
1914
1943
  this.process()
1915
1944
  }
1916
1945
 
1917
- ScrollSpy.VERSION = '3.3.7'
1946
+ ScrollSpy.VERSION = '3.4.0'
1918
1947
 
1919
1948
  ScrollSpy.DEFAULTS = {
1920
1949
  offset: 10
@@ -2058,10 +2087,10 @@ if (typeof jQuery === 'undefined') {
2058
2087
  }(jQuery);
2059
2088
 
2060
2089
  /* ========================================================================
2061
- * Bootstrap: tab.js v3.3.7
2062
- * http://getbootstrap.com/javascript/#tabs
2090
+ * Bootstrap: tab.js v3.4.0
2091
+ * https://getbootstrap.com/docs/3.4/javascript/#tabs
2063
2092
  * ========================================================================
2064
- * Copyright 2011-2016 Twitter, Inc.
2093
+ * Copyright 2011-2018 Twitter, Inc.
2065
2094
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2066
2095
  * ======================================================================== */
2067
2096
 
@@ -2078,7 +2107,7 @@ if (typeof jQuery === 'undefined') {
2078
2107
  // jscs:enable requireDollarBeforejQueryAssignment
2079
2108
  }
2080
2109
 
2081
- Tab.VERSION = '3.3.7'
2110
+ Tab.VERSION = '3.4.0'
2082
2111
 
2083
2112
  Tab.TRANSITION_DURATION = 150
2084
2113
 
@@ -2107,7 +2136,7 @@ if (typeof jQuery === 'undefined') {
2107
2136
 
2108
2137
  if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2109
2138
 
2110
- var $target = $(selector)
2139
+ var $target = $(document).find(selector)
2111
2140
 
2112
2141
  this.activate($this.closest('li'), $ul)
2113
2142
  this.activate($target, $target.parent(), function () {
@@ -2132,15 +2161,15 @@ if (typeof jQuery === 'undefined') {
2132
2161
  $active
2133
2162
  .removeClass('active')
2134
2163
  .find('> .dropdown-menu > .active')
2135
- .removeClass('active')
2164
+ .removeClass('active')
2136
2165
  .end()
2137
2166
  .find('[data-toggle="tab"]')
2138
- .attr('aria-expanded', false)
2167
+ .attr('aria-expanded', false)
2139
2168
 
2140
2169
  element
2141
2170
  .addClass('active')
2142
2171
  .find('[data-toggle="tab"]')
2143
- .attr('aria-expanded', true)
2172
+ .attr('aria-expanded', true)
2144
2173
 
2145
2174
  if (transition) {
2146
2175
  element[0].offsetWidth // reflow for transition
@@ -2152,10 +2181,10 @@ if (typeof jQuery === 'undefined') {
2152
2181
  if (element.parent('.dropdown-menu').length) {
2153
2182
  element
2154
2183
  .closest('li.dropdown')
2155
- .addClass('active')
2184
+ .addClass('active')
2156
2185
  .end()
2157
2186
  .find('[data-toggle="tab"]')
2158
- .attr('aria-expanded', true)
2187
+ .attr('aria-expanded', true)
2159
2188
  }
2160
2189
 
2161
2190
  callback && callback()
@@ -2214,10 +2243,10 @@ if (typeof jQuery === 'undefined') {
2214
2243
  }(jQuery);
2215
2244
 
2216
2245
  /* ========================================================================
2217
- * Bootstrap: affix.js v3.3.7
2218
- * http://getbootstrap.com/javascript/#affix
2246
+ * Bootstrap: affix.js v3.4.0
2247
+ * https://getbootstrap.com/docs/3.4/javascript/#affix
2219
2248
  * ========================================================================
2220
- * Copyright 2011-2016 Twitter, Inc.
2249
+ * Copyright 2011-2018 Twitter, Inc.
2221
2250
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2222
2251
  * ======================================================================== */
2223
2252
 
@@ -2231,7 +2260,9 @@ if (typeof jQuery === 'undefined') {
2231
2260
  var Affix = function (element, options) {
2232
2261
  this.options = $.extend({}, Affix.DEFAULTS, options)
2233
2262
 
2234
- this.$target = $(this.options.target)
2263
+ var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
2264
+
2265
+ this.$target = target
2235
2266
  .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2236
2267
  .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2237
2268
 
@@ -2243,7 +2274,7 @@ if (typeof jQuery === 'undefined') {
2243
2274
  this.checkPosition()
2244
2275
  }
2245
2276
 
2246
- Affix.VERSION = '3.3.7'
2277
+ Affix.VERSION = '3.4.0'
2247
2278
 
2248
2279
  Affix.RESET = 'affix affix-top affix-bottom'
2249
2280