Class: Www::FullWidthLandingPageHeaderComponent
- Inherits:
-
ApplicationComponent
- Object
- ViewComponent::Base
- ApplicationComponent
- Www::FullWidthLandingPageHeaderComponent
- Includes:
- ImagesHelper
- Defined in:
- app/components/www/full_width_landing_page_header_component.rb
Instance Method Summary collapse
-
#before_render ⇒ Object
Resolve the effective banner image and set og:image.
- #compare_component ⇒ Object
- #cta_link_for(options) ⇒ Object
- #header_links ⇒ Object
-
#initialize(title:, introduction:, image_asset_id: nil, fallback_image_asset_id: nil, video_source: nil, video_thumb_asset_id: nil, mobile_poster_id: nil, links: [], sub_title: nil, show_compare: false, hide_cta: false, image_asset_options: nil, button_columns: 4, review_avg_stars: nil, review_count: nil, color_mode: :full, lazy: false, content_align: :left, content_width: :standard, native_playback: true, banner_badges: nil) ⇒ FullWidthLandingPageHeaderComponent
constructor
A new instance of FullWidthLandingPageHeaderComponent.
- #show_compare? ⇒ Boolean
Methods included from ImagesHelper
#image_asset_tag, #image_asset_url
Methods inherited from ApplicationComponent
#cms_link, #fetch_or_fallback, #image_asset_tag, #image_tag, #number_to_currency, #number_with_delimiter, #post_path, #post_url, #strip_tags
Constructor Details
#initialize(title:, introduction:, image_asset_id: nil, fallback_image_asset_id: nil, video_source: nil, video_thumb_asset_id: nil, mobile_poster_id: nil, links: [], sub_title: nil, show_compare: false, hide_cta: false, image_asset_options: nil, button_columns: 4, review_avg_stars: nil, review_count: nil, color_mode: :full, lazy: false, content_align: :left, content_width: :standard, native_playback: true, banner_badges: nil) ⇒ FullWidthLandingPageHeaderComponent
Returns a new instance of FullWidthLandingPageHeaderComponent.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 16 def initialize(title:, introduction:, image_asset_id: nil, fallback_image_asset_id: nil, video_source: nil, video_thumb_asset_id: nil, mobile_poster_id: nil, links: [], sub_title: nil, show_compare: false, hide_cta: false, image_asset_options: nil, button_columns: 4, review_avg_stars: nil, review_count: nil, color_mode: :full, lazy: false, content_align: :left, content_width: :standard, native_playback: true, banner_badges: nil) super() @title = title @sub_title = sub_title @introduction = introduction @provided_image_asset_id = image_asset_id || fallback_image_asset_id @video_source = video_source @video_thumb_asset_id = video_thumb_asset_id @mobile_poster_id = mobile_poster_id @links = links @show_compare = show_compare @hide_cta = hide_cta @image_asset_options = @button_columns = @review_avg_stars = review_avg_stars @review_count = review_count @color_mode = (color_mode || :full).to_sym @lazy = lazy @content_align = (content_align || :left).to_sym @content_width = (content_width || :standard).to_sym @native_playback = native_playback @banner_badges = Array().compact.presence end |
Instance Method Details
#before_render ⇒ Object
Resolve the effective banner image and set og:image.
Banner resolution order:
- Explicit image_asset_id passed to the component
- Tagged banner image (banner-for-xxx-page)
og:image resolution order: - Dedicated og-image-for-xxx-page tagged Image
- The resolved banner image
- Template-level page_og_image call (handled by MetaHelper guard)
49 50 51 52 53 54 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 49 def before_render super @image_asset_id = @provided_image_asset_id || og_image = resolve_og_image || @image_asset_id helpers.page_og_image(og_image) if og_image.present? end |
#compare_component ⇒ Object
91 92 93 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 91 def compare_component Www::LandingPageCompareComponent.new end |
#cta_link_for(options) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 75 def cta_link_for() # Extract and normalize options for the CTA component = { url: [:url], title: [:title] || 'Learn More', fa_icon: [:fa_icon], svg_icon: [:svg_icon], icon_url: [:icon_url], style: [:style] || :solid, data: [:data], panel: [:panel] }.compact Www::LandingPageCtaLinkComponent.new(**) end |
#header_links ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 56 def header_links return [] if @hide_cta return Array(@links).map { |entry| normalize_link_entry(entry) }.compact if @links.present? links = [] return links if links.present? # Default: only Contact Modal [preset_link(:contact_modal)] end |
#show_compare? ⇒ Boolean
68 69 70 71 72 73 |
# File 'app/components/www/full_width_landing_page_header_component.rb', line 68 def show_compare? return false unless @show_compare request_path = helpers.request&.path.to_s request_path.include?('/floor-heating') end |