Sha256: 22d51ffec136d3aeeae1eccbb94939d3332097272136d357f3a600e4a4296c76

Contents?: true

Size: 1.31 KB

Versions: 26

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require "primer/class_name_helper"

module Primer
  module Forms
    # :nodoc:
    class BaseComponent
      include Primer::ClassNameHelper
      extend ActsAsComponent

      def self.inherited(base)
        base.renders_template File.join(__dir__, "#{base.name.demodulize.underscore}.html.erb"), :render_template
      end

      delegate :required?, :disabled?, :hidden?, to: :@input

      def perform_render(&block)
        @__prf_content_block = block
        compile_and_render_template
      end

      def content
        return @__prf_content if defined?(@__prf_content_evaluated) && @__prf_content_evaluated

        @__prf_content_evaluated = true
        @__prf_content = capture do
          @__prf_content_block.call
        end
      end

      # :nocov:
      def type
        :component
      end
      # :nocov:

      def input?
        false
      end

      def to_component
        self
      end

      private

      def compile_and_render_template
        self.class.compile! unless self.class.instance_methods(false).include?(:render_template)
        render_template
      end

      def content_tag_if(condition, tag, **kwargs, &block)
        if condition
          content_tag(tag, **kwargs, &block)
        else
          capture(&block)
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
primer_view_components-0.0.112 lib/primer/forms/base_component.rb
primer_view_components-0.0.111 lib/primer/forms/base_component.rb
primer_view_components-0.0.110 lib/primer/forms/base_component.rb
primer_view_components-0.0.109 lib/primer/forms/base_component.rb
primer_view_components-0.0.108 lib/primer/forms/base_component.rb
primer_view_components-0.0.107 lib/primer/forms/base_component.rb
primer_view_components-0.0.106 lib/primer/forms/base_component.rb
primer_view_components-0.0.105 lib/primer/forms/base_component.rb
primer_view_components-0.0.104 lib/primer/forms/base_component.rb
primer_view_components-0.0.103 lib/primer/forms/base_component.rb
primer_view_components-0.0.102 lib/primer/forms/base_component.rb
primer_view_components-0.0.101 lib/primer/forms/base_component.rb
primer_view_components-0.0.100 lib/primer/forms/base_component.rb
primer_view_components-0.0.99 lib/primer/forms/base_component.rb
primer_view_components-0.0.98 lib/primer/forms/base_component.rb
primer_view_components-0.0.97 lib/primer/forms/base_component.rb
primer_view_components-0.0.96 lib/primer/forms/base_component.rb
primer_view_components-0.0.95 lib/primer/forms/base_component.rb
primer_view_components-0.0.94 lib/primer/forms/base_component.rb
primer_view_components-0.0.93 lib/primer/forms/base_component.rb