Sha256: bf7841f72923eb99901448c44c0b9f000849752065d349f1b9e5283ce7521905

Contents?: true

Size: 1.48 KB

Versions: 8

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require "rails/application_controller"

class Rails::ComponentsController < Rails::ApplicationController # :nodoc:
  prepend_view_path File.expand_path("templates/rails", __dir__)

  around_action :set_locale, only: :previews
  before_action :find_preview, only: :previews
  before_action :require_local!, unless: :show_previews?

  if respond_to?(:content_security_policy)
    content_security_policy(false)
  end

  def index
    @previews = ActionView::Component::Preview.all
    @page_title = "Component Previews"
    render template: "components/index"
  end

  def previews
    if params[:path] == @preview.preview_name
      @page_title = "Component Previews for #{@preview.preview_name}"
      render template: "components/previews"
    else
      @example_name = File.basename(params[:path])
      render template: "components/preview", layout: false
    end
  end

  private

  def show_previews? # :doc:
    ActionView::Component::Base.show_previews
  end

  def find_preview # :doc:
    candidates = []
    params[:path].to_s.scan(%r{/|$}) { candidates << $` }
    preview = candidates.detect { |candidate| ActionView::Component::Preview.exists?(candidate) }

    if preview
      @preview = ActionView::Component::Preview.find(preview)
    else
      raise AbstractController::ActionNotFound, "Component preview '#{params[:path]}' not found"
    end
  end

  def set_locale
    I18n.with_locale(params[:locale] || I18n.default_locale) do
      yield
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
actionview-component-1.7.0 lib/railties/lib/rails/components_controller.rb
actionview-component-1.6.2 lib/railties/lib/rails/components_controller.rb
actionview-component-1.6.1 lib/railties/lib/rails/components_controller.rb
actionview-component-1.6.0 lib/railties/lib/rails/components_controller.rb
actionview-component-1.5.3 lib/railties/lib/rails/components_controller.rb
actionview-component-1.5.2 lib/railties/lib/rails/components_controller.rb
actionview-component-1.5.1 lib/railties/lib/rails/components_controller.rb
actionview-component-1.5.0 lib/railties/lib/rails/components_controller.rb