Sha256: 69830118c6392d100f5fb104ce58295587de406cc62c0bfc3973a0b87499a5e4

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

module ViewComponent
  module RenderMonkeyPatch # :nodoc:
    def render(options = {}, args = {}, &block)
      if options.respond_to?(:render_in)
        options.render_in(self, &block)
      elsif options.is_a?(Class) && options < ActionView::Component::Base
        ActiveSupport::Deprecation.warn(
          "`render MyComponent, foo: :bar` has been deprecated and will be removed in v2.0.0. Use `render MyComponent.new(foo: :bar)` instead."
        )

        options.new(args).render_in(self, &block)
      elsif options.is_a?(Hash) && options.has_key?(:component) && options[:component] < ActionView::Component::Base
        ActiveSupport::Deprecation.warn(
          "`render component: MyComponent, locals: { foo: :bar }` has been deprecated and will be removed in v2.0.0. Use `render MyComponent.new(foo: :bar)` instead."
        )

        options[:component].new(options[:locals]).render_in(self, &block)
      elsif options.respond_to?(:to_component_class) && !options.to_component_class.nil? && options.to_component_class < ActionView::Component::Base
        ActiveSupport::Deprecation.warn(
          "rendering objects that respond_to `to_component_class` has been deprecated and will be removed in v2.0.0. Use `render MyComponent.new(foo: :bar)` instead."
        )

        options.to_component_class.new(options).render_in(self, &block)
      else
        super
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
actionview-component-1.14.1 lib/view_component/render_monkey_patch.rb
actionview-component-1.14.0 lib/view_component/render_monkey_patch.rb