twitter-bootswatch-rails 3.2.0.0 → 3.3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/twitter/bootstrap/glyphicons-halflings-regular.eot +0 -0
  3. data/app/assets/fonts/twitter/bootstrap/glyphicons-halflings-regular.svg +272 -213
  4. data/app/assets/fonts/twitter/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  5. data/app/assets/fonts/twitter/bootstrap/glyphicons-halflings-regular.woff +0 -0
  6. data/app/assets/fonts/twitter/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  7. data/app/assets/javascripts/twitter/bootstrap/affix.js +44 -24
  8. data/app/assets/javascripts/twitter/bootstrap/alert.js +7 -5
  9. data/app/assets/javascripts/twitter/bootstrap/button.js +17 -11
  10. data/app/assets/javascripts/twitter/bootstrap/carousel.js +31 -17
  11. data/app/assets/javascripts/twitter/bootstrap/collapse.js +70 -29
  12. data/app/assets/javascripts/twitter/bootstrap/dropdown.js +21 -11
  13. data/app/assets/javascripts/twitter/bootstrap/modal.js +68 -24
  14. data/app/assets/javascripts/twitter/bootstrap/popover.js +4 -4
  15. data/app/assets/javascripts/twitter/bootstrap/scrollspy.js +13 -8
  16. data/app/assets/javascripts/twitter/bootstrap/tab.js +42 -17
  17. data/app/assets/javascripts/twitter/bootstrap/tooltip.js +54 -39
  18. data/app/assets/javascripts/twitter/bootstrap/transition.js +2 -2
  19. data/lib/generators/bootswatch/import/import_generator.rb +0 -4
  20. data/lib/generators/bootswatch/install/templates/variables.less.tt +33 -22
  21. data/lib/twitter/bootswatch/rails/version.rb +1 -1
  22. data/vendor/toolkit/twitter/bootstrap/alerts.less +5 -0
  23. data/vendor/toolkit/twitter/bootstrap/badges.less +11 -1
  24. data/vendor/toolkit/twitter/bootstrap/button-groups.less +18 -15
  25. data/vendor/toolkit/twitter/bootstrap/buttons.less +8 -5
  26. data/vendor/toolkit/twitter/bootstrap/carousel.less +26 -0
  27. data/vendor/toolkit/twitter/bootstrap/close.less +1 -0
  28. data/vendor/toolkit/twitter/bootstrap/code.less +1 -0
  29. data/vendor/toolkit/twitter/bootstrap/component-animations.less +5 -2
  30. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +5 -6
  31. data/vendor/toolkit/twitter/bootstrap/forms.less +70 -44
  32. data/vendor/toolkit/twitter/bootstrap/glyphicons.less +69 -1
  33. data/vendor/toolkit/twitter/bootstrap/jumbotron.less +7 -5
  34. data/vendor/toolkit/twitter/bootstrap/list-group.less +1 -8
  35. data/vendor/toolkit/twitter/bootstrap/media.less +35 -30
  36. data/vendor/toolkit/twitter/bootstrap/mixins/buttons.less +2 -0
  37. data/vendor/toolkit/twitter/bootstrap/mixins/forms.less +5 -1
  38. data/vendor/toolkit/twitter/bootstrap/mixins/grid-framework.less +2 -2
  39. data/vendor/toolkit/twitter/bootstrap/mixins/image.less +0 -1
  40. data/vendor/toolkit/twitter/bootstrap/mixins/labels.less +1 -1
  41. data/vendor/toolkit/twitter/bootstrap/mixins/vendor-prefixes.less +6 -3
  42. data/vendor/toolkit/twitter/bootstrap/modals.less +3 -5
  43. data/vendor/toolkit/twitter/bootstrap/navbar.less +31 -25
  44. data/vendor/toolkit/twitter/bootstrap/navs.less +3 -1
  45. data/vendor/toolkit/twitter/bootstrap/normalize.less +5 -3
  46. data/vendor/toolkit/twitter/bootstrap/pager.less +1 -2
  47. data/vendor/toolkit/twitter/bootstrap/pagination.less +1 -1
  48. data/vendor/toolkit/twitter/bootstrap/panels.less +26 -4
  49. data/vendor/toolkit/twitter/bootstrap/popovers.less +6 -4
  50. data/vendor/toolkit/twitter/bootstrap/print.less +102 -96
  51. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +1 -19
  52. data/vendor/toolkit/twitter/bootstrap/responsive-embed.less +2 -1
  53. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +1 -1
  54. data/vendor/toolkit/twitter/bootstrap/tables.less +14 -13
  55. data/vendor/toolkit/twitter/bootstrap/theme.less +26 -11
  56. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +1 -1
  57. data/vendor/toolkit/twitter/bootstrap/tooltip.less +12 -4
  58. data/vendor/toolkit/twitter/bootstrap/type.less +0 -11
  59. data/vendor/toolkit/twitter/bootstrap/utilities.less +0 -1
  60. data/vendor/toolkit/twitter/bootstrap/variables.less +33 -22
  61. metadata +33 -14
@@ -1,9 +1,9 @@
1
1
  /* ========================================================================
2
- * Bootstrap: tooltip.js v3.2.0
2
+ * Bootstrap: tooltip.js v3.3.2
3
3
  * http://getbootstrap.com/javascript/#tooltip
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ========================================================================
6
- * Copyright 2011-2014 Twitter, Inc.
6
+ * Copyright 2011-2015 Twitter, Inc.
7
7
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
8
8
  * ======================================================================== */
9
9
 
@@ -25,7 +25,9 @@
25
25
  this.init('tooltip', element, options)
26
26
  }
27
27
 
28
- Tooltip.VERSION = '3.2.0'
28
+ Tooltip.VERSION = '3.3.2'
29
+
30
+ Tooltip.TRANSITION_DURATION = 150
29
31
 
30
32
  Tooltip.DEFAULTS = {
31
33
  animation: true,
@@ -103,6 +105,11 @@
103
105
  var self = obj instanceof this.constructor ?
104
106
  obj : $(obj.currentTarget).data('bs.' + this.type)
105
107
 
108
+ if (self && self.$tip && self.$tip.is(':visible')) {
109
+ self.hoverState = 'in'
110
+ return
111
+ }
112
+
106
113
  if (!self) {
107
114
  self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
108
115
  $(obj.currentTarget).data('bs.' + this.type, self)
@@ -145,7 +152,7 @@
145
152
  if (this.hasContent() && this.enabled) {
146
153
  this.$element.trigger(e)
147
154
 
148
- var inDom = $.contains(document.documentElement, this.$element[0])
155
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
149
156
  if (e.isDefaultPrevented() || !inDom) return
150
157
  var that = this
151
158
 
@@ -181,13 +188,13 @@
181
188
 
182
189
  if (autoPlace) {
183
190
  var orgPlacement = placement
184
- var $parent = this.$element.parent()
185
- var parentDim = this.getPosition($parent)
191
+ var $container = this.options.container ? $(this.options.container) : this.$element.parent()
192
+ var containerDim = this.getPosition($container)
186
193
 
187
- placement = placement == 'bottom' && pos.top + pos.height + actualHeight - parentDim.scroll > parentDim.height ? 'top' :
188
- placement == 'top' && pos.top - parentDim.scroll - actualHeight < 0 ? 'bottom' :
189
- placement == 'right' && pos.right + actualWidth > parentDim.width ? 'left' :
190
- placement == 'left' && pos.left - actualWidth < parentDim.left ? 'right' :
194
+ placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
195
+ placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
196
+ placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
197
+ placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
191
198
  placement
192
199
 
193
200
  $tip
@@ -200,14 +207,17 @@
200
207
  this.applyPlacement(calculatedOffset, placement)
201
208
 
202
209
  var complete = function () {
210
+ var prevHoverState = that.hoverState
203
211
  that.$element.trigger('shown.bs.' + that.type)
204
212
  that.hoverState = null
213
+
214
+ if (prevHoverState == 'out') that.leave(that)
205
215
  }
206
216
 
207
217
  $.support.transition && this.$tip.hasClass('fade') ?
208
218
  $tip
209
219
  .one('bsTransitionEnd', complete)
210
- .emulateTransitionEnd(150) :
220
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
211
221
  complete()
212
222
  }
213
223
  }
@@ -254,16 +264,18 @@
254
264
  if (delta.left) offset.left += delta.left
255
265
  else offset.top += delta.top
256
266
 
257
- var arrowDelta = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
258
- var arrowPosition = delta.left ? 'left' : 'top'
259
- var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'
267
+ var isVertical = /top|bottom/.test(placement)
268
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
269
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
260
270
 
261
271
  $tip.offset(offset)
262
- this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)
272
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
263
273
  }
264
274
 
265
- Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
266
- this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
275
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
276
+ this.arrow()
277
+ .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
278
+ .css(isHorizontal ? 'top' : 'left', '')
267
279
  }
268
280
 
269
281
  Tooltip.prototype.setContent = function () {
@@ -274,16 +286,17 @@
274
286
  $tip.removeClass('fade in top bottom left right')
275
287
  }
276
288
 
277
- Tooltip.prototype.hide = function () {
289
+ Tooltip.prototype.hide = function (callback) {
278
290
  var that = this
279
291
  var $tip = this.tip()
280
292
  var e = $.Event('hide.bs.' + this.type)
281
293
 
282
- this.$element.removeAttr('aria-describedby')
283
-
284
294
  function complete() {
285
295
  if (that.hoverState != 'in') $tip.detach()
286
- that.$element.trigger('hidden.bs.' + that.type)
296
+ that.$element
297
+ .removeAttr('aria-describedby')
298
+ .trigger('hidden.bs.' + that.type)
299
+ callback && callback()
287
300
  }
288
301
 
289
302
  this.$element.trigger(e)
@@ -295,7 +308,7 @@
295
308
  $.support.transition && this.$tip.hasClass('fade') ?
296
309
  $tip
297
310
  .one('bsTransitionEnd', complete)
298
- .emulateTransitionEnd(150) :
311
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
299
312
  complete()
300
313
 
301
314
  this.hoverState = null
@@ -316,20 +329,27 @@
316
329
 
317
330
  Tooltip.prototype.getPosition = function ($element) {
318
331
  $element = $element || this.$element
332
+
319
333
  var el = $element[0]
320
334
  var isBody = el.tagName == 'BODY'
321
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {
322
- scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),
323
- width: isBody ? $(window).width() : $element.outerWidth(),
324
- height: isBody ? $(window).height() : $element.outerHeight()
325
- }, isBody ? { top: 0, left: 0 } : $element.offset())
335
+
336
+ var elRect = el.getBoundingClientRect()
337
+ if (elRect.width == null) {
338
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
339
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
340
+ }
341
+ var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
342
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
343
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
344
+
345
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
326
346
  }
327
347
 
328
348
  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
329
- return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
330
- placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
349
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
350
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
331
351
  placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
332
- /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
352
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
333
353
 
334
354
  }
335
355
 
@@ -386,14 +406,6 @@
386
406
  return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
387
407
  }
388
408
 
389
- Tooltip.prototype.validate = function () {
390
- if (!this.$element[0].parentNode) {
391
- this.hide()
392
- this.$element = null
393
- this.options = null
394
- }
395
- }
396
-
397
409
  Tooltip.prototype.enable = function () {
398
410
  this.enabled = true
399
411
  }
@@ -420,8 +432,11 @@
420
432
  }
421
433
 
422
434
  Tooltip.prototype.destroy = function () {
435
+ var that = this
423
436
  clearTimeout(this.timeout)
424
- this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
437
+ this.hide(function () {
438
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
439
+ })
425
440
  }
426
441
 
427
442
 
@@ -1,8 +1,8 @@
1
1
  /* ========================================================================
2
- * Bootstrap: transition.js v3.2.0
2
+ * Bootstrap: transition.js v3.3.2
3
3
  * http://getbootstrap.com/javascript/#transitions
4
4
  * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
5
+ * Copyright 2011-2015 Twitter, Inc.
6
6
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
7
  * ======================================================================== */
8
8
 
@@ -34,10 +34,6 @@ module Bootswatch
34
34
  "@import \"#{theme_directory}/base\";\n\n"
35
35
  end
36
36
 
37
- gsub_file File.join(stylesheets_dest_path,'variables.less'),
38
- '"../img/glyphicons-halflings.png"',
39
- '"twitter/bootstrap/glyphicons-halflings.png"'
40
-
41
37
  gsub_file File.join(stylesheets_dest_path, 'variables.less'),
42
38
  '"../fonts/"',
43
39
  '"twitter/bootstrap/"'
@@ -10,13 +10,14 @@
10
10
  //
11
11
  //## Gray and brand colors for use across Bootstrap.
12
12
 
13
- @gray-darker: lighten(#000, 13.5%); // #222
14
- @gray-dark: lighten(#000, 20%); // #333
15
- @gray: lighten(#000, 33.5%); // #555
16
- @gray-light: lighten(#000, 46.7%); // #777
17
- @gray-lighter: lighten(#000, 93.5%); // #eee
18
-
19
- @brand-primary: #428bca;
13
+ @gray-base: #000;
14
+ @gray-darker: lighten(@gray-base, 13.5%); // #222
15
+ @gray-dark: lighten(@gray-base, 20%); // #333
16
+ @gray: lighten(@gray-base, 33.5%); // #555
17
+ @gray-light: lighten(@gray-base, 46.7%); // #777
18
+ @gray-lighter: lighten(@gray-base, 93.5%); // #eee
19
+
20
+ @brand-primary: darken(#428bca, 6.5%); // #337ab7
20
21
  @brand-success: #5cb85c;
21
22
  @brand-info: #5bc0de;
22
23
  @brand-warning: #f0ad4e;
@@ -36,6 +37,8 @@
36
37
  @link-color: @brand-primary;
37
38
  //** Link hover color set via `darken()` function.
38
39
  @link-hover-color: darken(@link-color, 15%);
40
+ //** Link hover decoration.
41
+ @link-hover-decoration: underline;
39
42
 
40
43
 
41
44
  //== Typography
@@ -99,7 +102,7 @@
99
102
  @padding-xs-vertical: 1px;
100
103
  @padding-xs-horizontal: 5px;
101
104
 
102
- @line-height-large: 1.33;
105
+ @line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
103
106
  @line-height-small: 1.5;
104
107
 
105
108
  @border-radius-base: 4px;
@@ -184,13 +187,21 @@
184
187
  @input-color: @gray;
185
188
  //** `<input>` border color
186
189
  @input-border: #ccc;
187
- //** `<input>` border radius
190
+
191
+ // TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
192
+ //** Default `.form-control` border radius
193
+ // This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
188
194
  @input-border-radius: @border-radius-base;
195
+ //** Large `.form-control` border radius
196
+ @input-border-radius-large: @border-radius-large;
197
+ //** Small `.form-control` border radius
198
+ @input-border-radius-small: @border-radius-small;
199
+
189
200
  //** Border color for inputs on focus
190
201
  @input-border-focus: #66afe9;
191
202
 
192
203
  //** Placeholder text color
193
- @input-color-placeholder: @gray-light;
204
+ @input-color-placeholder: #999;
194
205
 
195
206
  //** Default `.form-control` height
196
207
  @input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
@@ -207,6 +218,9 @@
207
218
  //** Border color for textual input addons
208
219
  @input-group-addon-border-color: @input-border;
209
220
 
221
+ //** Disabled cursor for form controls and buttons.
222
+ @cursor-disabled: not-allowed;
223
+
210
224
 
211
225
  //== Dropdowns
212
226
  //
@@ -255,8 +269,7 @@
255
269
  @zindex-popover: 1060;
256
270
  @zindex-tooltip: 1070;
257
271
  @zindex-navbar-fixed: 1030;
258
- @zindex-modal-background: 1040;
259
- @zindex-modal: 1050;
272
+ @zindex-modal: 1040;
260
273
 
261
274
 
262
275
  //== Media queries breakpoints
@@ -318,17 +331,17 @@
318
331
  //## Define the maximum width of `.container` for different screen sizes.
319
332
 
320
333
  // Small screen / tablet
321
- @container-tablet: ((720px + @grid-gutter-width));
334
+ @container-tablet: (720px + @grid-gutter-width);
322
335
  //** For `@screen-sm-min` and up.
323
336
  @container-sm: @container-tablet;
324
337
 
325
338
  // Medium screen / desktop
326
- @container-desktop: ((940px + @grid-gutter-width));
339
+ @container-desktop: (940px + @grid-gutter-width);
327
340
  //** For `@screen-md-min` and up.
328
341
  @container-md: @container-desktop;
329
342
 
330
343
  // Large screen / wide desktop
331
- @container-large-desktop: ((1140px + @grid-gutter-width));
344
+ @container-large-desktop: (1140px + @grid-gutter-width);
332
345
  //** For `@screen-lg-min` and up.
333
346
  @container-lg: @container-large-desktop;
334
347
 
@@ -371,12 +384,12 @@
371
384
 
372
385
  // Inverted navbar
373
386
  // Reset inverted navbar basics
374
- @navbar-inverse-color: @gray-light;
387
+ @navbar-inverse-color: lighten(@gray-light, 15%);
375
388
  @navbar-inverse-bg: #222;
376
389
  @navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
377
390
 
378
391
  // Inverted navbar links
379
- @navbar-inverse-link-color: @gray-light;
392
+ @navbar-inverse-link-color: lighten(@gray-light, 15%);
380
393
  @navbar-inverse-link-hover-color: #fff;
381
394
  @navbar-inverse-link-hover-bg: transparent;
382
395
  @navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
@@ -406,8 +419,6 @@
406
419
  @nav-disabled-link-color: @gray-light;
407
420
  @nav-disabled-link-hover-color: @gray-light;
408
421
 
409
- @nav-open-link-hover-color: #fff;
410
-
411
422
  //== Tabs
412
423
  @nav-tabs-border-color: #ddd;
413
424
 
@@ -532,7 +543,7 @@
532
543
  //** Popover arrow width
533
544
  @popover-arrow-width: 10px;
534
545
  //** Popover arrow color
535
- @popover-arrow-color: #fff;
546
+ @popover-arrow-color: @popover-bg;
536
547
 
537
548
  //** Popover outer arrow width
538
549
  @popover-arrow-outer-width: (@popover-arrow-width + 1);
@@ -631,6 +642,8 @@
631
642
  @progress-bg: #f5f5f5;
632
643
  //** Progress bar text color
633
644
  @progress-bar-color: #fff;
645
+ //** Variable for setting rounded corners on progress bar.
646
+ @progress-border-radius: @border-radius-base;
634
647
 
635
648
  //** Default progress bar color
636
649
  @progress-bar-bg: @brand-primary;
@@ -845,5 +858,3 @@
845
858
  @dl-horizontal-offset: @component-offset-horizontal;
846
859
  //** Horizontal line color.
847
860
  @hr-border: @gray-lighter;
848
-
849
-
@@ -1,7 +1,7 @@
1
1
  module Twitter
2
2
  module Bootswatch
3
3
  module Rails
4
- VERSION = '3.2.0.0'
4
+ VERSION = '3.3.2.0'
5
5
  end
6
6
  end
7
7
  end
@@ -18,6 +18,7 @@
18
18
  // Specified for the h4 to prevent conflicts of changing @headings-color
19
19
  color: inherit;
20
20
  }
21
+
21
22
  // Provide class for links that match alerts
22
23
  .alert-link {
23
24
  font-weight: @alert-link-font-weight;
@@ -28,6 +29,7 @@
28
29
  > ul {
29
30
  margin-bottom: 0;
30
31
  }
32
+
31
33
  > p + p {
32
34
  margin-top: 5px;
33
35
  }
@@ -57,12 +59,15 @@
57
59
  .alert-success {
58
60
  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
59
61
  }
62
+
60
63
  .alert-info {
61
64
  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
62
65
  }
66
+
63
67
  .alert-warning {
64
68
  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
65
69
  }
70
+
66
71
  .alert-danger {
67
72
  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
68
73
  }
@@ -28,6 +28,7 @@
28
28
  position: relative;
29
29
  top: -1px;
30
30
  }
31
+
31
32
  .btn-xs & {
32
33
  top: 0;
33
34
  padding: 1px 5px;
@@ -44,11 +45,20 @@
44
45
  }
45
46
 
46
47
  // Account for badges in navs
47
- a.list-group-item.active > &,
48
+ .list-group-item.active > &,
48
49
  .nav-pills > .active > a > & {
49
50
  color: @badge-active-color;
50
51
  background-color: @badge-active-bg;
51
52
  }
53
+
54
+ .list-group-item > & {
55
+ float: right;
56
+ }
57
+
58
+ .list-group-item > & + & {
59
+ margin-right: 5px;
60
+ }
61
+
52
62
  .nav-pills > li > a > & {
53
63
  margin-left: 3px;
54
64
  }
@@ -18,10 +18,6 @@
18
18
  &.active {
19
19
  z-index: 2;
20
20
  }
21
- &:focus {
22
- // Remove focus outline when dropdown JS adds it after closing the menu
23
- outline: 0;
24
- }
25
21
  }
26
22
  }
27
23
 
@@ -75,13 +71,13 @@
75
71
  .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
76
72
  border-radius: 0;
77
73
  }
78
- .btn-group > .btn-group:first-child {
74
+ .btn-group > .btn-group:first-child:not(:last-child) {
79
75
  > .btn:last-child,
80
76
  > .dropdown-toggle {
81
77
  .border-right-radius(0);
82
78
  }
83
79
  }
84
- .btn-group > .btn-group:last-child > .btn:first-child {
80
+ .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
85
81
  .border-left-radius(0);
86
82
  }
87
83
 
@@ -198,7 +194,6 @@
198
194
  }
199
195
 
200
196
 
201
-
202
197
  // Justified button groups
203
198
  // ----------------------
204
199
 
@@ -226,15 +221,23 @@
226
221
  // Checkbox and radio options
227
222
  //
228
223
  // In order to support the browser's form validation feedback, powered by the
229
- // `required` attribute, we have to "hide" the inputs via `opacity`. We cannot
230
- // use `display: none;` or `visibility: hidden;` as that also hides the popover.
224
+ // `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
225
+ // `display: none;` or `visibility: hidden;` as that also hides the popover.
226
+ // Simply visually hiding the inputs via `opacity` would leave them clickable in
227
+ // certain cases which is prevented by using `clip` and `pointer-events`.
231
228
  // This way, we ensure a DOM element is visible to position the popover from.
232
229
  //
233
- // See https://github.com/twbs/bootstrap/pull/12794 for more.
230
+ // See https://github.com/twbs/bootstrap/pull/12794 and
231
+ // https://github.com/twbs/bootstrap/pull/14559 for more information.
234
232
 
235
- [data-toggle="buttons"] > .btn > input[type="radio"],
236
- [data-toggle="buttons"] > .btn > input[type="checkbox"] {
237
- position: absolute;
238
- z-index: -1;
239
- .opacity(0);
233
+ [data-toggle="buttons"] {
234
+ > .btn,
235
+ > .btn-group > .btn {
236
+ input[type="radio"],
237
+ input[type="checkbox"] {
238
+ position: absolute;
239
+ clip: rect(0,0,0,0);
240
+ pointer-events: none;
241
+ }
242
+ }
240
243
  }