bootstrap 4.0.0.alpha6 → 4.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bootstrap might be problematic. Click here for more details.

Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Gemfile +2 -4
  4. data/README.md +20 -22
  5. data/assets/javascripts/bootstrap.js +657 -361
  6. data/assets/javascripts/bootstrap.min.js +2 -3
  7. data/assets/javascripts/bootstrap/alert.js +8 -8
  8. data/assets/javascripts/bootstrap/button.js +16 -9
  9. data/assets/javascripts/bootstrap/carousel.js +48 -21
  10. data/assets/javascripts/bootstrap/collapse.js +42 -33
  11. data/assets/javascripts/bootstrap/dropdown.js +196 -52
  12. data/assets/javascripts/bootstrap/modal.js +71 -29
  13. data/assets/javascripts/bootstrap/popover.js +25 -13
  14. data/assets/javascripts/bootstrap/scrollspy.js +23 -21
  15. data/assets/javascripts/bootstrap/tab.js +14 -18
  16. data/assets/javascripts/bootstrap/tooltip.js +139 -83
  17. data/assets/javascripts/bootstrap/util.js +10 -8
  18. data/assets/stylesheets/_bootstrap-grid.scss +2 -8
  19. data/assets/stylesheets/_bootstrap-reboot.scss +1 -2
  20. data/assets/stylesheets/_bootstrap.scss +2 -15
  21. data/assets/stylesheets/bootstrap/_alert.scss +4 -11
  22. data/assets/stylesheets/bootstrap/_badge.scss +4 -33
  23. data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_button-group.scss +11 -15
  25. data/assets/stylesheets/bootstrap/_buttons.scss +13 -42
  26. data/assets/stylesheets/bootstrap/_card.scss +27 -80
  27. data/assets/stylesheets/bootstrap/_carousel.scss +24 -17
  28. data/assets/stylesheets/bootstrap/_close.scss +0 -2
  29. data/assets/stylesheets/bootstrap/_custom-forms.scss +27 -36
  30. data/assets/stylesheets/bootstrap/_dropdown.scss +15 -48
  31. data/assets/stylesheets/bootstrap/_forms.scss +70 -68
  32. data/assets/stylesheets/bootstrap/_functions.scss +90 -0
  33. data/assets/stylesheets/bootstrap/_grid.scss +3 -2
  34. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  35. data/assets/stylesheets/bootstrap/_input-group.scss +6 -8
  36. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -4
  37. data/assets/stylesheets/bootstrap/_list-group.scss +9 -36
  38. data/assets/stylesheets/bootstrap/_mixins.scss +2 -18
  39. data/assets/stylesheets/bootstrap/_modal.scss +3 -3
  40. data/assets/stylesheets/bootstrap/_nav.scss +15 -16
  41. data/assets/stylesheets/bootstrap/_navbar.scss +70 -54
  42. data/assets/stylesheets/bootstrap/_pagination.scss +3 -4
  43. data/assets/stylesheets/bootstrap/_popover.scss +96 -72
  44. data/assets/stylesheets/bootstrap/_print.scss +1 -9
  45. data/assets/stylesheets/bootstrap/_progress.scss +4 -4
  46. data/assets/stylesheets/bootstrap/_reboot.scss +187 -95
  47. data/assets/stylesheets/bootstrap/_tables.scss +34 -19
  48. data/assets/stylesheets/bootstrap/_tooltip.scss +52 -35
  49. data/assets/stylesheets/bootstrap/_type.scss +8 -28
  50. data/assets/stylesheets/bootstrap/_utilities.scss +1 -0
  51. data/assets/stylesheets/bootstrap/_variables.scss +286 -410
  52. data/assets/stylesheets/bootstrap/mixins/_alert.scss +4 -5
  53. data/assets/stylesheets/bootstrap/mixins/_badge.scss +6 -5
  54. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +3 -3
  55. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +5 -0
  56. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +23 -13
  57. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -14
  58. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +1 -1
  59. data/assets/stylesheets/bootstrap/mixins/_forms.scss +57 -55
  60. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  61. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +9 -18
  62. data/assets/stylesheets/bootstrap/mixins/_grid.scss +12 -65
  63. data/assets/stylesheets/bootstrap/mixins/_hover.scss +6 -6
  64. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -4
  65. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -3
  66. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -0
  67. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +4 -3
  68. data/assets/stylesheets/bootstrap/mixins/_resize.scss +1 -1
  69. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -2
  70. data/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +1 -1
  71. data/assets/stylesheets/bootstrap/mixins/_transition.scss +9 -0
  72. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +2 -2
  73. data/assets/stylesheets/bootstrap/utilities/_background.scss +4 -17
  74. data/assets/stylesheets/bootstrap/utilities/_borders.scss +20 -5
  75. data/assets/stylesheets/bootstrap/utilities/_display.scss +36 -1
  76. data/assets/stylesheets/bootstrap/{_responsive-embed.scss → utilities/_embed.scss} +0 -0
  77. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -4
  78. data/assets/stylesheets/bootstrap/utilities/_position.scss +5 -3
  79. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +10 -12
  80. data/assets/stylesheets/bootstrap/utilities/_text.scss +5 -17
  81. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -48
  82. data/bootstrap.gemspec +2 -0
  83. data/lib/bootstrap.rb +2 -0
  84. data/lib/bootstrap/version.rb +2 -2
  85. data/tasks/updater/js.rb +7 -9
  86. data/tasks/updater/scss.rb +1 -4
  87. data/templates/project/_bootstrap-variables.scss +289 -396
  88. data/test/dummy_rails/app/assets/javascripts/application.js +1 -1
  89. data/test/dummy_rails/config/application.rb +0 -1
  90. data/test/gemfiles/rails_4_2.gemfile +0 -4
  91. data/test/gemfiles/rails_5_0.gemfile +0 -4
  92. data/test/gemfiles/rails_5_1.gemfile +8 -0
  93. metadata +23 -8
  94. data/assets/stylesheets/bootstrap/_custom.scss +0 -4
  95. data/assets/stylesheets/bootstrap/_normalize.scss +0 -461
  96. data/assets/stylesheets/bootstrap/mixins/_cards.scss +0 -47
  97. data/assets/stylesheets/bootstrap/mixins/_transforms.scss +0 -14
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v4.0.0-alpha.6): util.js
3
+ * Bootstrap (v4.0.0-beta): util.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
@@ -22,10 +22,9 @@ var Util = function ($) {
22
22
  MozTransition: 'transitionend',
23
23
  OTransition: 'oTransitionEnd otransitionend',
24
24
  transition: 'transitionend'
25
- };
26
25
 
27
- // shoutout AngusCroll (https://goo.gl/pxwQGp)
28
- function toType(obj) {
26
+ // shoutout AngusCroll (https://goo.gl/pxwQGp)
27
+ };function toType(obj) {
29
28
  return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
30
29
  }
31
30
 
@@ -111,13 +110,16 @@ var Util = function ($) {
111
110
  },
112
111
  getSelectorFromElement: function getSelectorFromElement(element) {
113
112
  var selector = element.getAttribute('data-target');
114
-
115
- if (!selector) {
113
+ if (!selector || selector === '#') {
116
114
  selector = element.getAttribute('href') || '';
117
- selector = /^#[a-z]/i.test(selector) ? selector : null;
118
115
  }
119
116
 
120
- return selector;
117
+ try {
118
+ var $selector = $(selector);
119
+ return $selector.length > 0 ? selector : null;
120
+ } catch (error) {
121
+ return null;
122
+ }
121
123
  },
122
124
  reflow: function reflow(element) {
123
125
  return element.offsetHeight;
@@ -22,22 +22,16 @@ html {
22
22
  box-sizing: inherit;
23
23
  }
24
24
 
25
-
26
- //
27
- // Variables
28
- //
29
-
25
+ @import "bootstrap/functions";
30
26
  @import "bootstrap/variables";
31
27
 
32
28
  //
33
29
  // Grid mixins
34
30
  //
35
31
 
36
- @import "bootstrap/mixins/clearfix";
37
32
  @import "bootstrap/mixins/breakpoints";
38
33
  @import "bootstrap/mixins/grid-framework";
39
34
  @import "bootstrap/mixins/grid";
40
35
 
41
- @import "bootstrap/custom";
42
-
43
36
  @import "bootstrap/grid";
37
+ @import "bootstrap/utilities/flex";
@@ -2,9 +2,8 @@
2
2
  //
3
3
  // Includes only Normalize and our custom Reboot reset.
4
4
 
5
+ @import "bootstrap/functions";
5
6
  @import "bootstrap/variables";
6
7
  @import "bootstrap/mixins";
7
- @import "bootstrap/custom";
8
8
 
9
- @import "bootstrap/normalize";
10
9
  @import "bootstrap/reboot";
@@ -1,20 +1,14 @@
1
1
  /*!
2
- * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)
2
+ * Bootstrap v4.0.0-beta (https://getbootstrap.com)
3
3
  * Copyright 2011-2017 The Bootstrap Authors
4
4
  * Copyright 2011-2017 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
6
  */
7
7
 
8
- // Core variables and mixins
8
+ @import "bootstrap/functions";
9
9
  @import "bootstrap/variables";
10
10
  @import "bootstrap/mixins";
11
- @import "bootstrap/custom";
12
-
13
- // Reset and dependencies
14
- @import "bootstrap/normalize";
15
11
  @import "bootstrap/print";
16
-
17
- // Core CSS
18
12
  @import "bootstrap/reboot";
19
13
  @import "bootstrap/type";
20
14
  @import "bootstrap/images";
@@ -23,8 +17,6 @@
23
17
  @import "bootstrap/tables";
24
18
  @import "bootstrap/forms";
25
19
  @import "bootstrap/buttons";
26
-
27
- // Components
28
20
  @import "bootstrap/transitions";
29
21
  @import "bootstrap/dropdown";
30
22
  @import "bootstrap/button-group";
@@ -41,14 +33,9 @@
41
33
  @import "bootstrap/progress";
42
34
  @import "bootstrap/media";
43
35
  @import "bootstrap/list-group";
44
- @import "bootstrap/responsive-embed";
45
36
  @import "bootstrap/close";
46
-
47
- // Components w/ JavaScript
48
37
  @import "bootstrap/modal";
49
38
  @import "bootstrap/tooltip";
50
39
  @import "bootstrap/popover";
51
40
  @import "bootstrap/carousel";
52
-
53
- // Utility classes
54
41
  @import "bootstrap/utilities";
@@ -41,15 +41,8 @@
41
41
  //
42
42
  // Generate contextual modifier classes for colorizing the alert.
43
43
 
44
- .alert-success {
45
- @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
46
- }
47
- .alert-info {
48
- @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
49
- }
50
- .alert-warning {
51
- @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
52
- }
53
- .alert-danger {
54
- @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
44
+ @each $color, $value in $theme-colors {
45
+ .alert-#{$color} {
46
+ @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));
47
+ }
55
48
  }
@@ -27,17 +27,6 @@
27
27
  top: -1px;
28
28
  }
29
29
 
30
- // scss-lint:disable QualifyingElement
31
- // Add hover effects, but only for links
32
- a.badge {
33
- @include hover-focus {
34
- color: $badge-link-hover-color;
35
- text-decoration: none;
36
- cursor: pointer;
37
- }
38
- }
39
- // scss-lint:enable QualifyingElement
40
-
41
30
  // Pill badges
42
31
  //
43
32
  // Make them extra rounded with a modifier to replace v3's badges.
@@ -52,26 +41,8 @@ a.badge {
52
41
  //
53
42
  // Contextual variations (linked badges get darker on :hover).
54
43
 
55
- .badge-default {
56
- @include badge-variant($badge-default-bg);
57
- }
58
-
59
- .badge-primary {
60
- @include badge-variant($badge-primary-bg);
61
- }
62
-
63
- .badge-success {
64
- @include badge-variant($badge-success-bg);
65
- }
66
-
67
- .badge-info {
68
- @include badge-variant($badge-info-bg);
69
- }
70
-
71
- .badge-warning {
72
- @include badge-variant($badge-warning-bg);
73
- }
74
-
75
- .badge-danger {
76
- @include badge-variant($badge-danger-bg);
44
+ @each $color, $value in $theme-colors {
45
+ .badge-#{$color} {
46
+ @include badge-variant($value);
47
+ }
77
48
  }
@@ -1,6 +1,6 @@
1
1
  .breadcrumb {
2
2
  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
3
- margin-bottom: $spacer-y;
3
+ margin-bottom: 1rem;
4
4
  list-style: none;
5
5
  background-color: $breadcrumb-bg;
6
6
  @include border-radius($border-radius);
@@ -10,8 +10,9 @@
10
10
  > .btn {
11
11
  position: relative;
12
12
  flex: 0 1 auto;
13
+ margin-bottom: 0;
13
14
 
14
- // Bring the hover, focused, and "active" buttons to the fron to overlay
15
+ // Bring the hover, focused, and "active" buttons to the front to overlay
15
16
  // the borders properly
16
17
  @include hover {
17
18
  z-index: 2;
@@ -35,6 +36,7 @@
35
36
  // Optional: Group multiple button groups together for a toolbar
36
37
  .btn-toolbar {
37
38
  display: flex;
39
+ flex-wrap: wrap;
38
40
  justify-content: flex-start;
39
41
 
40
42
  .input-group {
@@ -77,12 +79,6 @@
77
79
  @include border-left-radius(0);
78
80
  }
79
81
 
80
- // On active and open, don't show outline
81
- .btn-group .dropdown-toggle:active,
82
- .btn-group.open .dropdown-toggle {
83
- outline: 0;
84
- }
85
-
86
82
 
87
83
  // Sizing
88
84
  //
@@ -97,8 +93,8 @@
97
93
  //
98
94
 
99
95
  .btn + .dropdown-toggle-split {
100
- padding-right: $btn-padding-x * .75;
101
- padding-left: $btn-padding-x * .75;
96
+ padding-right: $input-btn-padding-x * .75;
97
+ padding-left: $input-btn-padding-x * .75;
102
98
 
103
99
  &::after {
104
100
  margin-left: 0;
@@ -106,19 +102,19 @@
106
102
  }
107
103
 
108
104
  .btn-sm + .dropdown-toggle-split {
109
- padding-right: $btn-padding-x-sm * .75;
110
- padding-left: $btn-padding-x-sm * .75;
105
+ padding-right: $input-btn-padding-x-sm * .75;
106
+ padding-left: $input-btn-padding-x-sm * .75;
111
107
  }
112
108
 
113
109
  .btn-lg + .dropdown-toggle-split {
114
- padding-right: $btn-padding-x-lg * .75;
115
- padding-left: $btn-padding-x-lg * .75;
110
+ padding-right: $input-btn-padding-x-lg * .75;
111
+ padding-left: $input-btn-padding-x-lg * .75;
116
112
  }
117
113
 
118
114
 
119
115
  // The clickable button for toggling the menu
120
- // Remove the gradient and set the same inset shadow as the :active state
121
- .btn-group.open .dropdown-toggle {
116
+ // Set the same inset shadow as the :active state
117
+ .btn-group.show .dropdown-toggle {
122
118
  @include box-shadow($btn-active-box-shadow);
123
119
 
124
120
  // Show no shadow for `.btn-link` since it has no other button styles.
@@ -7,13 +7,12 @@
7
7
  .btn {
8
8
  display: inline-block;
9
9
  font-weight: $btn-font-weight;
10
- line-height: $btn-line-height;
11
10
  text-align: center;
12
11
  white-space: nowrap;
13
12
  vertical-align: middle;
14
13
  user-select: none;
15
14
  border: $input-btn-border-width solid transparent;
16
- @include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-border-radius);
15
+ @include button-size($input-btn-padding-y, $input-btn-padding-x, $font-size-base, $input-btn-line-height, $btn-border-radius);
17
16
  @include transition($btn-transition);
18
17
 
19
18
  // Share hover and focus styles
@@ -29,7 +28,6 @@
29
28
  // Disabled comes first so active can properly restyle
30
29
  &.disabled,
31
30
  &:disabled {
32
- cursor: $cursor-disabled;
33
31
  opacity: .65;
34
32
  @include box-shadow(none);
35
33
  }
@@ -52,43 +50,16 @@ fieldset[disabled] a.btn {
52
50
  // Alternate buttons
53
51
  //
54
52
 
55
- .btn-primary {
56
- @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
57
- }
58
- .btn-secondary {
59
- @include button-variant($btn-secondary-color, $btn-secondary-bg, $btn-secondary-border);
60
- }
61
- .btn-info {
62
- @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
63
- }
64
- .btn-success {
65
- @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
66
- }
67
- .btn-warning {
68
- @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
69
- }
70
- .btn-danger {
71
- @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
53
+ @each $color, $value in $theme-colors {
54
+ .btn-#{$color} {
55
+ @include button-variant($value, $value);
56
+ }
72
57
  }
73
58
 
74
- // Remove all backgrounds
75
- .btn-outline-primary {
76
- @include button-outline-variant($btn-primary-bg);
77
- }
78
- .btn-outline-secondary {
79
- @include button-outline-variant($btn-secondary-border);
80
- }
81
- .btn-outline-info {
82
- @include button-outline-variant($btn-info-bg);
83
- }
84
- .btn-outline-success {
85
- @include button-outline-variant($btn-success-bg);
86
- }
87
- .btn-outline-warning {
88
- @include button-outline-variant($btn-warning-bg);
89
- }
90
- .btn-outline-danger {
91
- @include button-outline-variant($btn-danger-bg);
59
+ @each $color, $value in $theme-colors {
60
+ .btn-outline-#{$color} {
61
+ @include button-outline-variant($value, #fff);
62
+ }
92
63
  }
93
64
 
94
65
 
@@ -113,6 +84,7 @@ fieldset[disabled] a.btn {
113
84
  &:focus,
114
85
  &:active {
115
86
  border-color: transparent;
87
+ box-shadow: none;
116
88
  }
117
89
  @include hover {
118
90
  border-color: transparent;
@@ -137,12 +109,11 @@ fieldset[disabled] a.btn {
137
109
  //
138
110
 
139
111
  .btn-lg {
140
- // line-height: ensure even-numbered height of button next to large input
141
- @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-border-radius-lg);
112
+ @include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);
142
113
  }
114
+
143
115
  .btn-sm {
144
- // line-height: ensure proper height of button next to small input
145
- @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-border-radius-sm);
116
+ @include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);
146
117
  }
147
118
 
148
119
 
@@ -6,12 +6,15 @@
6
6
  position: relative;
7
7
  display: flex;
8
8
  flex-direction: column;
9
+ min-width: 0;
10
+ word-wrap: break-word;
9
11
  background-color: $card-bg;
12
+ background-clip: border-box;
10
13
  border: $card-border-width solid $card-border-color;
11
14
  @include border-radius($card-border-radius);
12
15
  }
13
16
 
14
- .card-block {
17
+ .card-body {
15
18
  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
16
19
  // as much space as possible, ensuring footers are aligned to the bottom.
17
20
  flex: 1 1 auto;
@@ -67,7 +70,7 @@
67
70
  border-bottom: $card-border-width solid $card-border-color;
68
71
 
69
72
  &:first-child {
70
- @include border-radius($card-border-radius-inner $card-border-radius-inner 0 0);
73
+ @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
71
74
  }
72
75
  }
73
76
 
@@ -77,7 +80,7 @@
77
80
  border-top: $card-border-width solid $card-border-color;
78
81
 
79
82
  &:last-child {
80
- @include border-radius(0 0 $card-border-radius-inner $card-border-radius-inner);
83
+ @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
81
84
  }
82
85
  }
83
86
 
@@ -98,70 +101,7 @@
98
101
  margin-left: -($card-spacer-x / 2);
99
102
  }
100
103
 
101
-
102
- //
103
- // Background variations
104
- //
105
-
106
- .card-primary {
107
- @include card-variant($brand-primary, $brand-primary);
108
- }
109
- .card-success {
110
- @include card-variant($brand-success, $brand-success);
111
- }
112
- .card-info {
113
- @include card-variant($brand-info, $brand-info);
114
- }
115
- .card-warning {
116
- @include card-variant($brand-warning, $brand-warning);
117
- }
118
- .card-danger {
119
- @include card-variant($brand-danger, $brand-danger);
120
- }
121
-
122
- // Remove all backgrounds
123
- .card-outline-primary {
124
- @include card-outline-variant($btn-primary-bg);
125
- }
126
- .card-outline-secondary {
127
- @include card-outline-variant($btn-secondary-border);
128
- }
129
- .card-outline-info {
130
- @include card-outline-variant($btn-info-bg);
131
- }
132
- .card-outline-success {
133
- @include card-outline-variant($btn-success-bg);
134
- }
135
- .card-outline-warning {
136
- @include card-outline-variant($btn-warning-bg);
137
- }
138
- .card-outline-danger {
139
- @include card-outline-variant($btn-danger-bg);
140
- }
141
-
142
- //
143
- // Inverse text within a card for use with dark backgrounds
144
- //
145
-
146
- .card-inverse {
147
- @include card-inverse;
148
- }
149
-
150
- //
151
- // Blockquote
152
- //
153
-
154
- .card-blockquote {
155
- padding: 0;
156
- margin-bottom: 0;
157
- border-left: 0;
158
- }
159
-
160
104
  // Card image
161
- .card-img {
162
- // margin: -1.325rem;
163
- @include border-radius($card-border-radius-inner);
164
- }
165
105
  .card-img-overlay {
166
106
  position: absolute;
167
107
  top: 0;
@@ -171,14 +111,20 @@
171
111
  padding: $card-img-overlay-padding;
172
112
  }
173
113
 
174
-
114
+ .card-img {
115
+ width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
116
+ @include border-radius($card-inner-border-radius);
117
+ }
175
118
 
176
119
  // Card image caps
177
120
  .card-img-top {
178
- @include border-top-radius($card-border-radius-inner);
121
+ width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
122
+ @include border-top-radius($card-inner-border-radius);
179
123
  }
124
+
180
125
  .card-img-bottom {
181
- @include border-bottom-radius($card-border-radius-inner);
126
+ width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
127
+ @include border-bottom-radius($card-inner-border-radius);
182
128
  }
183
129
 
184
130
 
@@ -188,17 +134,15 @@
188
134
  .card-deck {
189
135
  display: flex;
190
136
  flex-flow: row wrap;
137
+ margin-right: -$card-deck-margin;
138
+ margin-left: -$card-deck-margin;
191
139
 
192
140
  .card {
193
141
  display: flex;
194
- flex: 1 0 0;
142
+ flex: 1 0 0%;
195
143
  flex-direction: column;
196
-
197
- // Selectively apply horizontal margins to cards to avoid doing the
198
- // negative margin dance like our grid. This differs from the grid
199
- // due to the use of margins as gutters instead of padding.
200
- &:not(:first-child) { margin-left: $card-deck-margin; }
201
- &:not(:last-child) { margin-right: $card-deck-margin; }
144
+ margin-right: $card-deck-margin;
145
+ margin-left: $card-deck-margin;
202
146
  }
203
147
  }
204
148
  }
@@ -214,7 +158,7 @@
214
158
  flex-flow: row wrap;
215
159
 
216
160
  .card {
217
- flex: 1 0 0;
161
+ flex: 1 0 0%;
218
162
 
219
163
  + .card {
220
164
  margin-left: 0;
@@ -262,15 +206,18 @@
262
206
  // Columns
263
207
  //
264
208
 
265
- @include media-breakpoint-up(sm) {
266
- .card-columns {
209
+ .card-columns {
210
+ .card {
211
+ margin-bottom: $card-columns-margin;
212
+ }
213
+
214
+ @include media-breakpoint-up(sm) {
267
215
  column-count: $card-columns-count;
268
216
  column-gap: $card-columns-gap;
269
217
 
270
218
  .card {
271
219
  display: inline-block; // Don't let them vertically span multiple columns
272
220
  width: 100%; // Don't let their width change
273
- margin-bottom: $card-columns-margin;
274
221
  }
275
222
  }
276
223
  }