nfg_ui 0.12.16.1 → 0.13.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/application.scss +0 -2
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom.scss +0 -1
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_builder_layout.scss +4 -99
- data/app/assets/stylesheets/nfg_ui/network_for_good/core/_variables.scss +10 -8
- data/app/assets/stylesheets/nfg_ui/network_for_good/core/application.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/_carousel.scss +29 -1
- data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_custom.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_builder_layout.scss +102 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/{admin/nfg_theme/custom/_campaign_preview.scss → core/nfg_theme/custom/_iframe_preview.scss} +0 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_carousel.scss +179 -3
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_custom.scss +1 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_builder_layout.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_page_header.scss +12 -6
- data/lib/nfg_ui/bootstrap/components/carousel.rb +9 -1
- data/lib/nfg_ui/bootstrap/components/carousel_item.rb +15 -1
- data/lib/nfg_ui/components/patterns/carousel.rb +12 -15
- data/lib/nfg_ui/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52eb169f5803dc4a89489c7383a04d727873f4a0d3722a9d36f555493a66a87d
|
4
|
+
data.tar.gz: 167b00bd9265fb9f0e3b16bf3e36a44166e0fc5d64cf5c604580b4efa9083278
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be1ab2d77aa8b9a1b1cf5be109425e553320a1a21d887847f35494bd1ebc17b32d809d97aac64edca2209d8617755e96bcc2f34899c043cbc6dfb63cc13227fc
|
7
|
+
data.tar.gz: 23efe9e2f2ef15fddc6ed928682d411bcdfe6e76ab94f9eac2545311f0ce5e782ea9af57ad730cb27e137e2c1c26c3fa4b50a19509bcc3ad12fd138ff9c2d309
|
@@ -9,8 +9,6 @@
|
|
9
9
|
// Plugins
|
10
10
|
@import 'nfg_ui/network_for_good/core/plugins/intercom';
|
11
11
|
@import 'nfg_ui/network_for_good/core/plugins/multi';
|
12
|
-
@import 'nfg_ui/network_for_good/core/plugins/turbolinks';
|
13
|
-
@import 'nfg_ui/network_for_good/core/plugins/twitter_typeahead';
|
14
12
|
|
15
13
|
// Color Variations - has to be inside admin directory for variables to work properly
|
16
14
|
@import 'color_variations/nfg_theme/*';
|
data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_builder_layout.scss
CHANGED
@@ -1,106 +1,11 @@
|
|
1
|
-
//
|
2
|
-
$builder-header-height: ($spacer * 2.25);
|
3
|
-
$builder-header-padding: ($spacer * .25) ($spacer * .5);
|
4
|
-
$builder-nav-height: ($spacer * 3.25);
|
5
|
-
$builder-nav-padding: ($spacer * .75) ($spacer * .5);
|
6
|
-
$builder-options-padding: $spacer;
|
7
|
-
$builder-preview-padding: ($spacer * 1.5);
|
8
|
-
|
9
|
-
// Put on the <body> to help with correct scrolling within builder-wrap and builder-options
|
10
|
-
.builder-layout {
|
11
|
-
background-color: $white;
|
12
|
-
@include media-breakpoint-up(lg) {
|
13
|
-
height: 100%;
|
14
|
-
> form { height: 100%; } // targets form directly inside <body> and needed for correct scrolling
|
15
|
-
}
|
16
|
-
}
|
1
|
+
// Specific styles needed for admin onboarding pages
|
17
2
|
|
18
3
|
// Header and nav styles for builder layout
|
19
|
-
.builder-
|
20
|
-
|
21
|
-
width: 100%;
|
22
|
-
min-height: $builder-header-height;
|
23
|
-
background-color: $blue-700;
|
24
|
-
z-index: $zindex-fixed + 1;
|
25
|
-
@include media-breakpoint-up(lg) {
|
26
|
-
position: fixed;
|
27
|
-
top: 0;
|
28
|
-
left: 0;
|
29
|
-
right: 0;
|
30
|
-
}
|
31
|
-
.text-muted { color: $blue-200 !important; }
|
32
|
-
}
|
33
|
-
.builder-header-fixed-bottom {
|
34
|
-
position: fixed;
|
35
|
-
@include media-breakpoint-down(md) { bottom: 0; }
|
36
|
-
}
|
37
|
-
.builder-nav, .builder-nav-sm {
|
38
|
-
width: 100%;
|
39
|
-
z-index: $zindex-fixed;
|
40
|
-
}
|
41
|
-
.builder-nav {
|
42
|
-
padding: $builder-nav-padding;
|
43
|
-
background-color: $white;
|
44
|
-
border-bottom: $border-width solid $border-color;
|
45
|
-
@include media-breakpoint-up(lg) {
|
46
|
-
position: fixed;
|
47
|
-
top: $builder-header-height;
|
48
|
-
left: 0;
|
49
|
-
right: 0;
|
50
|
-
min-height: $builder-nav-height;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
.builder-nav-sm {
|
54
|
-
position: fixed;
|
55
|
-
bottom: 0;
|
56
|
-
padding: $builder-header-padding;
|
57
|
-
min-height: $builder-header-height;
|
58
|
-
background-color: $blue-700;
|
59
|
-
@include media-breakpoint-up(lg) { display: none; }
|
60
|
-
}
|
61
|
-
|
62
|
-
// Container that provides padding to the top of the page to move content below header and nav
|
63
|
-
.builder-container {
|
64
|
-
@include media-breakpoint-down(md) { padding-bottom: $builder-header-height; }
|
65
|
-
@include media-breakpoint-up(lg) { height: 100%; }
|
66
|
-
}
|
67
|
-
|
68
|
-
// Adjusts padding on the top of builder-container depending on how many elements come before it
|
69
|
-
.builder-header ~ .builder-container {
|
70
|
-
@include media-breakpoint-up(lg) { padding-top: $builder-header-height; }
|
71
|
-
}
|
72
|
-
.builder-header ~ .builder-nav ~ .builder-container {
|
73
|
-
@include media-breakpoint-up(lg) { padding-top: $builder-header-height + $builder-nav-height; }
|
74
|
-
}
|
4
|
+
.builder-nav { border-bottom: $border-width solid $border-color; }
|
5
|
+
.builder-nav-sm { background-color: $blue-700; }
|
75
6
|
|
76
7
|
// Block containers for side by side view
|
77
|
-
.builder-body {
|
78
|
-
@include media-breakpoint-up(lg) {
|
79
|
-
width: 100%;
|
80
|
-
height: 100%;
|
81
|
-
overflow: hidden;
|
82
|
-
}
|
83
|
-
}
|
84
|
-
.builder-preview {
|
85
|
-
padding: $builder-preview-padding ($builder-preview-padding / 2);
|
86
|
-
@include media-breakpoint-up(lg) {
|
87
|
-
float: left;
|
88
|
-
width: 67%;
|
89
|
-
height: 100%;
|
90
|
-
overflow-y: auto;
|
91
|
-
> :last-child { margin-bottom: $builder-preview-padding; }
|
92
|
-
}
|
93
|
-
}
|
94
8
|
.builder-options {
|
95
|
-
padding: $builder-options-padding;
|
96
|
-
background-color: $white;
|
97
9
|
@include media-breakpoint-down(md) { border-bottom: $border-width solid $border-color; }
|
98
|
-
@include media-breakpoint-up(lg) {
|
99
|
-
float: right;
|
100
|
-
width: 33%;
|
101
|
-
height: 100%;
|
102
|
-
border-left: $border-width solid $border-color;
|
103
|
-
overflow-y: auto;
|
104
|
-
> :last-child { margin-bottom: $builder-options-padding; }
|
105
|
-
}
|
10
|
+
@include media-breakpoint-up(lg) { border-left: $border-width solid $border-color; }
|
106
11
|
}
|
@@ -296,7 +296,7 @@ $font-family-sans-serif: "Open Sans", "Helvetica Neue", Arial, sans-serif;
|
|
296
296
|
// stylelint-enable value-keyword-case
|
297
297
|
|
298
298
|
$font-size-base: 1.6rem; // Root font size is 62.5% to make calculations to REM 10 point based
|
299
|
-
|
299
|
+
$font-size-lg: ($font-size-base * 1.25);
|
300
300
|
$font-size-sm: ($font-size-base * .875);
|
301
301
|
|
302
302
|
// $font-weight-lighter: lighter !default;
|
@@ -1072,10 +1072,10 @@ $breadcrumb-active-color: $text-muted;
|
|
1072
1072
|
|
1073
1073
|
// Carousel
|
1074
1074
|
|
1075
|
-
|
1076
|
-
|
1077
|
-
$carousel-control-opacity: .
|
1078
|
-
|
1075
|
+
$carousel-control-color: $white;
|
1076
|
+
$carousel-control-width: ($spacer * 1.5);
|
1077
|
+
$carousel-control-opacity: .5;
|
1078
|
+
$carousel-control-hover-opacity: .9;
|
1079
1079
|
// $carousel-control-transition: opacity .15s ease !default;
|
1080
1080
|
|
1081
1081
|
$carousel-indicator-width: ($spacer * .5);
|
@@ -1088,10 +1088,12 @@ $carousel-indicator-transition: $text-muted;
|
|
1088
1088
|
// $carousel-caption-width: 70% !default;
|
1089
1089
|
// $carousel-caption-color: $white !default;
|
1090
1090
|
|
1091
|
-
|
1091
|
+
$carousel-control-icon-width: $spacer;
|
1092
1092
|
|
1093
|
-
// $carousel-control-prev-icon-bg:
|
1094
|
-
// $carousel-control-next-icon-bg:
|
1093
|
+
// $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>") !default;
|
1094
|
+
// $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>") !default;
|
1095
|
+
$carousel-control-prev-icon-bg: '\f0d9';
|
1096
|
+
$carousel-control-next-icon-bg: '\f0da';
|
1095
1097
|
|
1096
1098
|
// $carousel-transition-duration: .6s !default;
|
1097
1099
|
// $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
$carousel-thumbnail-size: ($spacer * 2.5); // 80px
|
2
|
+
|
1
3
|
.carousel-item { -ms-flex-align: center; }
|
2
4
|
|
3
5
|
// Left/right controls for nav
|
@@ -15,4 +17,30 @@
|
|
15
17
|
display: -ms-flexbox;
|
16
18
|
-ms-flex-pack: center;
|
17
19
|
li { -ms-flex: 0 1 auto; }
|
18
|
-
}
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
// Carousels that have a fixed aspect ratio height
|
24
|
+
.carousel-fixed-height {
|
25
|
+
.carousel-item {
|
26
|
+
display: -ms-flexbox;
|
27
|
+
-ms-flex-align: center;
|
28
|
+
-ms-flex-pack: center;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
|
33
|
+
// Carousels that use image thumbnails for indicators
|
34
|
+
.carousel-has-thumbnails {
|
35
|
+
.carousel-indicators {
|
36
|
+
@include media-breakpoint-down(lg) {
|
37
|
+
-ms-flex-pack: start;
|
38
|
+
}
|
39
|
+
li {
|
40
|
+
@include media-breakpoint-down(lg) {
|
41
|
+
-ms-flex-negative: 0;
|
42
|
+
-ms-flex-preferred-size: $carousel-thumbnail-size;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_builder_layout.scss
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
// Setting a common height for the builder header and nav
|
2
|
+
$builder-header-height: ($spacer * 2.25);
|
3
|
+
$builder-header-padding: ($spacer * .25) ($spacer * .5);
|
4
|
+
$builder-nav-height: ($spacer * 3.25);
|
5
|
+
$builder-nav-padding: ($spacer * .75) ($spacer * .5);
|
6
|
+
$builder-options-padding: $spacer;
|
7
|
+
$builder-preview-padding: ($spacer * 1.5);
|
8
|
+
|
9
|
+
// Put on the <body> to help with correct scrolling within builder-wrap and builder-options
|
10
|
+
.builder-layout {
|
11
|
+
background-color: $white;
|
12
|
+
@include media-breakpoint-up(lg) {
|
13
|
+
height: 100%;
|
14
|
+
> form { height: 100%; } // targets form directly inside <body> and needed for correct scrolling
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
// Header and nav styles for builder layout
|
19
|
+
.builder-header, .builder-header-fixed-bottom {
|
20
|
+
padding: $builder-header-padding;
|
21
|
+
width: 100%;
|
22
|
+
min-height: $builder-header-height;
|
23
|
+
background-color: $blue-700;
|
24
|
+
z-index: $zindex-fixed + 1;
|
25
|
+
@include media-breakpoint-up(lg) {
|
26
|
+
position: fixed;
|
27
|
+
top: 0;
|
28
|
+
left: 0;
|
29
|
+
right: 0;
|
30
|
+
}
|
31
|
+
.text-muted { color: $blue-200 !important; }
|
32
|
+
}
|
33
|
+
.builder-header-fixed-bottom {
|
34
|
+
position: fixed;
|
35
|
+
@include media-breakpoint-down(md) { bottom: 0; }
|
36
|
+
}
|
37
|
+
.builder-nav, .builder-nav-sm {
|
38
|
+
width: 100%;
|
39
|
+
z-index: $zindex-fixed;
|
40
|
+
}
|
41
|
+
.builder-nav {
|
42
|
+
padding: $builder-nav-padding;
|
43
|
+
background-color: $white;
|
44
|
+
@include media-breakpoint-up(lg) {
|
45
|
+
position: fixed;
|
46
|
+
top: $builder-header-height;
|
47
|
+
left: 0;
|
48
|
+
right: 0;
|
49
|
+
min-height: $builder-nav-height;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
.builder-nav-sm {
|
53
|
+
position: fixed;
|
54
|
+
bottom: 0;
|
55
|
+
padding: $builder-header-padding;
|
56
|
+
min-height: $builder-header-height;
|
57
|
+
@include media-breakpoint-up(lg) { display: none; }
|
58
|
+
}
|
59
|
+
|
60
|
+
// Container that provides padding to the top of the page to move content below header and nav
|
61
|
+
.builder-container {
|
62
|
+
@include media-breakpoint-down(md) { padding-bottom: $builder-header-height; }
|
63
|
+
@include media-breakpoint-up(lg) { height: 100%; }
|
64
|
+
}
|
65
|
+
|
66
|
+
// Adjusts padding on the top of builder-container depending on how many elements come before it
|
67
|
+
.builder-header ~ .builder-container {
|
68
|
+
@include media-breakpoint-up(lg) { padding-top: $builder-header-height; }
|
69
|
+
}
|
70
|
+
.builder-header ~ .builder-nav ~ .builder-container {
|
71
|
+
@include media-breakpoint-up(lg) { padding-top: $builder-header-height + $builder-nav-height; }
|
72
|
+
}
|
73
|
+
|
74
|
+
// Block containers for side by side view
|
75
|
+
.builder-body {
|
76
|
+
@include media-breakpoint-up(lg) {
|
77
|
+
width: 100%;
|
78
|
+
height: 100%;
|
79
|
+
overflow: hidden;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
.builder-preview {
|
83
|
+
padding: $builder-preview-padding ($builder-preview-padding / 2);
|
84
|
+
@include media-breakpoint-up(lg) {
|
85
|
+
float: left;
|
86
|
+
width: 67%;
|
87
|
+
height: 100%;
|
88
|
+
overflow-y: auto;
|
89
|
+
> :last-child { margin-bottom: $builder-preview-padding; }
|
90
|
+
}
|
91
|
+
}
|
92
|
+
.builder-options {
|
93
|
+
padding: $builder-options-padding;
|
94
|
+
background-color: $white;
|
95
|
+
@include media-breakpoint-up(lg) {
|
96
|
+
float: right;
|
97
|
+
width: 33%;
|
98
|
+
height: 100%;
|
99
|
+
overflow-y: auto;
|
100
|
+
> :last-child { margin-bottom: $builder-options-padding; }
|
101
|
+
}
|
102
|
+
}
|
File without changes
|
@@ -1,9 +1,185 @@
|
|
1
|
+
$carousel-fixed-height: (3 / 4); // 4:3 aspect ratio
|
2
|
+
$carousel-thumbnail-size: ($spacer * 2.5); // 80px
|
3
|
+
|
4
|
+
//
|
5
|
+
// Left/right controls for nav
|
6
|
+
//
|
7
|
+
.carousel-control-prev-icon,
|
8
|
+
.carousel-control-next-icon {
|
9
|
+
position: absolute;
|
10
|
+
top: 50%;
|
11
|
+
right: 0;
|
12
|
+
left: 0;
|
13
|
+
width: 100%;
|
14
|
+
background: none;
|
15
|
+
background-image: none;
|
16
|
+
&::before, &::after {
|
17
|
+
position: absolute;
|
18
|
+
top: -($carousel-control-icon-width * .5);
|
19
|
+
left: ($spacer * .25);
|
20
|
+
display: block;
|
21
|
+
margin: auto;
|
22
|
+
width: $carousel-control-icon-width;
|
23
|
+
height: $carousel-control-icon-width;
|
24
|
+
content: '';
|
25
|
+
}
|
26
|
+
&::before {
|
27
|
+
background-color: $white;
|
28
|
+
border-radius: 50%;
|
29
|
+
z-index: 1;
|
30
|
+
box-shadow: $box-shadow-sm;
|
31
|
+
}
|
32
|
+
&::after {
|
33
|
+
font-family: "FontAwesome";
|
34
|
+
font-size: $font-size-lg;
|
35
|
+
line-height: $carousel-control-icon-width;
|
36
|
+
color: $body-color;
|
37
|
+
text-align: center;
|
38
|
+
z-index: 10;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
.carousel-control-prev-icon {
|
42
|
+
&:after {
|
43
|
+
padding-right: 2px;
|
44
|
+
content: $carousel-control-prev-icon-bg;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
.carousel-control-next-icon {
|
48
|
+
&:after {
|
49
|
+
padding-left: 2px;
|
50
|
+
content: $carousel-control-next-icon-bg;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
|
1
55
|
// Optional indicator pips
|
2
56
|
//
|
3
|
-
// Add an
|
57
|
+
// Add an ordered list with the following class and add a list item for each
|
4
58
|
// slide your carousel holds.
|
5
|
-
|
6
59
|
.carousel-indicators {
|
7
|
-
bottom: 0;
|
8
60
|
li { border-radius: 50%; }
|
9
61
|
}
|
62
|
+
|
63
|
+
|
64
|
+
// Carousels that have a fixed aspect ratio height
|
65
|
+
.carousel-fixed-height {
|
66
|
+
width: 100%;
|
67
|
+
.carousel-inner {
|
68
|
+
&::before {
|
69
|
+
display: block;
|
70
|
+
content: "";
|
71
|
+
width: 100%;
|
72
|
+
padding-top: $carousel-fixed-height * 100%;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
.carousel-item {
|
76
|
+
position: absolute;
|
77
|
+
top: 0;
|
78
|
+
right: 0;
|
79
|
+
bottom: 0;
|
80
|
+
left: 0;
|
81
|
+
display: flex;
|
82
|
+
justify-content: center;
|
83
|
+
align-items: center;
|
84
|
+
float: none; // overrides BS carousel defaults
|
85
|
+
margin-right: 0; // overrides BS carousel defaults
|
86
|
+
width: 100%;
|
87
|
+
height: 100%;
|
88
|
+
text-align: center;
|
89
|
+
overflow: hidden;
|
90
|
+
@include transition($transition-fade);
|
91
|
+
&.active.carousel-item-left,
|
92
|
+
&.active.carousel-item-right {
|
93
|
+
@include transition($transition-fade); // overrides BS carousel defaults
|
94
|
+
}
|
95
|
+
img { // keeps image scaled proportionally
|
96
|
+
width: auto !important;
|
97
|
+
min-width: 0px !important;
|
98
|
+
max-width: 100%;
|
99
|
+
height: 100% !important;
|
100
|
+
max-height: 100%;
|
101
|
+
margin: auto;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
|
107
|
+
// Carousels that use image thumbnails for indicators
|
108
|
+
.carousel-has-thumbnails {
|
109
|
+
@include media-breakpoint-up(lg) { padding-left: ($spacer * 3.5); }
|
110
|
+
.carousel-inner {
|
111
|
+
border: $border-width solid $border-color;
|
112
|
+
border-radius: $border-radius;
|
113
|
+
}
|
114
|
+
.carousel-indicators {
|
115
|
+
margin: 0;
|
116
|
+
@include media-breakpoint-down(lg) {
|
117
|
+
justify-content: flex-start;
|
118
|
+
position: relative;
|
119
|
+
right: auto;
|
120
|
+
bottom: auto;
|
121
|
+
left: auto;
|
122
|
+
margin-top: ($spacer * .5);
|
123
|
+
width: 100%;
|
124
|
+
height: $carousel-thumbnail-size;
|
125
|
+
overflow-x: auto;
|
126
|
+
overflow-y: hidden;
|
127
|
+
@include clearfix();
|
128
|
+
}
|
129
|
+
@include media-breakpoint-up(lg) {
|
130
|
+
display: block;
|
131
|
+
position: absolute;
|
132
|
+
top: 0;
|
133
|
+
bottom: 0;
|
134
|
+
right: auto;
|
135
|
+
left: 0;
|
136
|
+
width: auto;
|
137
|
+
height: 100%;
|
138
|
+
margin-top: 0;
|
139
|
+
overflow-y: auto;
|
140
|
+
}
|
141
|
+
li {
|
142
|
+
position: relative;
|
143
|
+
width: $carousel-thumbnail-size;
|
144
|
+
height: $carousel-thumbnail-size;
|
145
|
+
text-indent: 0;
|
146
|
+
text-align: center;
|
147
|
+
background-color: transparent;
|
148
|
+
border-top: none;
|
149
|
+
border-bottom: none;
|
150
|
+
box-sizing: border-box;
|
151
|
+
border-radius: $border-radius;
|
152
|
+
overflow: hidden;
|
153
|
+
opacity: .4;
|
154
|
+
@include media-breakpoint-down(lg) {
|
155
|
+
flex-shrink: 0;
|
156
|
+
flex-basis: $carousel-thumbnail-size;
|
157
|
+
margin: 0 ($spacer * .25) 0 0;
|
158
|
+
}
|
159
|
+
@include media-breakpoint-up(lg) { margin: 0 0 ($spacer * .25); }
|
160
|
+
&::before {
|
161
|
+
display: block;
|
162
|
+
content: "";
|
163
|
+
width: 100%;
|
164
|
+
padding-top: $carousel-fixed-height * 100%;
|
165
|
+
}
|
166
|
+
&.active {
|
167
|
+
border: $border-width solid $border-color;
|
168
|
+
opacity: 1;
|
169
|
+
}
|
170
|
+
img { // keeps image scaled proportionally
|
171
|
+
position: absolute;
|
172
|
+
top: 0;
|
173
|
+
right: 0;
|
174
|
+
bottom: 0;
|
175
|
+
left: 0;
|
176
|
+
width: auto !important;
|
177
|
+
min-width: 0px !important;
|
178
|
+
max-width: 100%;
|
179
|
+
height: 100% !important;
|
180
|
+
max-height: 100%;
|
181
|
+
margin: auto;
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
}
|
data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_builder_layout.scss
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
// Specific styles needed for public onboarding pages
|
2
|
+
|
3
|
+
// Header and nav styles for builder layout
|
4
|
+
.builder-nav {
|
5
|
+
@include media-breakpoint-up(lg) { top: 113px; }
|
6
|
+
.btn { border-radius: 50px; }
|
7
|
+
}
|
8
|
+
.builder-nav-sm {
|
9
|
+
background-color: $white;
|
10
|
+
border-top: $border-width solid $border-color;
|
11
|
+
.btn { border-radius: 50px; }
|
12
|
+
}
|
data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_page_header.scss
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
$page-header-height: ($spacer * 3.5); // 11.2rem
|
2
2
|
$page-header-height-admin: ($spacer * 5); // 16rem
|
3
|
+
$page-header-height-public: (($spacer * 6.75) + 1); // 21.7rem (adds 1px for width of bottom border)
|
3
4
|
|
4
5
|
// Page header specific styles
|
5
6
|
.page-header {
|
@@ -14,17 +15,22 @@ $page-header-height-admin: ($spacer * 5); // 16rem
|
|
14
15
|
right: 0;
|
15
16
|
min-height: $page-header-height;
|
16
17
|
}
|
17
|
-
|
18
|
+
|
19
|
+
// this renders as body.admin .page-header specifying when the view there is an admin logged in (includes top admin black bar)
|
20
|
+
body.admin & {
|
18
21
|
@include media-breakpoint-up(lg) { min-height: $page-header-height-admin; }
|
19
22
|
}
|
20
23
|
}
|
21
24
|
|
22
25
|
// Moving .page-content container down with padding when page-header exists but ONLY on larger screens
|
23
26
|
.page-header {
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
@include media-breakpoint-up(lg) {
|
28
|
+
+ .page-content { padding-top: $page-header-height; }
|
29
|
+
|
30
|
+
// this renders as body.admin .page-header + .page-content specifying when the view there is an admin logged in (includes top admin black bar)
|
31
|
+
body.admin & + .page-content { padding-top: $page-header-height-admin; }
|
32
|
+
|
33
|
+
// this renders as body.nfg_ui_onboarder .page-header + .page-content specifying when the view is in a public onboarding status i.e. fundraiser onboarder in Fundraising Pages
|
34
|
+
body.nfg_ui_onboarder & + .page-content { padding-top: $page-header-height-public; }
|
29
35
|
}
|
30
36
|
}
|
@@ -6,6 +6,11 @@ module NfgUi
|
|
6
6
|
# Bootstrap Carousel Component
|
7
7
|
# https://getbootstrap.com/docs/4.1/components/carousel/
|
8
8
|
class Carousel < NfgUi::Bootstrap::Components::Base
|
9
|
+
# Turn on or off auto scrolling carousel
|
10
|
+
def auto
|
11
|
+
options.fetch(:auto, true)
|
12
|
+
end
|
13
|
+
|
9
14
|
def component_family
|
10
15
|
:carousel
|
11
16
|
end
|
@@ -15,7 +20,10 @@ module NfgUi
|
|
15
20
|
end
|
16
21
|
|
17
22
|
def data
|
18
|
-
|
23
|
+
# false on auto means that the carousel should not automatically rotate.
|
24
|
+
data_val = auto == false ? { interval: 'false' } : { ride: 'carousel' }
|
25
|
+
|
26
|
+
super.merge!(**data_val)
|
19
27
|
end
|
20
28
|
|
21
29
|
def indicators
|
@@ -16,10 +16,23 @@ module NfgUi
|
|
16
16
|
:carousel
|
17
17
|
end
|
18
18
|
|
19
|
+
def data
|
20
|
+
return super unless interval
|
21
|
+
super.merge!(interval: interval)
|
22
|
+
end
|
23
|
+
|
19
24
|
def image
|
20
25
|
options.fetch(:image, nil)
|
21
26
|
end
|
22
27
|
|
28
|
+
# manually pass in an interval numerical value
|
29
|
+
# which translates to miliseconds between carousel item
|
30
|
+
# slide transitions.
|
31
|
+
# ex: interval: 5000
|
32
|
+
def interval
|
33
|
+
options[:interval] || nil
|
34
|
+
end
|
35
|
+
|
23
36
|
def label
|
24
37
|
options.fetch(:label, nil)
|
25
38
|
end
|
@@ -41,7 +54,8 @@ module NfgUi
|
|
41
54
|
def non_html_attribute_options
|
42
55
|
super.push(:image,
|
43
56
|
:caption,
|
44
|
-
:label
|
57
|
+
:label,
|
58
|
+
:interval)
|
45
59
|
end
|
46
60
|
end
|
47
61
|
end
|
@@ -13,26 +13,23 @@ module NfgUi
|
|
13
13
|
|
14
14
|
def render
|
15
15
|
content_tag(:div, html_options) do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
concat(NfgUi::Components::Elements::CarouselControl.new({ control: :next, carousel: "##{id}" }, view_context).render)
|
20
|
-
concat(NfgUi::Components::Elements::CarouselControl.new({ control: :prev, carousel: "##{id}" }, view_context).render)
|
21
|
-
end
|
22
|
-
if indicators > 0
|
23
|
-
concat(NfgUi::Components::Elements::CarouselIndicators.new({ count: indicators, carousel: "##{id}" }, view_context).render)
|
16
|
+
concat(
|
17
|
+
content_tag(:div, class: 'carousel-inner') do
|
18
|
+
concat((block_given? ? yield : body))
|
24
19
|
end
|
20
|
+
)
|
21
|
+
if controls
|
22
|
+
concat(NfgUi::Components::Elements::CarouselControl.new({ control: :next, carousel: "##{id}" }, view_context).render)
|
23
|
+
concat(NfgUi::Components::Elements::CarouselControl.new({ control: :prev, carousel: "##{id}" }, view_context).render)
|
24
|
+
end
|
25
|
+
if indicators > 0
|
26
|
+
concat(NfgUi::Components::Elements::CarouselIndicators.new({ count: indicators, carousel: "##{id}" }, view_context).render)
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
def carousel_inner_css_classes
|
32
|
-
[
|
33
|
-
'carousel-inner',
|
34
|
-
('pb-3' if indicators > 0)
|
35
|
-
].join(' ').squish
|
31
|
+
def non_html_attribute_options
|
32
|
+
super.push(:auto)
|
36
33
|
end
|
37
34
|
end
|
38
35
|
end
|
data/lib/nfg_ui/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nfg_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Roehm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bootstrap
|
@@ -433,7 +433,6 @@ files:
|
|
433
433
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_bee.scss
|
434
434
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_builder_layout.scss
|
435
435
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_card.scss
|
436
|
-
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_preview.scss
|
437
436
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_content_section.scss
|
438
437
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_questions_questionnaire.scss
|
439
438
|
- app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_receipt_language.scss
|
@@ -524,10 +523,12 @@ files:
|
|
524
523
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_tooltip.scss
|
525
524
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_type.scss
|
526
525
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_avatar.scss
|
526
|
+
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_builder_layout.scss
|
527
527
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_chat.scss
|
528
528
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_device_preview.scss
|
529
529
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_drawer.scss
|
530
530
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_icon.scss
|
531
|
+
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_iframe_preview.scss
|
531
532
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_illustration.scss
|
532
533
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_mobile.scss
|
533
534
|
- app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_nav_step.scss
|
@@ -568,6 +569,7 @@ files:
|
|
568
569
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_navbar.scss
|
569
570
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_reboot.scss
|
570
571
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_background_variations.scss
|
572
|
+
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_builder_layout.scss
|
571
573
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_donor_account.scss
|
572
574
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_donor_scroll.scss
|
573
575
|
- app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_event.scss
|