Class: Www::VideoCardComponent
- Inherits:
-
Railsboot::Component
- Object
- Railsboot::Component
- Www::VideoCardComponent
- 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 ApplicationHelper
ApplicationHelper::CF_WEB_ANALYTICS_SKIP_PATHS, ApplicationHelper::MARKDOWN_ALLOWED_ATTRIBUTES, ApplicationHelper::MARKDOWN_ALLOWED_TAGS
Constants included from IconHelper
IconHelper::CUSTOM_ICON_MAP, IconHelper::CUSTOM_SVG_DIR, IconHelper::DEFAULT_FAMILY
Instance Method Summary collapse
- #before_render ⇒ Object
-
#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
constructor
rubocop:disable Metrics/ParameterLists.
-
#render? ⇒ Boolean
rubocop:enable Metrics/ParameterLists.
Methods included from SeoHelper
#add_page_schema, #add_webpage_schema, #canada?, #collect_schema, #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
Methods included from ApplicationHelper
#better_number_to_currency, #cf_web_analytics?, #check_or_cross, #check_or_times, #embedded_tab_frame_id, #error_messages, #general_disclaimer_on_product_installation_and_local_codes, #markdown_to_html, #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, #turbo_section_wrapper, #turbo_tabs_request?, #url_on_same_domain_as_request, #working_hours?, #yes_or_no, #yes_or_no_highlighted, #yes_or_no_with_check_or_cross
Methods included from UppyUploaderHelper
#file_uploader, #image_uploader, #large_file_uploader_s3, #lead_sketch_uploader, #public_warranty_card_uploader, #rma_image_uploader, #rma_image_uploader_s3, #uppy_uploader, #video_uploader, #warranty_card_uploader
Methods included from ImagesHelper
#image_asset_tag, #image_asset_url, #picture_asset_tag
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
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'app/components/www/video_card_component.rb', line 38 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_render ⇒ Object
81 82 83 84 85 86 87 88 89 |
# File 'app/components/www/video_card_component.rb', line 81 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
77 78 79 |
# File 'app/components/www/video_card_component.rb', line 77 def render? @video.present? end |