bootstrap 4.3.1 → 4.6.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.
Potentially problematic release.
This version of bootstrap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +15 -1
- data/CHANGELOG.md +2 -14
- data/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +7 -7
- data/assets/javascripts/bootstrap.js +1073 -1076
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/javascripts/bootstrap/alert.js +42 -49
- data/assets/javascripts/bootstrap/button.js +111 -64
- data/assets/javascripts/bootstrap/carousel.js +162 -177
- data/assets/javascripts/bootstrap/collapse.js +97 -122
- data/assets/javascripts/bootstrap/dropdown.js +163 -189
- data/assets/javascripts/bootstrap/modal.js +213 -194
- data/assets/javascripts/bootstrap/popover.js +51 -72
- data/assets/javascripts/bootstrap/scrollspy.js +80 -109
- data/assets/javascripts/bootstrap/tab.js +72 -79
- data/assets/javascripts/bootstrap/toast.js +96 -107
- data/assets/javascripts/bootstrap/tooltip.js +186 -201
- data/assets/javascripts/bootstrap/util.js +41 -20
- data/assets/stylesheets/_bootstrap-grid.scss +5 -4
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
- data/assets/stylesheets/_bootstrap.scss +4 -4
- data/assets/stylesheets/bootstrap/_alert.scss +1 -0
- data/assets/stylesheets/bootstrap/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
- data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
- data/assets/stylesheets/bootstrap/_card.scss +42 -45
- data/assets/stylesheets/bootstrap/_carousel.scss +7 -7
- data/assets/stylesheets/bootstrap/_close.scss +2 -3
- data/assets/stylesheets/bootstrap/_code.scss +1 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +38 -19
- data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
- data/assets/stylesheets/bootstrap/_forms.scss +26 -9
- data/assets/stylesheets/bootstrap/_functions.scss +63 -5
- data/assets/stylesheets/bootstrap/_grid.scss +32 -11
- data/assets/stylesheets/bootstrap/_images.scss +2 -2
- data/assets/stylesheets/bootstrap/_input-group.scss +21 -6
- data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
- data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
- data/assets/stylesheets/bootstrap/_modal.scss +26 -15
- data/assets/stylesheets/bootstrap/_nav.scss +7 -7
- data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
- data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
- data/assets/stylesheets/bootstrap/_popover.scss +8 -9
- data/assets/stylesheets/bootstrap/_print.scss +2 -2
- data/assets/stylesheets/bootstrap/_progress.scss +7 -3
- data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
- data/assets/stylesheets/bootstrap/_spinners.scss +14 -4
- data/assets/stylesheets/bootstrap/_tables.scss +3 -3
- data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
- data/assets/stylesheets/bootstrap/_type.scss +3 -3
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
- data/assets/stylesheets/bootstrap/_variables.scss +58 -35
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -49
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +4 -3
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/network.rb +2 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -13
- metadata +11 -5
| @@ -1,20 +1,22 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
              * Bootstrap util.js v4. | 
| 3 | 
            -
              * Copyright 2011- | 
| 4 | 
            -
              * Licensed under MIT (https://github.com/twbs/bootstrap/blob/ | 
| 2 | 
            +
              * Bootstrap util.js v4.6.0 (https://getbootstrap.com/)
         | 
| 3 | 
            +
              * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
         | 
| 4 | 
            +
              * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
         | 
| 5 5 | 
             
              */
         | 
| 6 6 | 
             
            (function (global, factory) {
         | 
| 7 7 | 
             
              typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
         | 
| 8 8 | 
             
              typeof define === 'function' && define.amd ? define(['jquery'], factory) :
         | 
| 9 | 
            -
              (global = global || self, global.Util = factory(global.jQuery));
         | 
| 10 | 
            -
            }(this, function ($) { 'use strict';
         | 
| 9 | 
            +
              (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));
         | 
| 10 | 
            +
            }(this, (function ($) { 'use strict';
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              var $__default = /*#__PURE__*/_interopDefaultLegacy($);
         | 
| 13 15 |  | 
| 14 16 | 
             
              /**
         | 
| 15 17 | 
             
               * --------------------------------------------------------------------------
         | 
| 16 | 
            -
               * Bootstrap (v4. | 
| 17 | 
            -
               * Licensed under MIT (https://github.com/twbs/bootstrap/blob/ | 
| 18 | 
            +
               * Bootstrap (v4.6.0): util.js
         | 
| 19 | 
            +
               * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
         | 
| 18 20 | 
             
               * --------------------------------------------------------------------------
         | 
| 19 21 | 
             
               */
         | 
| 20 22 | 
             
              /**
         | 
| @@ -28,6 +30,10 @@ | |
| 28 30 | 
             
              var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
         | 
| 29 31 |  | 
| 30 32 | 
             
              function toType(obj) {
         | 
| 33 | 
            +
                if (obj === null || typeof obj === 'undefined') {
         | 
| 34 | 
            +
                  return "" + obj;
         | 
| 35 | 
            +
                }
         | 
| 36 | 
            +
             | 
| 31 37 | 
             
                return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
         | 
| 32 38 | 
             
              }
         | 
| 33 39 |  | 
| @@ -36,11 +42,11 @@ | |
| 36 42 | 
             
                  bindType: TRANSITION_END,
         | 
| 37 43 | 
             
                  delegateType: TRANSITION_END,
         | 
| 38 44 | 
             
                  handle: function handle(event) {
         | 
| 39 | 
            -
                    if ($(event.target).is(this)) {
         | 
| 45 | 
            +
                    if ($__default['default'](event.target).is(this)) {
         | 
| 40 46 | 
             
                      return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
         | 
| 41 47 | 
             
                    }
         | 
| 42 48 |  | 
| 43 | 
            -
                    return undefined; | 
| 49 | 
            +
                    return undefined;
         | 
| 44 50 | 
             
                  }
         | 
| 45 51 | 
             
                };
         | 
| 46 52 | 
             
              }
         | 
| @@ -49,7 +55,7 @@ | |
| 49 55 | 
             
                var _this = this;
         | 
| 50 56 |  | 
| 51 57 | 
             
                var called = false;
         | 
| 52 | 
            -
                $(this).one(Util.TRANSITION_END, function () {
         | 
| 58 | 
            +
                $__default['default'](this).one(Util.TRANSITION_END, function () {
         | 
| 53 59 | 
             
                  called = true;
         | 
| 54 60 | 
             
                });
         | 
| 55 61 | 
             
                setTimeout(function () {
         | 
| @@ -61,8 +67,8 @@ | |
| 61 67 | 
             
              }
         | 
| 62 68 |  | 
| 63 69 | 
             
              function setTransitionEndSupport() {
         | 
| 64 | 
            -
                 | 
| 65 | 
            -
                 | 
| 70 | 
            +
                $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;
         | 
| 71 | 
            +
                $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
         | 
| 66 72 | 
             
              }
         | 
| 67 73 | 
             
              /**
         | 
| 68 74 | 
             
               * --------------------------------------------------------------------------
         | 
| @@ -75,7 +81,6 @@ | |
| 75 81 | 
             
                TRANSITION_END: 'bsTransitionEnd',
         | 
| 76 82 | 
             
                getUID: function getUID(prefix) {
         | 
| 77 83 | 
             
                  do {
         | 
| 78 | 
            -
                    // eslint-disable-next-line no-bitwise
         | 
| 79 84 | 
             
                    prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
         | 
| 80 85 | 
             
                  } while (document.getElementById(prefix));
         | 
| 81 86 |  | 
| @@ -91,7 +96,7 @@ | |
| 91 96 |  | 
| 92 97 | 
             
                  try {
         | 
| 93 98 | 
             
                    return document.querySelector(selector) ? selector : null;
         | 
| 94 | 
            -
                  } catch ( | 
| 99 | 
            +
                  } catch (_) {
         | 
| 95 100 | 
             
                    return null;
         | 
| 96 101 | 
             
                  }
         | 
| 97 102 | 
             
                },
         | 
| @@ -101,8 +106,8 @@ | |
| 101 106 | 
             
                  } // Get transition-duration of the element
         | 
| 102 107 |  | 
| 103 108 |  | 
| 104 | 
            -
                  var transitionDuration = $(element).css('transition-duration');
         | 
| 105 | 
            -
                  var transitionDelay = $(element).css('transition-delay');
         | 
| 109 | 
            +
                  var transitionDuration = $__default['default'](element).css('transition-duration');
         | 
| 110 | 
            +
                  var transitionDelay = $__default['default'](element).css('transition-delay');
         | 
| 106 111 | 
             
                  var floatTransitionDuration = parseFloat(transitionDuration);
         | 
| 107 112 | 
             
                  var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
         | 
| 108 113 |  | 
| @@ -119,9 +124,8 @@ | |
| 119 124 | 
             
                  return element.offsetHeight;
         | 
| 120 125 | 
             
                },
         | 
| 121 126 | 
             
                triggerTransitionEnd: function triggerTransitionEnd(element) {
         | 
| 122 | 
            -
                  $(element).trigger(TRANSITION_END);
         | 
| 127 | 
            +
                  $__default['default'](element).trigger(TRANSITION_END);
         | 
| 123 128 | 
             
                },
         | 
| 124 | 
            -
                // TODO: Remove in v5
         | 
| 125 129 | 
             
                supportsTransitionEnd: function supportsTransitionEnd() {
         | 
| 126 130 | 
             
                  return Boolean(TRANSITION_END);
         | 
| 127 131 | 
             
                },
         | 
| @@ -162,10 +166,27 @@ | |
| 162 166 | 
             
                  }
         | 
| 163 167 |  | 
| 164 168 | 
             
                  return Util.findShadowRoot(element.parentNode);
         | 
| 169 | 
            +
                },
         | 
| 170 | 
            +
                jQueryDetection: function jQueryDetection() {
         | 
| 171 | 
            +
                  if (typeof $__default['default'] === 'undefined') {
         | 
| 172 | 
            +
                    throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
         | 
| 173 | 
            +
                  }
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                  var version = $__default['default'].fn.jquery.split(' ')[0].split('.');
         | 
| 176 | 
            +
                  var minMajor = 1;
         | 
| 177 | 
            +
                  var ltMajor = 2;
         | 
| 178 | 
            +
                  var minMinor = 9;
         | 
| 179 | 
            +
                  var minPatch = 1;
         | 
| 180 | 
            +
                  var maxMajor = 4;
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
         | 
| 183 | 
            +
                    throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
         | 
| 184 | 
            +
                  }
         | 
| 165 185 | 
             
                }
         | 
| 166 186 | 
             
              };
         | 
| 187 | 
            +
              Util.jQueryDetection();
         | 
| 167 188 | 
             
              setTransitionEndSupport();
         | 
| 168 189 |  | 
| 169 190 | 
             
              return Util;
         | 
| 170 191 |  | 
| 171 | 
            -
            }));
         | 
| 192 | 
            +
            })));
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
             * Bootstrap Grid v4. | 
| 3 | 
            -
             * Copyright 2011- | 
| 4 | 
            -
             * Copyright 2011- | 
| 5 | 
            -
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/ | 
| 2 | 
            +
             * Bootstrap Grid v4.6.0 (https://getbootstrap.com/)
         | 
| 3 | 
            +
             * Copyright 2011-2021 The Bootstrap Authors
         | 
| 4 | 
            +
             * Copyright 2011-2021 Twitter, Inc.
         | 
| 5 | 
            +
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
         | 
| 6 6 | 
             
             */
         | 
| 7 7 |  | 
| 8 8 | 
             
            html {
         | 
| @@ -19,6 +19,7 @@ html { | |
| 19 19 | 
             
            @import "bootstrap/functions";
         | 
| 20 20 | 
             
            @import "bootstrap/variables";
         | 
| 21 21 |  | 
| 22 | 
            +
            @import "bootstrap/mixins/deprecate";
         | 
| 22 23 | 
             
            @import "bootstrap/mixins/breakpoints";
         | 
| 23 24 | 
             
            @import "bootstrap/mixins/grid-framework";
         | 
| 24 25 | 
             
            @import "bootstrap/mixins/grid";
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
             * Bootstrap Reboot v4. | 
| 3 | 
            -
             * Copyright 2011- | 
| 4 | 
            -
             * Copyright 2011- | 
| 5 | 
            -
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/ | 
| 2 | 
            +
             * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
         | 
| 3 | 
            +
             * Copyright 2011-2021 The Bootstrap Authors
         | 
| 4 | 
            +
             * Copyright 2011-2021 Twitter, Inc.
         | 
| 5 | 
            +
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
         | 
| 6 6 | 
             
             * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
         | 
| 7 7 | 
             
             */
         | 
| 8 8 |  | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
             * Bootstrap v4. | 
| 3 | 
            -
             * Copyright 2011- | 
| 4 | 
            -
             * Copyright 2011- | 
| 5 | 
            -
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/ | 
| 2 | 
            +
             * Bootstrap v4.6.0 (https://getbootstrap.com/)
         | 
| 3 | 
            +
             * Copyright 2011-2021 The Bootstrap Authors
         | 
| 4 | 
            +
             * Copyright 2011-2021 Twitter, Inc.
         | 
| 5 | 
            +
             * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
         | 
| 6 6 | 
             
             */
         | 
| 7 7 |  | 
| 8 8 | 
             
            @import "bootstrap/functions";
         | 
| @@ -3,6 +3,7 @@ | |
| 3 3 | 
             
              flex-wrap: wrap;
         | 
| 4 4 | 
             
              padding: $breadcrumb-padding-y $breadcrumb-padding-x;
         | 
| 5 5 | 
             
              margin-bottom: $breadcrumb-margin-bottom;
         | 
| 6 | 
            +
              @include font-size($breadcrumb-font-size);
         | 
| 6 7 | 
             
              list-style: none;
         | 
| 7 8 | 
             
              background-color: $breadcrumb-bg;
         | 
| 8 9 | 
             
              @include border-radius($breadcrumb-border-radius);
         | 
| @@ -14,10 +15,10 @@ | |
| 14 15 | 
             
                padding-left: $breadcrumb-item-padding;
         | 
| 15 16 |  | 
| 16 17 | 
             
                &::before {
         | 
| 17 | 
            -
                   | 
| 18 | 
            +
                  float: left; // Suppress inline spacings and underlining of the separator
         | 
| 18 19 | 
             
                  padding-right: $breadcrumb-item-padding;
         | 
| 19 20 | 
             
                  color: $breadcrumb-divider-color;
         | 
| 20 | 
            -
                  content: $breadcrumb-divider;
         | 
| 21 | 
            +
                  content: escape-svg($breadcrumb-divider);
         | 
| 21 22 | 
             
                }
         | 
| 22 23 | 
             
              }
         | 
| 23 24 |  | 
| @@ -10,6 +10,8 @@ | |
| 10 10 | 
             
              font-weight: $btn-font-weight;
         | 
| 11 11 | 
             
              color: $body-color;
         | 
| 12 12 | 
             
              text-align: center;
         | 
| 13 | 
            +
              text-decoration: if($link-decoration == none, null, none);
         | 
| 14 | 
            +
              white-space: $btn-white-space;
         | 
| 13 15 | 
             
              vertical-align: middle;
         | 
| 14 16 | 
             
              user-select: none;
         | 
| 15 17 | 
             
              background-color: transparent;
         | 
| @@ -17,7 +19,7 @@ | |
| 17 19 | 
             
              @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
         | 
| 18 20 | 
             
              @include transition($btn-transition);
         | 
| 19 21 |  | 
| 20 | 
            -
              @include hover {
         | 
| 22 | 
            +
              @include hover() {
         | 
| 21 23 | 
             
                color: $body-color;
         | 
| 22 24 | 
             
                text-decoration: none;
         | 
| 23 25 | 
             
              }
         | 
| @@ -35,12 +37,16 @@ | |
| 35 37 | 
             
                @include box-shadow(none);
         | 
| 36 38 | 
             
              }
         | 
| 37 39 |  | 
| 38 | 
            -
              &:not(:disabled):not(.disabled) | 
| 39 | 
            -
             | 
| 40 | 
            -
                @include box-shadow($btn-active-box-shadow);
         | 
| 40 | 
            +
              &:not(:disabled):not(.disabled) {
         | 
| 41 | 
            +
                cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
         | 
| 41 42 |  | 
| 42 | 
            -
                &: | 
| 43 | 
            -
             | 
| 43 | 
            +
                &:active,
         | 
| 44 | 
            +
                &.active {
         | 
| 45 | 
            +
                  @include box-shadow($btn-active-box-shadow);
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  &:focus {
         | 
| 48 | 
            +
                    @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
         | 
| 49 | 
            +
                  }
         | 
| 44 50 | 
             
                }
         | 
| 45 51 | 
             
              }
         | 
| 46 52 | 
             
            }
         | 
| @@ -79,7 +85,7 @@ fieldset:disabled a.btn { | |
| 79 85 | 
             
              color: $link-color;
         | 
| 80 86 | 
             
              text-decoration: $link-decoration;
         | 
| 81 87 |  | 
| 82 | 
            -
              @include hover {
         | 
| 88 | 
            +
              @include hover() {
         | 
| 83 89 | 
             
                color: $link-hover-color;
         | 
| 84 90 | 
             
                text-decoration: $link-hover-decoration;
         | 
| 85 91 | 
             
              }
         | 
| @@ -87,7 +93,6 @@ fieldset:disabled a.btn { | |
| 87 93 | 
             
              &:focus,
         | 
| 88 94 | 
             
              &.focus {
         | 
| 89 95 | 
             
                text-decoration: $link-hover-decoration;
         | 
| 90 | 
            -
                box-shadow: none;
         | 
| 91 96 | 
             
              }
         | 
| 92 97 |  | 
| 93 98 | 
             
              &:disabled,
         | 
| @@ -7,6 +7,7 @@ | |
| 7 7 | 
             
              display: flex;
         | 
| 8 8 | 
             
              flex-direction: column;
         | 
| 9 9 | 
             
              min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
         | 
| 10 | 
            +
              height: $card-height;
         | 
| 10 11 | 
             
              word-wrap: break-word;
         | 
| 11 12 | 
             
              background-color: $card-bg;
         | 
| 12 13 | 
             
              background-clip: border-box;
         | 
| @@ -18,23 +19,36 @@ | |
| 18 19 | 
             
                margin-left: 0;
         | 
| 19 20 | 
             
              }
         | 
| 20 21 |  | 
| 21 | 
            -
              > .list-group | 
| 22 | 
            -
                 | 
| 23 | 
            -
             | 
| 22 | 
            +
              > .list-group {
         | 
| 23 | 
            +
                border-top: inherit;
         | 
| 24 | 
            +
                border-bottom: inherit;
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                &:first-child {
         | 
| 27 | 
            +
                  border-top-width: 0;
         | 
| 28 | 
            +
                  @include border-top-radius($card-inner-border-radius);
         | 
| 24 29 | 
             
                }
         | 
| 25 | 
            -
              }
         | 
| 26 30 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
                  @include border-bottom-radius($card-border-radius);
         | 
| 31 | 
            +
                &:last-child  {
         | 
| 32 | 
            +
                  border-bottom-width: 0;
         | 
| 33 | 
            +
                  @include border-bottom-radius($card-inner-border-radius);
         | 
| 30 34 | 
             
                }
         | 
| 31 35 | 
             
              }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              // Due to specificity of the above selector (`.card > .list-group`), we must
         | 
| 38 | 
            +
              // use a child selector here to prevent double borders.
         | 
| 39 | 
            +
              > .card-header + .list-group,
         | 
| 40 | 
            +
              > .list-group + .card-footer {
         | 
| 41 | 
            +
                border-top: 0;
         | 
| 42 | 
            +
              }
         | 
| 32 43 | 
             
            }
         | 
| 33 44 |  | 
| 34 45 | 
             
            .card-body {
         | 
| 35 46 | 
             
              // Enable `flex-grow: 1` for decks and groups so that card blocks take up
         | 
| 36 47 | 
             
              // as much space as possible, ensuring footers are aligned to the bottom.
         | 
| 37 48 | 
             
              flex: 1 1 auto;
         | 
| 49 | 
            +
              // Workaround for the image size bug in IE
         | 
| 50 | 
            +
              // See: https://github.com/twbs/bootstrap/pull/28855
         | 
| 51 | 
            +
              min-height: 1px;
         | 
| 38 52 | 
             
              padding: $card-spacer-x;
         | 
| 39 53 | 
             
              color: $card-color;
         | 
| 40 54 | 
             
            }
         | 
| @@ -53,7 +67,7 @@ | |
| 53 67 | 
             
            }
         | 
| 54 68 |  | 
| 55 69 | 
             
            .card-link {
         | 
| 56 | 
            -
              @include hover {
         | 
| 70 | 
            +
              @include hover() {
         | 
| 57 71 | 
             
                text-decoration: none;
         | 
| 58 72 | 
             
              }
         | 
| 59 73 |  | 
| @@ -76,16 +90,11 @@ | |
| 76 90 | 
             
              &:first-child {
         | 
| 77 91 | 
             
                @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
         | 
| 78 92 | 
             
              }
         | 
| 79 | 
            -
             | 
| 80 | 
            -
              + .list-group {
         | 
| 81 | 
            -
                .list-group-item:first-child {
         | 
| 82 | 
            -
                  border-top: 0;
         | 
| 83 | 
            -
                }
         | 
| 84 | 
            -
              }
         | 
| 85 93 | 
             
            }
         | 
| 86 94 |  | 
| 87 95 | 
             
            .card-footer {
         | 
| 88 96 | 
             
              padding: $card-spacer-y $card-spacer-x;
         | 
| 97 | 
            +
              color: $card-cap-color;
         | 
| 89 98 | 
             
              background-color: $card-cap-bg;
         | 
| 90 99 | 
             
              border-top: $card-border-width solid $card-border-color;
         | 
| 91 100 |  | 
| @@ -119,21 +128,23 @@ | |
| 119 128 | 
             
              bottom: 0;
         | 
| 120 129 | 
             
              left: 0;
         | 
| 121 130 | 
             
              padding: $card-img-overlay-padding;
         | 
| 131 | 
            +
              @include border-radius($card-inner-border-radius);
         | 
| 122 132 | 
             
            }
         | 
| 123 133 |  | 
| 124 | 
            -
            .card-img | 
| 134 | 
            +
            .card-img,
         | 
| 135 | 
            +
            .card-img-top,
         | 
| 136 | 
            +
            .card-img-bottom {
         | 
| 137 | 
            +
              flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
         | 
| 125 138 | 
             
              width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
         | 
| 126 | 
            -
              @include border-radius($card-inner-border-radius);
         | 
| 127 139 | 
             
            }
         | 
| 128 140 |  | 
| 129 | 
            -
             | 
| 141 | 
            +
            .card-img,
         | 
| 130 142 | 
             
            .card-img-top {
         | 
| 131 | 
            -
              width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
         | 
| 132 143 | 
             
              @include border-top-radius($card-inner-border-radius);
         | 
| 133 144 | 
             
            }
         | 
| 134 145 |  | 
| 146 | 
            +
            .card-img,
         | 
| 135 147 | 
             
            .card-img-bottom {
         | 
| 136 | 
            -
              width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
         | 
| 137 148 | 
             
              @include border-bottom-radius($card-inner-border-radius);
         | 
| 138 149 | 
             
            }
         | 
| 139 150 |  | 
| @@ -141,23 +152,19 @@ | |
| 141 152 | 
             
            // Card deck
         | 
| 142 153 |  | 
| 143 154 | 
             
            .card-deck {
         | 
| 144 | 
            -
              display: flex;
         | 
| 145 | 
            -
              flex-direction: column;
         | 
| 146 | 
            -
             | 
| 147 155 | 
             
              .card {
         | 
| 148 156 | 
             
                margin-bottom: $card-deck-margin;
         | 
| 149 157 | 
             
              }
         | 
| 150 158 |  | 
| 151 159 | 
             
              @include media-breakpoint-up(sm) {
         | 
| 160 | 
            +
                display: flex;
         | 
| 152 161 | 
             
                flex-flow: row wrap;
         | 
| 153 162 | 
             
                margin-right: -$card-deck-margin;
         | 
| 154 163 | 
             
                margin-left: -$card-deck-margin;
         | 
| 155 164 |  | 
| 156 165 | 
             
                .card {
         | 
| 157 | 
            -
                  display: flex;
         | 
| 158 166 | 
             
                  // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
         | 
| 159 167 | 
             
                  flex: 1 0 0%;
         | 
| 160 | 
            -
                  flex-direction: column;
         | 
| 161 168 | 
             
                  margin-right: $card-deck-margin;
         | 
| 162 169 | 
             
                  margin-bottom: 0; // Override the default
         | 
| 163 170 | 
             
                  margin-left: $card-deck-margin;
         | 
| @@ -171,9 +178,6 @@ | |
| 171 178 | 
             
            //
         | 
| 172 179 |  | 
| 173 180 | 
             
            .card-group {
         | 
| 174 | 
            -
              display: flex;
         | 
| 175 | 
            -
              flex-direction: column;
         | 
| 176 | 
            -
             | 
| 177 181 | 
             
              // The child selector allows nested `.card` within `.card-group`
         | 
| 178 182 | 
             
              // to display properly.
         | 
| 179 183 | 
             
              > .card {
         | 
| @@ -181,6 +185,7 @@ | |
| 181 185 | 
             
              }
         | 
| 182 186 |  | 
| 183 187 | 
             
              @include media-breakpoint-up(sm) {
         | 
| 188 | 
            +
                display: flex;
         | 
| 184 189 | 
             
                flex-flow: row wrap;
         | 
| 185 190 | 
             
                // The child selector allows nested `.card` within `.card-group`
         | 
| 186 191 | 
             
                // to display properly.
         | 
| @@ -201,12 +206,12 @@ | |
| 201 206 |  | 
| 202 207 | 
             
                      .card-img-top,
         | 
| 203 208 | 
             
                      .card-header {
         | 
| 204 | 
            -
                        // stylelint-disable-next-line property- | 
| 209 | 
            +
                        // stylelint-disable-next-line property-disallowed-list
         | 
| 205 210 | 
             
                        border-top-right-radius: 0;
         | 
| 206 211 | 
             
                      }
         | 
| 207 212 | 
             
                      .card-img-bottom,
         | 
| 208 213 | 
             
                      .card-footer {
         | 
| 209 | 
            -
                        // stylelint-disable-next-line property- | 
| 214 | 
            +
                        // stylelint-disable-next-line property-disallowed-list
         | 
| 210 215 | 
             
                        border-bottom-right-radius: 0;
         | 
| 211 216 | 
             
                      }
         | 
| 212 217 | 
             
                    }
         | 
| @@ -216,12 +221,12 @@ | |
| 216 221 |  | 
| 217 222 | 
             
                      .card-img-top,
         | 
| 218 223 | 
             
                      .card-header {
         | 
| 219 | 
            -
                        // stylelint-disable-next-line property- | 
| 224 | 
            +
                        // stylelint-disable-next-line property-disallowed-list
         | 
| 220 225 | 
             
                        border-top-left-radius: 0;
         | 
| 221 226 | 
             
                      }
         | 
| 222 227 | 
             
                      .card-img-bottom,
         | 
| 223 228 | 
             
                      .card-footer {
         | 
| 224 | 
            -
                        // stylelint-disable-next-line property- | 
| 229 | 
            +
                        // stylelint-disable-next-line property-disallowed-list
         | 
| 225 230 | 
             
                        border-bottom-left-radius: 0;
         | 
| 226 231 | 
             
                      }
         | 
| 227 232 | 
             
                    }
         | 
| @@ -259,30 +264,22 @@ | |
| 259 264 | 
             
            //
         | 
| 260 265 |  | 
| 261 266 | 
             
            .accordion {
         | 
| 267 | 
            +
              overflow-anchor: none;
         | 
| 268 | 
            +
             | 
| 262 269 | 
             
              > .card {
         | 
| 263 270 | 
             
                overflow: hidden;
         | 
| 264 271 |  | 
| 265 | 
            -
                &:not(: | 
| 266 | 
            -
                  .card-header:first-child {
         | 
| 267 | 
            -
                    @include border-radius(0);
         | 
| 268 | 
            -
                  }
         | 
| 269 | 
            -
             | 
| 270 | 
            -
                  &:not(:last-of-type) {
         | 
| 271 | 
            -
                    border-bottom: 0;
         | 
| 272 | 
            -
                    @include border-radius(0);
         | 
| 273 | 
            -
                  }
         | 
| 274 | 
            -
                }
         | 
| 275 | 
            -
             | 
| 276 | 
            -
                &:first-of-type {
         | 
| 272 | 
            +
                &:not(:last-of-type) {
         | 
| 277 273 | 
             
                  border-bottom: 0;
         | 
| 278 274 | 
             
                  @include border-bottom-radius(0);
         | 
| 279 275 | 
             
                }
         | 
| 280 276 |  | 
| 281 | 
            -
                &: | 
| 277 | 
            +
                &:not(:first-of-type) {
         | 
| 282 278 | 
             
                  @include border-top-radius(0);
         | 
| 283 279 | 
             
                }
         | 
| 284 280 |  | 
| 285 | 
            -
                .card-header {
         | 
| 281 | 
            +
                > .card-header {
         | 
| 282 | 
            +
                  @include border-radius(0);
         | 
| 286 283 | 
             
                  margin-bottom: -$card-border-width;
         | 
| 287 284 | 
             
                }
         | 
| 288 285 | 
             
              }
         |