bootstrap-sass 3.3.5 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.travis.yml +8 -12
  4. data/CHANGELOG.md +20 -0
  5. data/Gemfile +1 -4
  6. data/LICENSE +2 -1
  7. data/README.md +79 -74
  8. data/Rakefile +46 -11
  9. data/assets/javascripts/bootstrap/affix.js +7 -5
  10. data/assets/javascripts/bootstrap/alert.js +6 -5
  11. data/assets/javascripts/bootstrap/button.js +14 -9
  12. data/assets/javascripts/bootstrap/carousel.js +16 -7
  13. data/assets/javascripts/bootstrap/collapse.js +7 -6
  14. data/assets/javascripts/bootstrap/dropdown.js +7 -7
  15. data/assets/javascripts/bootstrap/modal.js +44 -23
  16. data/assets/javascripts/bootstrap/popover.js +25 -10
  17. data/assets/javascripts/bootstrap/scrollspy.js +4 -4
  18. data/assets/javascripts/bootstrap/tab.js +10 -10
  19. data/assets/javascripts/bootstrap/tooltip.js +177 -14
  20. data/assets/javascripts/bootstrap/transition.js +5 -5
  21. data/assets/javascripts/bootstrap-sprockets.js +2 -2
  22. data/assets/javascripts/bootstrap.js +326 -109
  23. data/assets/javascripts/bootstrap.min.js +3 -4
  24. data/assets/stylesheets/_bootstrap-mincer.scss +2 -2
  25. data/assets/stylesheets/_bootstrap.scss +2 -2
  26. data/assets/stylesheets/bootstrap/_alerts.scss +3 -3
  27. data/assets/stylesheets/bootstrap/_badges.scss +3 -3
  28. data/assets/stylesheets/bootstrap/_breadcrumbs.scss +3 -1
  29. data/assets/stylesheets/bootstrap/_button-groups.scss +8 -8
  30. data/assets/stylesheets/bootstrap/_buttons.scss +4 -4
  31. data/assets/stylesheets/bootstrap/_carousel.scss +33 -31
  32. data/assets/stylesheets/bootstrap/_close.scss +1 -0
  33. data/assets/stylesheets/bootstrap/_code.scss +3 -3
  34. data/assets/stylesheets/bootstrap/_component-animations.scss +1 -0
  35. data/assets/stylesheets/bootstrap/_dropdowns.scss +20 -23
  36. data/assets/stylesheets/bootstrap/_forms.scss +56 -60
  37. data/assets/stylesheets/bootstrap/_glyphicons.scss +11 -11
  38. data/assets/stylesheets/bootstrap/_grid.scss +10 -0
  39. data/assets/stylesheets/bootstrap/_input-groups.scss +9 -5
  40. data/assets/stylesheets/bootstrap/_jumbotron.scss +5 -3
  41. data/assets/stylesheets/bootstrap/_labels.scss +1 -1
  42. data/assets/stylesheets/bootstrap/_list-group.scss +30 -32
  43. data/assets/stylesheets/bootstrap/_media.scss +1 -1
  44. data/assets/stylesheets/bootstrap/_modals.scss +8 -8
  45. data/assets/stylesheets/bootstrap/_navbar.scss +75 -81
  46. data/assets/stylesheets/bootstrap/_navs.scss +4 -4
  47. data/assets/stylesheets/bootstrap/_normalize.scss +5 -2
  48. data/assets/stylesheets/bootstrap/_pager.scss +2 -2
  49. data/assets/stylesheets/bootstrap/_pagination.scss +13 -16
  50. data/assets/stylesheets/bootstrap/_panels.scss +5 -5
  51. data/assets/stylesheets/bootstrap/_popovers.scss +47 -52
  52. data/assets/stylesheets/bootstrap/_print.scss +90 -92
  53. data/assets/stylesheets/bootstrap/_progress-bars.scss +3 -3
  54. data/assets/stylesheets/bootstrap/_responsive-embed.scss +2 -2
  55. data/assets/stylesheets/bootstrap/_responsive-utilities.scss +3 -3
  56. data/assets/stylesheets/bootstrap/_scaffolding.scss +7 -7
  57. data/assets/stylesheets/bootstrap/_tables.scss +23 -23
  58. data/assets/stylesheets/bootstrap/_theme.scss +21 -17
  59. data/assets/stylesheets/bootstrap/_thumbnails.scss +1 -1
  60. data/assets/stylesheets/bootstrap/_tooltip.scss +38 -27
  61. data/assets/stylesheets/bootstrap/_type.scss +11 -11
  62. data/assets/stylesheets/bootstrap/_variables.scss +9 -7
  63. data/assets/stylesheets/bootstrap/_wells.scss +2 -2
  64. data/assets/stylesheets/bootstrap/mixins/_alerts.scss +2 -1
  65. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +4 -4
  66. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +7 -14
  67. data/assets/stylesheets/bootstrap/mixins/_center-block.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +1 -1
  69. data/assets/stylesheets/bootstrap/mixins/_forms.scss +4 -4
  70. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +6 -8
  71. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_grid.scss +7 -7
  73. data/assets/stylesheets/bootstrap/mixins/_hide-text.scss +1 -1
  74. data/assets/stylesheets/bootstrap/mixins/_image.scss +5 -10
  75. data/assets/stylesheets/bootstrap/mixins/_opacity.scss +2 -3
  76. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +4 -4
  77. data/assets/stylesheets/bootstrap/mixins/_resize.scss +1 -1
  78. data/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +0 -4
  79. data/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +3 -3
  80. data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +3 -3
  81. data/bootstrap-sass.gemspec +10 -9
  82. data/bower.json +4 -3
  83. data/composer.json +2 -2
  84. data/eyeglass-exports.js +7 -0
  85. data/lib/bootstrap-sass/engine.rb +6 -1
  86. data/lib/bootstrap-sass/version.rb +2 -2
  87. data/lib/bootstrap-sass.rb +17 -10
  88. data/package-lock.json +1611 -0
  89. data/package.json +20 -6
  90. data/sache.json +1 -1
  91. data/tasks/converter/less_conversion.rb +12 -8
  92. data/tasks/converter/network.rb +2 -2
  93. data/templates/project/_bootstrap-variables.sass +10 -8
  94. data/test/compilation_test.rb +24 -12
  95. data/test/dummy_rails/config/application.rb +2 -1
  96. data/test/dummy_rails/config/boot.rb +1 -1
  97. data/test/dummy_sass_only/Gemfile +1 -1
  98. data/test/dummy_sass_only/compile.rb +14 -7
  99. data/test/dummy_sass_only/import_all.scss +2 -0
  100. data/test/gemfiles/default.gemfile +3 -0
  101. data/test/node_mincer_test.rb +2 -3
  102. data/test/node_sass_compile_test.sh +4 -3
  103. data/test/sass_test.rb +10 -7
  104. data/test/sprockets_rails_test.rb +12 -8
  105. data/test/support/dummy_rails_integration.rb +1 -1
  106. data/test/support/reporting.rb +10 -0
  107. data/test/test_helper.rb +3 -2
  108. metadata +37 -28
  109. data/test/compass_test.rb +0 -9
  110. data/test/dummy_sass_only/import_all.sass +0 -2
  111. data/test/gemfiles/sass_3_2.gemfile +0 -6
  112. data/test/gemfiles/sass_3_3.gemfile +0 -6
  113. data/test/gemfiles/sass_3_4.gemfile +0 -7
  114. data/test/gemfiles/sass_head.gemfile +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e4c43d0ff42090a42536b5f8c41b42307789e7da
4
- data.tar.gz: 4ff995d7bdc39251fd79a0153867204923cacbd2
2
+ SHA256:
3
+ metadata.gz: 58feea8410ac26aa16a8887d49c39915f01053fac4d547549f22ad09cca903a2
4
+ data.tar.gz: ab2888314daa99c23c67034bb52e89cab7ad5c80fc94cafa2aa000964e6ac4a6
5
5
  SHA512:
6
- metadata.gz: ccbdd71b2c148abf5fea1fca53e0ee516907f469fc751a14718df25bf7605e93f4f25204af850ad3ff620ef31a070b7ef4e6ecab97ffc744eacf9c3f158a664e
7
- data.tar.gz: ecf8dfa146a672f49410292be15bdd5aba2fa574248779165cb02b540adb5b51c9b5168e1b8f36e3a458b3b1b64403603e11c170361bd891a5ed711f1dea1ca1
6
+ metadata.gz: 524b345c929bbd2013145b9d0efff1e9a9ae40dd92bf10084bbed4d00f1cd4a629258d337d497131be7d386badf3a512951a82670a6e6e1fc82ff34a1d6002ca
7
+ data.tar.gz: cf05215a71378dcd0f25293cd32095d947b7b748113c3e89c1d65c6f5030dc50ad6b5ecc2817695f8d530ba0ec7ef388e819c4b232c68ad2d03a564718896051
data/.gitignore CHANGED
@@ -17,3 +17,4 @@ test/dummy_rails/log/*.log
17
17
  test/dummy_rails/public/assets/
18
18
  .DS_Store
19
19
  node_modules
20
+ /.idea
data/.travis.yml CHANGED
@@ -1,23 +1,19 @@
1
+ dist: xenial
1
2
  language: ruby
3
+ cache: bundler
4
+ bundler_args: --path ../../vendor/bundle --without debug
2
5
  rvm:
3
- - 2.1.5
6
+ - 2.5.1
4
7
  gemfile:
5
- - test/gemfiles/sass_3_2.gemfile
6
- - test/gemfiles/sass_3_3.gemfile
7
- - test/gemfiles/sass_3_4.gemfile
8
- - test/gemfiles/sass_head.gemfile
8
+ - test/gemfiles/default.gemfile
9
9
  before_install:
10
+ - "nvm install stable"
10
11
  - "npm install"
11
- matrix:
12
- allow_failures:
13
- # rbx has issues https://github.com/rubinius/rubinius/issues/3060
14
- - rvm: rbx-2
15
- - gemfile: test/gemfiles/sass_head.gemfile
16
12
  notifications:
17
13
  slack: heybb:3n88HHilXn76ji9vV4gL819Y
18
14
  env:
19
15
  global:
20
16
  - VERBOSE=1
21
17
  script:
22
- - bundle exec rake
23
- - sh test/*.sh
18
+ bundle exec rake && bash test/*.sh
19
+ sudo: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
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
+
8
+ ## 3.3.7
9
+
10
+ * Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048)
11
+ * Adds the `style` and `sass` fields to package.json. [#1045](https://github.com/twbs/bootstrap-sass/issues/1045)
12
+ * Adds Eyeglass support. [#1007](https://github.com/twbs/bootstrap-sass/pull/1007)
13
+
14
+ ## 3.3.6
15
+
16
+ * Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root.
17
+ * Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986)
18
+ * Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919)
19
+ * Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965)
20
+
21
+ Framework version: Bootstrap **v3.3.6**
22
+
3
23
  ## 3.3.5
4
24
 
5
25
  Fix for standalone Compass extension compatibility. [#914](https://github.com/twbs/bootstrap-sass/issues/914)
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/LICENSE CHANGED
@@ -1,6 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2013 Twitter, Inc
3
+ Copyright (c) 2011-2016 Twitter, Inc
4
+ Copyright (c) 2011-2016 The Bootstrap Authors
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,18 +1,20 @@
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)
5
- [![Build Status](http://img.shields.io/travis/twbs/bootstrap-sass.svg)](http://travis-ci.org/twbs/bootstrap-sass)
5
+ [![Build Status](https://img.shields.io/travis/twbs/bootstrap-sass.svg)](https://travis-ci.org/twbs/bootstrap-sass)
6
6
 
7
- `bootstrap-sass` is a Sass-powered version of [Bootstrap](http://github.com/twbs/bootstrap), ready to drop right into your Sass powered applications.
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
+
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.
8
10
 
9
11
  ## Installation
10
12
 
11
13
  Please see the appropriate guide for your environment of choice:
12
14
 
13
15
  * [Ruby on Rails](#a-ruby-on-rails).
14
- * [Compass](#b-compass-without-rails) not on Rails.
15
- * [Bower](#c-bower).
16
+ * [Bower](#b-bower).
17
+ * [npm / Node.js](#c-npm--nodejs).
16
18
 
17
19
  ### a. Ruby on Rails
18
20
 
@@ -21,8 +23,8 @@ Please see the appropriate guide for your environment of choice:
21
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.
22
24
 
23
25
  ```ruby
24
- gem 'bootstrap-sass', '~> 3.3.5'
25
- gem 'sass-rails', '>= 3.2'
26
+ gem 'bootstrap-sass', '~> 3.4.1'
27
+ gem 'sassc-rails', '>= 2.1.0'
26
28
  ```
27
29
 
28
30
  `bundle install` and restart your server to make the files available through the pipeline.
@@ -44,9 +46,20 @@ it may come with a `.css` file instead. If this file exists, it will be served i
44
46
  $ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
45
47
  ```
46
48
 
47
- Then, remove all the `//= require` and `//= require_tree` statements from the file. Instead, use `@import` to import Sass files.
49
+ Then, remove all the `*= require_self` and `*= require_tree .` statements from the sass file. Instead, use `@import` to import Sass files.
50
+
51
+ Do not use `*= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables.
52
+
53
+ Bootstrap JavaScript depends on jQuery.
54
+ If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
48
55
 
49
- Do not use `//= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables.
56
+ ```ruby
57
+ gem 'jquery-rails'
58
+ ```
59
+
60
+ ```console
61
+ $ bundle install
62
+ ```
50
63
 
51
64
  Require Bootstrap Javascripts in `app/assets/javascripts/application.js`:
52
65
 
@@ -98,49 +111,7 @@ Please make sure `sprockets-rails` is at least v2.1.4.
98
111
 
99
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.
100
113
 
101
- ### b. Compass without Rails
102
-
103
- Install the gem:
104
-
105
- ```console
106
- $ gem install bootstrap-sass
107
- ```
108
-
109
- If you have an existing Compass project:
110
-
111
- 1. Require `bootstrap-sass` in `config.rb`:
112
-
113
- ```ruby
114
- require 'bootstrap-sass'
115
- ```
116
-
117
- 2. Install Bootstrap with:
118
-
119
- ```console
120
- $ bundle exec compass install bootstrap -r bootstrap-sass
121
- ```
122
-
123
- If you are creating a new Compass project, you can generate it with bootstrap-sass support:
124
-
125
- ```console
126
- $ bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap
127
- ```
128
-
129
- or, alternatively, if you're not using a Gemfile for your dependencies:
130
-
131
- ```console
132
- $ compass create my-new-project -r bootstrap-sass --using bootstrap
133
- ```
134
-
135
- This will create a new Compass project with the following files in it:
136
-
137
- * [styles.sass](/templates/project/styles.sass) - main project Sass file, imports Bootstrap and variables.
138
- * [_bootstrap-variables.sass](/templates/project/_bootstrap-variables.sass) - all of Bootstrap variables, override them here.
139
-
140
- Some bootstrap-sass mixins may conflict with the Compass ones.
141
- If this happens, change the import order so that Compass mixins are loaded later.
142
-
143
- ### c. Bower
114
+ ### b. Bower
144
115
 
145
116
  bootstrap-sass Bower package is compatible with node-sass 3.2.0+. You can install it with:
146
117
 
@@ -155,7 +126,7 @@ This is compatible by default with asset managers such as [wiredep](https://gith
155
126
 
156
127
  #### Node.js Mincer
157
128
 
158
- If you use [mincer][mincer] with node-sass, import bootstrap like so:
129
+ If you use [mincer][mincer] with node-sass, import Bootstrap like so:
159
130
 
160
131
  In `application.css.ejs.scss` (NB **.css.ejs.scss**):
161
132
 
@@ -173,10 +144,15 @@ In `application.js`:
173
144
 
174
145
  See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer.
175
146
 
147
+ ### c. npm / Node.js
148
+ ```console
149
+ $ npm install bootstrap-sass
150
+ ```
176
151
 
177
- ### Configuration
178
152
 
179
- #### Sass
153
+ ## Configuration
154
+
155
+ ### Sass
180
156
 
181
157
  By default all of Bootstrap is imported.
182
158
 
@@ -189,25 +165,39 @@ In the application Sass file, replace `@import 'bootstrap'` with:
189
165
  @import 'bootstrap-custom';
190
166
  ```
191
167
 
192
- #### Sass: Number Precision
168
+ ### Sass: Number Precision
193
169
 
194
170
  bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5).
195
171
 
196
- Precision is set for Rails and Compass automatically.
197
- 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:
198
174
 
199
175
  ```ruby
200
176
  ::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
201
177
  ```
202
178
 
203
- #### Sass: Autoprefixer
179
+ ### Sass: Autoprefixer
204
180
 
205
181
  Bootstrap requires the use of [Autoprefixer][autoprefixer].
206
- [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/).
183
+
184
+ To match [upstream Bootstrap's level of browser compatibility](https://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to:
185
+ ```json
186
+ [
187
+ "Android 2.3",
188
+ "Android >= 4",
189
+ "Chrome >= 20",
190
+ "Firefox >= 24",
191
+ "Explorer >= 8",
192
+ "iOS >= 6",
193
+ "Opera >= 12",
194
+ "Safari >= 6"
195
+ ]
196
+ ```
207
197
 
208
- #### JavaScript
198
+ ### JavaScript
209
199
 
210
- [`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap JavaScript,
200
+ [`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap's JavaScript,
211
201
  concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js).
212
202
 
213
203
 
@@ -229,7 +219,7 @@ You can check dependencies in the [Bootstrap JS documentation][jsdocs].
229
219
  //= require bootstrap/dropdown
230
220
  ```
231
221
 
232
- #### Fonts
222
+ ### Fonts
233
223
 
234
224
  The fonts are referenced as:
235
225
 
@@ -250,19 +240,19 @@ When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** impor
250
240
 
251
241
  ### Sass
252
242
 
253
- Import Bootstrap into a Sass file (for example, application.scss) to get all of Bootstrap's styles, mixins and variables!
243
+ Import Bootstrap into a Sass file (for example, `application.scss`) to get all of Bootstrap's styles, mixins and variables!
254
244
 
255
245
  ```scss
256
246
  @import "bootstrap";
257
247
  ```
258
248
 
259
- You can also include optional bootstrap theme:
249
+ You can also include optional Bootstrap theme:
260
250
 
261
251
  ```scss
262
252
  @import "bootstrap/theme";
263
253
  ```
264
254
 
265
- 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.:
266
256
 
267
257
  ```scss
268
258
  $navbar-default-bg: #312312;
@@ -272,10 +262,26 @@ $navbar-default-color: $light-orange;
272
262
  @import "bootstrap";
273
263
  ```
274
264
 
265
+ ### Eyeglass
266
+
267
+ Bootstrap is available as an [Eyeglass](https://github.com/sass-eyeglass/eyeglass) module. After installing Bootstrap via NPM you can import the Bootstrap library via:
268
+
269
+ ```scss
270
+ @import "bootstrap-sass/bootstrap"
271
+ ```
272
+
273
+ or import only the parts of Bootstrap you need:
274
+
275
+ ```scss
276
+ @import "bootstrap-sass/bootstrap/variables";
277
+ @import "bootstrap-sass/bootstrap/mixins";
278
+ @import "bootstrap-sass/bootstrap/carousel";
279
+ ```
280
+
275
281
  ## Version
276
282
 
277
283
  Bootstrap for Sass version may differ from the upstream version in the last number, known as
278
- [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.
279
285
  This happens when we need to release Sass-specific changes.
280
286
 
281
287
  Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for
@@ -285,8 +291,7 @@ The upstream versions vs the Bootstrap for Sass versions are:
285
291
 
286
292
  | Upstream | Sass |
287
293
  |---------:|--------:|
288
- | 3.3.5 | 3.3.5 |
289
- | 3.3.4 | 3.3.4 |
294
+ | 3.3.4+ | same |
290
295
  | 3.3.2 | 3.3.3 |
291
296
  | <= 3.3.1 | 3.3.1.x |
292
297
 
@@ -317,7 +322,7 @@ To convert a specific branch or version, pass the branch name or the commit hash
317
322
 
318
323
  The latest converter script is located [here][converter] and does the following:
319
324
 
320
- * Converts upstream bootstrap LESS files to its matching SCSS file.
325
+ * Converts upstream Bootstrap LESS files to its matching SCSS file.
321
326
  * 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`.
322
327
  * Copies all upstream font files into `assets/fonts/bootstrap`.
323
328
  * Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha.
@@ -340,14 +345,14 @@ and a [significant number of other contributors][contrib].
340
345
  ## You're in good company
341
346
  bootstrap-sass is used to build some awesome projects all over the web, including
342
347
  [Diaspora](https://diasporafoundation.org/), [rails_admin](https://github.com/sferik/rails_admin),
343
- Michael Hartl's [Rails Tutorial](http://railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and
344
- [kandan](http://kandan.io/).
348
+ Michael Hartl's [Rails Tutorial](https://www.railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and
349
+ [kandan](http://getkandan.com/).
345
350
 
346
351
  [converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb
347
352
  [version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb
348
353
  [contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors
349
354
  [antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595
350
- [jsdocs]: http://getbootstrap.com/javascript/#transitions
355
+ [jsdocs]: https://getbootstrap.com/javascript/#transitions
351
356
  [sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method
352
357
  [mincer]: https://github.com/nodeca/mincer
353
- [autoprefixer]: https://github.com/ai/autoprefixer
358
+ [autoprefixer]: https://github.com/postcss/autoprefixer
data/Rakefile CHANGED
@@ -1,21 +1,55 @@
1
- lib_path = File.join(File.dirname(__FILE__), 'lib')
1
+ require 'bundler/gem_tasks'
2
+
3
+ lib_path = File.join(__dir__, 'lib')
2
4
  $:.unshift(lib_path) unless $:.include?(lib_path)
3
5
 
4
6
  load './tasks/bower.rake'
5
7
 
6
8
  require 'rake/testtask'
7
- task :test do |t|
8
- $: << File.expand_path('test/')
9
- Dir.glob('./test/**/*_test.rb').each { |file| require file }
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'test'
11
+ t.test_files = FileList['test/**/*_test.rb']
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Test all Gemfiles from test/*.gemfile'
16
+ task :test_all_gemfiles do
17
+ require 'term/ansicolor'
18
+ require 'pty'
19
+ require 'shellwords'
20
+ cmd = 'bundle install --quiet && bundle exec rake --trace'
21
+ statuses = Dir.glob('./test/gemfiles/*{[!.lock]}').map do |gemfile|
22
+ env = {'BUNDLE_GEMFILE' => gemfile}
23
+ cmd_with_env = " (#{env.map { |k, v| "export #{k}=#{Shellwords.escape v}" } * ' '}; #{cmd})"
24
+ $stderr.puts Term::ANSIColor.cyan("Testing\n#{cmd_with_env}")
25
+ PTY.spawn(env, cmd) do |r, _w, pid|
26
+ begin
27
+ r.each_line { |l| puts l }
28
+ rescue Errno::EIO
29
+ # Errno:EIO error means that the process has finished giving output.
30
+ ensure
31
+ ::Process.wait pid
32
+ end
33
+ end
34
+ [$? && $?.exitstatus == 0, cmd_with_env]
35
+ end
36
+ failed_cmds = statuses.reject(&:first).map { |(_status, cmd_with_env)| cmd_with_env }
37
+ if failed_cmds.empty?
38
+ $stderr.puts Term::ANSIColor.green('Tests pass with all gemfiles')
39
+ else
40
+ $stderr.puts Term::ANSIColor.red("Failing (#{failed_cmds.size} / #{statuses.size})\n#{failed_cmds * "\n"}")
41
+ exit 1
42
+ end
10
43
  end
11
44
 
12
45
  desc 'Dumps output to a CSS file for testing'
13
46
  task :debug do
14
- require 'sass'
47
+ require 'sassc'
48
+ require 'bootstrap-sass'
15
49
  path = Bootstrap.stylesheets_path
16
- %w(bootstrap).each do |file|
17
- engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
18
- File.open("./#{file}.css", 'w') { |f| f.write(engine.render) }
50
+ %w(_bootstrap).each do |file|
51
+ engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: ['.', path])
52
+ File.open("tmp/#{file}.css", 'w') { |f| f.write(engine.render) }
19
53
  end
20
54
  end
21
55
 
@@ -33,7 +67,8 @@ end
33
67
 
34
68
  desc 'Compile bootstrap-sass to tmp/ (or first arg)'
35
69
  task :compile, :css_path do |t, args|
36
- require 'sass'
70
+ require 'sassc'
71
+ require 'bootstrap-sass'
37
72
  require 'term/ansicolor'
38
73
 
39
74
  path = 'assets/stylesheets'
@@ -43,8 +78,8 @@ task :compile, :css_path do |t, args|
43
78
  %w(_bootstrap bootstrap/_theme).each do |file|
44
79
  save_path = "#{css_path}/#{file.sub(/(^|\/)?_+/, '\1').sub('/', '-')}.css"
45
80
  puts Term::ANSIColor.cyan(" #{save_path}") + '...'
46
- engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
47
- css = engine.render
81
+ engine = SassC::Engine.new(File.read("#{path}/#{file}.scss"), syntax: :scss, load_paths: ['.', path])
82
+ css = engine.render
48
83
  File.open(save_path, 'w') { |f| f.write css }
49
84
  end
50
85
  end
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: affix.js v3.3.5
3
- * http://getbootstrap.com/javascript/#affix
2
+ * Bootstrap: affix.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#affix
4
4
  * ========================================================================
5
- * Copyright 2011-2015 Twitter, Inc.
5
+ * Copyright 2011-2019 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -16,7 +16,9 @@
16
16
  var Affix = function (element, options) {
17
17
  this.options = $.extend({}, Affix.DEFAULTS, options)
18
18
 
19
- this.$target = $(this.options.target)
19
+ var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
20
+
21
+ this.$target = target
20
22
  .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
21
23
  .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
22
24
 
@@ -28,7 +30,7 @@
28
30
  this.checkPosition()
29
31
  }
30
32
 
31
- Affix.VERSION = '3.3.5'
33
+ Affix.VERSION = '3.4.1'
32
34
 
33
35
  Affix.RESET = 'affix affix-top affix-bottom'
34
36
 
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: alert.js v3.3.5
3
- * http://getbootstrap.com/javascript/#alerts
2
+ * Bootstrap: alert.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#alerts
4
4
  * ========================================================================
5
- * Copyright 2011-2015 Twitter, Inc.
5
+ * Copyright 2011-2019 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -18,7 +18,7 @@
18
18
  $(el).on('click', dismiss, this.close)
19
19
  }
20
20
 
21
- Alert.VERSION = '3.3.5'
21
+ Alert.VERSION = '3.4.1'
22
22
 
23
23
  Alert.TRANSITION_DURATION = 150
24
24
 
@@ -31,7 +31,8 @@
31
31
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
32
32
  }
33
33
 
34
- var $parent = $(selector)
34
+ selector = selector === '#' ? [] : selector
35
+ var $parent = $(document).find(selector)
35
36
 
36
37
  if (e) e.preventDefault()
37
38
 
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: button.js v3.3.5
3
- * http://getbootstrap.com/javascript/#buttons
2
+ * Bootstrap: button.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#buttons
4
4
  * ========================================================================
5
- * Copyright 2011-2015 Twitter, Inc.
5
+ * Copyright 2011-2019 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -19,7 +19,7 @@
19
19
  this.isLoading = false
20
20
  }
21
21
 
22
- Button.VERSION = '3.3.5'
22
+ Button.VERSION = '3.4.1'
23
23
 
24
24
  Button.DEFAULTS = {
25
25
  loadingText: 'loading...'
@@ -41,10 +41,10 @@
41
41
 
42
42
  if (state == 'loadingText') {
43
43
  this.isLoading = true
44
- $el.addClass(d).attr(d, d)
44
+ $el.addClass(d).attr(d, d).prop(d, true)
45
45
  } else if (this.isLoading) {
46
46
  this.isLoading = false
47
- $el.removeClass(d).removeAttr(d)
47
+ $el.removeClass(d).removeAttr(d).prop(d, false)
48
48
  }
49
49
  }, this), 0)
50
50
  }
@@ -108,10 +108,15 @@
108
108
 
109
109
  $(document)
110
110
  .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
111
- var $btn = $(e.target)
112
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
111
+ var $btn = $(e.target).closest('.btn')
113
112
  Plugin.call($btn, 'toggle')
114
- if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
113
+ if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
114
+ // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
115
+ e.preventDefault()
116
+ // The target component still receive the focus
117
+ if ($btn.is('input,button')) $btn.trigger('focus')
118
+ else $btn.find('input:visible,button:visible').first().trigger('focus')
119
+ }
115
120
  })
116
121
  .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
117
122
  $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: carousel.js v3.3.5
3
- * http://getbootstrap.com/javascript/#carousel
2
+ * Bootstrap: carousel.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#carousel
4
4
  * ========================================================================
5
- * Copyright 2011-2015 Twitter, Inc.
5
+ * Copyright 2011-2019 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -30,7 +30,7 @@
30
30
  .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
31
31
  }
32
32
 
33
- Carousel.VERSION = '3.3.5'
33
+ Carousel.VERSION = '3.4.1'
34
34
 
35
35
  Carousel.TRANSITION_DURATION = 600
36
36
 
@@ -144,7 +144,9 @@
144
144
  var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
145
145
  if ($.support.transition && this.$element.hasClass('slide')) {
146
146
  $next.addClass(type)
147
- $next[0].offsetWidth // force reflow
147
+ if (typeof $next === 'object' && $next.length) {
148
+ $next[0].offsetWidth // force reflow
149
+ }
148
150
  $active.addClass(direction)
149
151
  $next.addClass(direction)
150
152
  $active
@@ -206,10 +208,17 @@
206
208
  // =================
207
209
 
208
210
  var clickHandler = function (e) {
209
- var href
210
211
  var $this = $(this)
211
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
212
+ var href = $this.attr('href')
213
+ if (href) {
214
+ href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
215
+ }
216
+
217
+ var target = $this.attr('data-target') || href
218
+ var $target = $(document).find(target)
219
+
212
220
  if (!$target.hasClass('carousel')) return
221
+
213
222
  var options = $.extend({}, $target.data(), $this.data())
214
223
  var slideIndex = $this.attr('data-slide-to')
215
224
  if (slideIndex) options.interval = false