Class: Www::VideoCardComponent

Inherits:
Railsboot::Component
  • Object
show all
Includes:
ActionView::Helpers::SanitizeHelper, ActionView::Helpers::TagHelper, ActionView::Helpers::UrlHelper, ApplicationHelper, PresenterHelper, SeoHelper
Defined in:
app/components/www/video_card_component.rb

Overview

ViewComponent: renders the video card block.

Constant Summary collapse

LAYOUTS =

Layout options

%w[card thumbnail inline].freeze
DEFAULT_LAYOUT =

Default layout.

'card'
CARD_STYLES =

Card styling options

%w[default hover-raise shadow].freeze
DEFAULT_CARD_STYLE =

Default card style.

'default'

Constants included from SeoHelper

SeoHelper::AWARDS, SeoHelper::CA_ADDRESS, SeoHelper::CA_BUSINESS_HOURS, SeoHelper::CA_CONTACT_POINT, SeoHelper::CA_CURRENCIES, SeoHelper::CA_DESCRIPTION, SeoHelper::CA_FOUNDING_DATE, SeoHelper::CA_GLOBAL_LOCATION_NUMBER, SeoHelper::CA_LEGAL_NAME, SeoHelper::CA_LOCAL_BUSINESS, SeoHelper::CA_ONLINE_STORE, SeoHelper::CA_RETURN_POLICY, SeoHelper::CA_SALES_DEPARTMENT, SeoHelper::CA_SERVICE_AREA, SeoHelper::CA_URL, SeoHelper::CA_VAT_ID, SeoHelper::CA_WAREHOUSE_DEPARTMENT, SeoHelper::CA_WAREHOUSE_HOURS, SeoHelper::COMPANY_EMAIL, SeoHelper::COMPANY_LOGO, SeoHelper::COMPANY_NAME, SeoHelper::COMPANY_SLOGAN, SeoHelper::EXPERTISE, SeoHelper::FAX_NUMBER, SeoHelper::GS1_COMPANY_PREFIX, SeoHelper::ISO6523_CODE, SeoHelper::PAYMENT_METHODS, SeoHelper::PHONE_NUMBER, SeoHelper::PRIMARY_NAICS, SeoHelper::REFUND_TYPE, SeoHelper::RETURN_FEES, SeoHelper::RETURN_METHOD, SeoHelper::RETURN_POLICY_CATEGORY, SeoHelper::SECONDARY_NAICS, SeoHelper::SOCIAL_PROFILES, SeoHelper::US_ADDRESS, SeoHelper::US_BUSINESS_HOURS, SeoHelper::US_CONTACT_POINT, SeoHelper::US_CURRENCIES, SeoHelper::US_DESCRIPTION, SeoHelper::US_FOUNDING_DATE, SeoHelper::US_GLOBAL_LOCATION_NUMBER, SeoHelper::US_IMAGE, SeoHelper::US_LEGAL_NAME, SeoHelper::US_LOCAL_BUSINESS, SeoHelper::US_ONLINE_STORE, SeoHelper::US_RETURN_POLICY, SeoHelper::US_SALES_DEPARTMENT, SeoHelper::US_SERVICE_AREA, SeoHelper::US_TAX_ID, SeoHelper::US_URL, SeoHelper::US_WAREHOUSE_DEPARTMENT, SeoHelper::US_WAREHOUSE_HOURS

Constants included from IconHelper

IconHelper::CUSTOM_ICON_MAP, IconHelper::CUSTOM_SVG_DIR, IconHelper::DEFAULT_FAMILY

Instance Method Summary collapse

Methods included from SeoHelper

#add_page_schema, #add_webpage_schema, #canada?, #company_social_links, #ensure_context_json, #json_ld_script_tag, #local_business_schema, #online_store_id, #online_store_schema, #page_main_entity, #page_main_entity_json, #render_auto_collection_page_schema, #render_collection_page_schema, #render_local_business_schema, #render_online_store_schema, #render_page_schemas, #render_page_video_schemas, #render_webpage_schema, #render_webpage_schema_with_collections, #usa?

Methods included from PresenterHelper

#generic_present, #present

Methods included from ApplicationHelper

#better_number_to_currency, #check_force_logout, #check_or_cross, #check_or_times, #embedded_tab_frame_id, #error_messages, #general_disclaimer_on_product_installation_and_local_codes, #gridjs_from_html_table, #gridjs_table, #is_wy_ip, #line_break, #parent_layout, #pass_or_fail, #render_error_messages_list, #render_video_card, #resolved_auth_form_turbo_frame, #return_path_or, #safe_css_color, #set_return_path_if_present, #set_section_if_present, #tab_frame_id, #to_underscore, #track_page?, #turbo_section_wrapper, #turbo_tabs_request?, #url_on_same_domain_as_request, #widget_index_daily_focus_index_path, #working_hours?, #yes_or_no, #yes_or_no_highlighted, #yes_or_no_with_check_or_cross, #youtube_video

Methods included from UppyUploaderHelper

#file_uploader, #image_uploader, #large_file_uploader_s3, #lead_sketch_uploader, #rma_image_uploader, #rma_image_uploader_s3, #uppy_uploader, #video_uploader

Methods included from ImagesHelper

#image_asset_tag, #image_asset_url

Methods included from UrlsHelper

#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?

Methods included from IconHelper

#account_nav_icon, #fa_icon, #star_rating_html

Constructor Details

#initialize(video:, layout: DEFAULT_LAYOUT, card_style: DEFAULT_CARD_STYLE, hide_title: false, hide_description: false, display_category_badge: false, display_duration: false, featured: false, title_heading_level: nil, styles: '', show_popup: true, show_direct_link: true, add_schema: true, **html_attributes) ⇒ VideoCardComponent

rubocop:disable Metrics/ParameterLists



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/components/www/video_card_component.rb', line 23

def initialize(
  video:,
  layout: DEFAULT_LAYOUT,
  card_style: DEFAULT_CARD_STYLE,
  hide_title: false,
  hide_description: false,
  display_category_badge: false,
  display_duration: false,
  featured: false,
  title_heading_level: nil,
  styles: '',
  show_popup: true,
  show_direct_link: true,
  add_schema: true,
  **html_attributes
)
  super()
  @video = video
  @layout = fetch_or_fallback(layout, LAYOUTS, DEFAULT_LAYOUT)
  @card_style = fetch_or_fallback(card_style, CARD_STYLES, DEFAULT_CARD_STYLE)
  @hide_title = hide_title
  @hide_description = hide_description
  @display_category_badge = display_category_badge
  @display_duration = display_duration
  @featured = featured
  # Opt-in semantic heading for the title (e.g. `:h2`). When nil the
  # title renders inside a plain <a>/<span> — appropriate for cards
  # that sit under their own section header. Pages where each video
  # card IS the heading-bearing block (e.g. the videos index) pass
  # `:h2` to surface the title to SEO / a11y heading hierarchy.
  @title_heading_level = title_heading_level
  @styles = styles
  @show_popup = show_popup
  @show_direct_link = show_direct_link
  @add_schema = add_schema
  @html_attributes = html_attributes
end

Instance Method Details

#before_renderObject



66
67
68
69
70
71
72
73
74
# File 'app/components/www/video_card_component.rb', line 66

def before_render
  # Add video schema to page collection
  return unless @add_schema

  # If @video is already a presenter, pass the underlying model to add_page_schema
  # Otherwise, pass the video object directly
  video_object = @video.is_a?(Www::VideoPresenter) ? @video.r : @video
  add_page_schema(:video, video_object)
end

#render?Boolean

rubocop:enable Metrics/ParameterLists

Returns:

  • (Boolean)


62
63
64
# File 'app/components/www/video_card_component.rb', line 62

def render?
  @video.present?
end