nfg_ui 0.9.8.15
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +431 -0
- data/Rakefile +23 -0
- data/app/assets/config/nfg_ui_manifest.js +3 -0
- data/app/assets/images/nfg_ui/app_icon/android-chrome-192x192.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/android-chrome-384x384.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/apple-touch-icon.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/browserconfig.xml.erb +9 -0
- data/app/assets/images/nfg_ui/app_icon/favicon-16x16.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/favicon-32x32.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/favicon.ico +0 -0
- data/app/assets/images/nfg_ui/app_icon/mstile-150x150.png +0 -0
- data/app/assets/images/nfg_ui/app_icon/safari-pinned-tab.svg +38 -0
- data/app/assets/images/nfg_ui/app_icon/site.webmanifest.erb +19 -0
- data/app/assets/images/nfg_ui/email/icons/fa-caret-right.png +0 -0
- data/app/assets/images/nfg_ui/email/icons/fa-facebook.png +0 -0
- data/app/assets/images/nfg_ui/email/icons/fa-linkedin.png +0 -0
- data/app/assets/images/nfg_ui/email/icons/fa-twitter.png +0 -0
- data/app/assets/images/nfg_ui/email/icons/fa-youtube.png +0 -0
- data/app/assets/images/nfg_ui/email/nfg-logo.png +0 -0
- data/app/assets/javascripts/nfg_ui/application.coffee +16 -0
- data/app/assets/javascripts/nfg_ui/collapsible_toggle.coffee +47 -0
- data/app/assets/javascripts/nfg_ui/prevent_clickable_disabled_element.coffee +47 -0
- data/app/assets/javascripts/nfg_ui/vendor/select2.coffee +26 -0
- data/app/assets/javascripts/nfg_ui/vendor/tooltips.coffee +18 -0
- data/app/assets/stylesheets/nfg_ui/bootstrap/application.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/_variables.scss +1123 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/application.scss +23 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_alert.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_backgrounds.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_button-group.scss +8 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_buttons.scss +17 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_card.scss +20 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom.scss +20 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_custom_forms.scss +156 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_dropdown.scss +24 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_forms.scss +85 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_media.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_nav.scss +22 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_navbar.scss +132 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_progress.scss +3 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_reboot.scss +31 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_tables.scss +7 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_tooltip.scss +5 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/_type.scss +82 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_card.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_campaign_preview.scss +25 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_content_section_buttons.scss +11 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_questions_questionnaire.scss +84 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_custom_receipt_language.scss +15 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_email_preview.scss +24 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_interaction.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_mobile.scss +4 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_nav_step.scss +95 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_overlay_blocker.scss +49 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_page_header.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_product_icons.scss +45 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_redactor.scss +25 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_share_dropdown.scss +53 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_slat.scss +113 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_social_share.scss +44 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_status_indicator.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_ticket.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/admin/nfg_theme/custom/_tile.scss +71 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/application.scss +38 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/foundation_emails/_alignment.scss +93 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/foundation_emails/_button.scss +345 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_backgrounds.scss +15 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_layout.scss +33 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_rainbow_bar.scss +47 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_spacers.scss +60 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/nfg_theme/_typography.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/email/settings/_settings.scss +148 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/_variables.scss +1124 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/application.scss +23 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/application.scss +19 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_badge.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_buttons.scss +43 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_custom.scss +3 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_custom_forms.scss +50 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_forms.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_functions.scss +29 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_navbar.scss +18 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_reboot.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_type.scss +16 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/_utilities.scss +8 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/custom/_everyday_default.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/nfg_theme/custom/_nav_step.scss +20 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/entity_branding/plugins/_select2.scss +16 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/_variables.scss +13 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/application.scss +35 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_breadcrumb.scss +4 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_button-group.scss +10 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_card.scss +45 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_carousel.scss +18 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_custom-forms.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_custom.scss +4 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_forms.scss +68 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_grid.scss +4 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_input-group.scss +25 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_list-group.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_media.scss +5 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_mixins.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_modal.scss +28 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_nav.scss +21 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_navbar.scss +54 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_pagination.scss +1 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_progress.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/_utilities.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_everyday_giving.scss +8 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_nav_step.scss +13 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/custom/_slat.scss +66 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_breakpoints.scss +123 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_grid-framework.scss +30 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/mixins/_grid.scss +10 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/utilities/_display.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/nfg_theme/utilities/_flex.scss +49 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/legacy_browser_support/plugins/_sticky_div.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_alert.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_buttons.scss +17 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_card.scss +6 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_carousel.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_custom.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_custom_forms.scss +156 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_dropdown.scss +1 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_event.scss +19 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_forms.scss +83 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_list-group.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_progress.scss +9 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_reboot.scss +31 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_tooltip.scss +5 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/_type.scss +81 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_admin_bar.scss +20 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_background_variations.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_everyday_default.scss +43 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_everyday_story.scss +21 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_footer_links.scss +8 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_nav_step.scss +95 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_slat.scss +110 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_social_share.scss +44 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_ticket.scss +12 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_tile.scss +63 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/nfg_theme/custom/_user_navbar.scss +33 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_datepicker.scss +2 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_select2.scss +216 -0
- data/app/assets/stylesheets/nfg_ui/network_for_good/public/plugins/_sticky_div.scss +11 -0
- data/app/controllers/nfg_ui/application_controller.rb +5 -0
- data/app/helpers/nfg_ui/application_helper.rb +27 -0
- data/app/helpers/nfg_ui/components/email_helpers.rb +8 -0
- data/app/helpers/nfg_ui/components/resource_themes_helper.rb +8 -0
- data/app/helpers/nfg_ui/components/tooltip_helper.rb +24 -0
- data/app/models/nfg_ui/application_record.rb +5 -0
- data/app/views/nfg_ui/app_icons/_icons.html.haml +10 -0
- data/app/views/nfg_ui/email/README.md +12 -0
- data/app/views/nfg_ui/email/_button.html.haml +12 -0
- data/app/views/nfg_ui/email/_email_signature.html.haml +4 -0
- data/app/views/nfg_ui/email/_footer.html.haml +16 -0
- data/app/views/nfg_ui/email/_header.html.haml +6 -0
- data/app/views/nfg_ui/email/_logo.html.haml +6 -0
- data/app/views/nfg_ui/email/_product_content_image.html.haml +7 -0
- data/app/views/nfg_ui/email/_rainbow_bar.html.haml +10 -0
- data/app/views/nfg_ui/email/_section_header.html.haml +8 -0
- data/app/views/nfg_ui/email/_social_network_link.html.haml +12 -0
- data/app/views/nfg_ui/email/_sub_footer.html.haml +9 -0
- data/app/views/nfg_ui/email/_table_row.html.haml +13 -0
- data/config/initializers/web_app_manifest.rb +3 -0
- data/config/locales/email.yml +34 -0
- data/config/locales/en.yml +63 -0
- data/config/routes.rb +2 -0
- data/config/spring.rb +1 -0
- data/lib/nfg_ui/bootstrap/components/alert.rb +52 -0
- data/lib/nfg_ui/bootstrap/components/badge.rb +39 -0
- data/lib/nfg_ui/bootstrap/components/base.rb +151 -0
- data/lib/nfg_ui/bootstrap/components/breadcrumb.rb +23 -0
- data/lib/nfg_ui/bootstrap/components/breadcrumb_item.rb +28 -0
- data/lib/nfg_ui/bootstrap/components/button.rb +74 -0
- data/lib/nfg_ui/bootstrap/components/button_group.rb +36 -0
- data/lib/nfg_ui/bootstrap/components/button_toolbar.rb +21 -0
- data/lib/nfg_ui/bootstrap/components/card.rb +81 -0
- data/lib/nfg_ui/bootstrap/components/card_body.rb +15 -0
- data/lib/nfg_ui/bootstrap/components/card_footer.rb +15 -0
- data/lib/nfg_ui/bootstrap/components/card_header.rb +35 -0
- data/lib/nfg_ui/bootstrap/components/card_image.rb +33 -0
- data/lib/nfg_ui/bootstrap/components/card_image_overlay.rb +46 -0
- data/lib/nfg_ui/bootstrap/components/carousel.rb +57 -0
- data/lib/nfg_ui/bootstrap/components/carousel_caption.rb +34 -0
- data/lib/nfg_ui/bootstrap/components/carousel_control.rb +73 -0
- data/lib/nfg_ui/bootstrap/components/carousel_indicators.rb +54 -0
- data/lib/nfg_ui/bootstrap/components/carousel_item.rb +49 -0
- data/lib/nfg_ui/bootstrap/components/collapse.rb +32 -0
- data/lib/nfg_ui/bootstrap/components/dropdown.rb +51 -0
- data/lib/nfg_ui/bootstrap/components/dropdown_divider.rb +19 -0
- data/lib/nfg_ui/bootstrap/components/dropdown_header.rb +23 -0
- data/lib/nfg_ui/bootstrap/components/dropdown_item.rb +41 -0
- data/lib/nfg_ui/bootstrap/components/dropdown_menu.rb +32 -0
- data/lib/nfg_ui/bootstrap/components/dropdown_toggle.rb +82 -0
- data/lib/nfg_ui/bootstrap/components/embed.rb +80 -0
- data/lib/nfg_ui/bootstrap/components/form.rb +13 -0
- data/lib/nfg_ui/bootstrap/components/input_group.rb +13 -0
- data/lib/nfg_ui/bootstrap/components/jumbotron.rb +13 -0
- data/lib/nfg_ui/bootstrap/components/list_group.rb +39 -0
- data/lib/nfg_ui/bootstrap/components/list_group_item.rb +69 -0
- data/lib/nfg_ui/bootstrap/components/media.rb +15 -0
- data/lib/nfg_ui/bootstrap/components/media_body.rb +15 -0
- data/lib/nfg_ui/bootstrap/components/media_object.rb +23 -0
- data/lib/nfg_ui/bootstrap/components/modal.rb +66 -0
- data/lib/nfg_ui/bootstrap/components/modal_body.rb +16 -0
- data/lib/nfg_ui/bootstrap/components/modal_footer.rb +16 -0
- data/lib/nfg_ui/bootstrap/components/modal_header.rb +37 -0
- data/lib/nfg_ui/bootstrap/components/nav.rb +71 -0
- data/lib/nfg_ui/bootstrap/components/nav_item.rb +103 -0
- data/lib/nfg_ui/bootstrap/components/nav_link.rb +62 -0
- data/lib/nfg_ui/bootstrap/components/navbar.rb +97 -0
- data/lib/nfg_ui/bootstrap/components/navbar_brand.rb +25 -0
- data/lib/nfg_ui/bootstrap/components/navbar_nav.rb +48 -0
- data/lib/nfg_ui/bootstrap/components/navbar_text.rb +21 -0
- data/lib/nfg_ui/bootstrap/components/navbar_toggler.rb +38 -0
- data/lib/nfg_ui/bootstrap/components/page_item.rb +66 -0
- data/lib/nfg_ui/bootstrap/components/pagination.rb +30 -0
- data/lib/nfg_ui/bootstrap/components/popover.rb +12 -0
- data/lib/nfg_ui/bootstrap/components/progress.rb +44 -0
- data/lib/nfg_ui/bootstrap/components/progress_bar.rb +51 -0
- data/lib/nfg_ui/bootstrap/components/tab_content.rb +15 -0
- data/lib/nfg_ui/bootstrap/components/tab_pane.rb +49 -0
- data/lib/nfg_ui/bootstrap/components/table.rb +17 -0
- data/lib/nfg_ui/bootstrap/readme.md +1 -0
- data/lib/nfg_ui/bootstrap/utilities/activatable.rb +32 -0
- data/lib/nfg_ui/bootstrap/utilities/alignable.rb +33 -0
- data/lib/nfg_ui/bootstrap/utilities/collapse_toggleable.rb +35 -0
- data/lib/nfg_ui/bootstrap/utilities/collapsible.rb +42 -0
- data/lib/nfg_ui/bootstrap/utilities/disableable.rb +49 -0
- data/lib/nfg_ui/bootstrap/utilities/dismissible.rb +24 -0
- data/lib/nfg_ui/bootstrap/utilities/dropdown_directionable.rb +40 -0
- data/lib/nfg_ui/bootstrap/utilities/headable.rb +20 -0
- data/lib/nfg_ui/bootstrap/utilities/modalable.rb +104 -0
- data/lib/nfg_ui/bootstrap/utilities/progressable.rb +42 -0
- data/lib/nfg_ui/bootstrap/utilities/remotable.rb +24 -0
- data/lib/nfg_ui/bootstrap/utilities/sizable.rb +40 -0
- data/lib/nfg_ui/bootstrap/utilities/themeable.rb +51 -0
- data/lib/nfg_ui/bootstrap/utilities/tooltipable.rb +95 -0
- data/lib/nfg_ui/bootstrap/utilities/wrappable.rb +48 -0
- data/lib/nfg_ui/components/base.rb +14 -0
- data/lib/nfg_ui/components/elements/activity.rb +10 -0
- data/lib/nfg_ui/components/elements/alert.rb +63 -0
- data/lib/nfg_ui/components/elements/badge.rb +32 -0
- data/lib/nfg_ui/components/elements/breadcrumb.rb +16 -0
- data/lib/nfg_ui/components/elements/breadcrumb_item.rb +16 -0
- data/lib/nfg_ui/components/elements/button.rb +97 -0
- data/lib/nfg_ui/components/elements/card_body.rb +15 -0
- data/lib/nfg_ui/components/elements/card_footer.rb +14 -0
- data/lib/nfg_ui/components/elements/card_header.rb +14 -0
- data/lib/nfg_ui/components/elements/card_image.rb +14 -0
- data/lib/nfg_ui/components/elements/card_image_overlay.rb +14 -0
- data/lib/nfg_ui/components/elements/carousel_caption.rb +14 -0
- data/lib/nfg_ui/components/elements/carousel_control.rb +14 -0
- data/lib/nfg_ui/components/elements/carousel_indicators.rb +23 -0
- data/lib/nfg_ui/components/elements/carousel_item.rb +16 -0
- data/lib/nfg_ui/components/elements/chart.rb +11 -0
- data/lib/nfg_ui/components/elements/dropdown_divider.rb +14 -0
- data/lib/nfg_ui/components/elements/dropdown_header.rb +14 -0
- data/lib/nfg_ui/components/elements/dropdown_item.rb +78 -0
- data/lib/nfg_ui/components/elements/dropdown_toggle.rb +37 -0
- data/lib/nfg_ui/components/elements/embed.rb +15 -0
- data/lib/nfg_ui/components/elements/form_control.rb +18 -0
- data/lib/nfg_ui/components/elements/input_group.rb +14 -0
- data/lib/nfg_ui/components/elements/key.rb +11 -0
- data/lib/nfg_ui/components/elements/list_group_item.rb +14 -0
- data/lib/nfg_ui/components/elements/loader.rb +11 -0
- data/lib/nfg_ui/components/elements/media_body.rb +14 -0
- data/lib/nfg_ui/components/elements/media_object.rb +12 -0
- data/lib/nfg_ui/components/elements/modal_body.rb +14 -0
- data/lib/nfg_ui/components/elements/modal_footer.rb +14 -0
- data/lib/nfg_ui/components/elements/modal_header.rb +14 -0
- data/lib/nfg_ui/components/elements/nav.rb +19 -0
- data/lib/nfg_ui/components/elements/nav_item.rb +39 -0
- data/lib/nfg_ui/components/elements/nav_link.rb +33 -0
- data/lib/nfg_ui/components/elements/navbar_brand.rb +15 -0
- data/lib/nfg_ui/components/elements/navbar_text.rb +14 -0
- data/lib/nfg_ui/components/elements/navbar_toggler.rb +14 -0
- data/lib/nfg_ui/components/elements/page_item.rb +14 -0
- data/lib/nfg_ui/components/elements/popover.rb +14 -0
- data/lib/nfg_ui/components/elements/progress_bar.rb +62 -0
- data/lib/nfg_ui/components/elements/slat_action.rb +14 -0
- data/lib/nfg_ui/components/elements/slat_body.rb +14 -0
- data/lib/nfg_ui/components/elements/slat_item.rb +62 -0
- data/lib/nfg_ui/components/elements/stat.rb +11 -0
- data/lib/nfg_ui/components/elements/step.rb +55 -0
- data/lib/nfg_ui/components/elements/step_indicator.rb +41 -0
- data/lib/nfg_ui/components/elements/tab_pane.rb +15 -0
- data/lib/nfg_ui/components/elements/table.rb +14 -0
- data/lib/nfg_ui/components/elements/task.rb +11 -0
- data/lib/nfg_ui/components/elements.rb +58 -0
- data/lib/nfg_ui/components/foundations/color.rb +11 -0
- data/lib/nfg_ui/components/foundations/grid.rb +11 -0
- data/lib/nfg_ui/components/foundations/icon.rb +82 -0
- data/lib/nfg_ui/components/foundations/image.rb +14 -0
- data/lib/nfg_ui/components/foundations/input.rb +11 -0
- data/lib/nfg_ui/components/foundations/typeface.rb +122 -0
- data/lib/nfg_ui/components/patterns/activity_feed.rb +11 -0
- data/lib/nfg_ui/components/patterns/button_group.rb +23 -0
- data/lib/nfg_ui/components/patterns/button_toolbar.rb +20 -0
- data/lib/nfg_ui/components/patterns/card.rb +39 -0
- data/lib/nfg_ui/components/patterns/carousel.rb +31 -0
- data/lib/nfg_ui/components/patterns/collapse.rb +31 -0
- data/lib/nfg_ui/components/patterns/dropdown.rb +27 -0
- data/lib/nfg_ui/components/patterns/dropdown_menu.rb +16 -0
- data/lib/nfg_ui/components/patterns/empty_state.rb +11 -0
- data/lib/nfg_ui/components/patterns/filter_bar.rb +11 -0
- data/lib/nfg_ui/components/patterns/form_group.rb +11 -0
- data/lib/nfg_ui/components/patterns/graph.rb +11 -0
- data/lib/nfg_ui/components/patterns/jumbotron.rb +14 -0
- data/lib/nfg_ui/components/patterns/list_group.rb +16 -0
- data/lib/nfg_ui/components/patterns/media.rb +14 -0
- data/lib/nfg_ui/components/patterns/modal.rb +15 -0
- data/lib/nfg_ui/components/patterns/navbar.rb +17 -0
- data/lib/nfg_ui/components/patterns/navbar_nav.rb +17 -0
- data/lib/nfg_ui/components/patterns/page_header.rb +85 -0
- data/lib/nfg_ui/components/patterns/pagination.rb +14 -0
- data/lib/nfg_ui/components/patterns/progress.rb +24 -0
- data/lib/nfg_ui/components/patterns/slat.rb +14 -0
- data/lib/nfg_ui/components/patterns/slat_actions.rb +115 -0
- data/lib/nfg_ui/components/patterns/slat_header.rb +23 -0
- data/lib/nfg_ui/components/patterns/slat_list.rb +18 -0
- data/lib/nfg_ui/components/patterns/slats.rb +14 -0
- data/lib/nfg_ui/components/patterns/steps.rb +27 -0
- data/lib/nfg_ui/components/patterns/tab_content.rb +14 -0
- data/lib/nfg_ui/components/patterns/task_list.rb +11 -0
- data/lib/nfg_ui/components/patterns/tile.rb +58 -0
- data/lib/nfg_ui/components/patterns/tile_body.rb +29 -0
- data/lib/nfg_ui/components/patterns/tile_header.rb +40 -0
- data/lib/nfg_ui/components/patterns/tile_section.rb +29 -0
- data/lib/nfg_ui/components/traits/active.rb +14 -0
- data/lib/nfg_ui/components/traits/alert.rb +36 -0
- data/lib/nfg_ui/components/traits/alignment.rb +26 -0
- data/lib/nfg_ui/components/traits/button.rb +47 -0
- data/lib/nfg_ui/components/traits/button_group.rb +22 -0
- data/lib/nfg_ui/components/traits/card.rb +14 -0
- data/lib/nfg_ui/components/traits/collapse.rb +29 -0
- data/lib/nfg_ui/components/traits/disable.rb +19 -0
- data/lib/nfg_ui/components/traits/disable_with.rb +14 -0
- data/lib/nfg_ui/components/traits/dismiss.rb +16 -0
- data/lib/nfg_ui/components/traits/dropdown_toggle.rb +14 -0
- data/lib/nfg_ui/components/traits/icon.rb +16 -0
- data/lib/nfg_ui/components/traits/list_group.rb +16 -0
- data/lib/nfg_ui/components/traits/muted.rb +16 -0
- data/lib/nfg_ui/components/traits/nav.rb +26 -0
- data/lib/nfg_ui/components/traits/nav_item.rb +16 -0
- data/lib/nfg_ui/components/traits/navbar.rb +18 -0
- data/lib/nfg_ui/components/traits/page_header.rb +16 -0
- data/lib/nfg_ui/components/traits/pill.rb +14 -0
- data/lib/nfg_ui/components/traits/progress_bar.rb +24 -0
- data/lib/nfg_ui/components/traits/remote.rb +14 -0
- data/lib/nfg_ui/components/traits/size.rb +18 -0
- data/lib/nfg_ui/components/traits/slat_item.rb +28 -0
- data/lib/nfg_ui/components/traits/step.rb +14 -0
- data/lib/nfg_ui/components/traits/theme.rb +57 -0
- data/lib/nfg_ui/components/traits/typeface.rb +53 -0
- data/lib/nfg_ui/components/traits/vertical.rb +16 -0
- data/lib/nfg_ui/components/traits.rb +43 -0
- data/lib/nfg_ui/components/utilities/browser_detectable.rb +16 -0
- data/lib/nfg_ui/components/utilities/confirmable.rb +24 -0
- data/lib/nfg_ui/components/utilities/describable.rb +22 -0
- data/lib/nfg_ui/components/utilities/disable_withable.rb +26 -0
- data/lib/nfg_ui/components/utilities/emailable.rb +44 -0
- data/lib/nfg_ui/components/utilities/iconable.rb +20 -0
- data/lib/nfg_ui/components/utilities/left_iconable.rb +22 -0
- data/lib/nfg_ui/components/utilities/methodable.rb +24 -0
- data/lib/nfg_ui/components/utilities/renderable.rb +24 -0
- data/lib/nfg_ui/components/utilities/resource_themeable.rb +49 -0
- data/lib/nfg_ui/components/utilities/titleable.rb +20 -0
- data/lib/nfg_ui/components/utilities/traitable.rb +32 -0
- data/lib/nfg_ui/components/utilities/vertically_alignable.rb +31 -0
- data/lib/nfg_ui/components/utilities.rb +22 -0
- data/lib/nfg_ui/engine.rb +45 -0
- data/lib/nfg_ui/ui/base.rb +35 -0
- data/lib/nfg_ui/ui/bootstrap.rb +44 -0
- data/lib/nfg_ui/ui/network_for_good.rb +54 -0
- data/lib/nfg_ui/ui/utilities/initializer.rb +88 -0
- data/lib/nfg_ui/ui/utilities.rb +10 -0
- data/lib/nfg_ui/version.rb +5 -0
- data/lib/nfg_ui.rb +174 -0
- data/lib/tasks/nfg_ui_tasks.rake +53 -0
- metadata +741 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Elements
|
|
6
|
+
# Slat doc coming soon
|
|
7
|
+
class SlatItem < NfgUi::Components::Base
|
|
8
|
+
include Bootstrap::Utilities::Headable
|
|
9
|
+
include Bootstrap::Utilities::Sizable
|
|
10
|
+
|
|
11
|
+
include NfgUi::Components::Traits::Size
|
|
12
|
+
include NfgUi::Components::Traits::SlatItem
|
|
13
|
+
|
|
14
|
+
def component_family
|
|
15
|
+
:slats
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def slat_header
|
|
19
|
+
options.fetch(:slat_header, nil)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def caption
|
|
23
|
+
options.fetch(:caption, nil)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def render
|
|
27
|
+
super do
|
|
28
|
+
if slat_header
|
|
29
|
+
concat(content_tag(:h6, slat_header, class: 'display-4'))
|
|
30
|
+
end
|
|
31
|
+
if heading
|
|
32
|
+
if href
|
|
33
|
+
concat(content_tag(:a, href: href) {
|
|
34
|
+
NfgUi::Components::Foundations::Typeface.new({ subheading: heading }, view_context).render
|
|
35
|
+
})
|
|
36
|
+
else
|
|
37
|
+
concat(NfgUi::Components::Foundations::Typeface.new({ subheading: heading }, view_context).render)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
concat(block_given? ? yield : body)
|
|
41
|
+
if caption
|
|
42
|
+
concat(NfgUi::Components::Foundations::Typeface.new({ caption: caption, class: 'mb-0' }, view_context).render)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def css_classes
|
|
50
|
+
[
|
|
51
|
+
super,
|
|
52
|
+
('text-word-wrap' if size == :lg)
|
|
53
|
+
]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def non_html_attribute_options
|
|
57
|
+
super.push(:slat_header, :caption)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Elements
|
|
6
|
+
# Step doc coming soon
|
|
7
|
+
class Step < NfgUi::Components::Elements::NavItem
|
|
8
|
+
include Bootstrap::Utilities::Activatable
|
|
9
|
+
|
|
10
|
+
include NfgUi::Components::Utilities::Iconable
|
|
11
|
+
|
|
12
|
+
include NfgUi::Components::Traits::Step
|
|
13
|
+
|
|
14
|
+
def component_family
|
|
15
|
+
:steps
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def step
|
|
19
|
+
options.fetch(:step, nil)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def visited
|
|
23
|
+
options.fetch(:visited, false)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def disabled
|
|
27
|
+
options[:disabled] || (!visited && !active)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def render
|
|
31
|
+
content_tag(as, html_options) do
|
|
32
|
+
NfgUi::Components::Elements::StepIndicator.new({ step: step.to_s, body: (block_given? ? yield : body), icon: icon, href: href, disabled: disabled }, view_context).render
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def base_element
|
|
39
|
+
as
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def css_classes
|
|
43
|
+
[
|
|
44
|
+
super,
|
|
45
|
+
('visited' if visited)
|
|
46
|
+
].join(' ').squish
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def non_html_attribute_options
|
|
50
|
+
super.push(:visited, :step)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Elements
|
|
6
|
+
# Step doc coming soon
|
|
7
|
+
class StepIndicator < NfgUi::Components::Elements::NavLink
|
|
8
|
+
def component_family
|
|
9
|
+
:steps
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def href
|
|
13
|
+
options.fetch(:href, '#')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def step
|
|
17
|
+
options.fetch(:step, nil)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def render
|
|
21
|
+
content_tag(:a, html_options) do
|
|
22
|
+
concat(content_tag(:div, class: 'step-indicator') {
|
|
23
|
+
if icon
|
|
24
|
+
NfgUi::Components::Foundations::Icon.new({ traits: [icon,] }, view_context).render
|
|
25
|
+
else
|
|
26
|
+
step
|
|
27
|
+
end
|
|
28
|
+
})
|
|
29
|
+
concat(NfgUi::Components::Foundations::Typeface.new({ traits: [:muted], caption: (block_given? ? yield : body), class: 'mt-1 mb-0 step-text' }, view_context).render)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def non_html_attribute_options
|
|
36
|
+
super.push(:step)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Elements
|
|
6
|
+
class TabPane < NfgUi::Bootstrap::Components::TabPane
|
|
7
|
+
include NfgUi::Components::Utilities::Traitable
|
|
8
|
+
include NfgUi::Components::Utilities::Describable
|
|
9
|
+
include NfgUi::Components::Utilities::Renderable
|
|
10
|
+
|
|
11
|
+
include NfgUi::Components::Traits::Active
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Elements
|
|
6
|
+
# Table doc coming soon
|
|
7
|
+
class Table < NfgUi::Bootstrap::Components::Table
|
|
8
|
+
include NfgUi::Components::Utilities::Traitable
|
|
9
|
+
include NfgUi::Components::Utilities::Describable
|
|
10
|
+
include NfgUi::Components::Utilities::Renderable
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
# This is the authoritative document for 'Elements'
|
|
6
|
+
module Elements
|
|
7
|
+
require_relative 'elements/activity'
|
|
8
|
+
require_relative 'elements/alert'
|
|
9
|
+
require_relative 'elements/badge'
|
|
10
|
+
require_relative 'elements/breadcrumb'
|
|
11
|
+
require_relative 'elements/breadcrumb_item'
|
|
12
|
+
require_relative 'elements/button'
|
|
13
|
+
require_relative 'elements/card_body'
|
|
14
|
+
require_relative 'elements/card_footer'
|
|
15
|
+
require_relative 'elements/card_header'
|
|
16
|
+
require_relative 'elements/card_image'
|
|
17
|
+
require_relative 'elements/card_image_overlay'
|
|
18
|
+
require_relative 'elements/carousel_caption'
|
|
19
|
+
require_relative 'elements/carousel_control'
|
|
20
|
+
require_relative 'elements/carousel_indicators'
|
|
21
|
+
require_relative 'elements/carousel_item'
|
|
22
|
+
require_relative 'elements/chart'
|
|
23
|
+
require_relative 'elements/dropdown_divider'
|
|
24
|
+
require_relative 'elements/dropdown_header'
|
|
25
|
+
require_relative 'elements/dropdown_item'
|
|
26
|
+
require_relative 'elements/dropdown_toggle'
|
|
27
|
+
require_relative 'elements/embed'
|
|
28
|
+
require_relative 'elements/form_control'
|
|
29
|
+
require_relative 'elements/input_group'
|
|
30
|
+
require_relative 'elements/key'
|
|
31
|
+
require_relative 'elements/list_group_item'
|
|
32
|
+
require_relative 'elements/loader'
|
|
33
|
+
require_relative 'elements/media_body'
|
|
34
|
+
require_relative 'elements/media_object'
|
|
35
|
+
require_relative 'elements/modal_body'
|
|
36
|
+
require_relative 'elements/modal_footer'
|
|
37
|
+
require_relative 'elements/modal_header'
|
|
38
|
+
require_relative 'elements/nav'
|
|
39
|
+
require_relative 'elements/nav_item'
|
|
40
|
+
require_relative 'elements/nav_link'
|
|
41
|
+
require_relative 'elements/navbar_brand'
|
|
42
|
+
require_relative 'elements/navbar_text'
|
|
43
|
+
require_relative 'elements/navbar_toggler'
|
|
44
|
+
require_relative 'elements/page_item'
|
|
45
|
+
require_relative 'elements/popover'
|
|
46
|
+
require_relative 'elements/progress_bar'
|
|
47
|
+
require_relative 'elements/slat_action'
|
|
48
|
+
require_relative 'elements/slat_body'
|
|
49
|
+
require_relative 'elements/slat_item'
|
|
50
|
+
require_relative 'elements/stat'
|
|
51
|
+
require_relative 'elements/step'
|
|
52
|
+
require_relative 'elements/step_indicator'
|
|
53
|
+
require_relative 'elements/tab_pane'
|
|
54
|
+
require_relative 'elements/table'
|
|
55
|
+
require_relative 'elements/task'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Foundations
|
|
6
|
+
# Icon doc coming soon
|
|
7
|
+
# Implementation and usage is designed to mimic the font_awesome_rails gem
|
|
8
|
+
#
|
|
9
|
+
# Example usage:
|
|
10
|
+
# = ui.nfg :icon, 'rocket', :right, text: 'Example text with icon on the right'
|
|
11
|
+
class Icon < NfgUi::Components::Base
|
|
12
|
+
include Bootstrap::Utilities::Themeable
|
|
13
|
+
include Bootstrap::Utilities::Tooltipable
|
|
14
|
+
|
|
15
|
+
include NfgUi::Components::Traits::Icon
|
|
16
|
+
include NfgUi::Components::Traits::Muted
|
|
17
|
+
include NfgUi::Components::Traits::Theme
|
|
18
|
+
include NfgUi::Components::Traits::Alignment
|
|
19
|
+
|
|
20
|
+
# Officially declare the icon spacer classes
|
|
21
|
+
# so that other iconable components that have more than one icon
|
|
22
|
+
# e.g.: :left_icon & :icon can use the spacer class manually
|
|
23
|
+
LEFT_ICON_SPACER_CSS_CLASS = 'mr-1'
|
|
24
|
+
RIGHT_ICON_SPACER_CSS_CLASS = 'ml-1'
|
|
25
|
+
|
|
26
|
+
def render
|
|
27
|
+
view_context.fa_icon icon, **html_options, text: text, right: right
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def icon
|
|
31
|
+
options[:icon] || (traits.slice!(0).to_s if traits.first.is_a?(String))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def text
|
|
35
|
+
options.fetch(:text, nil)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def right
|
|
39
|
+
options.fetch(:right, false)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def css_classes
|
|
45
|
+
return super unless update_css_classes?
|
|
46
|
+
[
|
|
47
|
+
super,
|
|
48
|
+
(NfgUi::Components::Foundations::Icon::LEFT_ICON_SPACER_CSS_CLASS unless right),
|
|
49
|
+
(NfgUi::Components::Foundations::Icon::RIGHT_ICON_SPACER_CSS_CLASS if right)
|
|
50
|
+
].join(' ').squish
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def theme_css_class_prefix
|
|
54
|
+
'text-'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def component_css_class
|
|
58
|
+
''
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def default_theme
|
|
62
|
+
nil
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def non_html_attribute_options
|
|
66
|
+
super.push(:right, :text, :icon)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def outlineable?
|
|
70
|
+
false
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Several components need to utilize the icon with a spacer css class
|
|
74
|
+
# where text is supplied in the #render, and not passed to the icon
|
|
75
|
+
# thus, icons with :right trait are allowed through
|
|
76
|
+
def update_css_classes?
|
|
77
|
+
text || right
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Foundations
|
|
6
|
+
# Typeface doc coming soon
|
|
7
|
+
class Typeface < NfgUi::Components::Base
|
|
8
|
+
include Bootstrap::Utilities::Wrappable
|
|
9
|
+
include Bootstrap::Utilities::Themeable
|
|
10
|
+
include Bootstrap::Utilities::Tooltipable
|
|
11
|
+
|
|
12
|
+
include NfgUi::Components::Utilities::Iconable
|
|
13
|
+
include NfgUi::Components::Utilities::Titleable
|
|
14
|
+
|
|
15
|
+
include NfgUi::Components::Traits::Muted
|
|
16
|
+
include NfgUi::Components::Traits::Theme
|
|
17
|
+
include NfgUi::Components::Traits::Typeface
|
|
18
|
+
|
|
19
|
+
def render
|
|
20
|
+
super do
|
|
21
|
+
if icon
|
|
22
|
+
NfgUi::Components::Foundations::Icon.new({ icon: icon, text: body }, view_context).render
|
|
23
|
+
else
|
|
24
|
+
body
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def as
|
|
30
|
+
if heading
|
|
31
|
+
heading_tag
|
|
32
|
+
elsif subheading
|
|
33
|
+
subheading_tag
|
|
34
|
+
elsif title
|
|
35
|
+
title_tag
|
|
36
|
+
elsif caption
|
|
37
|
+
caption_tag
|
|
38
|
+
else
|
|
39
|
+
super
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def heading
|
|
44
|
+
options.fetch(:heading, nil)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def subheading
|
|
48
|
+
options.fetch(:subheading, nil)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def caption
|
|
52
|
+
options.fetch(:caption, nil)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def body
|
|
56
|
+
super || heading || title || caption || subheading
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# def text_or_icon
|
|
60
|
+
# icon ? view_context.ui.nfg(:icon, icon, text: text) : text
|
|
61
|
+
# end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def base_element
|
|
66
|
+
as
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def theme_css_class_prefix
|
|
70
|
+
'text-'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def css_classes
|
|
74
|
+
[
|
|
75
|
+
super,
|
|
76
|
+
('font-size-sm' if caption)
|
|
77
|
+
].join(' ').squish
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def default_theme
|
|
81
|
+
nil
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def component_css_class
|
|
85
|
+
''
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def non_html_attribute_options
|
|
89
|
+
super.push(:heading, :body, :title, :caption, :subheading)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def caption_tag
|
|
93
|
+
:p
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def body_tag
|
|
97
|
+
:p
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def heading_tag
|
|
101
|
+
:h5
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def title_tag
|
|
105
|
+
:h6
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def subheading_tag
|
|
109
|
+
:h6
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def default_html_wrapper_element
|
|
113
|
+
body_tag
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def outlineable?
|
|
117
|
+
false
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Patterns
|
|
6
|
+
# Button Group doesn't have any customizations unique to the design system yet
|
|
7
|
+
# As such, the NFG UI button group is simply a bootstrap button group behind the scenes.
|
|
8
|
+
# Traits will eventually be connected here.
|
|
9
|
+
class ButtonGroup < NfgUi::Bootstrap::Components::ButtonGroup
|
|
10
|
+
include NfgUi::Components::Utilities::Traitable
|
|
11
|
+
include NfgUi::Components::Utilities::Describable
|
|
12
|
+
include NfgUi::Components::Utilities::Renderable
|
|
13
|
+
|
|
14
|
+
include NfgUi::Components::Traits::Size
|
|
15
|
+
include NfgUi::Components::Traits::Vertical
|
|
16
|
+
|
|
17
|
+
# TODO It's not clear to me whether the traits listed above actually do anything
|
|
18
|
+
# I think the note above implies that they don't, but then why include them? If they don't
|
|
19
|
+
# actually do anything yet, they should be removed, or at least commented out
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Patterns
|
|
6
|
+
# Button Toolbar doesn't have any customizations unique to the design system yet
|
|
7
|
+
# As such, the NFG UI button group is simply a bootstrap button group behind the scenes.
|
|
8
|
+
# Traits will eventually be connected here.
|
|
9
|
+
class ButtonToolbar < NfgUi::Bootstrap::Components::ButtonToolbar
|
|
10
|
+
include NfgUi::Components::Utilities::Traitable
|
|
11
|
+
include NfgUi::Components::Utilities::Describable
|
|
12
|
+
include NfgUi::Components::Utilities::Renderable
|
|
13
|
+
|
|
14
|
+
# TODO It's not clear to me whether the traits listed above actually do anything
|
|
15
|
+
# I think the note above implies that they don't, but then why include them? If they don't
|
|
16
|
+
# actually do anything yet, they should be removed, or at least commented out
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Patterns
|
|
6
|
+
# Card doesn't have any customizations unique to the design system yet
|
|
7
|
+
# As such, the NFG UI card is simply a bootstrap card behind the scenes.
|
|
8
|
+
# Traits will eventually be connected here.
|
|
9
|
+
class Card < NfgUi::Bootstrap::Components::Card
|
|
10
|
+
include NfgUi::Components::Utilities::Traitable
|
|
11
|
+
include NfgUi::Components::Utilities::Describable
|
|
12
|
+
include NfgUi::Components::Utilities::Renderable
|
|
13
|
+
|
|
14
|
+
include NfgUi::Components::Traits::Theme
|
|
15
|
+
|
|
16
|
+
# TODO: Confirm that the image overlays are correct. The tops are not being rounded. Should they be?
|
|
17
|
+
def render
|
|
18
|
+
if render_in_body
|
|
19
|
+
super
|
|
20
|
+
else
|
|
21
|
+
content_tag(:div, html_options) do
|
|
22
|
+
body
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def render_in_body
|
|
28
|
+
options.fetch(:render_in_body, true)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def non_html_attribute_options
|
|
34
|
+
super.push(:render_in_body)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NfgUi
|
|
4
|
+
module Components
|
|
5
|
+
module Patterns
|
|
6
|
+
# Carousel doesn't have any customizations unique to the design system yet
|
|
7
|
+
# As such, the NFG UI carousel is simply a bootstrap carousel behind the scenes.
|
|
8
|
+
# Traits will eventually be connected here.
|
|
9
|
+
class Carousel < NfgUi::Bootstrap::Components::Carousel
|
|
10
|
+
include NfgUi::Components::Utilities::Traitable
|
|
11
|
+
include NfgUi::Components::Utilities::Describable
|
|
12
|
+
include NfgUi::Components::Utilities::Renderable
|
|
13
|
+
|
|
14
|
+
def render
|
|
15
|
+
content_tag(:div, html_options) do
|
|
16
|
+
content_tag(:div, class: 'carousel-inner pb-3') do
|
|
17
|
+
concat((block_given? ? yield : body))
|
|
18
|
+
if controls
|
|
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)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|