nex-bootstrap 4.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitattributes +14 -0
- data/.gitignore +19 -0
- data/.travis.yml +31 -0
- data/CHANGELOG.md +25 -0
- data/Gemfile +11 -0
- data/LICENSE +21 -0
- data/README.md +109 -0
- data/Rakefile +63 -0
- data/assets/javascripts/bootstrap/alert.js +183 -0
- data/assets/javascripts/bootstrap/button.js +225 -0
- data/assets/javascripts/bootstrap/carousel.js +640 -0
- data/assets/javascripts/bootstrap/collapse.js +394 -0
- data/assets/javascripts/bootstrap/dropdown.js +557 -0
- data/assets/javascripts/bootstrap/modal.js +660 -0
- data/assets/javascripts/bootstrap/popover.js +243 -0
- data/assets/javascripts/bootstrap/scrollspy.js +337 -0
- data/assets/javascripts/bootstrap/tab.js +259 -0
- data/assets/javascripts/bootstrap/toast.js +265 -0
- data/assets/javascripts/bootstrap/tooltip.js +886 -0
- data/assets/javascripts/bootstrap/util.js +189 -0
- data/assets/javascripts/bootstrap-sprockets.js +12 -0
- data/assets/javascripts/bootstrap.js +4356 -0
- data/assets/javascripts/bootstrap.min.js +6 -0
- data/assets/stylesheets/_bootstrap-grid.scss +30 -0
- data/assets/stylesheets/_bootstrap-reboot.scss +12 -0
- data/assets/stylesheets/_bootstrap.scss +44 -0
- data/assets/stylesheets/bootstrap/_alert.scss +52 -0
- data/assets/stylesheets/bootstrap/_badge.scss +54 -0
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +42 -0
- data/assets/stylesheets/bootstrap/_button-group.scss +163 -0
- data/assets/stylesheets/bootstrap/_buttons.scss +142 -0
- data/assets/stylesheets/bootstrap/_card.scss +286 -0
- data/assets/stylesheets/bootstrap/_carousel.scss +200 -0
- data/assets/stylesheets/bootstrap/_close.scss +40 -0
- data/assets/stylesheets/bootstrap/_code.scss +48 -0
- data/assets/stylesheets/bootstrap/_custom-forms.scss +526 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +192 -0
- data/assets/stylesheets/bootstrap/_forms.scss +347 -0
- data/assets/stylesheets/bootstrap/_functions.scss +190 -0
- data/assets/stylesheets/bootstrap/_grid.scss +73 -0
- data/assets/stylesheets/bootstrap/_images.scss +42 -0
- data/assets/stylesheets/bootstrap/_input-group.scss +211 -0
- data/assets/stylesheets/bootstrap/_jumbotron.scss +17 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +154 -0
- data/assets/stylesheets/bootstrap/_media.scss +8 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +47 -0
- data/assets/stylesheets/bootstrap/_modal.scss +240 -0
- data/assets/stylesheets/bootstrap/_nav.scss +125 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +332 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +74 -0
- data/assets/stylesheets/bootstrap/_popover.scss +170 -0
- data/assets/stylesheets/bootstrap/_print.scss +132 -0
- data/assets/stylesheets/bootstrap/_progress.scss +47 -0
- data/assets/stylesheets/bootstrap/_reboot.scss +484 -0
- data/assets/stylesheets/bootstrap/_root.scss +19 -0
- data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
- data/assets/stylesheets/bootstrap/_tables.scss +185 -0
- data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
- data/assets/stylesheets/bootstrap/_tooltip.scss +115 -0
- data/assets/stylesheets/bootstrap/_transitions.scss +26 -0
- data/assets/stylesheets/bootstrap/_type.scss +125 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1149 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +13 -0
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +23 -0
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +76 -0
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +20 -0
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +123 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +110 -0
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +62 -0
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
- data/assets/stylesheets/bootstrap/mixins/_float.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +195 -0
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +45 -0
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +80 -0
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +69 -0
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +37 -0
- data/assets/stylesheets/bootstrap/mixins/_image.scss +36 -0
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +22 -0
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +34 -0
- data/assets/stylesheets/bootstrap/mixins/_size.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +39 -0
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +26 -0
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_align.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_background.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +75 -0
- data/assets/stylesheets/bootstrap/utilities/_clearfix.scss +3 -0
- data/assets/stylesheets/bootstrap/utilities/_display.scss +26 -0
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +39 -0
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +51 -0
- data/assets/stylesheets/bootstrap/utilities/_float.scss +11 -0
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_position.scss +32 -0
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +11 -0
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +20 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +73 -0
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +72 -0
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +13 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
- data/bootstrap.gemspec +38 -0
- data/lib/bootstrap/engine.rb +15 -0
- data/lib/bootstrap/version.rb +6 -0
- data/lib/bootstrap.rb +75 -0
- data/tasks/updater/js.rb +68 -0
- data/tasks/updater/logger.rb +57 -0
- data/tasks/updater/network.rb +103 -0
- data/tasks/updater/scss.rb +26 -0
- data/tasks/updater.rb +67 -0
- data/test/dummy_rails/README.rdoc +3 -0
- data/test/dummy_rails/Rakefile +6 -0
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/images/.keep +0 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +7 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/dummy_rails/app/assets/stylesheets/application.sass +4 -0
- data/test/dummy_rails/app/controllers/application_controller.rb +5 -0
- data/test/dummy_rails/app/controllers/pages_controller.rb +4 -0
- data/test/dummy_rails/app/helpers/application_helper.rb +2 -0
- data/test/dummy_rails/app/views/layouts/application.html.erb +14 -0
- data/test/dummy_rails/app/views/pages/root.html.slim +58 -0
- data/test/dummy_rails/config/application.rb +35 -0
- data/test/dummy_rails/config/boot.rb +5 -0
- data/test/dummy_rails/config/environment.rb +5 -0
- data/test/dummy_rails/config/environments/development.rb +23 -0
- data/test/dummy_rails/config/environments/production.rb +82 -0
- data/test/dummy_rails/config/environments/test.rb +38 -0
- data/test/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy_rails/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy_rails/config/initializers/inflections.rb +16 -0
- data/test/dummy_rails/config/initializers/mime_types.rb +5 -0
- data/test/dummy_rails/config/initializers/secret_token.rb +18 -0
- data/test/dummy_rails/config/initializers/session_store.rb +3 -0
- data/test/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy_rails/config/locales/en.yml +3 -0
- data/test/dummy_rails/config/locales/es.yml +3 -0
- data/test/dummy_rails/config/routes.rb +3 -0
- data/test/dummy_rails/config.ru +4 -0
- data/test/dummy_rails/log/.keep +0 -0
- data/test/gemfiles/rails_4_2.gemfile +7 -0
- data/test/gemfiles/rails_5_0.gemfile +8 -0
- data/test/gemfiles/rails_5_1.gemfile +8 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/rails_test.rb +24 -0
- data/test/support/dummy_rails_integration.rb +31 -0
- data/test/support/reporting.rb +27 -0
- data/test/test_helper.rb +41 -0
- data/test/test_helper_rails.rb +6 -0
- metadata +445 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
// Credit: Nicolas Gallagher and SUIT CSS.
|
2
|
+
|
3
|
+
.embed-responsive {
|
4
|
+
position: relative;
|
5
|
+
display: block;
|
6
|
+
width: 100%;
|
7
|
+
padding: 0;
|
8
|
+
overflow: hidden;
|
9
|
+
|
10
|
+
&::before {
|
11
|
+
display: block;
|
12
|
+
content: "";
|
13
|
+
}
|
14
|
+
|
15
|
+
.embed-responsive-item,
|
16
|
+
iframe,
|
17
|
+
embed,
|
18
|
+
object,
|
19
|
+
video {
|
20
|
+
position: absolute;
|
21
|
+
top: 0;
|
22
|
+
bottom: 0;
|
23
|
+
left: 0;
|
24
|
+
width: 100%;
|
25
|
+
height: 100%;
|
26
|
+
border: 0;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
@each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {
|
31
|
+
$embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);
|
32
|
+
$embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);
|
33
|
+
|
34
|
+
.embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {
|
35
|
+
&::before {
|
36
|
+
padding-top: percentage(divide($embed-responsive-aspect-ratio-y, $embed-responsive-aspect-ratio-x));
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
// Flex variation
|
4
|
+
//
|
5
|
+
// Custom styles for additional flex alignment options.
|
6
|
+
|
7
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
8
|
+
@include media-breakpoint-up($breakpoint) {
|
9
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
10
|
+
|
11
|
+
.flex#{$infix}-row { flex-direction: row !important; }
|
12
|
+
.flex#{$infix}-column { flex-direction: column !important; }
|
13
|
+
.flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }
|
14
|
+
.flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }
|
15
|
+
|
16
|
+
.flex#{$infix}-wrap { flex-wrap: wrap !important; }
|
17
|
+
.flex#{$infix}-nowrap { flex-wrap: nowrap !important; }
|
18
|
+
.flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
|
19
|
+
.flex#{$infix}-fill { flex: 1 1 auto !important; }
|
20
|
+
.flex#{$infix}-grow-0 { flex-grow: 0 !important; }
|
21
|
+
.flex#{$infix}-grow-1 { flex-grow: 1 !important; }
|
22
|
+
.flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }
|
23
|
+
.flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }
|
24
|
+
|
25
|
+
.justify-content#{$infix}-start { justify-content: flex-start !important; }
|
26
|
+
.justify-content#{$infix}-end { justify-content: flex-end !important; }
|
27
|
+
.justify-content#{$infix}-center { justify-content: center !important; }
|
28
|
+
.justify-content#{$infix}-between { justify-content: space-between !important; }
|
29
|
+
.justify-content#{$infix}-around { justify-content: space-around !important; }
|
30
|
+
|
31
|
+
.align-items#{$infix}-start { align-items: flex-start !important; }
|
32
|
+
.align-items#{$infix}-end { align-items: flex-end !important; }
|
33
|
+
.align-items#{$infix}-center { align-items: center !important; }
|
34
|
+
.align-items#{$infix}-baseline { align-items: baseline !important; }
|
35
|
+
.align-items#{$infix}-stretch { align-items: stretch !important; }
|
36
|
+
|
37
|
+
.align-content#{$infix}-start { align-content: flex-start !important; }
|
38
|
+
.align-content#{$infix}-end { align-content: flex-end !important; }
|
39
|
+
.align-content#{$infix}-center { align-content: center !important; }
|
40
|
+
.align-content#{$infix}-between { align-content: space-between !important; }
|
41
|
+
.align-content#{$infix}-around { align-content: space-around !important; }
|
42
|
+
.align-content#{$infix}-stretch { align-content: stretch !important; }
|
43
|
+
|
44
|
+
.align-self#{$infix}-auto { align-self: auto !important; }
|
45
|
+
.align-self#{$infix}-start { align-self: flex-start !important; }
|
46
|
+
.align-self#{$infix}-end { align-self: flex-end !important; }
|
47
|
+
.align-self#{$infix}-center { align-self: center !important; }
|
48
|
+
.align-self#{$infix}-baseline { align-self: baseline !important; }
|
49
|
+
.align-self#{$infix}-stretch { align-self: stretch !important; }
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
4
|
+
@include media-breakpoint-up($breakpoint) {
|
5
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
6
|
+
|
7
|
+
.float#{$infix}-left { float: left !important; }
|
8
|
+
.float#{$infix}-right { float: right !important; }
|
9
|
+
.float#{$infix}-none { float: none !important; }
|
10
|
+
}
|
11
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
// Common values
|
4
|
+
@each $position in $positions {
|
5
|
+
.position-#{$position} { position: $position !important; }
|
6
|
+
}
|
7
|
+
|
8
|
+
// Shorthand
|
9
|
+
|
10
|
+
.fixed-top {
|
11
|
+
position: fixed;
|
12
|
+
top: 0;
|
13
|
+
right: 0;
|
14
|
+
left: 0;
|
15
|
+
z-index: $zindex-fixed;
|
16
|
+
}
|
17
|
+
|
18
|
+
.fixed-bottom {
|
19
|
+
position: fixed;
|
20
|
+
right: 0;
|
21
|
+
bottom: 0;
|
22
|
+
left: 0;
|
23
|
+
z-index: $zindex-fixed;
|
24
|
+
}
|
25
|
+
|
26
|
+
.sticky-top {
|
27
|
+
@supports (position: sticky) {
|
28
|
+
position: sticky;
|
29
|
+
top: 0;
|
30
|
+
z-index: $zindex-sticky;
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
// Width and height
|
4
|
+
|
5
|
+
@each $prop, $abbrev in (width: w, height: h) {
|
6
|
+
@each $size, $length in $sizes {
|
7
|
+
.#{$abbrev}-#{$size} { #{$prop}: $length !important; }
|
8
|
+
}
|
9
|
+
}
|
10
|
+
|
11
|
+
.mw-100 { max-width: 100% !important; }
|
12
|
+
.mh-100 { max-height: 100% !important; }
|
13
|
+
|
14
|
+
// Viewport additional helpers
|
15
|
+
|
16
|
+
.min-vw-100 { min-width: 100vw !important; }
|
17
|
+
.min-vh-100 { min-height: 100vh !important; }
|
18
|
+
|
19
|
+
.vw-100 { width: 100vw !important; }
|
20
|
+
.vh-100 { height: 100vh !important; }
|
@@ -0,0 +1,73 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
// Margin and Padding
|
4
|
+
|
5
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
6
|
+
@include media-breakpoint-up($breakpoint) {
|
7
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
8
|
+
|
9
|
+
@each $prop, $abbrev in (margin: m, padding: p) {
|
10
|
+
@each $size, $length in $spacers {
|
11
|
+
.#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
|
12
|
+
.#{$abbrev}t#{$infix}-#{$size},
|
13
|
+
.#{$abbrev}y#{$infix}-#{$size} {
|
14
|
+
#{$prop}-top: $length !important;
|
15
|
+
}
|
16
|
+
.#{$abbrev}r#{$infix}-#{$size},
|
17
|
+
.#{$abbrev}x#{$infix}-#{$size} {
|
18
|
+
#{$prop}-right: $length !important;
|
19
|
+
}
|
20
|
+
.#{$abbrev}b#{$infix}-#{$size},
|
21
|
+
.#{$abbrev}y#{$infix}-#{$size} {
|
22
|
+
#{$prop}-bottom: $length !important;
|
23
|
+
}
|
24
|
+
.#{$abbrev}l#{$infix}-#{$size},
|
25
|
+
.#{$abbrev}x#{$infix}-#{$size} {
|
26
|
+
#{$prop}-left: $length !important;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
// Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
|
32
|
+
@each $size, $length in $spacers {
|
33
|
+
@if "#{$size}" != "0" {
|
34
|
+
.m#{$infix}-n#{$size} { margin: -$length !important; }
|
35
|
+
.mt#{$infix}-n#{$size},
|
36
|
+
.my#{$infix}-n#{$size} {
|
37
|
+
margin-top: -$length !important;
|
38
|
+
}
|
39
|
+
.mr#{$infix}-n#{$size},
|
40
|
+
.mx#{$infix}-n#{$size} {
|
41
|
+
margin-right: -$length !important;
|
42
|
+
}
|
43
|
+
.mb#{$infix}-n#{$size},
|
44
|
+
.my#{$infix}-n#{$size} {
|
45
|
+
margin-bottom: -$length !important;
|
46
|
+
}
|
47
|
+
.ml#{$infix}-n#{$size},
|
48
|
+
.mx#{$infix}-n#{$size} {
|
49
|
+
margin-left: -$length !important;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
// Some special margin utils
|
55
|
+
.m#{$infix}-auto { margin: auto !important; }
|
56
|
+
.mt#{$infix}-auto,
|
57
|
+
.my#{$infix}-auto {
|
58
|
+
margin-top: auto !important;
|
59
|
+
}
|
60
|
+
.mr#{$infix}-auto,
|
61
|
+
.mx#{$infix}-auto {
|
62
|
+
margin-right: auto !important;
|
63
|
+
}
|
64
|
+
.mb#{$infix}-auto,
|
65
|
+
.my#{$infix}-auto {
|
66
|
+
margin-bottom: auto !important;
|
67
|
+
}
|
68
|
+
.ml#{$infix}-auto,
|
69
|
+
.mx#{$infix}-auto {
|
70
|
+
margin-left: auto !important;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
//
|
2
|
+
// Stretched link
|
3
|
+
//
|
4
|
+
|
5
|
+
.stretched-link {
|
6
|
+
&::after {
|
7
|
+
position: absolute;
|
8
|
+
top: 0;
|
9
|
+
right: 0;
|
10
|
+
bottom: 0;
|
11
|
+
left: 0;
|
12
|
+
z-index: 1;
|
13
|
+
// Just in case `pointer-events: none` is set on a parent
|
14
|
+
pointer-events: auto;
|
15
|
+
content: "";
|
16
|
+
// IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color
|
17
|
+
background-color: rgba(0, 0, 0, 0);
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
// stylelint-disable declaration-no-important
|
2
|
+
|
3
|
+
//
|
4
|
+
// Text
|
5
|
+
//
|
6
|
+
|
7
|
+
.text-monospace { font-family: $font-family-monospace !important; }
|
8
|
+
|
9
|
+
// Alignment
|
10
|
+
|
11
|
+
.text-justify { text-align: justify !important; }
|
12
|
+
.text-wrap { white-space: normal !important; }
|
13
|
+
.text-nowrap { white-space: nowrap !important; }
|
14
|
+
.text-truncate { @include text-truncate(); }
|
15
|
+
|
16
|
+
// Responsive alignment
|
17
|
+
|
18
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
19
|
+
@include media-breakpoint-up($breakpoint) {
|
20
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
21
|
+
|
22
|
+
.text#{$infix}-left { text-align: left !important; }
|
23
|
+
.text#{$infix}-right { text-align: right !important; }
|
24
|
+
.text#{$infix}-center { text-align: center !important; }
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
// Transformation
|
29
|
+
|
30
|
+
.text-lowercase { text-transform: lowercase !important; }
|
31
|
+
.text-uppercase { text-transform: uppercase !important; }
|
32
|
+
.text-capitalize { text-transform: capitalize !important; }
|
33
|
+
|
34
|
+
// Weight and italics
|
35
|
+
|
36
|
+
.font-weight-light { font-weight: $font-weight-light !important; }
|
37
|
+
.font-weight-lighter { font-weight: $font-weight-lighter !important; }
|
38
|
+
.font-weight-normal { font-weight: $font-weight-normal !important; }
|
39
|
+
.font-weight-bold { font-weight: $font-weight-bold !important; }
|
40
|
+
.font-weight-bolder { font-weight: $font-weight-bolder !important; }
|
41
|
+
.font-italic { font-style: italic !important; }
|
42
|
+
|
43
|
+
// Contextual colors
|
44
|
+
|
45
|
+
.text-white { color: $white !important; }
|
46
|
+
|
47
|
+
@each $color, $value in $theme-colors {
|
48
|
+
@include text-emphasis-variant(".text-#{$color}", $value, true);
|
49
|
+
}
|
50
|
+
|
51
|
+
.text-body { color: $body-color !important; }
|
52
|
+
.text-muted { color: $text-muted !important; }
|
53
|
+
|
54
|
+
.text-black-50 { color: rgba($black, .5) !important; }
|
55
|
+
.text-white-50 { color: rgba($white, .5) !important; }
|
56
|
+
|
57
|
+
// Misc
|
58
|
+
|
59
|
+
.text-hide {
|
60
|
+
@include text-hide($ignore-warning: true);
|
61
|
+
}
|
62
|
+
|
63
|
+
.text-decoration-none { text-decoration: none !important; }
|
64
|
+
|
65
|
+
.text-break {
|
66
|
+
word-break: break-word !important; // Deprecated, but avoids issues with flex containers
|
67
|
+
word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy
|
68
|
+
}
|
69
|
+
|
70
|
+
// Reset
|
71
|
+
|
72
|
+
.text-reset { color: inherit !important; }
|
@@ -0,0 +1,228 @@
|
|
1
|
+
// stylelint-disable property-blacklist, scss/dollar-variable-default
|
2
|
+
|
3
|
+
// SCSS RFS mixin
|
4
|
+
//
|
5
|
+
// Automated responsive font sizes
|
6
|
+
//
|
7
|
+
// Licensed under MIT (https://github.com/twbs/rfs/blob/v8.x/LICENSE)
|
8
|
+
|
9
|
+
// Configuration
|
10
|
+
|
11
|
+
// Base font size
|
12
|
+
$rfs-base-font-size: 1.25rem !default;
|
13
|
+
$rfs-font-size-unit: rem !default;
|
14
|
+
|
15
|
+
@if $rfs-font-size-unit != rem and $rfs-font-size-unit != px {
|
16
|
+
@error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.";
|
17
|
+
}
|
18
|
+
|
19
|
+
// Breakpoint at where font-size starts decreasing if screen width is smaller
|
20
|
+
$rfs-breakpoint: 1200px !default;
|
21
|
+
$rfs-breakpoint-unit: px !default;
|
22
|
+
|
23
|
+
@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
|
24
|
+
@error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
|
25
|
+
}
|
26
|
+
|
27
|
+
// Resize font size based on screen height and width
|
28
|
+
$rfs-two-dimensional: false !default;
|
29
|
+
|
30
|
+
// Factor of decrease
|
31
|
+
$rfs-factor: 10 !default;
|
32
|
+
|
33
|
+
@if type-of($rfs-factor) != "number" or $rfs-factor <= 1 {
|
34
|
+
@error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
|
35
|
+
}
|
36
|
+
|
37
|
+
// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
|
38
|
+
$rfs-class: false !default;
|
39
|
+
|
40
|
+
// 1 rem = $rfs-rem-value px
|
41
|
+
$rfs-rem-value: 16 !default;
|
42
|
+
|
43
|
+
// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
|
44
|
+
$rfs-safari-iframe-resize-bug-fix: false !default;
|
45
|
+
|
46
|
+
// Disable RFS by setting $enable-responsive-font-sizes to false
|
47
|
+
$enable-responsive-font-sizes: true !default;
|
48
|
+
|
49
|
+
// Cache $rfs-base-font-size unit
|
50
|
+
$rfs-base-font-size-unit: unit($rfs-base-font-size);
|
51
|
+
|
52
|
+
@function divide($dividend, $divisor, $precision: 10) {
|
53
|
+
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
54
|
+
$dividend: abs($dividend);
|
55
|
+
$divisor: abs($divisor);
|
56
|
+
@if $dividend == 0 {
|
57
|
+
@return 0;
|
58
|
+
}
|
59
|
+
@if $divisor == 0 {
|
60
|
+
@error "Cannot divide by 0";
|
61
|
+
}
|
62
|
+
$remainder: $dividend;
|
63
|
+
$result: 0;
|
64
|
+
$factor: 10;
|
65
|
+
@while ($remainder > 0 and $precision >= 0) {
|
66
|
+
$quotient: 0;
|
67
|
+
@while ($remainder >= $divisor) {
|
68
|
+
$remainder: $remainder - $divisor;
|
69
|
+
$quotient: $quotient + 1;
|
70
|
+
}
|
71
|
+
$result: $result * 10 + $quotient;
|
72
|
+
$factor: $factor * .1;
|
73
|
+
$remainder: $remainder * 10;
|
74
|
+
$precision: $precision - 1;
|
75
|
+
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
76
|
+
$result: $result + 1;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
$result: $result * $factor * $sign;
|
80
|
+
$dividend-unit: unit($dividend);
|
81
|
+
$divisor-unit: unit($divisor);
|
82
|
+
$unit-map: (
|
83
|
+
"px": 1px,
|
84
|
+
"rem": 1rem,
|
85
|
+
"em": 1em,
|
86
|
+
"%": 1%
|
87
|
+
);
|
88
|
+
@if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
|
89
|
+
$result: $result * map-get($unit-map, $dividend-unit);
|
90
|
+
}
|
91
|
+
@return $result;
|
92
|
+
}
|
93
|
+
|
94
|
+
// Remove px-unit from $rfs-base-font-size for calculations
|
95
|
+
@if $rfs-base-font-size-unit == "px" {
|
96
|
+
$rfs-base-font-size: divide($rfs-base-font-size, $rfs-base-font-size * 0 + 1);
|
97
|
+
}
|
98
|
+
@else if $rfs-base-font-size-unit == "rem" {
|
99
|
+
$rfs-base-font-size: divide($rfs-base-font-size, divide($rfs-base-font-size * 0 + 1, $rfs-rem-value));
|
100
|
+
}
|
101
|
+
|
102
|
+
// Cache $rfs-breakpoint unit to prevent multiple calls
|
103
|
+
$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
|
104
|
+
|
105
|
+
// Remove unit from $rfs-breakpoint for calculations
|
106
|
+
@if $rfs-breakpoint-unit-cache == "px" {
|
107
|
+
$rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
|
108
|
+
}
|
109
|
+
@else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" {
|
110
|
+
$rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
|
111
|
+
}
|
112
|
+
|
113
|
+
// Internal mixin that adds disable classes to the selector if needed.
|
114
|
+
@mixin _rfs-disable-class {
|
115
|
+
@if $rfs-class == "disable" {
|
116
|
+
// Adding an extra class increases specificity, which prevents the media query to override the font size
|
117
|
+
&,
|
118
|
+
.disable-responsive-font-size &,
|
119
|
+
&.disable-responsive-font-size {
|
120
|
+
@content;
|
121
|
+
}
|
122
|
+
}
|
123
|
+
@else {
|
124
|
+
@content;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
// Internal mixin that adds enable classes to the selector if needed.
|
129
|
+
@mixin _rfs-enable-class {
|
130
|
+
@if $rfs-class == "enable" {
|
131
|
+
.enable-responsive-font-size &,
|
132
|
+
&.enable-responsive-font-size {
|
133
|
+
@content;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
@else {
|
137
|
+
@content;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
// Internal mixin used to determine which media query needs to be used
|
142
|
+
@mixin _rfs-media-query($mq-value) {
|
143
|
+
@if $rfs-two-dimensional {
|
144
|
+
@media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {
|
145
|
+
@content;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
@else {
|
149
|
+
@media (max-width: #{$mq-value}) {
|
150
|
+
@content;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
// Responsive font size mixin
|
156
|
+
@mixin rfs($fs, $important: false) {
|
157
|
+
// Cache $fs unit
|
158
|
+
$fs-unit: if(type-of($fs) == "number", unit($fs), false);
|
159
|
+
|
160
|
+
// Add !important suffix if needed
|
161
|
+
$rfs-suffix: if($important, " !important", "");
|
162
|
+
|
163
|
+
// If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
|
164
|
+
@if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 {
|
165
|
+
font-size: #{$fs}#{$rfs-suffix};
|
166
|
+
}
|
167
|
+
@else {
|
168
|
+
// Remove unit from $fs for calculations
|
169
|
+
@if $fs-unit == "px" {
|
170
|
+
$fs: divide($fs, $fs * 0 + 1);
|
171
|
+
}
|
172
|
+
@else if $fs-unit == "rem" {
|
173
|
+
$fs: divide($fs, divide($fs * 0 + 1, $rfs-rem-value));
|
174
|
+
}
|
175
|
+
|
176
|
+
// Set default font size
|
177
|
+
$rfs-static: if($rfs-font-size-unit == rem, #{divide($fs, $rfs-rem-value)}rem, #{$fs}px);
|
178
|
+
|
179
|
+
// Only add the media query if the font size is bigger than the minimum font size
|
180
|
+
@if $fs <= $rfs-base-font-size or not $enable-responsive-font-sizes {
|
181
|
+
font-size: #{$rfs-static}#{$rfs-suffix};
|
182
|
+
}
|
183
|
+
@else {
|
184
|
+
// Calculate the minimum font size for $fs
|
185
|
+
$fs-min: $rfs-base-font-size + divide($fs - $rfs-base-font-size, $rfs-factor);
|
186
|
+
|
187
|
+
// Calculate difference between $fs and the minimum font size
|
188
|
+
$fs-diff: $fs - $fs-min;
|
189
|
+
|
190
|
+
// Base font-size formatting
|
191
|
+
$min-width: if($rfs-font-size-unit == rem, #{divide($fs-min, $rfs-rem-value)}rem, #{$fs-min}px);
|
192
|
+
|
193
|
+
// Use `vmin` if two-dimensional is enabled
|
194
|
+
$variable-unit: if($rfs-two-dimensional, vmin, vw);
|
195
|
+
|
196
|
+
// Calculate the variable width between 0 and $rfs-breakpoint
|
197
|
+
$variable-width: #{divide($fs-diff * 100, $rfs-breakpoint)}#{$variable-unit};
|
198
|
+
|
199
|
+
// Set the calculated font-size
|
200
|
+
$rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};
|
201
|
+
|
202
|
+
// Breakpoint formatting
|
203
|
+
$mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
|
204
|
+
|
205
|
+
@include _rfs-disable-class {
|
206
|
+
font-size: #{$rfs-static}#{$rfs-suffix};
|
207
|
+
}
|
208
|
+
|
209
|
+
@include _rfs-media-query($mq-value) {
|
210
|
+
@include _rfs-enable-class {
|
211
|
+
font-size: $rfs-fluid;
|
212
|
+
}
|
213
|
+
|
214
|
+
// Include safari iframe resize fix if needed
|
215
|
+
min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
|
216
|
+
}
|
217
|
+
}
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
221
|
+
// The font-size & responsive-font-size mixins use RFS to rescale the font size
|
222
|
+
@mixin font-size($fs, $important: false) {
|
223
|
+
@include rfs($fs, $important);
|
224
|
+
}
|
225
|
+
|
226
|
+
@mixin responsive-font-size($fs, $important: false) {
|
227
|
+
@include rfs($fs, $important);
|
228
|
+
}
|
data/bootstrap.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'bootstrap/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'nex-bootstrap'
|
7
|
+
s.version = Bootstrap::VERSION
|
8
|
+
s.authors = ['Twitter, Inc.']
|
9
|
+
s.email = 'glex.spb@gmail.com'
|
10
|
+
s.summary = 'The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web. http://getbootstrap.com'
|
11
|
+
s.homepage = 'https://github.com/nex-health/bootstrap-rubygem/tree/4.6-stable'
|
12
|
+
s.license = 'MIT'
|
13
|
+
|
14
|
+
s.required_ruby_version = '>= 2.3.3'
|
15
|
+
|
16
|
+
s.add_runtime_dependency 'popper_js', '>= 1.14.3', '< 2'
|
17
|
+
|
18
|
+
s.add_runtime_dependency 'autoprefixer-rails', '>= 9.1.0'
|
19
|
+
|
20
|
+
# Testing dependencies
|
21
|
+
s.add_development_dependency 'minitest', '~> 5.8.0'
|
22
|
+
s.add_development_dependency 'minitest-reporters', '~> 1.0.5'
|
23
|
+
s.add_development_dependency 'term-ansicolor'
|
24
|
+
# Integration testing
|
25
|
+
s.add_development_dependency 'capybara', '>= 2.6.0'
|
26
|
+
s.add_development_dependency 'cuprite'
|
27
|
+
# Dummy Rails app dependencies
|
28
|
+
s.add_development_dependency 'actionpack', '>= 4.1.5'
|
29
|
+
s.add_development_dependency 'activesupport', '>= 4.1.5'
|
30
|
+
s.add_development_dependency 'json', '>= 1.8.1'
|
31
|
+
s.add_development_dependency 'sprockets-rails', '>= 2.3.2'
|
32
|
+
s.add_development_dependency 'jquery-rails', '>= 3.1.0'
|
33
|
+
s.add_development_dependency 'slim-rails'
|
34
|
+
s.add_development_dependency 'uglifier'
|
35
|
+
|
36
|
+
s.files = `git ls-files`.split("\n")
|
37
|
+
s.test_files = `git ls-files -- test/*`.split("\n")
|
38
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'autoprefixer-rails'
|
4
|
+
|
5
|
+
module Bootstrap
|
6
|
+
module Rails
|
7
|
+
class Engine < ::Rails::Engine
|
8
|
+
initializer 'bootstrap.assets' do |app|
|
9
|
+
%w(stylesheets javascripts).each do |sub|
|
10
|
+
app.config.assets.paths << root.join('assets', sub).to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|