bootstrap-sass 3.3.3 → 3.3.4.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -1
- data/README.md +36 -14
- data/Rakefile +12 -1
- data/assets/javascripts/bootstrap-sprockets.js +2 -2
- data/assets/javascripts/bootstrap.js +108 -97
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/javascripts/bootstrap/affix.js +5 -5
- data/assets/javascripts/bootstrap/alert.js +2 -2
- data/assets/javascripts/bootstrap/button.js +2 -2
- data/assets/javascripts/bootstrap/carousel.js +6 -6
- data/assets/javascripts/bootstrap/collapse.js +7 -7
- data/assets/javascripts/bootstrap/dropdown.js +3 -3
- data/assets/javascripts/bootstrap/modal.js +41 -26
- data/assets/javascripts/bootstrap/popover.js +3 -8
- data/assets/javascripts/bootstrap/scrollspy.js +17 -20
- data/assets/javascripts/bootstrap/tab.js +3 -3
- data/assets/javascripts/bootstrap/tooltip.js +17 -13
- data/assets/javascripts/bootstrap/transition.js +1 -1
- data/assets/stylesheets/bootstrap/_alerts.scss +2 -2
- data/assets/stylesheets/bootstrap/_badges.scss +6 -5
- data/assets/stylesheets/bootstrap/_component-animations.scss +1 -2
- data/assets/stylesheets/bootstrap/_dropdowns.scss +1 -1
- data/assets/stylesheets/bootstrap/_forms.scss +10 -2
- data/assets/stylesheets/bootstrap/_glyphicons.scss +4 -0
- data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
- data/assets/stylesheets/bootstrap/_modals.scss +3 -1
- data/assets/stylesheets/bootstrap/_navbar.scss +0 -1
- data/assets/stylesheets/bootstrap/_navs.scss +0 -2
- data/assets/stylesheets/bootstrap/_responsive-embed.scss +8 -8
- data/assets/stylesheets/bootstrap/_scaffolding.scss +12 -0
- data/assets/stylesheets/bootstrap/_tooltip.scss +0 -1
- data/assets/stylesheets/bootstrap/_type.scss +1 -1
- data/assets/stylesheets/bootstrap/_utilities.scss +0 -1
- data/assets/stylesheets/bootstrap/_variables.scss +5 -1
- data/bower.json +1 -1
- data/lib/bootstrap-sass/version.rb +2 -2
- data/package.json +3 -3
- data/tasks/converter/js_conversion.rb +1 -1
- data/tasks/converter/less_conversion.rb +11 -12
- data/tasks/converter/network.rb +10 -5
- data/templates/project/_bootstrap-variables.sass +6 -2
- data/test/dummy_rails/app/assets/stylesheets/{application.css.sass → application.sass} +0 -0
- data/test/dummy_rails/app/views/pages/root.html.slim +43 -0
- data/test/dummy_rails/config/environments/development.rb +0 -3
- data/test/dummy_rails/config/environments/production.rb +7 -1
- data/test/dummy_rails/config/environments/test.rb +7 -1
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c548004d45f09e256dafbc81d58751358225ff42
|
4
|
+
data.tar.gz: 8fabdcd1bd2e52d97ea9843cee2305d04b3aee9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 751906d2d101bb9702de434aa46fd8ce677f3a32eb3f8e15d48d682703de10daa89da77b496421ded670391f3c29ded93da092985440c8ac5228c399dfb14e2f
|
7
|
+
data.tar.gz: 40ac7bb1e47dd7bf9101c75b5eff29f15ed83f5c57384e677b7079c3cbac0b594ed5b2e5cdebfce4fd76156a7dc0745afa9ccd5bb4cd471fa27466ce26bdb763
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
# Bootstrap for Sass
|
1
|
+
# Bootstrap for Sass
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/bootstrap-sass.svg)](http://badge.fury.io/rb/bootstrap-sass)
|
3
|
+
[![npm version](https://img.shields.io/npm/v/bootstrap-sass.svg?style=flat)](https://www.npmjs.com/package/bootstrap-sass)
|
4
|
+
[![Bower Version](https://badge.fury.io/bo/bootstrap-sass.svg)](http://badge.fury.io/bo/bootstrap-sass)
|
5
|
+
[![Build Status](http://img.shields.io/travis/twbs/bootstrap-sass.svg)](http://travis-ci.org/twbs/bootstrap-sass)
|
2
6
|
|
3
7
|
`bootstrap-sass` is a Sass-powered version of [Bootstrap](http://github.com/twbs/bootstrap), ready to drop right into your Sass powered applications.
|
4
8
|
|
@@ -17,13 +21,13 @@ Please see the appropriate guide for your environment of choice:
|
|
17
21
|
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.
|
18
22
|
|
19
23
|
```ruby
|
20
|
-
gem 'bootstrap-sass', '~> 3.3.
|
24
|
+
gem 'bootstrap-sass', '~> 3.3.4'
|
21
25
|
gem 'sass-rails', '>= 3.2'
|
22
26
|
```
|
23
27
|
|
24
28
|
`bundle install` and restart your server to make the files available through the pipeline.
|
25
29
|
|
26
|
-
Import Bootstrap styles in `app/assets/stylesheets/application.
|
30
|
+
Import Bootstrap styles in `app/assets/stylesheets/application.scss`:
|
27
31
|
|
28
32
|
```scss
|
29
33
|
// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables"
|
@@ -33,11 +37,11 @@ Import Bootstrap styles in `app/assets/stylesheets/application.css.scss`:
|
|
33
37
|
|
34
38
|
`bootstrap-sprockets` must be imported before `bootstrap` for the icon fonts to work.
|
35
39
|
|
36
|
-
Make sure the file has `.
|
40
|
+
Make sure the file has `.scss` extension (or `.sass` for Sass syntax). If you have just generated a new Rails app,
|
37
41
|
it may come with a `.css` file instead. If this file exists, it will be served instead of Sass, so rename it:
|
38
42
|
|
39
43
|
```console
|
40
|
-
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.
|
44
|
+
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
|
41
45
|
```
|
42
46
|
|
43
47
|
Then, remove all the `//= require` and `//= require_tree` statements from the file. Instead, use `@import` to import Sass files.
|
@@ -51,6 +55,11 @@ Require Bootstrap Javascripts in `app/assets/javascripts/application.js`:
|
|
51
55
|
//= require bootstrap-sprockets
|
52
56
|
```
|
53
57
|
|
58
|
+
`bootstrap-sprockets` and `bootstrap` [should not both be included](https://github.com/twbs/bootstrap-sass/issues/829#issuecomment-75153827) in `application.js`.
|
59
|
+
|
60
|
+
`bootstrap-sprockets` provides individual Bootstrap Javascript files (`alert.js` or `dropdown.js`, for example), while
|
61
|
+
`bootstrap` provides a concatenated file containing all Bootstrap Javascripts.
|
62
|
+
|
54
63
|
#### Bower with Rails
|
55
64
|
|
56
65
|
When using [bootstrap-sass Bower package](#c-bower) instead of the gem in Rails, configure assets in `config/application.rb`:
|
@@ -64,10 +73,10 @@ end
|
|
64
73
|
# Precompile Bootstrap fonts
|
65
74
|
config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$)
|
66
75
|
# Minimum Sass number precision required by bootstrap-sass
|
67
|
-
::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
|
76
|
+
::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
|
68
77
|
```
|
69
78
|
|
70
|
-
Replace Bootstrap `@import` statements in `application.
|
79
|
+
Replace Bootstrap `@import` statements in `application.scss` with:
|
71
80
|
|
72
81
|
```scss
|
73
82
|
$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/";
|
@@ -188,7 +197,7 @@ Precision is set for Rails and Compass automatically.
|
|
188
197
|
When using ruby Sass compiler standalone or with the Bower version you can set it with:
|
189
198
|
|
190
199
|
```ruby
|
191
|
-
::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
|
200
|
+
::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
|
192
201
|
```
|
193
202
|
|
194
203
|
#### Sass: Autoprefixer
|
@@ -241,7 +250,7 @@ When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** impor
|
|
241
250
|
|
242
251
|
### Sass
|
243
252
|
|
244
|
-
Import Bootstrap into a Sass file (for example, application.
|
253
|
+
Import Bootstrap into a Sass file (for example, application.scss) to get all of Bootstrap's styles, mixins and variables!
|
245
254
|
|
246
255
|
```scss
|
247
256
|
@import "bootstrap";
|
@@ -265,7 +274,20 @@ $navbar-default-color: $light-orange;
|
|
265
274
|
|
266
275
|
## Version
|
267
276
|
|
268
|
-
|
277
|
+
Bootstrap for Sass version may differ from the upstream version in the last number, known as
|
278
|
+
[MINOR](http://semver.org/spec/v2.0.0.html). The minor version may be ahead of the corresponding upstream minor.
|
279
|
+
This happens when we need to release Sass-specific changes.
|
280
|
+
|
281
|
+
Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for
|
282
|
+
Sass-specific changes. This was changed due to Bower and npm compatibility issues.
|
283
|
+
|
284
|
+
The upstream versions vs the Bootstrap for Sass versions are:
|
285
|
+
|
286
|
+
| Upstream | Sass |
|
287
|
+
|---------:|--------:|
|
288
|
+
| 3.3.4 | 3.3.4 |
|
289
|
+
| 3.3.2 | 3.3.3 |
|
290
|
+
| <= 3.3.1 | 3.3.1.x |
|
269
291
|
|
270
292
|
Always refer to [CHANGELOG.md](/CHANGELOG.md) when upgrading.
|
271
293
|
|
@@ -295,7 +317,7 @@ To convert a specific branch or version, pass the branch name or the commit hash
|
|
295
317
|
The latest converter script is located [here][converter] and does the following:
|
296
318
|
|
297
319
|
* Converts upstream bootstrap LESS files to its matching SCSS file.
|
298
|
-
* Copies all upstream JavaScript into `assets/javascripts/bootstrap`,
|
320
|
+
* 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`.
|
299
321
|
* Copies all upstream font files into `assets/fonts/bootstrap`.
|
300
322
|
* Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha.
|
301
323
|
|
@@ -316,15 +338,15 @@ and a [significant number of other contributors][contrib].
|
|
316
338
|
|
317
339
|
## You're in good company
|
318
340
|
bootstrap-sass is used to build some awesome projects all over the web, including
|
319
|
-
[Diaspora](
|
341
|
+
[Diaspora](https://diasporafoundation.org/), [rails_admin](https://github.com/sferik/rails_admin),
|
320
342
|
Michael Hartl's [Rails Tutorial](http://railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and
|
321
|
-
[kandan](http://
|
343
|
+
[kandan](http://kandan.io/).
|
322
344
|
|
323
345
|
[converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb
|
324
346
|
[version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb
|
325
347
|
[contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors
|
326
348
|
[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595
|
327
349
|
[jsdocs]: http://getbootstrap.com/javascript/#transitions
|
328
|
-
[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Number.html#precision-class_method
|
350
|
+
[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method
|
329
351
|
[mincer]: https://github.com/nodeca/mincer
|
330
352
|
[autoprefixer]: https://github.com/ai/autoprefixer
|
data/Rakefile
CHANGED
@@ -40,7 +40,7 @@ task :compile, :css_path do |t, args|
|
|
40
40
|
css_path = args.with_defaults(css_path: 'tmp')[:css_path]
|
41
41
|
puts Term::ANSIColor.bold "Compiling SCSS in #{path}"
|
42
42
|
Dir.mkdir(css_path) unless File.directory?(css_path)
|
43
|
-
%w(
|
43
|
+
%w(_bootstrap bootstrap/_theme).each do |file|
|
44
44
|
save_path = "#{css_path}/#{file.sub(/(^|\/)?_+/, '\1').sub('/', '-')}.css"
|
45
45
|
puts Term::ANSIColor.cyan(" #{save_path}") + '...'
|
46
46
|
engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
|
@@ -49,4 +49,15 @@ task :compile, :css_path do |t, args|
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
desc 'Start a dummy (test) Rails app server'
|
53
|
+
task :dummy_rails do
|
54
|
+
require 'rack'
|
55
|
+
require 'term/ansicolor'
|
56
|
+
port = ENV['PORT'] || 9292
|
57
|
+
puts %Q(Starting on #{Term::ANSIColor.cyan "http://localhost:#{port}"})
|
58
|
+
Rack::Server.start(
|
59
|
+
config: 'test/dummy_rails/config.ru',
|
60
|
+
Port: port)
|
61
|
+
end
|
62
|
+
|
52
63
|
task default: :test
|
@@ -4,9 +4,9 @@
|
|
4
4
|
//= require ./bootstrap/carousel
|
5
5
|
//= require ./bootstrap/collapse
|
6
6
|
//= require ./bootstrap/dropdown
|
7
|
+
//= require ./bootstrap/modal
|
8
|
+
//= require ./bootstrap/scrollspy
|
7
9
|
//= require ./bootstrap/tab
|
8
10
|
//= require ./bootstrap/transition
|
9
|
-
//= require ./bootstrap/scrollspy
|
10
|
-
//= require ./bootstrap/modal
|
11
11
|
//= require ./bootstrap/tooltip
|
12
12
|
//= require ./bootstrap/popover
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap v3.3.
|
2
|
+
* Bootstrap v3.3.4 (http://getbootstrap.com)
|
3
3
|
* Copyright 2011-2015 Twitter, Inc.
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
5
|
*/
|
@@ -17,7 +17,7 @@ if (typeof jQuery === 'undefined') {
|
|
17
17
|
}(jQuery);
|
18
18
|
|
19
19
|
/* ========================================================================
|
20
|
-
* Bootstrap: transition.js v3.3.
|
20
|
+
* Bootstrap: transition.js v3.3.4
|
21
21
|
* http://getbootstrap.com/javascript/#transitions
|
22
22
|
* ========================================================================
|
23
23
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -77,7 +77,7 @@ if (typeof jQuery === 'undefined') {
|
|
77
77
|
}(jQuery);
|
78
78
|
|
79
79
|
/* ========================================================================
|
80
|
-
* Bootstrap: alert.js v3.3.
|
80
|
+
* Bootstrap: alert.js v3.3.4
|
81
81
|
* http://getbootstrap.com/javascript/#alerts
|
82
82
|
* ========================================================================
|
83
83
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -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.
|
99
|
+
Alert.VERSION = '3.3.4'
|
100
100
|
|
101
101
|
Alert.TRANSITION_DURATION = 150
|
102
102
|
|
@@ -172,7 +172,7 @@ if (typeof jQuery === 'undefined') {
|
|
172
172
|
}(jQuery);
|
173
173
|
|
174
174
|
/* ========================================================================
|
175
|
-
* Bootstrap: button.js v3.3.
|
175
|
+
* Bootstrap: button.js v3.3.4
|
176
176
|
* http://getbootstrap.com/javascript/#buttons
|
177
177
|
* ========================================================================
|
178
178
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
|
|
192
192
|
this.isLoading = false
|
193
193
|
}
|
194
194
|
|
195
|
-
Button.VERSION = '3.3.
|
195
|
+
Button.VERSION = '3.3.4'
|
196
196
|
|
197
197
|
Button.DEFAULTS = {
|
198
198
|
loadingText: 'loading...'
|
@@ -289,7 +289,7 @@ if (typeof jQuery === 'undefined') {
|
|
289
289
|
}(jQuery);
|
290
290
|
|
291
291
|
/* ========================================================================
|
292
|
-
* Bootstrap: carousel.js v3.3.
|
292
|
+
* Bootstrap: carousel.js v3.3.4
|
293
293
|
* http://getbootstrap.com/javascript/#carousel
|
294
294
|
* ========================================================================
|
295
295
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -307,10 +307,10 @@ if (typeof jQuery === 'undefined') {
|
|
307
307
|
this.$element = $(element)
|
308
308
|
this.$indicators = this.$element.find('.carousel-indicators')
|
309
309
|
this.options = options
|
310
|
-
this.paused =
|
311
|
-
this.sliding =
|
312
|
-
this.interval =
|
313
|
-
this.$active =
|
310
|
+
this.paused = null
|
311
|
+
this.sliding = null
|
312
|
+
this.interval = null
|
313
|
+
this.$active = null
|
314
314
|
this.$items = null
|
315
315
|
|
316
316
|
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
|
@@ -320,7 +320,7 @@ if (typeof jQuery === 'undefined') {
|
|
320
320
|
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
321
321
|
}
|
322
322
|
|
323
|
-
Carousel.VERSION = '3.3.
|
323
|
+
Carousel.VERSION = '3.3.4'
|
324
324
|
|
325
325
|
Carousel.TRANSITION_DURATION = 600
|
326
326
|
|
@@ -527,7 +527,7 @@ if (typeof jQuery === 'undefined') {
|
|
527
527
|
}(jQuery);
|
528
528
|
|
529
529
|
/* ========================================================================
|
530
|
-
* Bootstrap: collapse.js v3.3.
|
530
|
+
* Bootstrap: collapse.js v3.3.4
|
531
531
|
* http://getbootstrap.com/javascript/#collapse
|
532
532
|
* ========================================================================
|
533
533
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -544,7 +544,8 @@ if (typeof jQuery === 'undefined') {
|
|
544
544
|
var Collapse = function (element, options) {
|
545
545
|
this.$element = $(element)
|
546
546
|
this.options = $.extend({}, Collapse.DEFAULTS, options)
|
547
|
-
this.$trigger = $(
|
547
|
+
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
|
548
|
+
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
|
548
549
|
this.transitioning = null
|
549
550
|
|
550
551
|
if (this.options.parent) {
|
@@ -556,13 +557,12 @@ if (typeof jQuery === 'undefined') {
|
|
556
557
|
if (this.options.toggle) this.toggle()
|
557
558
|
}
|
558
559
|
|
559
|
-
Collapse.VERSION = '3.3.
|
560
|
+
Collapse.VERSION = '3.3.4'
|
560
561
|
|
561
562
|
Collapse.TRANSITION_DURATION = 350
|
562
563
|
|
563
564
|
Collapse.DEFAULTS = {
|
564
|
-
toggle: true
|
565
|
-
trigger: '[data-toggle="collapse"]'
|
565
|
+
toggle: true
|
566
566
|
}
|
567
567
|
|
568
568
|
Collapse.prototype.dimension = function () {
|
@@ -700,7 +700,7 @@ if (typeof jQuery === 'undefined') {
|
|
700
700
|
var data = $this.data('bs.collapse')
|
701
701
|
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
702
702
|
|
703
|
-
if (!data && options.toggle && option
|
703
|
+
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
|
704
704
|
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
|
705
705
|
if (typeof option == 'string') data[option]()
|
706
706
|
})
|
@@ -731,7 +731,7 @@ if (typeof jQuery === 'undefined') {
|
|
731
731
|
|
732
732
|
var $target = getTargetFromTrigger($this)
|
733
733
|
var data = $target.data('bs.collapse')
|
734
|
-
var option = data ? 'toggle' :
|
734
|
+
var option = data ? 'toggle' : $this.data()
|
735
735
|
|
736
736
|
Plugin.call($target, option)
|
737
737
|
})
|
@@ -739,7 +739,7 @@ if (typeof jQuery === 'undefined') {
|
|
739
739
|
}(jQuery);
|
740
740
|
|
741
741
|
/* ========================================================================
|
742
|
-
* Bootstrap: dropdown.js v3.3.
|
742
|
+
* Bootstrap: dropdown.js v3.3.4
|
743
743
|
* http://getbootstrap.com/javascript/#dropdowns
|
744
744
|
* ========================================================================
|
745
745
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -759,7 +759,7 @@ if (typeof jQuery === 'undefined') {
|
|
759
759
|
$(element).on('click.bs.dropdown', this.toggle)
|
760
760
|
}
|
761
761
|
|
762
|
-
Dropdown.VERSION = '3.3.
|
762
|
+
Dropdown.VERSION = '3.3.4'
|
763
763
|
|
764
764
|
Dropdown.prototype.toggle = function (e) {
|
765
765
|
var $this = $(this)
|
@@ -812,7 +812,7 @@ if (typeof jQuery === 'undefined') {
|
|
812
812
|
return $this.trigger('click')
|
813
813
|
}
|
814
814
|
|
815
|
-
var desc = ' li:not(.
|
815
|
+
var desc = ' li:not(.disabled):visible a'
|
816
816
|
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
|
817
817
|
|
818
818
|
if (!$items.length) return
|
@@ -901,7 +901,7 @@ if (typeof jQuery === 'undefined') {
|
|
901
901
|
}(jQuery);
|
902
902
|
|
903
903
|
/* ========================================================================
|
904
|
-
* Bootstrap: modal.js v3.3.
|
904
|
+
* Bootstrap: modal.js v3.3.4
|
905
905
|
* http://getbootstrap.com/javascript/#modals
|
906
906
|
* ========================================================================
|
907
907
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -916,12 +916,15 @@ if (typeof jQuery === 'undefined') {
|
|
916
916
|
// ======================
|
917
917
|
|
918
918
|
var Modal = function (element, options) {
|
919
|
-
this.options
|
920
|
-
this.$body
|
921
|
-
this.$element
|
922
|
-
this.$
|
923
|
-
this
|
924
|
-
this.
|
919
|
+
this.options = options
|
920
|
+
this.$body = $(document.body)
|
921
|
+
this.$element = $(element)
|
922
|
+
this.$dialog = this.$element.find('.modal-dialog')
|
923
|
+
this.$backdrop = null
|
924
|
+
this.isShown = null
|
925
|
+
this.originalBodyPad = null
|
926
|
+
this.scrollbarWidth = 0
|
927
|
+
this.ignoreBackdropClick = false
|
925
928
|
|
926
929
|
if (this.options.remote) {
|
927
930
|
this.$element
|
@@ -932,7 +935,7 @@ if (typeof jQuery === 'undefined') {
|
|
932
935
|
}
|
933
936
|
}
|
934
937
|
|
935
|
-
Modal.VERSION = '3.3.
|
938
|
+
Modal.VERSION = '3.3.4'
|
936
939
|
|
937
940
|
Modal.TRANSITION_DURATION = 300
|
938
941
|
Modal.BACKDROP_TRANSITION_DURATION = 150
|
@@ -966,6 +969,12 @@ if (typeof jQuery === 'undefined') {
|
|
966
969
|
|
967
970
|
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
968
971
|
|
972
|
+
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
|
973
|
+
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
|
974
|
+
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
|
975
|
+
})
|
976
|
+
})
|
977
|
+
|
969
978
|
this.backdrop(function () {
|
970
979
|
var transition = $.support.transition && that.$element.hasClass('fade')
|
971
980
|
|
@@ -977,7 +986,6 @@ if (typeof jQuery === 'undefined') {
|
|
977
986
|
.show()
|
978
987
|
.scrollTop(0)
|
979
988
|
|
980
|
-
if (that.options.backdrop) that.adjustBackdrop()
|
981
989
|
that.adjustDialog()
|
982
990
|
|
983
991
|
if (transition) {
|
@@ -993,7 +1001,7 @@ if (typeof jQuery === 'undefined') {
|
|
993
1001
|
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
|
994
1002
|
|
995
1003
|
transition ?
|
996
|
-
that.$
|
1004
|
+
that.$dialog // wait for modal to slide in
|
997
1005
|
.one('bsTransitionEnd', function () {
|
998
1006
|
that.$element.trigger('focus').trigger(e)
|
999
1007
|
})
|
@@ -1022,6 +1030,9 @@ if (typeof jQuery === 'undefined') {
|
|
1022
1030
|
.removeClass('in')
|
1023
1031
|
.attr('aria-hidden', true)
|
1024
1032
|
.off('click.dismiss.bs.modal')
|
1033
|
+
.off('mouseup.dismiss.bs.modal')
|
1034
|
+
|
1035
|
+
this.$dialog.off('mousedown.dismiss.bs.modal')
|
1025
1036
|
|
1026
1037
|
$.support.transition && this.$element.hasClass('fade') ?
|
1027
1038
|
this.$element
|
@@ -1082,13 +1093,18 @@ if (typeof jQuery === 'undefined') {
|
|
1082
1093
|
var doAnimate = $.support.transition && animate
|
1083
1094
|
|
1084
1095
|
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
|
1085
|
-
.
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
}
|
1096
|
+
.appendTo(this.$body)
|
1097
|
+
|
1098
|
+
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
1099
|
+
if (this.ignoreBackdropClick) {
|
1100
|
+
this.ignoreBackdropClick = false
|
1101
|
+
return
|
1102
|
+
}
|
1103
|
+
if (e.target !== e.currentTarget) return
|
1104
|
+
this.options.backdrop == 'static'
|
1105
|
+
? this.$element[0].focus()
|
1106
|
+
: this.hide()
|
1107
|
+
}, this))
|
1092
1108
|
|
1093
1109
|
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
1094
1110
|
|
@@ -1123,16 +1139,9 @@ if (typeof jQuery === 'undefined') {
|
|
1123
1139
|
// these following methods are used to handle overflowing modals
|
1124
1140
|
|
1125
1141
|
Modal.prototype.handleUpdate = function () {
|
1126
|
-
if (this.options.backdrop) this.adjustBackdrop()
|
1127
1142
|
this.adjustDialog()
|
1128
1143
|
}
|
1129
1144
|
|
1130
|
-
Modal.prototype.adjustBackdrop = function () {
|
1131
|
-
this.$backdrop
|
1132
|
-
.css('height', 0)
|
1133
|
-
.css('height', this.$element[0].scrollHeight)
|
1134
|
-
}
|
1135
|
-
|
1136
1145
|
Modal.prototype.adjustDialog = function () {
|
1137
1146
|
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
1138
1147
|
|
@@ -1150,17 +1159,23 @@ if (typeof jQuery === 'undefined') {
|
|
1150
1159
|
}
|
1151
1160
|
|
1152
1161
|
Modal.prototype.checkScrollbar = function () {
|
1153
|
-
|
1162
|
+
var fullWindowWidth = window.innerWidth
|
1163
|
+
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
|
1164
|
+
var documentElementRect = document.documentElement.getBoundingClientRect()
|
1165
|
+
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
|
1166
|
+
}
|
1167
|
+
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
|
1154
1168
|
this.scrollbarWidth = this.measureScrollbar()
|
1155
1169
|
}
|
1156
1170
|
|
1157
1171
|
Modal.prototype.setScrollbar = function () {
|
1158
1172
|
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
1173
|
+
this.originalBodyPad = document.body.style.paddingRight || ''
|
1159
1174
|
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
1160
1175
|
}
|
1161
1176
|
|
1162
1177
|
Modal.prototype.resetScrollbar = function () {
|
1163
|
-
this.$body.css('padding-right',
|
1178
|
+
this.$body.css('padding-right', this.originalBodyPad)
|
1164
1179
|
}
|
1165
1180
|
|
1166
1181
|
Modal.prototype.measureScrollbar = function () { // thx walsh
|
@@ -1226,7 +1241,7 @@ if (typeof jQuery === 'undefined') {
|
|
1226
1241
|
}(jQuery);
|
1227
1242
|
|
1228
1243
|
/* ========================================================================
|
1229
|
-
* Bootstrap: tooltip.js v3.3.
|
1244
|
+
* Bootstrap: tooltip.js v3.3.4
|
1230
1245
|
* http://getbootstrap.com/javascript/#tooltip
|
1231
1246
|
* Inspired by the original jQuery.tipsy by Jason Frame
|
1232
1247
|
* ========================================================================
|
@@ -1242,17 +1257,17 @@ if (typeof jQuery === 'undefined') {
|
|
1242
1257
|
// ===============================
|
1243
1258
|
|
1244
1259
|
var Tooltip = function (element, options) {
|
1245
|
-
this.type =
|
1246
|
-
this.options =
|
1247
|
-
this.enabled =
|
1248
|
-
this.timeout =
|
1249
|
-
this.hoverState =
|
1260
|
+
this.type = null
|
1261
|
+
this.options = null
|
1262
|
+
this.enabled = null
|
1263
|
+
this.timeout = null
|
1264
|
+
this.hoverState = null
|
1250
1265
|
this.$element = null
|
1251
1266
|
|
1252
1267
|
this.init('tooltip', element, options)
|
1253
1268
|
}
|
1254
1269
|
|
1255
|
-
Tooltip.VERSION = '3.3.
|
1270
|
+
Tooltip.VERSION = '3.3.4'
|
1256
1271
|
|
1257
1272
|
Tooltip.TRANSITION_DURATION = 150
|
1258
1273
|
|
@@ -1279,6 +1294,10 @@ if (typeof jQuery === 'undefined') {
|
|
1279
1294
|
this.options = this.getOptions(options)
|
1280
1295
|
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
|
1281
1296
|
|
1297
|
+
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
1298
|
+
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
1299
|
+
}
|
1300
|
+
|
1282
1301
|
var triggers = this.options.trigger.split(' ')
|
1283
1302
|
|
1284
1303
|
for (var i = triggers.length; i--;) {
|
@@ -1499,10 +1518,10 @@ if (typeof jQuery === 'undefined') {
|
|
1499
1518
|
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
|
1500
1519
|
}
|
1501
1520
|
|
1502
|
-
Tooltip.prototype.replaceArrow = function (delta, dimension,
|
1521
|
+
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
|
1503
1522
|
this.arrow()
|
1504
|
-
.css(
|
1505
|
-
.css(
|
1523
|
+
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
|
1524
|
+
.css(isVertical ? 'top' : 'left', '')
|
1506
1525
|
}
|
1507
1526
|
|
1508
1527
|
Tooltip.prototype.setContent = function () {
|
@@ -1515,7 +1534,7 @@ if (typeof jQuery === 'undefined') {
|
|
1515
1534
|
|
1516
1535
|
Tooltip.prototype.hide = function (callback) {
|
1517
1536
|
var that = this
|
1518
|
-
var $tip = this
|
1537
|
+
var $tip = $(this.$tip)
|
1519
1538
|
var e = $.Event('hide.bs.' + this.type)
|
1520
1539
|
|
1521
1540
|
function complete() {
|
@@ -1532,7 +1551,7 @@ if (typeof jQuery === 'undefined') {
|
|
1532
1551
|
|
1533
1552
|
$tip.removeClass('in')
|
1534
1553
|
|
1535
|
-
$.support.transition &&
|
1554
|
+
$.support.transition && $tip.hasClass('fade') ?
|
1536
1555
|
$tip
|
1537
1556
|
.one('bsTransitionEnd', complete)
|
1538
1557
|
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
@@ -1676,7 +1695,7 @@ if (typeof jQuery === 'undefined') {
|
|
1676
1695
|
var data = $this.data('bs.tooltip')
|
1677
1696
|
var options = typeof option == 'object' && option
|
1678
1697
|
|
1679
|
-
if (!data && option
|
1698
|
+
if (!data && /destroy|hide/.test(option)) return
|
1680
1699
|
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
1681
1700
|
if (typeof option == 'string') data[option]()
|
1682
1701
|
})
|
@@ -1699,7 +1718,7 @@ if (typeof jQuery === 'undefined') {
|
|
1699
1718
|
}(jQuery);
|
1700
1719
|
|
1701
1720
|
/* ========================================================================
|
1702
|
-
* Bootstrap: popover.js v3.3.
|
1721
|
+
* Bootstrap: popover.js v3.3.4
|
1703
1722
|
* http://getbootstrap.com/javascript/#popovers
|
1704
1723
|
* ========================================================================
|
1705
1724
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -1719,7 +1738,7 @@ if (typeof jQuery === 'undefined') {
|
|
1719
1738
|
|
1720
1739
|
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
1721
1740
|
|
1722
|
-
Popover.VERSION = '3.3.
|
1741
|
+
Popover.VERSION = '3.3.4'
|
1723
1742
|
|
1724
1743
|
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
|
1725
1744
|
placement: 'right',
|
@@ -1775,11 +1794,6 @@ if (typeof jQuery === 'undefined') {
|
|
1775
1794
|
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
|
1776
1795
|
}
|
1777
1796
|
|
1778
|
-
Popover.prototype.tip = function () {
|
1779
|
-
if (!this.$tip) this.$tip = $(this.options.template)
|
1780
|
-
return this.$tip
|
1781
|
-
}
|
1782
|
-
|
1783
1797
|
|
1784
1798
|
// POPOVER PLUGIN DEFINITION
|
1785
1799
|
// =========================
|
@@ -1790,7 +1804,7 @@ if (typeof jQuery === 'undefined') {
|
|
1790
1804
|
var data = $this.data('bs.popover')
|
1791
1805
|
var options = typeof option == 'object' && option
|
1792
1806
|
|
1793
|
-
if (!data && option
|
1807
|
+
if (!data && /destroy|hide/.test(option)) return
|
1794
1808
|
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
|
1795
1809
|
if (typeof option == 'string') data[option]()
|
1796
1810
|
})
|
@@ -1813,7 +1827,7 @@ if (typeof jQuery === 'undefined') {
|
|
1813
1827
|
}(jQuery);
|
1814
1828
|
|
1815
1829
|
/* ========================================================================
|
1816
|
-
* Bootstrap: scrollspy.js v3.3.
|
1830
|
+
* Bootstrap: scrollspy.js v3.3.4
|
1817
1831
|
* http://getbootstrap.com/javascript/#scrollspy
|
1818
1832
|
* ========================================================================
|
1819
1833
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -1828,10 +1842,8 @@ if (typeof jQuery === 'undefined') {
|
|
1828
1842
|
// ==========================
|
1829
1843
|
|
1830
1844
|
function ScrollSpy(element, options) {
|
1831
|
-
|
1832
|
-
|
1833
|
-
this.$body = $('body')
|
1834
|
-
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
|
1845
|
+
this.$body = $(document.body)
|
1846
|
+
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
|
1835
1847
|
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
1836
1848
|
this.selector = (this.options.target || '') + ' .nav li > a'
|
1837
1849
|
this.offsets = []
|
@@ -1839,12 +1851,12 @@ if (typeof jQuery === 'undefined') {
|
|
1839
1851
|
this.activeTarget = null
|
1840
1852
|
this.scrollHeight = 0
|
1841
1853
|
|
1842
|
-
this.$scrollElement.on('scroll.bs.scrollspy', process)
|
1854
|
+
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
|
1843
1855
|
this.refresh()
|
1844
1856
|
this.process()
|
1845
1857
|
}
|
1846
1858
|
|
1847
|
-
ScrollSpy.VERSION = '3.3.
|
1859
|
+
ScrollSpy.VERSION = '3.3.4'
|
1848
1860
|
|
1849
1861
|
ScrollSpy.DEFAULTS = {
|
1850
1862
|
offset: 10
|
@@ -1855,20 +1867,19 @@ if (typeof jQuery === 'undefined') {
|
|
1855
1867
|
}
|
1856
1868
|
|
1857
1869
|
ScrollSpy.prototype.refresh = function () {
|
1858
|
-
var
|
1859
|
-
var
|
1870
|
+
var that = this
|
1871
|
+
var offsetMethod = 'offset'
|
1872
|
+
var offsetBase = 0
|
1873
|
+
|
1874
|
+
this.offsets = []
|
1875
|
+
this.targets = []
|
1876
|
+
this.scrollHeight = this.getScrollHeight()
|
1860
1877
|
|
1861
1878
|
if (!$.isWindow(this.$scrollElement[0])) {
|
1862
1879
|
offsetMethod = 'position'
|
1863
1880
|
offsetBase = this.$scrollElement.scrollTop()
|
1864
1881
|
}
|
1865
1882
|
|
1866
|
-
this.offsets = []
|
1867
|
-
this.targets = []
|
1868
|
-
this.scrollHeight = this.getScrollHeight()
|
1869
|
-
|
1870
|
-
var self = this
|
1871
|
-
|
1872
1883
|
this.$body
|
1873
1884
|
.find(this.selector)
|
1874
1885
|
.map(function () {
|
@@ -1883,8 +1894,8 @@ if (typeof jQuery === 'undefined') {
|
|
1883
1894
|
})
|
1884
1895
|
.sort(function (a, b) { return a[0] - b[0] })
|
1885
1896
|
.each(function () {
|
1886
|
-
|
1887
|
-
|
1897
|
+
that.offsets.push(this[0])
|
1898
|
+
that.targets.push(this[1])
|
1888
1899
|
})
|
1889
1900
|
}
|
1890
1901
|
|
@@ -1913,7 +1924,7 @@ if (typeof jQuery === 'undefined') {
|
|
1913
1924
|
for (i = offsets.length; i--;) {
|
1914
1925
|
activeTarget != targets[i]
|
1915
1926
|
&& scrollTop >= offsets[i]
|
1916
|
-
&& (
|
1927
|
+
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
|
1917
1928
|
&& this.activate(targets[i])
|
1918
1929
|
}
|
1919
1930
|
}
|
@@ -1924,8 +1935,8 @@ if (typeof jQuery === 'undefined') {
|
|
1924
1935
|
this.clear()
|
1925
1936
|
|
1926
1937
|
var selector = this.selector +
|
1927
|
-
|
1928
|
-
|
1938
|
+
'[data-target="' + target + '"],' +
|
1939
|
+
this.selector + '[href="' + target + '"]'
|
1929
1940
|
|
1930
1941
|
var active = $(selector)
|
1931
1942
|
.parents('li')
|
@@ -1989,7 +2000,7 @@ if (typeof jQuery === 'undefined') {
|
|
1989
2000
|
}(jQuery);
|
1990
2001
|
|
1991
2002
|
/* ========================================================================
|
1992
|
-
* Bootstrap: tab.js v3.3.
|
2003
|
+
* Bootstrap: tab.js v3.3.4
|
1993
2004
|
* http://getbootstrap.com/javascript/#tabs
|
1994
2005
|
* ========================================================================
|
1995
2006
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -2007,7 +2018,7 @@ if (typeof jQuery === 'undefined') {
|
|
2007
2018
|
this.element = $(element)
|
2008
2019
|
}
|
2009
2020
|
|
2010
|
-
Tab.VERSION = '3.3.
|
2021
|
+
Tab.VERSION = '3.3.4'
|
2011
2022
|
|
2012
2023
|
Tab.TRANSITION_DURATION = 150
|
2013
2024
|
|
@@ -2078,7 +2089,7 @@ if (typeof jQuery === 'undefined') {
|
|
2078
2089
|
element.removeClass('fade')
|
2079
2090
|
}
|
2080
2091
|
|
2081
|
-
if (element.parent('.dropdown-menu')) {
|
2092
|
+
if (element.parent('.dropdown-menu').length) {
|
2082
2093
|
element
|
2083
2094
|
.closest('li.dropdown')
|
2084
2095
|
.addClass('active')
|
@@ -2143,7 +2154,7 @@ if (typeof jQuery === 'undefined') {
|
|
2143
2154
|
}(jQuery);
|
2144
2155
|
|
2145
2156
|
/* ========================================================================
|
2146
|
-
* Bootstrap: affix.js v3.3.
|
2157
|
+
* Bootstrap: affix.js v3.3.4
|
2147
2158
|
* http://getbootstrap.com/javascript/#affix
|
2148
2159
|
* ========================================================================
|
2149
2160
|
* Copyright 2011-2015 Twitter, Inc.
|
@@ -2165,14 +2176,14 @@ if (typeof jQuery === 'undefined') {
|
|
2165
2176
|
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
2166
2177
|
|
2167
2178
|
this.$element = $(element)
|
2168
|
-
this.affixed =
|
2169
|
-
this.unpin =
|
2179
|
+
this.affixed = null
|
2180
|
+
this.unpin = null
|
2170
2181
|
this.pinnedOffset = null
|
2171
2182
|
|
2172
2183
|
this.checkPosition()
|
2173
2184
|
}
|
2174
2185
|
|
2175
|
-
Affix.VERSION = '3.3.
|
2186
|
+
Affix.VERSION = '3.3.4'
|
2176
2187
|
|
2177
2188
|
Affix.RESET = 'affix affix-top affix-bottom'
|
2178
2189
|
|
@@ -2222,7 +2233,7 @@ if (typeof jQuery === 'undefined') {
|
|
2222
2233
|
var offset = this.options.offset
|
2223
2234
|
var offsetTop = offset.top
|
2224
2235
|
var offsetBottom = offset.bottom
|
2225
|
-
var scrollHeight = $(
|
2236
|
+
var scrollHeight = $(document.body).height()
|
2226
2237
|
|
2227
2238
|
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
2228
2239
|
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
|