bootstrap 5.3.0 → 5.3.8
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +22 -21
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -0
- data/README.md +11 -10
- data/Rakefile +16 -5
- data/assets/javascripts/bootstrap/alert.js +2 -2
- data/assets/javascripts/bootstrap/base-component.js +5 -3
- data/assets/javascripts/bootstrap/button.js +2 -2
- data/assets/javascripts/bootstrap/carousel.js +2 -2
- data/assets/javascripts/bootstrap/collapse.js +4 -4
- data/assets/javascripts/bootstrap/dom/data.js +2 -2
- data/assets/javascripts/bootstrap/dom/event-handler.js +2 -2
- data/assets/javascripts/bootstrap/dom/manipulator.js +3 -3
- data/assets/javascripts/bootstrap/dom/selector-engine.js +3 -3
- data/assets/javascripts/bootstrap/dropdown.js +4 -4
- data/assets/javascripts/bootstrap/modal.js +2 -2
- data/assets/javascripts/bootstrap/offcanvas.js +2 -2
- data/assets/javascripts/bootstrap/popover.js +2 -2
- data/assets/javascripts/bootstrap/scrollspy.js +2 -2
- data/assets/javascripts/bootstrap/tab.js +14 -6
- data/assets/javascripts/bootstrap/toast.js +2 -3
- data/assets/javascripts/bootstrap/tooltip.js +6 -6
- data/assets/javascripts/bootstrap/util/backdrop.js +2 -3
- data/assets/javascripts/bootstrap/util/component-functions.js +2 -2
- data/assets/javascripts/bootstrap/util/config.js +2 -2
- data/assets/javascripts/bootstrap/util/focustrap.js +2 -3
- data/assets/javascripts/bootstrap/util/index.js +4 -5
- data/assets/javascripts/bootstrap/util/sanitizer.js +5 -3
- data/assets/javascripts/bootstrap/util/scrollbar.js +2 -2
- data/assets/javascripts/bootstrap/util/swipe.js +2 -2
- data/assets/javascripts/bootstrap/util/template-factory.js +3 -3
- data/assets/javascripts/bootstrap-sprockets.js +13 -13
- data/assets/javascripts/bootstrap.js +33 -25
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/bootstrap/_accordion.scss +10 -15
- data/assets/stylesheets/bootstrap/_button-group.scss +8 -3
- data/assets/stylesheets/bootstrap/_buttons.scss +10 -1
- data/assets/stylesheets/bootstrap/_card.scss +9 -10
- data/assets/stylesheets/bootstrap/_carousel.scss +17 -35
- data/assets/stylesheets/bootstrap/_close.scss +9 -6
- data/assets/stylesheets/bootstrap/_functions.scss +2 -2
- data/assets/stylesheets/bootstrap/_list-group.scss +27 -25
- data/assets/stylesheets/bootstrap/_modal.scss +6 -3
- data/assets/stylesheets/bootstrap/_nav.scss +3 -15
- data/assets/stylesheets/bootstrap/_navbar.scss +1 -1
- data/assets/stylesheets/bootstrap/_offcanvas.scss +2 -1
- data/assets/stylesheets/bootstrap/_pagination.scss +1 -1
- data/assets/stylesheets/bootstrap/_progress.scss +1 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +12 -5
- data/assets/stylesheets/bootstrap/_root.scss +3 -0
- data/assets/stylesheets/bootstrap/_spinners.scss +1 -0
- data/assets/stylesheets/bootstrap/_tables.scss +1 -1
- data/assets/stylesheets/bootstrap/_type.scss +1 -1
- data/assets/stylesheets/bootstrap/_utilities.scss +3 -3
- data/assets/stylesheets/bootstrap/_variables-dark.scss +20 -3
- data/assets/stylesheets/bootstrap/_variables.scss +42 -32
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +20 -17
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +3 -2
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +1 -1
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +1 -2
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +11 -5
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +12 -2
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +6 -1
- data/bootstrap.gemspec +4 -4
- data/lib/bootstrap/engine.rb +17 -2
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/scss.rb +1 -1
- data/test/dummy_rails/config/application.rb +0 -2
- data/test/dummy_rails/public/favicon.ico +0 -0
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -2
- data/test/gemfiles/rails_5_1.gemfile +1 -2
- data/test/gemfiles/rails_5_2.gemfile +1 -2
- data/test/gemfiles/rails_6_0.gemfile +9 -1
- data/test/gemfiles/rails_6_1.gemfile +9 -1
- data/test/gemfiles/rails_7_0_dartsass.gemfile +15 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +15 -0
- data/test/rails_test.rb +0 -5
- data/test/test_helper.rb +6 -4
- metadata +42 -32
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -19
- data/test/gemfiles/rails_7_0.gemfile +0 -7
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
top: 0;
|
|
15
15
|
left: 0;
|
|
16
16
|
z-index: 2;
|
|
17
|
+
max-width: 100%;
|
|
17
18
|
height: 100%; // allow textareas
|
|
18
19
|
padding: $form-floating-padding-y $form-floating-padding-x;
|
|
19
20
|
overflow: hidden;
|
|
21
|
+
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
|
|
20
22
|
text-align: start;
|
|
21
23
|
text-overflow: ellipsis;
|
|
22
24
|
white-space: nowrap;
|
|
@@ -49,6 +51,7 @@
|
|
|
49
51
|
> .form-select {
|
|
50
52
|
padding-top: $form-floating-input-padding-t;
|
|
51
53
|
padding-bottom: $form-floating-input-padding-b;
|
|
54
|
+
padding-left: $form-floating-padding-x;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
> .form-control:focus,
|
|
@@ -56,27 +59,30 @@
|
|
|
56
59
|
> .form-control-plaintext,
|
|
57
60
|
> .form-select {
|
|
58
61
|
~ label {
|
|
59
|
-
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
|
|
60
62
|
transform: $form-floating-label-transform;
|
|
61
|
-
|
|
62
|
-
&::after {
|
|
63
|
-
position: absolute;
|
|
64
|
-
inset: $form-floating-padding-y ($form-floating-padding-x * .5);
|
|
65
|
-
z-index: -1;
|
|
66
|
-
height: $form-floating-label-height;
|
|
67
|
-
content: "";
|
|
68
|
-
background-color: $input-bg;
|
|
69
|
-
@include border-radius($input-border-radius);
|
|
70
|
-
}
|
|
71
63
|
}
|
|
72
64
|
}
|
|
73
65
|
// Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
|
|
74
66
|
> .form-control:-webkit-autofill {
|
|
75
67
|
~ label {
|
|
76
|
-
color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
|
|
77
68
|
transform: $form-floating-label-transform;
|
|
78
69
|
}
|
|
79
70
|
}
|
|
71
|
+
> textarea:focus,
|
|
72
|
+
> textarea:not(:placeholder-shown) {
|
|
73
|
+
~ label::after {
|
|
74
|
+
position: absolute;
|
|
75
|
+
inset: $form-floating-padding-y ($form-floating-padding-x * .5);
|
|
76
|
+
z-index: -1;
|
|
77
|
+
height: $form-floating-label-height;
|
|
78
|
+
content: "";
|
|
79
|
+
background-color: $input-bg;
|
|
80
|
+
@include border-radius($input-border-radius);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
> textarea:disabled ~ label::after {
|
|
84
|
+
background-color: $input-disabled-bg;
|
|
85
|
+
}
|
|
80
86
|
|
|
81
87
|
> .form-control-plaintext {
|
|
82
88
|
~ label {
|
|
@@ -84,11 +90,8 @@
|
|
|
84
90
|
}
|
|
85
91
|
}
|
|
86
92
|
|
|
87
|
-
> :disabled ~ label
|
|
93
|
+
> :disabled ~ label,
|
|
94
|
+
> .form-control:disabled ~ label { // Required for `.form-control`s because of specificity
|
|
88
95
|
color: $form-floating-label-disabled-color;
|
|
89
|
-
|
|
90
|
-
&::after {
|
|
91
|
-
background-color: $input-disabled-bg;
|
|
92
|
-
}
|
|
93
96
|
}
|
|
94
97
|
}
|
|
@@ -29,17 +29,18 @@
|
|
|
29
29
|
.form-check-input {
|
|
30
30
|
--#{$prefix}form-check-bg: #{$form-check-input-bg};
|
|
31
31
|
|
|
32
|
+
flex-shrink: 0;
|
|
32
33
|
width: $form-check-input-width;
|
|
33
34
|
height: $form-check-input-width;
|
|
34
35
|
margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height
|
|
35
36
|
vertical-align: top;
|
|
37
|
+
appearance: none;
|
|
36
38
|
background-color: var(--#{$prefix}form-check-bg);
|
|
37
39
|
background-image: var(--#{$prefix}form-check-bg-image);
|
|
38
40
|
background-repeat: no-repeat;
|
|
39
41
|
background-position: center;
|
|
40
42
|
background-size: contain;
|
|
41
43
|
border: $form-check-input-border;
|
|
42
|
-
appearance: none;
|
|
43
44
|
print-color-adjust: exact; // Keep themed appearance for print
|
|
44
45
|
@include transition($form-check-transition);
|
|
45
46
|
|
|
@@ -130,7 +131,7 @@
|
|
|
130
131
|
margin-left: $form-switch-padding-start * -1;
|
|
131
132
|
background-image: var(--#{$prefix}form-switch-bg);
|
|
132
133
|
background-position: left center;
|
|
133
|
-
@include border-radius($form-switch-border-radius);
|
|
134
|
+
@include border-radius($form-switch-border-radius, 0);
|
|
134
135
|
@include transition($form-switch-transition);
|
|
135
136
|
|
|
136
137
|
&:focus {
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
font-weight: $input-font-weight;
|
|
12
12
|
line-height: $input-line-height;
|
|
13
13
|
color: $input-color;
|
|
14
|
+
appearance: none; // Fix appearance for date inputs in Safari
|
|
14
15
|
background-color: $input-bg;
|
|
15
16
|
background-clip: padding-box;
|
|
16
17
|
border: $input-border-width solid $input-border-color;
|
|
17
|
-
appearance: none; // Fix appearance for date inputs in Safari
|
|
18
18
|
|
|
19
19
|
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
|
20
20
|
@include border-radius($input-border-radius, 0);
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
width: 100%;
|
|
9
9
|
height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);
|
|
10
10
|
padding: 0; // Need to reset padding
|
|
11
|
-
background-color: transparent;
|
|
12
11
|
appearance: none;
|
|
12
|
+
background-color: transparent;
|
|
13
13
|
|
|
14
14
|
&:focus {
|
|
15
15
|
outline: 0;
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
width: $form-range-thumb-width;
|
|
29
29
|
height: $form-range-thumb-height;
|
|
30
30
|
margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific
|
|
31
|
+
appearance: none;
|
|
31
32
|
@include gradient-bg($form-range-thumb-bg);
|
|
32
33
|
border: $form-range-thumb-border;
|
|
33
34
|
@include border-radius($form-range-thumb-border-radius);
|
|
34
35
|
@include box-shadow($form-range-thumb-box-shadow);
|
|
35
36
|
@include transition($form-range-thumb-transition);
|
|
36
|
-
appearance: none;
|
|
37
37
|
|
|
38
38
|
&:active {
|
|
39
39
|
@include gradient-bg($form-range-thumb-active-bg);
|
|
@@ -54,12 +54,12 @@
|
|
|
54
54
|
&::-moz-range-thumb {
|
|
55
55
|
width: $form-range-thumb-width;
|
|
56
56
|
height: $form-range-thumb-height;
|
|
57
|
+
appearance: none;
|
|
57
58
|
@include gradient-bg($form-range-thumb-bg);
|
|
58
59
|
border: $form-range-thumb-border;
|
|
59
60
|
@include border-radius($form-range-thumb-border-radius);
|
|
60
61
|
@include box-shadow($form-range-thumb-box-shadow);
|
|
61
62
|
@include transition($form-range-thumb-transition);
|
|
62
|
-
appearance: none;
|
|
63
63
|
|
|
64
64
|
&:active {
|
|
65
65
|
@include gradient-bg($form-range-thumb-active-bg);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
font-weight: $form-select-font-weight;
|
|
15
15
|
line-height: $form-select-line-height;
|
|
16
16
|
color: $form-select-color;
|
|
17
|
+
appearance: none;
|
|
17
18
|
background-color: $form-select-bg;
|
|
18
19
|
background-image: var(--#{$prefix}form-select-bg-img), var(--#{$prefix}form-select-bg-icon, none);
|
|
19
20
|
background-repeat: no-repeat;
|
|
@@ -23,7 +24,6 @@
|
|
|
23
24
|
@include border-radius($form-select-border-radius, 0);
|
|
24
25
|
@include box-shadow($form-select-box-shadow);
|
|
25
26
|
@include transition($form-select-transition);
|
|
26
|
-
appearance: none;
|
|
27
27
|
|
|
28
28
|
&:focus {
|
|
29
29
|
border-color: $form-select-focus-border-color;
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
> :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
|
|
124
|
-
margin-left: calc(#{$input-border-width}
|
|
124
|
+
margin-left: calc(-1 * #{$input-border-width}); // stylelint-disable-line function-disallowed-list
|
|
125
125
|
@include border-start-radius(0);
|
|
126
126
|
}
|
|
127
127
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
|
|
2
2
|
@each $color, $value in $theme-colors {
|
|
3
|
-
$color-rgb: to-rgb($value);
|
|
4
3
|
.text-bg-#{$color} {
|
|
5
4
|
color: color-contrast($value) if($enable-important-utilities, !important, null);
|
|
6
|
-
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
|
5
|
+
background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
|
7
6
|
}
|
|
8
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@mixin bsBanner($file) {
|
|
2
2
|
/*!
|
|
3
|
-
* Bootstrap #{$file} v5.3.
|
|
4
|
-
* Copyright 2011-
|
|
3
|
+
* Bootstrap #{$file} v5.3.8 (https://getbootstrap.com/)
|
|
4
|
+
* Copyright 2011-2025 The Bootstrap Authors
|
|
5
5
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
6
6
|
*/
|
|
7
7
|
}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
@mixin box-shadow($shadow...) {
|
|
2
2
|
@if $enable-shadows {
|
|
3
3
|
$result: ();
|
|
4
|
+
$has-single-value: false;
|
|
5
|
+
$single-value: null;
|
|
4
6
|
|
|
5
7
|
@each $value in $shadow {
|
|
6
8
|
@if $value != null {
|
|
7
|
-
$
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@
|
|
9
|
+
@if $value == none or $value == initial or $value == inherit or $value == unset {
|
|
10
|
+
$has-single-value: true;
|
|
11
|
+
$single-value: $value;
|
|
12
|
+
} @else {
|
|
13
|
+
$result: append($result, $value, "comma");
|
|
14
|
+
}
|
|
11
15
|
}
|
|
12
16
|
}
|
|
13
17
|
|
|
14
|
-
@if
|
|
18
|
+
@if $has-single-value {
|
|
19
|
+
box-shadow: $single-value;
|
|
20
|
+
} @else if (length($result) > 0) {
|
|
15
21
|
box-shadow: $result;
|
|
16
22
|
}
|
|
17
23
|
}
|
|
@@ -69,7 +69,12 @@
|
|
|
69
69
|
|
|
70
70
|
&:focus {
|
|
71
71
|
border-color: $border-color;
|
|
72
|
-
|
|
72
|
+
@if $enable-shadows {
|
|
73
|
+
@include box-shadow($input-box-shadow, $focus-box-shadow);
|
|
74
|
+
} @else {
|
|
75
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
|
76
|
+
box-shadow: $focus-box-shadow;
|
|
77
|
+
}
|
|
73
78
|
}
|
|
74
79
|
}
|
|
75
80
|
}
|
|
@@ -100,7 +105,12 @@
|
|
|
100
105
|
|
|
101
106
|
&:focus {
|
|
102
107
|
border-color: $border-color;
|
|
103
|
-
|
|
108
|
+
@if $enable-shadows {
|
|
109
|
+
@include box-shadow($form-select-box-shadow, $focus-box-shadow);
|
|
110
|
+
} @else {
|
|
111
|
+
// Avoid using mixin so we can pass custom focus shadow properly
|
|
112
|
+
box-shadow: $focus-box-shadow;
|
|
113
|
+
}
|
|
104
114
|
}
|
|
105
115
|
}
|
|
106
116
|
}
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
@mixin row-cols($count) {
|
|
57
57
|
> * {
|
|
58
58
|
flex: 0 0 auto;
|
|
59
|
-
width: divide(
|
|
59
|
+
width: percentage(divide(1, $count));
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
@include media-breakpoint-up($breakpoint, $breakpoints) {
|
|
73
73
|
// Provide basic `.col-{bp}` classes for equal-width flexbox columns
|
|
74
74
|
.col#{$infix} {
|
|
75
|
-
flex: 1 0 0
|
|
75
|
+
flex: 1 0 0;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
.row-cols#{$infix}-auto > * {
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
// Start with `1` because `0` is
|
|
141
|
+
// Start with `1` because `0` is an invalid value.
|
|
142
142
|
// Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
|
|
143
143
|
@for $i from 1 through ($columns - 1) {
|
|
144
144
|
.g-start#{$infix}-#{$i} {
|
|
@@ -19,12 +19,17 @@
|
|
|
19
19
|
&:not(caption) {
|
|
20
20
|
position: absolute !important;
|
|
21
21
|
}
|
|
22
|
+
|
|
23
|
+
// Fix to prevent overflowing children to become focusable
|
|
24
|
+
* {
|
|
25
|
+
overflow: hidden !important;
|
|
26
|
+
}
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
// Use to only display content when it's focused, or one of its child elements is focused
|
|
25
30
|
// (i.e. when focus is within the element/container that the class was applied to)
|
|
26
31
|
//
|
|
27
|
-
// Useful for "Skip to main content" links; see https://www.w3.org/
|
|
32
|
+
// Useful for "Skip to main content" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html
|
|
28
33
|
|
|
29
34
|
@mixin visually-hidden-focusable() {
|
|
30
35
|
&:not(:focus):not(:focus-within) {
|
data/bootstrap.gemspec
CHANGED
|
@@ -14,19 +14,19 @@ Gem::Specification.new do |s|
|
|
|
14
14
|
# SassC requires Ruby 2.3.3. Also specify here to make it obvious.
|
|
15
15
|
s.required_ruby_version = '>= 2.3.3'
|
|
16
16
|
|
|
17
|
-
s.add_runtime_dependency 'popper_js', '>= 2.11.
|
|
17
|
+
s.add_runtime_dependency 'popper_js', '>= 2.11.8', '< 3'
|
|
18
18
|
|
|
19
|
-
s.
|
|
20
|
-
s.add_runtime_dependency 'autoprefixer-rails', '>= 9.1.0'
|
|
19
|
+
s.add_development_dependency 'rake'
|
|
21
20
|
|
|
22
21
|
# Testing dependencies
|
|
23
|
-
s.add_development_dependency 'minitest', '
|
|
22
|
+
s.add_development_dependency 'minitest', '>= 5.14.4', '< 7'
|
|
24
23
|
s.add_development_dependency 'minitest-reporters', '~> 1.4.3'
|
|
25
24
|
s.add_development_dependency 'term-ansicolor'
|
|
26
25
|
# Integration testing
|
|
27
26
|
s.add_development_dependency 'capybara', '>= 2.6.0'
|
|
28
27
|
s.add_development_dependency 'cuprite'
|
|
29
28
|
# Dummy Rails app dependencies
|
|
29
|
+
s.add_development_dependency 'railties'
|
|
30
30
|
s.add_development_dependency 'actionpack', '>= 4.1.5'
|
|
31
31
|
s.add_development_dependency 'activesupport', '>= 4.1.5'
|
|
32
32
|
s.add_development_dependency 'json', '>= 1.8.1'
|
data/lib/bootstrap/engine.rb
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require '
|
|
3
|
+
begin
|
|
4
|
+
require 'dartsass-sprockets'
|
|
5
|
+
rescue LoadError
|
|
6
|
+
begin
|
|
7
|
+
require 'sassc-rails'
|
|
8
|
+
rescue LoadError
|
|
9
|
+
begin
|
|
10
|
+
require 'dartsass-rails'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
begin
|
|
13
|
+
require 'cssbundling-rails'
|
|
14
|
+
rescue LoadError
|
|
15
|
+
raise LoadError.new("bootstrap-rubygem requires a Sass engine. Please add dartsass-sprockets, sassc-rails, dartsass-rails or cssbundling-rails to your dependencies.")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
5
20
|
|
|
6
21
|
module Bootstrap
|
|
7
22
|
module Rails
|
data/lib/bootstrap/version.rb
CHANGED
data/tasks/updater/scss.rb
CHANGED
|
@@ -12,7 +12,7 @@ class Updater
|
|
|
12
12
|
log_processed "#{bootstrap_scss_files * ' '}"
|
|
13
13
|
|
|
14
14
|
log_status 'Updating scss main files'
|
|
15
|
-
%w(bootstrap bootstrap-grid bootstrap-reboot).each do |name|
|
|
15
|
+
%w(bootstrap bootstrap-grid bootstrap-reboot bootstrap-utilities).each do |name|
|
|
16
16
|
# Compass treats non-partials as targets to copy into the main project, so make them partials.
|
|
17
17
|
# Also move them up a level to clearly indicate entry points.
|
|
18
18
|
from = "#{save_to}/#{name}.scss"
|
|
File without changes
|
|
@@ -2,6 +2,14 @@ source 'https://rubygems.org'
|
|
|
2
2
|
|
|
3
3
|
gem 'actionpack', '~> 6.0.3'
|
|
4
4
|
gem 'activesupport', '~> 6.0.3'
|
|
5
|
-
gem '
|
|
5
|
+
gem 'sassc-rails', '~> 2.0'
|
|
6
6
|
|
|
7
7
|
gemspec path: '../../'
|
|
8
|
+
|
|
9
|
+
# no longer bundled as default gems in newer ruby
|
|
10
|
+
gem 'base64'
|
|
11
|
+
gem 'benchmark'
|
|
12
|
+
gem 'drb'
|
|
13
|
+
gem 'mutex_m'
|
|
14
|
+
gem 'ruby2_keywords'
|
|
15
|
+
gem 'tsort'
|
|
@@ -2,6 +2,14 @@ source 'https://rubygems.org'
|
|
|
2
2
|
|
|
3
3
|
gem 'actionpack', '~> 6.1.3'
|
|
4
4
|
gem 'activesupport', '~> 6.1.3'
|
|
5
|
-
gem '
|
|
5
|
+
gem 'sassc-rails', '~> 2.0'
|
|
6
6
|
|
|
7
7
|
gemspec path: '../../'
|
|
8
|
+
|
|
9
|
+
# no longer bundled as default gems in newer ruby
|
|
10
|
+
gem 'base64'
|
|
11
|
+
gem 'benchmark'
|
|
12
|
+
gem 'drb'
|
|
13
|
+
gem 'mutex_m'
|
|
14
|
+
gem 'ruby2_keywords'
|
|
15
|
+
gem 'tsort'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'actionpack', '~> 7.0.4'
|
|
4
|
+
gem 'activesupport', '~> 7.0.4'
|
|
5
|
+
gem 'dartsass-sprockets', '~> 3.0'
|
|
6
|
+
|
|
7
|
+
gemspec path: '../../'
|
|
8
|
+
|
|
9
|
+
# no longer bundled as default gems in newer ruby
|
|
10
|
+
gem 'base64'
|
|
11
|
+
gem 'benchmark'
|
|
12
|
+
gem 'drb'
|
|
13
|
+
gem 'mutex_m'
|
|
14
|
+
gem 'ruby2_keywords'
|
|
15
|
+
gem 'tsort'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'actionpack', '~> 7.0.4'
|
|
4
|
+
gem 'activesupport', '~> 7.0.4'
|
|
5
|
+
gem 'sassc-rails', '~> 2.0'
|
|
6
|
+
|
|
7
|
+
gemspec path: '../../'
|
|
8
|
+
|
|
9
|
+
# no longer bundled as default gems in newer ruby
|
|
10
|
+
gem 'base64'
|
|
11
|
+
gem 'benchmark'
|
|
12
|
+
gem 'drb'
|
|
13
|
+
gem 'mutex_m'
|
|
14
|
+
gem 'ruby2_keywords'
|
|
15
|
+
gem 'tsort'
|
data/test/rails_test.rb
CHANGED
|
@@ -12,11 +12,6 @@ class RailsTest < ActionDispatch::IntegrationTest
|
|
|
12
12
|
screenshot!
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def test_autoprefixer
|
|
16
|
-
get ActionController::Base.helpers.stylesheet_path('application.css')
|
|
17
|
-
assert_match(/-webkit-(?:transition|transform)/, response.body)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
15
|
def test_precompile
|
|
21
16
|
Dummy::Application.load_tasks
|
|
22
17
|
Rake::Task['assets:precompile'].invoke
|
data/test/test_helper.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'logger'
|
|
2
|
+
|
|
1
3
|
require 'minitest/autorun'
|
|
2
4
|
require 'minitest/reporters'
|
|
3
5
|
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
|
@@ -25,8 +27,8 @@ browser_path = ENV['CHROMIUM_BIN'] || %w[
|
|
|
25
27
|
Capybara.register_driver :cuprite do |app|
|
|
26
28
|
options = {
|
|
27
29
|
window_size: [1280, 1024],
|
|
28
|
-
timeout:
|
|
29
|
-
process_timeout:
|
|
30
|
+
timeout: 30,
|
|
31
|
+
process_timeout: 60
|
|
30
32
|
}
|
|
31
33
|
options[:browser_path] = browser_path if browser_path
|
|
32
34
|
Capybara::Cuprite::Driver.new(app, options)
|
|
@@ -34,9 +36,9 @@ end
|
|
|
34
36
|
|
|
35
37
|
Capybara.configure do |config|
|
|
36
38
|
config.server = :webrick
|
|
37
|
-
config.app_host = 'http://localhost:
|
|
39
|
+
config.app_host = 'http://localhost:8000'
|
|
38
40
|
config.default_driver = :cuprite
|
|
39
41
|
config.javascript_driver = :cuprite
|
|
40
|
-
config.server_port =
|
|
42
|
+
config.server_port = 8000
|
|
41
43
|
config.default_max_wait_time = 10
|
|
42
44
|
end
|