nfg_ui 0.11.3 → 0.11.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_badge.scss +4 -1
  4. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_buttons.scss +4 -1
  5. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_custom-forms.scss +4 -1
  6. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_custom.scss +1 -0
  7. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/custom/_activity_feed.scss +7 -0
  8. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom.scss +5 -0
  9. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_modal.scss +16 -0
  10. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_activity_feed.scss +34 -0
  11. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_bee.scss +15 -0
  12. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_builder_layout.scss +3 -2
  13. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_card.scss +1 -1
  14. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_gallery.scss +46 -0
  15. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_interaction.scss +1 -1
  16. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_overlay_blocker.scss +1 -1
  17. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_readmore.scss +24 -0
  18. data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_sortable.scss +29 -0
  19. data/app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/_custom.scss +1 -0
  20. data/app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_icon.scss +5 -0
  21. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_alert.scss +4 -4
  22. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_badge.scss +3 -0
  23. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_buttons.scss +3 -0
  24. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_card.scss +5 -1
  25. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_custom-forms.scss +16 -2
  26. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_custom.scss +2 -0
  27. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_dropdown.scss +9 -1
  28. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_reboot.scss +4 -0
  29. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_avatar.scss +1 -1
  30. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_icon.scss +34 -0
  31. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_skeleton.scss +50 -0
  32. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_slat.scss +3 -18
  33. data/app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_tile.scss +4 -4
  34. data/lib/nfg_ui/bootstrap/components/modal.rb +5 -1
  35. data/lib/nfg_ui/components/patterns/modal.rb +7 -0
  36. data/lib/nfg_ui/components/traits.rb +1 -0
  37. data/lib/nfg_ui/components/traits/modal.rb +15 -0
  38. data/lib/nfg_ui/components/traits/typeface.rb +0 -1
  39. data/lib/nfg_ui/version.rb +1 -1
  40. metadata +13 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 332c555dc58cfd23c4c1620eb247a089e617bce9c4d9425eb134c8294d60b781
4
- data.tar.gz: 11f734c4d7f450be761e0566b66dd7a5921eaffe64c095f75fc28d00ddd85ea5
3
+ metadata.gz: c56c2858567b7c68a6b4eb28d7c37e91e0e266733bbdc04c56244894b4f7386f
4
+ data.tar.gz: 3969770fbb29fba8da5a50325f7ee5c563a3e659e427c9c96785f08b732c986e
5
5
  SHA512:
6
- metadata.gz: 5e211f554ab72b7147ccf0185b945fe347d955ede629a1599b225434d5d31a9c969db0844a43afa230705937ae9c2280f47f5780d2251dee7e57fce57c8b4de8
7
- data.tar.gz: 22c1f6878558390dcccd8f9ed61f4125141ebf27a3ffe79747895821a705af1b3f008682b2a4726567a2f29b1c76a2003017049474640800ea9d6a1956affb2e
6
+ metadata.gz: 05e1339fde85266bec3c65e0b008abce02553f895cfcda836c25d8eb2e1b1ae725d3c01b833302da7d929d1e4852e1a738754919f76570dcf4fd3ca0f376f764
7
+ data.tar.gz: c8e586bd2b28d7ea9dfa24a5a036c76afa465cd6bad269962b9c6c4b74ce5998479e053d68edb165e1c67386f97dc9fb4c98003e5dbdfb22b469a809083def0c
data/Rakefile CHANGED
@@ -36,7 +36,7 @@ task :publish, %i[override_flag] do |_, override_flag: nil|
36
36
  subtask_args << ",#{override_flag}" if override_flag
37
37
 
38
38
  Dir.chdir("#{__dir__}/publisher") do
39
- Bundler.with_clean_env do
39
+ Bundler.with_unbundled_env do
40
40
  sh "RAILS_ENV=production bundle exec rake publish[#{subtask_args}]" do |ok, _|
41
41
  puts 'unable to publish assets' unless ok
42
42
  end
@@ -1,5 +1,8 @@
1
1
  @each $color, $value in $colors {
2
2
  .#{$color} {
3
- .badge-primary { @include badge-variant($value); }
3
+ .badge-primary {
4
+ @include badge-variant($value);
5
+ color: $white !important;
6
+ }
4
7
  }
5
8
  }
@@ -1,6 +1,9 @@
1
1
  @each $color, $value in $colors {
2
2
  .#{$color} {
3
- .btn-primary { @include button-variant($value, $value); }
3
+ .btn-primary {
4
+ @include button-variant($value, $value);
5
+ color: $white !important;
6
+ }
4
7
  .show > .btn-primary.dropdown-toggle {
5
8
  background-color: darken($value, 10%);
6
9
  border-color: darken($value, 10%);
@@ -20,6 +20,9 @@
20
20
  }
21
21
  }
22
22
  }
23
- .custom-select { color: $value; }
23
+ .custom-select {
24
+ color: $value;
25
+ &:focus { border-color: $value; }
26
+ }
24
27
  }
25
28
  }
@@ -1,3 +1,4 @@
1
1
  // Our custom styles
2
+ @import 'custom/activity_feed';
2
3
  @import 'custom/icons';
3
4
  @import 'custom/nav_step';
@@ -0,0 +1,7 @@
1
+ @each $color, $value in $colors {
2
+ .activity-feed-item {
3
+ &.#{nth($color, 1)} {
4
+ .activity-icon { background-color: $value; }
5
+ }
6
+ }
7
+ }
@@ -1,4 +1,6 @@
1
1
  // Our custom styles
2
+ @import 'custom/activity_feed';
3
+ @import 'custom/bee';
2
4
  @import 'custom/builder_layout';
3
5
  @import 'custom/campaign_card';
4
6
  @import 'custom/campaign_preview';
@@ -7,11 +9,14 @@
7
9
  @import 'custom/custom_receipt_language';
8
10
  @import 'custom/email_preview';
9
11
  @import 'custom/free_trial';
12
+ @import 'custom/gallery';
10
13
  @import 'custom/icomoon';
11
14
  @import 'custom/interaction';
12
15
  @import 'custom/overlay_blocker';
13
16
  @import 'custom/page_header';
17
+ @import 'custom/readmore';
14
18
  @import 'custom/share_dropdown';
19
+ @import 'custom/sortable';
15
20
  @import 'custom/status_indicator';
16
21
  @import 'custom/tile';
17
22
  @import 'custom/video_countdown';
@@ -4,3 +4,19 @@
4
4
  + #quick-add-modal { display: none !important; }
5
5
  ~ .modal-backdrop.show ~ .modal-backdrop.show { display: none !important; }
6
6
  }
7
+
8
+
9
+ // Full page cover modal option
10
+ .modal-cover {
11
+ margin: 0;
12
+ width: 100%;
13
+ max-width: 100%;
14
+ height: 100%;
15
+ transform: none !important; // removes default 50px transform that occurs on modal showing (.fade and .show)
16
+ .modal-content {
17
+ display: block;
18
+ height: 100%;
19
+ border: none;
20
+ border-radius: 0;
21
+ }
22
+ }
@@ -0,0 +1,34 @@
1
+ // Activity feed list items
2
+ .activity-feed-item {
3
+ position: relative;
4
+ padding: 0 0 $spacer ($spacer * 1.5);
5
+ border: none;
6
+ z-index: 0;
7
+ &::after {
8
+ position: absolute;
9
+ top: 0;
10
+ left: 12px;
11
+ bottom: 0;
12
+ z-index: 0;
13
+ border-left: $border-width solid $border-color;
14
+ content: "";
15
+ }
16
+ &:last-child {
17
+ padding-bottom: 0;
18
+ &::after { display: none; }
19
+ }
20
+ .activity-icon {
21
+ position: absolute;
22
+ top: 2px;
23
+ left: 0;
24
+ display: block;
25
+ width: $spacer;
26
+ height: $spacer;
27
+ font-size: $font-size-sm;
28
+ line-height: $spacer;
29
+ z-index: 1;
30
+ text-align: center;
31
+ @include border-radius(50%);
32
+ box-shadow: 0 0 0 2px rgba(255,255,255,1);
33
+ }
34
+ }
@@ -0,0 +1,15 @@
1
+ #bee_plugin_container {
2
+ height: 600px; // fallback value if calc() isn't supported
3
+ border-top: 1px solid $border-color;
4
+ border-bottom: 1px solid $border-color;
5
+ }
6
+
7
+ // Height if just the builder-header is present
8
+ .builder-header + .builder-container {
9
+ #bee_plugin_container { height: calc(100vh - 72px); }
10
+ }
11
+
12
+ // Height if both builder-header and builder-nav are present (typical in onboarder)
13
+ .builder-header + .builder-nav + .builder-container {
14
+ #bee_plugin_container { height: calc(100vh - 180px); }
15
+ }
@@ -80,10 +80,11 @@ $builder-preview-padding: ($spacer * 2);
80
80
  }
81
81
  }
82
82
  .builder-preview {
83
+ background-color: $body-bg;
83
84
  padding: $builder-preview-padding ($builder-preview-padding / 2);
84
85
  @include media-breakpoint-up(lg) {
85
86
  float: left;
86
- width: 67vw;
87
+ width: 67%;
87
88
  height: 100%;
88
89
  overflow-y: auto;
89
90
  > :last-child { margin-bottom: $builder-preview-padding; }
@@ -95,7 +96,7 @@ $builder-preview-padding: ($spacer * 2);
95
96
  @include media-breakpoint-down(md) { border-bottom: $border-width solid $border-color; }
96
97
  @include media-breakpoint-up(lg) {
97
98
  float: right;
98
- width: 33vw;
99
+ width: 33%;
99
100
  height: 100%;
100
101
  border-left: $border-width solid $border-color;
101
102
  overflow-y: auto;
@@ -3,4 +3,4 @@
3
3
  height: ($spacer * 8);
4
4
  overflow: hidden;
5
5
  .card-img { min-height: 100%; }
6
- }
6
+ }
@@ -0,0 +1,46 @@
1
+ // Gallery styles
2
+ .card-gallery {
3
+
4
+ // Gallery image styles
5
+ .card-gallery-img {
6
+ height: ($spacer * 14); // sets height of gallery image preview
7
+ overflow: hidden;
8
+ z-index: 0;
9
+ .card-img {
10
+ min-height: 100%;
11
+ z-index: 0;
12
+ }
13
+ .card-img-overlay { z-index: 1; }
14
+ .card-gallery-img-overlay {
15
+ display: block;
16
+ position: absolute;
17
+ top: 0;
18
+ right: 0;
19
+ bottom: 0;
20
+ left: 0;
21
+ text-align: center;
22
+ background-color: $modal-backdrop-bg;
23
+ transition: $transition-fade;
24
+ opacity: 0;
25
+ z-index: 10;
26
+ @include hover { opacity: 1; }
27
+ > .card-gallery-img-overlay-text {
28
+ position: absolute;
29
+ top: 50%;
30
+ left: 50%;
31
+ width: 100%;
32
+ transform: translate(-50%, -50%);
33
+ }
34
+ }
35
+ }
36
+
37
+ // Gallery card body styles
38
+ .card-body { z-index: 10; }
39
+ .badge-highlight {
40
+ position: absolute;
41
+ top: -($card-spacer-y * .5);
42
+ left: $card-spacer-y;
43
+ }
44
+ }
45
+
46
+
@@ -1,2 +1,2 @@
1
1
  // Sort
2
- [class*='sort']:not(.sort_link) { cursor: move; }
2
+ .ui-sortable-handle, [data-sortable="handle"] { cursor: move; }
@@ -40,7 +40,7 @@ $redacted-font-family: "BLOKK";
40
40
  font-family: $font-family-base;
41
41
  letter-spacing: 0;
42
42
  word-spacing: 0;
43
- background-color: rgba(255,255,255,0.9);
43
+ background-color: transparentize($white, 0.2);
44
44
  }
45
45
  .overlay-blur {
46
46
  transition: $transition-base;
@@ -0,0 +1,24 @@
1
+ // Powers the readmore.js plugin
2
+ .expandable,
3
+ .readmore-js-section {
4
+ position: relative;
5
+ z-index: 10;
6
+ transition: $transition-collapse;
7
+ &.readmore-js-collapsed { overflow: hidden; }
8
+ &.readmore-js-expanded { overflow: visible; }
9
+ }
10
+ .readmore-js-collapsed:after {
11
+ position: absolute;
12
+ bottom: 0;
13
+ left: 0;
14
+ width: 100%;
15
+ height: ($spacer * 1.5);
16
+ @include gradient-y(transparentize($white, 1), transparentize($white, 0));
17
+ content: '';
18
+ z-index: 20;
19
+ }
20
+ .readmore-js-toggle {
21
+ padding-top: ($spacer * .5);
22
+ padding-bottom: ($spacer * .5);
23
+ z-index: 30;
24
+ }
@@ -0,0 +1,29 @@
1
+ // Shared sorting styles
2
+ .slat, .option {
3
+ &.ui-sortable-placeholder {
4
+ visibility: visible !important;
5
+ background: theme-color("light");
6
+ border: $border-width dashed $border-color;
7
+ }
8
+ &.ui-sortable-helper { opacity: .5; }
9
+ }
10
+ // Slat
11
+ .slat {
12
+ &.ui-sortable-placeholder {
13
+ + .slat { border-top: none; }
14
+ + &.ui-sortable-helper {
15
+ border-top-style: dashed;
16
+ + &.slat { border-top: none; }
17
+ }
18
+ }
19
+ &.ui-sortable-helper {
20
+ border-top: none;
21
+ border-top: none;
22
+ + &.ui-sortable-placeholder { border-top: $border-width dashed $border-color; }
23
+ }
24
+ }
25
+
26
+ // Sortable options (used on form fields for checkboxes/radios/select options)
27
+ .option {
28
+ &.ui-sortable-placeholder { margin-bottom: ($spacer * .25); }
29
+ }
@@ -1,6 +1,7 @@
1
1
  // Our custom styles
2
2
  @import 'custom/avatar';
3
3
  @import 'custom/everyday_giving';
4
+ @import 'custom/icon';
4
5
  @import 'custom/nav_step';
5
6
  @import 'custom/slat';
6
7
  @import 'custom/video_countdown';
@@ -0,0 +1,5 @@
1
+ .icon-circle {
2
+ display: -ms-inline-flexbox;
3
+ -ms-flex-align: center;
4
+ -ms-flex-pack: center;
5
+ }
@@ -6,11 +6,11 @@
6
6
  &:hover, &:active { text-decoration: none; }
7
7
  }
8
8
  }
9
- .alert-success a:not(.btn) { color: $success; }
10
- .alert-info a:not(.btn) { color: $info; }
11
- .alert-warning a:not(.btn) { color: $warning; }
9
+ .alert-success a:not(.btn) { color: $success !important; }
10
+ .alert-info a:not(.btn) { color: $info !important; }
11
+ .alert-warning a:not(.btn) { color: $warning !important; }
12
12
  .alert-danger, .alert-error {
13
- a:not(.btn) { color: $danger; }
13
+ a:not(.btn) { color: $danger !important; }
14
14
  }
15
15
  .alert-gray, .alert-notice,
16
16
  .alert-light, .alert-dark {
@@ -0,0 +1,3 @@
1
+ // overrides color contrast settings
2
+ .badge-secondary { color: $white !important; }
3
+ .badge-warning { color: $white !important; }
@@ -15,3 +15,6 @@
15
15
  }
16
16
  }
17
17
  .btn-link { font-weight: $btn-font-weight; }
18
+
19
+ // overrides color contrast settings
20
+ .btn-warning { color: $white !important; }
@@ -13,6 +13,10 @@
13
13
  .card-footer { border-top: none; }
14
14
 
15
15
  // Card image
16
- .card-img-overlay { @include gradient-y(transparentize($black, 1), transparentize($black, .5)); }
16
+ .card-img-overlay {
17
+ top: auto; // makes the overlay gradient and container "stick" to bottom of parent container
18
+ min-height: ($spacer * 2);
19
+ @include gradient-y(transparentize($black, 1), transparentize($black, .5));
20
+ }
17
21
 
18
22
  .card-img { @include border-radius(0); }
@@ -3,6 +3,7 @@
3
3
  // Base class takes care of all the key behavioral aspects.
4
4
 
5
5
  .custom-control {
6
+ padding-left: 0;
6
7
  .custom-control-input {
7
8
  &:checked {
8
9
  ~ .custom-control-label,
@@ -10,18 +11,26 @@
10
11
  }
11
12
  &:focus:not(:checked) ~ .custom-control-label::before { border-color: $input-border-color; }
12
13
  }
14
+ + .custom-control:not(.custom-control-inline) { margin-top: ($spacer * .25); }
13
15
  }
16
+ .custom-checkbox, .custom-radio { min-width: $custom-control-gutter + $custom-control-indicator-size; } // sets minimum width to have space even if custom-control-label isn't there
14
17
 
15
18
  // Custom control indicators
16
19
  //
17
20
  // Build the custom controls out of pseudo-elements.
18
21
 
19
22
  .custom-control-label {
23
+ padding-left: $custom-control-gutter + $custom-control-indicator-size;
24
+ min-width: $custom-control-gutter + $custom-control-indicator-size;
25
+ min-height: $custom-control-indicator-size;
20
26
  font-weight: $font-weight-normal;
21
27
  cursor: pointer;
22
28
 
23
29
  // Background-color and icon
24
- &::before, &::after { top: .3rem; }
30
+ &::before, &::after {
31
+ top: .3rem;
32
+ left: 0;
33
+ }
25
34
  &::before { border: $border-width solid $border-color; }
26
35
  &::after { cursor: pointer; }
27
36
  }
@@ -41,6 +50,9 @@
41
50
  //
42
51
 
43
52
  .custom-select {
53
+ display: block;
54
+ width: auto;
55
+ max-width: 100%;
44
56
  font-weight: $btn-font-weight;
45
57
  cursor: pointer;
46
58
  box-shadow: none;
@@ -97,7 +109,10 @@
97
109
  // Tweak a few things for switches
98
110
 
99
111
  .custom-switch {
112
+ padding-left: 0;
100
113
  .custom-control-label {
114
+ padding-left: $custom-switch-width + $custom-control-gutter;
115
+ &::before, &::after { left: 0; }
101
116
  &::before {
102
117
  padding-left: 28px;
103
118
  font-size: 12px;
@@ -109,7 +124,6 @@
109
124
  }
110
125
  &::after {
111
126
  top: 0;
112
- left: -($custom-switch-width + $custom-control-gutter);
113
127
  background-color: $white;
114
128
  border: $border-width solid $border-color;
115
129
  border-radius: 50%;
@@ -1,11 +1,13 @@
1
1
  // Our custom styles
2
2
  @import 'custom/avatar';
3
3
  @import 'custom/device_preview';
4
+ @import 'custom/icon';
4
5
  @import 'custom/illustration';
5
6
  @import 'custom/mobile';
6
7
  @import 'custom/nav_step';
7
8
  @import 'custom/redactor';
8
9
  @import 'custom/social_share';
10
+ @import 'custom/skeleton';
9
11
  @import 'custom/slat';
10
12
  @import 'custom/ticket';
11
13
  @import 'custom/tile';
@@ -9,6 +9,7 @@
9
9
  cursor: default;
10
10
  pointer-events: none;
11
11
  }
12
+ &:not(.text-danger) { color: inherit !important; }
12
13
  }
13
14
 
14
15
 
@@ -21,7 +22,14 @@
21
22
 
22
23
 
23
24
  // Sizing
24
- .dropdown-menu-md { min-width: ($spacer * 12); }
25
+ .dropdown-menu-md, .dropdown-menu-lg { min-width: ($spacer * 10); }
26
+ .dropdown-menu-md {
27
+ @include media-breakpoint-up(sm) { min-width: ($spacer * 12); }
28
+ }
29
+ .dropdown-menu-lg {
30
+ @include media-breakpoint-up(sm) { min-width: ($spacer * 24); }
31
+ }
32
+
25
33
 
26
34
 
27
35
  // Styles for wider "My Tools" dropdown in top nav
@@ -18,6 +18,10 @@ body {
18
18
 
19
19
  div { position: relative; } // setting this as a base to avoid improper absolute positioning elements
20
20
 
21
+ p {
22
+ &.disabled { opacity: .4; } // used on filter bars on list pages for bulk actions
23
+ }
24
+
21
25
  ol,
22
26
  ul,
23
27
  dl {
@@ -21,7 +21,7 @@
21
21
  .avatar-text {
22
22
  font-weight: $font-weight-bold;
23
23
  font-size: $font-size-base;
24
- line-height: 1;
24
+ line-height: 1.2;
25
25
  color: $body-color;
26
26
  text-align: center;
27
27
  white-space: nowrap;
@@ -0,0 +1,34 @@
1
+ // Custom icon styles
2
+ // icons shouldn't be larger than the h1 font-size. use illustrations for larger visuals.
3
+ // don't use icon circles for icons smaller than icon-circle-sm size. use just an icon.
4
+ .icon-circle {
5
+ position: relative;
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ vertical-align: middle;
10
+ width: ($spacer * 1.5);
11
+ height: ($spacer * 1.5);
12
+ font-size: $font-size-base;
13
+ background-color: $border-color;
14
+ border-radius: 50%;
15
+ &.icon-circle-outline {
16
+ background-color: $white;
17
+ border: $border-width solid $border-color;
18
+ }
19
+ &.icon-circle-sm {
20
+ width: $spacer;
21
+ height: $spacer;
22
+ font-size: $font-size-sm;
23
+ }
24
+ &.icon-circle-lg {
25
+ width: ($spacer * 2);
26
+ height: ($spacer * 2);
27
+ font-size: $font-size-lg;
28
+ }
29
+ &.icon-circle-xl {
30
+ width: ($spacer * 3);
31
+ height: ($spacer * 3);
32
+ font-size: $h1-font-size;
33
+ }
34
+ }
@@ -0,0 +1,50 @@
1
+ // Skeleton styles for placheholder content
2
+ .skeleton-avatar, .skeleton-heading, .skeleton-paragraph {
3
+ display: inline-block;
4
+ margin-bottom: ($spacer * .5);
5
+ background-color: $border-color;
6
+ overflow: hidden;
7
+ &::after {
8
+ position: absolute;
9
+ top: 0;
10
+ right: 0;
11
+ bottom: 0;
12
+ left: 0;
13
+ width: 100%;
14
+ height: 100%;
15
+ background-color: $body-bg;
16
+ animation: skeleton-sheen 1s linear infinite alternate;
17
+ content: '';
18
+
19
+ // any skeleton element inside a container with the the .loaded class removes the sheen animation.
20
+ .loaded & {
21
+ background-color: transparent;
22
+ animation: none;
23
+ }
24
+ }
25
+ }
26
+ .skeleton-avatar {
27
+ width: ($spacer * 1.5);
28
+ height: ($spacer * 1.5);
29
+ border-radius: 50%;
30
+ }
31
+ .skeleton-heading {
32
+ width: 70%;
33
+ height: $spacer;
34
+ border-radius: ($spacer * .5);
35
+ &:nth-child(even) { width: 45%; }
36
+ }
37
+ .skeleton-paragraph {
38
+ width: 100%;
39
+ height: ($spacer * .5);
40
+ border-radius: ($spacer * .25);
41
+ &:nth-child(2n+1) { width: 90%; }
42
+ &:nth-child(3n+1) { width: 75%; }
43
+ &:nth-child(4n+1) { width: 80%; }
44
+ }
45
+
46
+ // Sheen animation used on skeleton elements
47
+ @keyframes skeleton-sheen {
48
+ 0% { opacity: .45; }
49
+ to { opacity: .9; }
50
+ }
@@ -8,7 +8,7 @@ $slat-actions-lg-width: 108px;
8
8
  flex-flow: column nowrap;
9
9
 
10
10
  // Nowrap version -- used when the goal is to have all slat-item columns on the same line in smaller screens
11
- :not(.slats-nowrap) { // noting the :not() psuedo-class meaning all slats that don't have this class get these styles
11
+ &:not(.slats-nowrap) { // noting the :not() psuedo-class meaning all slats that don't have this class get these styles
12
12
  .slat-body {
13
13
  @include media-breakpoint-down(sm) { flex-direction: column; }
14
14
  }
@@ -37,23 +37,8 @@ $slat-actions-lg-width: 108px;
37
37
  padding-bottom: ($spacer * 1.5);
38
38
  }
39
39
 
40
- // Various states
41
- &.ui-sortable-placeholder {
42
- visibility: visible !important;
43
- background: theme-color("light");
44
- border: $border-width dashed $border-color;
45
- + .slat { border-top: none; }
46
- + &.ui-sortable-helper {
47
- border-top-style: dashed;
48
- + &.slat { border-top: none; }
49
- }
50
- }
51
- &.ui-sortable-helper {
52
- border-top: none;
53
- opacity: .5;
54
- border-top: none;
55
- + &.ui-sortable-placeholder { border-top: $border-width dashed $border-color; }
56
- }
40
+ // Status
41
+ &.pending { background-color: #fff5e0; }
57
42
  }
58
43
 
59
44
 
@@ -22,13 +22,13 @@
22
22
  display: block;
23
23
  margin-right: auto;
24
24
  margin-left: auto;
25
- @include media-breakpoint-down(sm) { padding-bottom: $grid-gutter-width; }
26
- @include media-breakpoint-up(sm) { padding-bottom: ($grid-gutter-width * 1.5); }
25
+ @include media-breakpoint-down(sm) { padding-bottom: ($grid-gutter-width * 1.5); }
26
+ @include media-breakpoint-up(sm) { padding-bottom: ($grid-gutter-width * 2); }
27
27
  &:last-child { padding-bottom: 0; }
28
28
  + .tile-section {
29
29
  border-top: $border-width solid $border-color;
30
- @include media-breakpoint-down(sm) { padding-top: $grid-gutter-width; }
31
- @include media-breakpoint-up(sm) { padding-top: ($grid-gutter-width * 1.5); }
30
+ @include media-breakpoint-down(sm) { padding-top: ($grid-gutter-width * 1.5); }
31
+ @include media-breakpoint-up(sm) { padding-top: ($grid-gutter-width * 2); }
32
32
  }
33
33
  }
34
34
 
@@ -28,7 +28,11 @@ module NfgUi
28
28
  content_tag(:div, class: modal_dialog_css_classes, role: 'document') do
29
29
  content_tag(:div, class: 'modal-content') do
30
30
  capture do
31
- concat(NfgUi::Bootstrap::Components::ModalHeader.new({ title: title }, view_context).render)
31
+ # Optionally, leave title nil
32
+ # and the title / dismiss functionality is left out.
33
+ if title.present?
34
+ concat(NfgUi::Bootstrap::Components::ModalHeader.new({ title: title }, view_context).render)
35
+ end
32
36
  if render_in_body
33
37
  concat(NfgUi::Bootstrap::Components::ModalBody.new({ body: (block_given? ? yield : body) }, view_context).render)
34
38
  else
@@ -10,7 +10,14 @@ module NfgUi
10
10
  include NfgUi::Components::Utilities::Renderable
11
11
  include NfgUi::Components::Utilities::Titleable
12
12
 
13
+ include NfgUi::Components::Traits::Modal
13
14
  include NfgUi::Components::Traits::Size
15
+
16
+ private
17
+
18
+ def resized?
19
+ [:sm, :lg, :xl, :cover].include?(size)
20
+ end
14
21
  end
15
22
  end
16
23
  end
@@ -18,6 +18,7 @@ module NfgUi
18
18
  DropdownToggle
19
19
  Icon
20
20
  ListGroup
21
+ Modal
21
22
  Muted
22
23
  Nav
23
24
  Navbar
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NfgUi
4
+ module Components
5
+ module Traits
6
+ module Modal
7
+ TRAITS = %i[cover].freeze
8
+
9
+ def cover_trait
10
+ options[:size] = :cover
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -10,7 +10,6 @@ module NfgUi
10
10
  heading
11
11
  subheading
12
12
  title
13
- muted
14
13
  truncate].freeze
15
14
 
16
15
  def body_trait
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NfgUi
4
- VERSION = '0.11.3'
4
+ VERSION = '0.11.8'
5
5
  end
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.11.3
4
+ version: 0.11.8
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: 2020-10-15 00:00:00.000000000 Z
12
+ date: 2020-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bootstrap
@@ -407,6 +407,7 @@ files:
407
407
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_reboot.scss
408
408
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_type.scss
409
409
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/_utilities.scss
410
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/custom/_activity_feed.scss
410
411
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/custom/_icons.scss
411
412
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/nfg_theme/custom/_nav_step.scss
412
413
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/color_variations/plugins/_datetimepicker.scss
@@ -419,6 +420,8 @@ files:
419
420
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_nav.scss
420
421
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_navbar.scss
421
422
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_tables.scss
423
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_activity_feed.scss
424
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_bee.scss
422
425
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_builder_layout.scss
423
426
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_card.scss
424
427
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_preview.scss
@@ -427,11 +430,14 @@ files:
427
430
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_receipt_language.scss
428
431
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_email_preview.scss
429
432
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_free_trial.scss
433
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_gallery.scss
430
434
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_icomoon.scss
431
435
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_interaction.scss
432
436
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_overlay_blocker.scss
433
437
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_page_header.scss
438
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_readmore.scss
434
439
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_share_dropdown.scss
440
+ - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_sortable.scss
435
441
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_status_indicator.scss
436
442
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_tile.scss
437
443
  - app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_video_countdown.scss
@@ -475,6 +481,7 @@ files:
475
481
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/_utilities.scss
476
482
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_avatar.scss
477
483
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_everyday_giving.scss
484
+ - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_icon.scss
478
485
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_nav_step.scss
479
486
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_slat.scss
480
487
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/custom/_video_countdown.scss
@@ -485,6 +492,7 @@ files:
485
492
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/nfg_theme/utilities/_flex.scss
486
493
  - app/assets/stylesheets/nfg_ui/network_for_good/core/legacy_browser_support/plugins/_sticky_div.scss
487
494
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_alert.scss
495
+ - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_badge.scss
488
496
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_button-group.scss
489
497
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_buttons.scss
490
498
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_card.scss
@@ -500,10 +508,12 @@ files:
500
508
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/_type.scss
501
509
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_avatar.scss
502
510
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_device_preview.scss
511
+ - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_icon.scss
503
512
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_illustration.scss
504
513
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_mobile.scss
505
514
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_nav_step.scss
506
515
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_redactor.scss
516
+ - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_skeleton.scss
507
517
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_slat.scss
508
518
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_social_share.scss
509
519
  - app/assets/stylesheets/nfg_ui/network_for_good/core/nfg_theme/custom/_ticket.scss
@@ -740,6 +750,7 @@ files:
740
750
  - lib/nfg_ui/components/traits/dropdown_toggle.rb
741
751
  - lib/nfg_ui/components/traits/icon.rb
742
752
  - lib/nfg_ui/components/traits/list_group.rb
753
+ - lib/nfg_ui/components/traits/modal.rb
743
754
  - lib/nfg_ui/components/traits/muted.rb
744
755
  - lib/nfg_ui/components/traits/nav.rb
745
756
  - lib/nfg_ui/components/traits/nav_item.rb