Sha256: ddc9a55a6b5387d1bc8e4607417bba62112174ad03fc54eeaa35f723088434bc

Contents?: true

Size: 1.29 KB

Versions: 11

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

# Kpop Frame Requests use a different layout than Turbo Frame requests.
#
# The layout used is <tt>kpop/frame.html.erb</tt>. If there's a need to customize this layout, an application can
# supply its own (such as <tt>app/views/layouts/kpop/frame.html.erb</tt>) which will be used instead.
#
# This module is automatically included in <tt>ActionController::Base</tt>.
module Katalyst
  module Kpop
    module FrameRequest
      extend ActiveSupport::Concern

      class_methods do
        # Example:
        #  require_kpop only: %i[new edit] { url_for(resource) }
        def require_kpop(**constraints, &fallback_location)
          define_method(:kpop_fallback_location, fallback_location) if fallback_location

          before_action :require_kpop, **constraints
        end
      end

      included do
        layout -> { turbo_frame_layout }
      end

      private

      def kpop_frame_request?
        turbo_frame_request_id == "kpop"
      end

      def require_kpop
        redirect_back(fallback_location: kpop_fallback_location, status: :see_other) unless kpop_frame_request?
      end

      def turbo_frame_layout
        if kpop_frame_request?
          "kpop/frame"
        elsif turbo_frame_request?
          "turbo_rails/frame"
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
katalyst-kpop-3.2.6 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.5 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.4 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.3 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.2 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.1 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.2.0 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.1.3 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.1.2 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.1.1 app/controllers/concerns/katalyst/kpop/frame_request.rb
katalyst-kpop-3.1.0 app/controllers/concerns/katalyst/kpop/frame_request.rb