Class: Www::ReviewsIo::ReviewListComponent
- Inherits:
-
ApplicationComponent
- Object
- ViewComponent::Base
- ApplicationComponent
- Www::ReviewsIo::ReviewListComponent
- Includes:
- Concerns::ReviewsIoSupport
- Defined in:
- app/components/www/reviews_io/review_list_component.rb
Overview
Full-page review list component with client-side pagination and sorting.
All reviews are loaded upfront and handled by JavaScript.
Usage:
<%= render Www::ReviewsIo::ReviewListComponent.new(
product_line: 'floor-heating'
) %>
<%= render Www::ReviewsIo::ReviewListComponent.new(
skus: ['SKU-001', 'SKU-002'],
reviews_per_page: 10
) %>
With curated tag-based reviews merged in:
<%= render Www::ReviewsIo::ReviewListComponent.new(
product_line: 'radiant-panel',
tags: ['for-radiant-heat-panels-page']
) %>
Constant Summary collapse
- REVIEWS_PER_PAGE =
15- SORT_OPTIONS =
{ 'newest' => 'Newest First', 'oldest' => 'Oldest First', 'highest' => 'Highest Rated', 'lowest' => 'Lowest Rated' }.freeze
Instance Method Summary collapse
-
#initialize(skus: nil, product_line: nil, tags: nil, reviews_per_page: REVIEWS_PER_PAGE, sort: 'newest', page: 1) ⇒ ReviewListComponent
constructor
A new instance of ReviewListComponent.
- #render? ⇒ Boolean
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(skus: nil, product_line: nil, tags: nil, reviews_per_page: REVIEWS_PER_PAGE, sort: 'newest', page: 1) ⇒ ReviewListComponent
Returns a new instance of ReviewListComponent.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/components/www/reviews_io/review_list_component.rb', line 34 def initialize( skus: nil, product_line: nil, tags: nil, reviews_per_page: REVIEWS_PER_PAGE, sort: 'newest', page: 1 # kept for backwards compatibility, ignored ) @skus = skus @product_line = product_line @tags = Array().compact_blank.presence @reviews_per_page = reviews_per_page || REVIEWS_PER_PAGE @sort = sort super() end |
Instance Method Details
#render? ⇒ Boolean
50 51 52 |
# File 'app/components/www/reviews_io/review_list_component.rb', line 50 def render? resolved_skus.any? || @tags.present? end |