Sha256: 7e819e0afc29e0bfcafc44b359e2e612e89427cb8840aaaca30e52f83619f6f9

Contents?: true

Size: 1.17 KB

Versions: 19

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

#
# Renders HTML markup suitable for use with @proscenium/component-manager.
#
# If a content block is given, that content will be rendered inside the component, allowing for a
# "loading" UI. If no block is given, then a loading text will be rendered.
#
# The parent div is not decorated with any attributes, apart from the selector class required by
# component-manager. But if your component has a side loaded CSS module stylesheet
# (component.module.css), with a `.component` class defined, then that class will be assigned to the
# parent div as a CSS module.
#
class Proscenium::ViewComponent::ReactComponent < Proscenium::ViewComponent
  self.abstract_class = true

  attr_accessor :props, :lazy

  # @param props: [Hash]
  # @param lazy: [Boolean] Lazy load the component using IntersectionObserver. Default: true.
  # @param [Block]
  def initialize(props: {}, lazy: true)
    @props = props
    @lazy = lazy

    super
  end

  def call
    tag.div class: ['componentManagedByProscenium', css_module(:component)],
            data: { component: { path: virtual_path, props: props, lazy: lazy } } do
      tag.div content || 'loading...'
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
proscenium-0.9.1-x86_64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.9.1-aarch64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.9.1-arm64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.9.1-x86_64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.9.0-x86_64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.9.0-aarch64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.9.0-arm64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.9.0-x86_64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.8.2-x86_64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.8.2-aarch64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.8.2-arm64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.8.2-x86_64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.8.0-aarch64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.8.0-arm64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.8.0-x86_64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.7.0-x86_64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.7.0-aarch64-linux lib/proscenium/view_component/react_component.rb
proscenium-0.7.0-arm64-darwin lib/proscenium/view_component/react_component.rb
proscenium-0.7.0-x86_64-darwin lib/proscenium/view_component/react_component.rb