bootstrap-sass 3.3.7 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
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 +12 -8
  7. data/assets/javascripts/bootstrap-sprockets.js +3 -3
  8. data/assets/javascripts/bootstrap.js +300 -97
  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 +25 -10
  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 +167 -10
  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 +7 -7
  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
@@ -1,16 +1,146 @@
1
1
  /* ========================================================================
2
- * Bootstrap: tooltip.js v3.3.7
3
- * http://getbootstrap.com/javascript/#tooltip
2
+ * Bootstrap: tooltip.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#tooltip
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ========================================================================
6
- * Copyright 2011-2016 Twitter, Inc.
6
+ * Copyright 2011-2019 Twitter, Inc.
7
7
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
8
8
  * ======================================================================== */
9
9
 
10
-
11
10
  +function ($) {
12
11
  'use strict';
13
12
 
13
+ var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
14
+
15
+ var uriAttrs = [
16
+ 'background',
17
+ 'cite',
18
+ 'href',
19
+ 'itemtype',
20
+ 'longdesc',
21
+ 'poster',
22
+ 'src',
23
+ 'xlink:href'
24
+ ]
25
+
26
+ var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
27
+
28
+ var DefaultWhitelist = {
29
+ // Global attributes allowed on any supplied element below.
30
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
31
+ a: ['target', 'href', 'title', 'rel'],
32
+ area: [],
33
+ b: [],
34
+ br: [],
35
+ col: [],
36
+ code: [],
37
+ div: [],
38
+ em: [],
39
+ hr: [],
40
+ h1: [],
41
+ h2: [],
42
+ h3: [],
43
+ h4: [],
44
+ h5: [],
45
+ h6: [],
46
+ i: [],
47
+ img: ['src', 'alt', 'title', 'width', 'height'],
48
+ li: [],
49
+ ol: [],
50
+ p: [],
51
+ pre: [],
52
+ s: [],
53
+ small: [],
54
+ span: [],
55
+ sub: [],
56
+ sup: [],
57
+ strong: [],
58
+ u: [],
59
+ ul: []
60
+ }
61
+
62
+ /**
63
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
64
+ *
65
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
66
+ */
67
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
68
+
69
+ /**
70
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
71
+ *
72
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
73
+ */
74
+ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
75
+
76
+ function allowedAttribute(attr, allowedAttributeList) {
77
+ var attrName = attr.nodeName.toLowerCase()
78
+
79
+ if ($.inArray(attrName, allowedAttributeList) !== -1) {
80
+ if ($.inArray(attrName, uriAttrs) !== -1) {
81
+ return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
82
+ }
83
+
84
+ return true
85
+ }
86
+
87
+ var regExp = $(allowedAttributeList).filter(function (index, value) {
88
+ return value instanceof RegExp
89
+ })
90
+
91
+ // Check if a regular expression validates the attribute.
92
+ for (var i = 0, l = regExp.length; i < l; i++) {
93
+ if (attrName.match(regExp[i])) {
94
+ return true
95
+ }
96
+ }
97
+
98
+ return false
99
+ }
100
+
101
+ function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
102
+ if (unsafeHtml.length === 0) {
103
+ return unsafeHtml
104
+ }
105
+
106
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
107
+ return sanitizeFn(unsafeHtml)
108
+ }
109
+
110
+ // IE 8 and below don't support createHTMLDocument
111
+ if (!document.implementation || !document.implementation.createHTMLDocument) {
112
+ return unsafeHtml
113
+ }
114
+
115
+ var createdDocument = document.implementation.createHTMLDocument('sanitization')
116
+ createdDocument.body.innerHTML = unsafeHtml
117
+
118
+ var whitelistKeys = $.map(whiteList, function (el, i) { return i })
119
+ var elements = $(createdDocument.body).find('*')
120
+
121
+ for (var i = 0, len = elements.length; i < len; i++) {
122
+ var el = elements[i]
123
+ var elName = el.nodeName.toLowerCase()
124
+
125
+ if ($.inArray(elName, whitelistKeys) === -1) {
126
+ el.parentNode.removeChild(el)
127
+
128
+ continue
129
+ }
130
+
131
+ var attributeList = $.map(el.attributes, function (el) { return el })
132
+ var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
133
+
134
+ for (var j = 0, len2 = attributeList.length; j < len2; j++) {
135
+ if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
136
+ el.removeAttribute(attributeList[j].nodeName)
137
+ }
138
+ }
139
+ }
140
+
141
+ return createdDocument.body.innerHTML
142
+ }
143
+
14
144
  // TOOLTIP PUBLIC CLASS DEFINITION
15
145
  // ===============================
16
146
 
@@ -26,7 +156,7 @@
26
156
  this.init('tooltip', element, options)
27
157
  }
28
158
 
29
- Tooltip.VERSION = '3.3.7'
159
+ Tooltip.VERSION = '3.4.1'
30
160
 
31
161
  Tooltip.TRANSITION_DURATION = 150
32
162
 
@@ -43,7 +173,10 @@
43
173
  viewport: {
44
174
  selector: 'body',
45
175
  padding: 0
46
- }
176
+ },
177
+ sanitize : true,
178
+ sanitizeFn : null,
179
+ whiteList : DefaultWhitelist
47
180
  }
48
181
 
49
182
  Tooltip.prototype.init = function (type, element, options) {
@@ -51,7 +184,7 @@
51
184
  this.type = type
52
185
  this.$element = $(element)
53
186
  this.options = this.getOptions(options)
54
- this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
187
+ 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))
55
188
  this.inState = { click: false, hover: false, focus: false }
56
189
 
57
190
  if (this.$element[0] instanceof document.constructor && !this.options.selector) {
@@ -84,7 +217,15 @@
84
217
  }
85
218
 
86
219
  Tooltip.prototype.getOptions = function (options) {
87
- options = $.extend({}, this.getDefaults(), this.$element.data(), options)
220
+ var dataAttributes = this.$element.data()
221
+
222
+ for (var dataAttr in dataAttributes) {
223
+ if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
224
+ delete dataAttributes[dataAttr]
225
+ }
226
+ }
227
+
228
+ options = $.extend({}, this.getDefaults(), dataAttributes, options)
88
229
 
89
230
  if (options.delay && typeof options.delay == 'number') {
90
231
  options.delay = {
@@ -93,6 +234,10 @@
93
234
  }
94
235
  }
95
236
 
237
+ if (options.sanitize) {
238
+ options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
239
+ }
240
+
96
241
  return options
97
242
  }
98
243
 
@@ -204,7 +349,7 @@
204
349
  .addClass(placement)
205
350
  .data('bs.' + this.type, this)
206
351
 
207
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
352
+ this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
208
353
  this.$element.trigger('inserted.bs.' + this.type)
209
354
 
210
355
  var pos = this.getPosition()
@@ -306,7 +451,16 @@
306
451
  var $tip = this.tip()
307
452
  var title = this.getTitle()
308
453
 
309
- $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
454
+ if (this.options.html) {
455
+ if (this.options.sanitize) {
456
+ title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
457
+ }
458
+
459
+ $tip.find('.tooltip-inner').html(title)
460
+ } else {
461
+ $tip.find('.tooltip-inner').text(title)
462
+ }
463
+
310
464
  $tip.removeClass('fade in top bottom left right')
311
465
  }
312
466
 
@@ -487,6 +641,9 @@
487
641
  })
488
642
  }
489
643
 
644
+ Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
645
+ return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
646
+ }
490
647
 
491
648
  // TOOLTIP PLUGIN DEFINITION
492
649
  // =========================
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: transition.js v3.3.7
3
- * http://getbootstrap.com/javascript/#transitions
2
+ * Bootstrap: transition.js v3.4.1
3
+ * https://getbootstrap.com/docs/3.4/javascript/#transitions
4
4
  * ========================================================================
5
- * Copyright 2011-2016 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
 
@@ -10,7 +10,7 @@
10
10
  +function ($) {
11
11
  'use strict';
12
12
 
13
- // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
13
+ // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
14
14
  // ============================================================
15
15
 
16
16
  function transitionEnd() {
@@ -32,7 +32,7 @@
32
32
  return false // explicit for ie8 ( ._.)
33
33
  }
34
34
 
35
- // http://blog.alexmaccaw.com/css-transitions
35
+ // https://blog.alexmaccaw.com/css-transitions
36
36
  $.fn.emulateTransitionEnd = function (duration) {
37
37
  var called = false
38
38
  var $el = this
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 Twitter, Inc.
2
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 Twitter, Inc.
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
5
  */
6
6
 
@@ -15,8 +15,7 @@
15
15
  // Headings for larger alerts
16
16
  h4 {
17
17
  margin-top: 0;
18
- // Specified for the h4 to prevent conflicts of changing $headings-color
19
- color: inherit;
18
+ color: inherit; // Specified for the h4 to prevent conflicts of changing $headings-color
20
19
  }
21
20
 
22
21
  // Provide class for links that match alerts
@@ -39,7 +38,8 @@
39
38
  //
40
39
  // Expand the right padding and account for the close button's positioning.
41
40
 
42
- .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
41
+ // The misspelled .alert-dismissable was deprecated in 3.2.0.
42
+ .alert-dismissable,
43
43
  .alert-dismissible {
44
44
  padding-right: ($alert-padding + 20);
45
45
 
@@ -10,11 +10,11 @@
10
10
  padding: 3px 7px;
11
11
  font-size: $font-size-small;
12
12
  font-weight: $badge-font-weight;
13
- color: $badge-color;
14
13
  line-height: $badge-line-height;
15
- vertical-align: middle;
16
- white-space: nowrap;
14
+ color: $badge-color;
17
15
  text-align: center;
16
+ white-space: nowrap;
17
+ vertical-align: middle;
18
18
  background-color: $badge-bg;
19
19
  border-radius: $badge-border-radius;
20
20
 
@@ -14,11 +14,11 @@
14
14
  display: inline-block;
15
15
 
16
16
  + li:before {
17
+ padding: 0 5px;
18
+ color: $breadcrumb-color;
17
19
  // [converter] Workaround for https://github.com/sass/libsass/issues/1115
18
20
  $nbsp: "\00a0";
19
21
  content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
20
- padding: 0 5px;
21
- color: $breadcrumb-color;
22
22
  }
23
23
  }
24
24
 
@@ -103,18 +103,18 @@
103
103
 
104
104
  // Give the line between buttons some depth
105
105
  .btn-group > .btn + .dropdown-toggle {
106
- padding-left: 8px;
107
106
  padding-right: 8px;
107
+ padding-left: 8px;
108
108
  }
109
109
  .btn-group > .btn-lg + .dropdown-toggle {
110
- padding-left: 12px;
111
110
  padding-right: 12px;
111
+ padding-left: 12px;
112
112
  }
113
113
 
114
114
  // The clickable button for toggling the menu
115
115
  // Remove the gradient and set the same inset shadow as the :active state
116
116
  .btn-group.open .dropdown-toggle {
117
- @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
117
+ @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
118
118
 
119
119
  // Show no shadow for `.btn-link` since it has no other button styles.
120
120
  &.btn-link {
@@ -205,8 +205,8 @@
205
205
  border-collapse: separate;
206
206
  > .btn,
207
207
  > .btn-group {
208
- float: none;
209
208
  display: table-cell;
209
+ float: none;
210
210
  width: 1%;
211
211
  }
212
212
  > .btn-group .btn {
@@ -237,7 +237,7 @@
237
237
  input[type="radio"],
238
238
  input[type="checkbox"] {
239
239
  position: absolute;
240
- clip: rect(0,0,0,0);
240
+ clip: rect(0, 0, 0, 0);
241
241
  pointer-events: none;
242
242
  }
243
243
  }
@@ -11,12 +11,12 @@
11
11
  margin-bottom: 0; // For input.btn
12
12
  font-weight: $btn-font-weight;
13
13
  text-align: center;
14
+ white-space: nowrap;
14
15
  vertical-align: middle;
15
16
  touch-action: manipulation;
16
17
  cursor: pointer;
17
18
  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
18
19
  border: 1px solid transparent;
19
- white-space: nowrap;
20
20
  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
21
21
  @include user-select(none);
22
22
 
@@ -38,9 +38,9 @@
38
38
 
39
39
  &:active,
40
40
  &.active {
41
- outline: 0;
42
41
  background-image: none;
43
- @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
42
+ outline: 0;
43
+ @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
44
44
  }
45
45
 
46
46
  &.disabled,
@@ -94,8 +94,8 @@ a.btn {
94
94
 
95
95
  // Make a button look and behave like a link
96
96
  .btn-link {
97
+ font-weight: 400;
97
98
  color: $link-color;
98
- font-weight: normal;
99
99
  border-radius: 0;
100
100
 
101
101
  &,
@@ -10,12 +10,12 @@
10
10
 
11
11
  .carousel-inner {
12
12
  position: relative;
13
- overflow: hidden;
14
13
  width: 100%;
14
+ overflow: hidden;
15
15
 
16
16
  > .item {
17
- display: none;
18
17
  position: relative;
18
+ display: none;
19
19
  @include transition(.6s ease-in-out left);
20
20
 
21
21
  // Account for jankitude on images
@@ -93,34 +93,34 @@
93
93
  .carousel-control {
94
94
  position: absolute;
95
95
  top: 0;
96
- left: 0;
97
96
  bottom: 0;
97
+ left: 0;
98
98
  width: $carousel-control-width;
99
- @include opacity($carousel-control-opacity);
100
99
  font-size: $carousel-control-font-size;
101
100
  color: $carousel-control-color;
102
101
  text-align: center;
103
102
  text-shadow: $carousel-text-shadow;
104
103
  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
104
+ @include opacity($carousel-control-opacity);
105
105
  // We can't have this transition here because WebKit cancels the carousel
106
106
  // animation if you trip this while in the middle of another animation.
107
107
 
108
108
  // Set gradients for backgrounds
109
109
  &.left {
110
- @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
110
+ @include gradient-horizontal($start-color: rgba(0, 0, 0, .5), $end-color: rgba(0, 0, 0, .0001));
111
111
  }
112
112
  &.right {
113
- left: auto;
114
113
  right: 0;
115
- @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
114
+ left: auto;
115
+ @include gradient-horizontal($start-color: rgba(0, 0, 0, .0001), $end-color: rgba(0, 0, 0, .5));
116
116
  }
117
117
 
118
118
  // Hover/focus state
119
119
  &:hover,
120
120
  &:focus {
121
- outline: 0;
122
121
  color: $carousel-control-color;
123
122
  text-decoration: none;
123
+ outline: 0;
124
124
  @include opacity(.9);
125
125
  }
126
126
 
@@ -131,9 +131,9 @@
131
131
  .glyphicon-chevron-right {
132
132
  position: absolute;
133
133
  top: 50%;
134
- margin-top: -10px;
135
134
  z-index: 5;
136
135
  display: inline-block;
136
+ margin-top: -10px;
137
137
  }
138
138
  .icon-prev,
139
139
  .glyphicon-chevron-left {
@@ -147,21 +147,20 @@
147
147
  }
148
148
  .icon-prev,
149
149
  .icon-next {
150
- width: 20px;
150
+ width: 20px;
151
151
  height: 20px;
152
- line-height: 1;
153
152
  font-family: serif;
153
+ line-height: 1;
154
154
  }
155
155
 
156
-
157
156
  .icon-prev {
158
157
  &:before {
159
- content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
158
+ content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
160
159
  }
161
160
  }
162
161
  .icon-next {
163
162
  &:before {
164
- content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
163
+ content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
165
164
  }
166
165
  }
167
166
  }
@@ -177,21 +176,18 @@
177
176
  left: 50%;
178
177
  z-index: 15;
179
178
  width: 60%;
180
- margin-left: -30%;
181
179
  padding-left: 0;
182
- list-style: none;
180
+ margin-left: -30%;
183
181
  text-align: center;
182
+ list-style: none;
184
183
 
185
184
  li {
186
185
  display: inline-block;
187
- width: 10px;
186
+ width: 10px;
188
187
  height: 10px;
189
188
  margin: 1px;
190
189
  text-indent: -999px;
191
- border: 1px solid $carousel-indicator-border-color;
192
- border-radius: 10px;
193
190
  cursor: pointer;
194
-
195
191
  // IE8-9 hack for event handling
196
192
  //
197
193
  // Internet Explorer 8-9 does not support clicks on elements without a set
@@ -202,12 +198,16 @@
202
198
  // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
203
199
  // set alpha transparency for the best results possible.
204
200
  background-color: #000 \9; // IE8
205
- background-color: rgba(0,0,0,0); // IE9
201
+ background-color: rgba(0, 0, 0, 0); // IE9
202
+
203
+ border: 1px solid $carousel-indicator-border-color;
204
+ border-radius: 10px;
206
205
  }
206
+
207
207
  .active {
208
- margin: 0;
209
- width: 12px;
208
+ width: 12px;
210
209
  height: 12px;
210
+ margin: 0;
211
211
  background-color: $carousel-indicator-active-bg;
212
212
  }
213
213
  }
@@ -217,15 +217,16 @@
217
217
  // Hidden by default for smaller viewports
218
218
  .carousel-caption {
219
219
  position: absolute;
220
- left: 15%;
221
220
  right: 15%;
222
221
  bottom: 20px;
222
+ left: 15%;
223
223
  z-index: 10;
224
224
  padding-top: 20px;
225
225
  padding-bottom: 20px;
226
226
  color: $carousel-caption-color;
227
227
  text-align: center;
228
228
  text-shadow: $carousel-text-shadow;
229
+
229
230
  & .btn {
230
231
  text-shadow: none; // No shadow for button elements in carousel-caption
231
232
  }
@@ -258,8 +259,8 @@
258
259
 
259
260
  // Show and left align the captions
260
261
  .carousel-caption {
261
- left: 20%;
262
262
  right: 20%;
263
+ left: 20%;
263
264
  padding-bottom: 30px;
264
265
  }
265
266