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 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?, #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, #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_render ⇒ Object
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
62 63 64 |
# File 'app/components/www/video_card_component.rb', line 62 def render? @video.present? end |