bootstrap 4.6.0 → 5.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -1
  3. data/README.md +7 -4
  4. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  5. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  6. data/assets/javascripts/bootstrap-sprockets.js +14 -8
  7. data/assets/javascripts/bootstrap.js +2152 -1633
  8. data/assets/javascripts/bootstrap.min.js +2 -2
  9. data/assets/javascripts/bootstrap/alert.js +179 -64
  10. data/assets/javascripts/bootstrap/base-component.js +75 -0
  11. data/assets/javascripts/bootstrap/button.js +94 -143
  12. data/assets/javascripts/bootstrap/carousel.js +386 -202
  13. data/assets/javascripts/bootstrap/collapse.js +349 -132
  14. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  15. data/assets/javascripts/bootstrap/dom/event-handler.js +310 -0
  16. data/assets/javascripts/bootstrap/dom/manipulator.js +86 -0
  17. data/assets/javascripts/bootstrap/dom/selector-engine.js +93 -0
  18. data/assets/javascripts/bootstrap/dropdown.js +387 -224
  19. data/assets/javascripts/bootstrap/modal.js +391 -220
  20. data/assets/javascripts/bootstrap/popover.js +94 -49
  21. data/assets/javascripts/bootstrap/scrollspy.js +212 -80
  22. data/assets/javascripts/bootstrap/tab.js +198 -79
  23. data/assets/javascripts/bootstrap/toast.js +211 -78
  24. data/assets/javascripts/bootstrap/tooltip.js +558 -300
  25. data/assets/stylesheets/_bootstrap-grid.scss +51 -16
  26. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  27. data/assets/stylesheets/_bootstrap.scss +15 -8
  28. data/assets/stylesheets/bootstrap/_accordion.scss +126 -0
  29. data/assets/stylesheets/bootstrap/_alert.scss +15 -10
  30. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  31. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
  32. data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
  33. data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
  34. data/assets/stylesheets/bootstrap/_card.scss +21 -92
  35. data/assets/stylesheets/bootstrap/_carousel.scss +65 -33
  36. data/assets/stylesheets/bootstrap/_close.scss +30 -30
  37. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  38. data/assets/stylesheets/bootstrap/_dropdown.scss +95 -38
  39. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  40. data/assets/stylesheets/bootstrap/_functions.scss +84 -23
  41. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  42. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  43. data/assets/stylesheets/bootstrap/_list-group.scss +17 -8
  44. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  45. data/assets/stylesheets/bootstrap/_modal.scss +41 -46
  46. data/assets/stylesheets/bootstrap/_nav.scss +16 -4
  47. data/assets/stylesheets/bootstrap/_navbar.scss +43 -71
  48. data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
  49. data/assets/stylesheets/bootstrap/_popover.scss +15 -27
  50. data/assets/stylesheets/bootstrap/_progress.scss +2 -4
  51. data/assets/stylesheets/bootstrap/_reboot.scss +314 -163
  52. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  53. data/assets/stylesheets/bootstrap/_spinners.scss +5 -5
  54. data/assets/stylesheets/bootstrap/_tables.scss +79 -114
  55. data/assets/stylesheets/bootstrap/_toasts.scss +20 -15
  56. data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
  57. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  58. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  59. data/assets/stylesheets/bootstrap/_utilities.scss +566 -18
  60. data/assets/stylesheets/bootstrap/_variables.scss +673 -463
  61. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  62. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-control.scss +223 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  66. data/assets/stylesheets/bootstrap/forms/_form-select.scss +67 -0
  67. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  68. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  69. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  70. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  71. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  72. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  73. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  74. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  75. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  76. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  77. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  78. data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -5
  79. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +8 -8
  80. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  81. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  82. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +65 -47
  83. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  84. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  85. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  86. data/assets/stylesheets/bootstrap/mixins/_forms.scss +27 -88
  87. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  88. data/assets/stylesheets/bootstrap/mixins/_grid.scss +83 -32
  89. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  90. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
  91. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  92. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  93. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  94. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  95. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  96. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
  97. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
  98. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  99. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  100. data/bootstrap.gemspec +1 -3
  101. data/lib/bootstrap/version.rb +2 -2
  102. data/tasks/updater/js.rb +20 -5
  103. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  104. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  105. data/test/dummy_rails/app/views/pages/root.html +89 -0
  106. data/test/dummy_rails/config/application.rb +0 -3
  107. data/test/gemfiles/rails_6_1.gemfile +7 -0
  108. metadata +44 -75
  109. data/assets/javascripts/bootstrap/util.js +0 -192
  110. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  111. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  112. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  113. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  114. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  115. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  116. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  117. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  118. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  119. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  120. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  121. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  122. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  123. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  124. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  125. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  126. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  127. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  128. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  129. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  130. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  131. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  132. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  133. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  134. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  135. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  136. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  137. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  138. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  139. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  140. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  141. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  142. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  143. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  144. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  145. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
@@ -32,6 +32,29 @@
32
32
  }
33
33
  }
34
34
 
35
+ // Internal Bootstrap function to turn maps into its negative variant.
36
+ // It prefixes the keys with `n` and makes the value negative.
37
+ @function negativify-map($map) {
38
+ $result: ();
39
+ @each $key, $value in $map {
40
+ @if $key != 0 {
41
+ $result: map-merge($result, ("n" + $key: (-$value)));
42
+ }
43
+ }
44
+ @return $result;
45
+ }
46
+
47
+ // Get multiple keys from a sass map
48
+ @function map-get-multiple($map, $values) {
49
+ $result: ();
50
+ @each $key, $value in $map {
51
+ @if (index($values, $key) != null) {
52
+ $result: map-merge($result, ($key: $value));
53
+ }
54
+ }
55
+ @return $result;
56
+ }
57
+
35
58
  // Replace `$search` with `$replace` in `$string`
36
59
  // Used on our SVG icon backgrounds for custom forms.
37
60
  //
@@ -70,41 +93,79 @@
70
93
  }
71
94
 
72
95
  // Color contrast
73
- @function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
74
- $r: red($color);
75
- $g: green($color);
76
- $b: blue($color);
96
+ // See https://github.com/twbs/bootstrap/pull/30168
97
+
98
+ // A list of pre-calculated numbers of pow(($value / 255 + .055) / 1.055, 2.4). (from 0 to 255)
99
+ // stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern
100
+ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1;
101
+
102
+ @function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) {
103
+ $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
104
+ $max-ratio: 0;
105
+ $max-ratio-color: null;
106
+
107
+ @each $color in $foregrounds {
108
+ $contrast-ratio: contrast-ratio($background, $color);
109
+ @if $contrast-ratio > $min-contrast-ratio {
110
+ @return $color;
111
+ } @else if $contrast-ratio > $max-ratio {
112
+ $max-ratio: $contrast-ratio;
113
+ $max-ratio-color: $color;
114
+ }
115
+ }
77
116
 
78
- $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
117
+ @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
79
118
 
80
- @if ($yiq >= $yiq-contrasted-threshold) {
81
- @return $dark;
82
- } @else {
83
- @return $light;
84
- }
119
+ @return $max-ratio-color;
120
+ }
121
+
122
+ @function contrast-ratio($background, $foreground: $color-contrast-light) {
123
+ $l1: luminance($background);
124
+ $l2: luminance(opaque($background, $foreground));
125
+
126
+ @return if($l1 > $l2, ($l1 + .05) / ($l2 + .05), ($l2 + .05) / ($l1 + .05));
85
127
  }
86
128
 
87
- // Retrieve color Sass maps
88
- @function color($key: "blue") {
89
- @return map-get($colors, $key);
129
+ // Return WCAG2.0 relative luminance
130
+ // See https://www.w3.org/WAI/GL/wiki/Relative_luminance
131
+ // See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
132
+ @function luminance($color) {
133
+ $rgb: (
134
+ "r": red($color),
135
+ "g": green($color),
136
+ "b": blue($color)
137
+ );
138
+
139
+ @each $name, $value in $rgb {
140
+ $value: if($value / 255 < .03928, $value / 255 / 12.92, nth($_luminance-list, $value + 1));
141
+ $rgb: map-merge($rgb, ($name: $value));
142
+ }
143
+
144
+ @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722);
90
145
  }
91
146
 
92
- @function theme-color($key: "primary") {
93
- @return map-get($theme-colors, $key);
147
+ // Return opaque color
148
+ // opaque(#fff, rgba(0, 0, 0, .5)) => #808080
149
+ @function opaque($background, $foreground) {
150
+ @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100);
94
151
  }
95
152
 
96
- @function gray($key: "100") {
97
- @return map-get($grays, $key);
153
+ // scss-docs-start color-functions
154
+ // Tint a color: mix a color with white
155
+ @function tint-color($color, $weight) {
156
+ @return mix(white, $color, $weight);
98
157
  }
99
158
 
100
- // Request a theme color level
101
- @function theme-color-level($color-name: "primary", $level: 0) {
102
- $color: theme-color($color-name);
103
- $color-base: if($level > 0, $black, $white);
104
- $level: abs($level);
159
+ // Shade a color: mix a color with black
160
+ @function shade-color($color, $weight) {
161
+ @return mix(black, $color, $weight);
162
+ }
105
163
 
106
- @return mix($color-base, $color, $level * $theme-color-interval);
164
+ // Shade the color if the weight is positive, else tint it
165
+ @function shift-color($color, $weight) {
166
+ @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
107
167
  }
168
+ // scss-docs-end color-functions
108
169
 
109
170
  // Return valid calc
110
171
  @function add($value1, $value2, $return-calc: true) {
@@ -1,46 +1,3 @@
1
- // Container widths
2
- //
3
- // Set the container width, and override it for fixed navbars in media queries.
4
-
5
- @if $enable-grid-classes {
6
- // Single container class with breakpoint max-widths
7
- .container,
8
- // 100% wide container at all breakpoints
9
- .container-fluid {
10
- @include make-container();
11
- }
12
-
13
- // Responsive containers that are 100% wide until a breakpoint
14
- @each $breakpoint, $container-max-width in $container-max-widths {
15
- .container-#{$breakpoint} {
16
- @extend .container-fluid;
17
- }
18
-
19
- @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
20
- %responsive-container-#{$breakpoint} {
21
- max-width: $container-max-width;
22
- }
23
-
24
- // Extend each breakpoint which is smaller or equal to the current breakpoint
25
- $extend-breakpoint: true;
26
-
27
- @each $name, $width in $grid-breakpoints {
28
- @if ($extend-breakpoint) {
29
- .container#{breakpoint-infix($name, $grid-breakpoints)} {
30
- @extend %responsive-container-#{$breakpoint};
31
- }
32
-
33
- // Once the current breakpoint is reached, stop extending
34
- @if ($breakpoint == $name) {
35
- $extend-breakpoint: false;
36
- }
37
- }
38
- }
39
- }
40
- }
41
- }
42
-
43
-
44
1
  // Row
45
2
  //
46
3
  // Rows contain your columns.
@@ -48,22 +5,14 @@
48
5
  @if $enable-grid-classes {
49
6
  .row {
50
7
  @include make-row();
51
- }
52
8
 
53
- // Remove the negative margin from default .row, then the horizontal padding
54
- // from all immediate children columns (to prevent runaway style inheritance).
55
- .no-gutters {
56
- margin-right: 0;
57
- margin-left: 0;
58
-
59
- > .col,
60
- > [class*="col-"] {
61
- padding-right: 0;
62
- padding-left: 0;
9
+ > * {
10
+ @include make-col-ready();
63
11
  }
64
12
  }
65
13
  }
66
14
 
15
+
67
16
  // Columns
68
17
  //
69
18
  // Common styles for small and large grid columns
@@ -0,0 +1,7 @@
1
+ @import "helpers/clearfix";
2
+ @import "helpers/colored-links";
3
+ @import "helpers/ratio";
4
+ @import "helpers/position";
5
+ @import "helpers/visually-hidden";
6
+ @import "helpers/stretched-link";
7
+ @import "helpers/text-truncation";
@@ -24,7 +24,8 @@
24
24
  text-align: inherit; // For `<button>`s (anchors inherit)
25
25
 
26
26
  // Hover state
27
- @include hover-focus() {
27
+ &:hover,
28
+ &:focus {
28
29
  z-index: 1; // Place hover/focus items above their siblings for proper border styling
29
30
  color: $list-group-action-hover-color;
30
31
  text-decoration: none;
@@ -98,13 +99,13 @@
98
99
 
99
100
  > .list-group-item {
100
101
  &:first-child {
101
- @include border-bottom-left-radius($list-group-border-radius);
102
- @include border-top-right-radius(0);
102
+ @include border-bottom-start-radius($list-group-border-radius);
103
+ @include border-top-end-radius(0);
103
104
  }
104
105
 
105
106
  &:last-child {
106
- @include border-top-right-radius($list-group-border-radius);
107
- @include border-bottom-left-radius(0);
107
+ @include border-top-end-radius($list-group-border-radius);
108
+ @include border-bottom-start-radius(0);
108
109
  }
109
110
 
110
111
  &.active {
@@ -144,11 +145,19 @@
144
145
  }
145
146
 
146
147
 
147
- // Contextual variants
148
+ // scss-docs-start list-group-modifiers
149
+ // List group contextual variants
148
150
  //
149
151
  // Add modifier classes to change text and background color on individual items.
150
152
  // Organizationally, this must come after the `:hover` states.
151
153
 
152
- @each $color, $value in $theme-colors {
153
- @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
154
+ @each $state, $value in $theme-colors {
155
+ $list-group-background: shift-color($value, $list-group-item-bg-scale);
156
+ $list-group-color: shift-color($value, $list-group-item-color-scale);
157
+ @if (contrast-ratio($list-group-background, $list-group-color) < $min-contrast-ratio) {
158
+ $list-group-color: mix($value, color-contrast($list-group-background), abs($alert-color-scale));
159
+ }
160
+
161
+ @include list-group-item-variant($state, $list-group-background, $list-group-color);
154
162
  }
163
+ // scss-docs-end list-group-modifiers
@@ -8,19 +8,16 @@
8
8
  // Deprecate
9
9
  @import "mixins/deprecate";
10
10
 
11
- // Utilities
11
+ // Helpers
12
12
  @import "mixins/breakpoints";
13
- @import "mixins/hover";
14
13
  @import "mixins/image";
15
- @import "mixins/badge";
16
14
  @import "mixins/resize";
17
- @import "mixins/screen-reader";
18
- @import "mixins/size";
15
+ @import "mixins/visually-hidden";
19
16
  @import "mixins/reset-text";
20
- @import "mixins/text-emphasis";
21
- @import "mixins/text-hide";
22
17
  @import "mixins/text-truncate";
23
- @import "mixins/visibility";
18
+
19
+ // Utilities
20
+ @import "mixins/utilities";
24
21
 
25
22
  // Components
26
23
  @import "mixins/alert";
@@ -29,12 +26,10 @@
29
26
  @import "mixins/pagination";
30
27
  @import "mixins/lists";
31
28
  @import "mixins/list-group";
32
- @import "mixins/nav-divider";
33
29
  @import "mixins/forms";
34
- @import "mixins/table-row";
30
+ @import "mixins/table-variants";
35
31
 
36
32
  // Skins
37
- @import "mixins/background-variant";
38
33
  @import "mixins/border-radius";
39
34
  @import "mixins/box-shadow";
40
35
  @import "mixins/gradients";
@@ -42,6 +37,5 @@
42
37
 
43
38
  // Layout
44
39
  @import "mixins/clearfix";
45
- @import "mixins/grid-framework";
40
+ @import "mixins/container";
46
41
  @import "mixins/grid";
47
- @import "mixins/float";
@@ -56,19 +56,13 @@
56
56
  }
57
57
 
58
58
  .modal-dialog-scrollable {
59
- display: flex; // IE10/11
60
- max-height: subtract(100%, $modal-dialog-margin * 2);
59
+ height: subtract(100%, $modal-dialog-margin * 2);
61
60
 
62
61
  .modal-content {
63
- max-height: subtract(100vh, $modal-dialog-margin * 2); // IE10/11
62
+ max-height: 100%;
64
63
  overflow: hidden;
65
64
  }
66
65
 
67
- .modal-header,
68
- .modal-footer {
69
- flex-shrink: 0;
70
- }
71
-
72
66
  .modal-body {
73
67
  overflow-y: auto;
74
68
  }
@@ -78,29 +72,6 @@
78
72
  display: flex;
79
73
  align-items: center;
80
74
  min-height: subtract(100%, $modal-dialog-margin * 2);
81
-
82
- // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
83
- &::before {
84
- display: block; // IE10
85
- height: subtract(100vh, $modal-dialog-margin * 2);
86
- height: min-content; // Reset height to 0 except on IE
87
- content: "";
88
- }
89
-
90
- // Ensure `.modal-body` shows scrollbar (IE10/11)
91
- &.modal-dialog-scrollable {
92
- flex-direction: column;
93
- justify-content: center;
94
- height: 100%;
95
-
96
- .modal-content {
97
- max-height: none;
98
- }
99
-
100
- &::before {
101
- content: none;
102
- }
103
- }
104
75
  }
105
76
 
106
77
  // Actual modal
@@ -140,16 +111,16 @@
140
111
  // Top section of the modal w/ title and dismiss
141
112
  .modal-header {
142
113
  display: flex;
143
- align-items: flex-start; // so the close btn always stays on the upper right corner
114
+ flex-shrink: 0;
115
+ align-items: center;
144
116
  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
145
117
  padding: $modal-header-padding;
146
118
  border-bottom: $modal-header-border-width solid $modal-header-border-color;
147
119
  @include border-top-radius($modal-content-inner-border-radius);
148
120
 
149
- .close {
150
- padding: $modal-header-padding;
151
- // auto on the left force icon to the right even when there is no .modal-title
152
- margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;
121
+ .btn-close {
122
+ padding: ($modal-header-padding-y / 2) ($modal-header-padding-x / 2);
123
+ margin: ($modal-header-padding-y / -2) ($modal-header-padding-x / -2) ($modal-header-padding-y / -2) auto;
153
124
  }
154
125
  }
155
126
 
@@ -173,6 +144,7 @@
173
144
  .modal-footer {
174
145
  display: flex;
175
146
  flex-wrap: wrap;
147
+ flex-shrink: 0;
176
148
  align-items: center; // vertically center
177
149
  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
178
150
  padding: $modal-inner-padding - $modal-footer-margin-between / 2;
@@ -205,20 +177,11 @@
205
177
  }
206
178
 
207
179
  .modal-dialog-scrollable {
208
- max-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
209
-
210
- .modal-content {
211
- max-height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
212
- }
180
+ height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
213
181
  }
214
182
 
215
183
  .modal-dialog-centered {
216
184
  min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
217
-
218
- &::before {
219
- height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
220
- height: min-content;
221
- }
222
185
  }
223
186
 
224
187
  .modal-content {
@@ -238,3 +201,35 @@
238
201
  @include media-breakpoint-up(xl) {
239
202
  .modal-xl { max-width: $modal-xl; }
240
203
  }
204
+
205
+ @each $breakpoint in map-keys($grid-breakpoints) {
206
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
207
+ $postfix: if($infix != "", $infix + "-down", "");
208
+
209
+ @include media-breakpoint-down($breakpoint) {
210
+ .modal-fullscreen#{$postfix} {
211
+ width: 100vw;
212
+ max-width: none;
213
+ height: 100%;
214
+ margin: 0;
215
+
216
+ .modal-content {
217
+ height: 100%;
218
+ border: 0;
219
+ @include border-radius(0);
220
+ }
221
+
222
+ .modal-header {
223
+ @include border-radius(0);
224
+ }
225
+
226
+ .modal-body {
227
+ overflow-y: auto;
228
+ }
229
+
230
+ .modal-footer {
231
+ @include border-radius(0);
232
+ }
233
+ }
234
+ }
235
+ }