Sha256: 0f7e057aa058a6aaa5470eefc9571702f5e54bf320a303f19946bdba71688421

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

module Integral
  # Widgets used to generate dynamic content
  module Widgets
    # Outputs swiper lists
    #
    # Example Widget Markup
    # <p class='integral-widget' data-widget-type='swiper_list' data-widget-value-list_id='1337' data-widget-value-slide_view_path='shared/my_swiper_slide'>
    class SwiperList
      # Render a swiper list
      def self.render(options = {})
        options = options.reverse_merge(default_options)

        list_id = options[:list_id]
        raise ArgumentError, 'list_id must be provided as a widget value' unless list_id.present?

        list = Integral::List.find_by_id(list_id)
        # TODO: Move most of these options up to SwiperListRenderer as defaults (?)
        list_opts = {
          item_renderer: Integral::PartialListItemRenderer,
          html_classes: '',
          item_renderer_opts: {
            partial_path: options[:slide_view_path],
            wrapper_element: 'div',
            html_classes: 'swiper-slide',
            image_version: :small
          }
        }

        Integral::SwiperListRenderer.render(list, list_opts)
      end

      # Default widget options
      def self.default_options
        {
          slide_view_path: 'integral/shared/record_card'
        }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
integral-1.3.0 lib/integral/widgets/swiper_list.rb
integral-1.2.0 lib/integral/widgets/swiper_list.rb
integral-1.1.0 lib/integral/widgets/swiper_list.rb
integral-1.0.1 lib/integral/widgets/swiper_list.rb
integral-1.0.0 lib/integral/widgets/swiper_list.rb