bootstrap-sass 3.3.7 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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