Sha256: 371c36831afe60ec179f228efb581c075a8ed17ae6d202b795c0f737b55443b4

Contents?: true

Size: 1.11 KB

Versions: 8

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

module Kpop
  class FrameComponent < ViewComponent::Base
    include HasHtmlAttributes
    include Turbo::FramesHelper

    attr_reader :id

    ACTIONS = %w[
      popstate@window->kpop--frame#popstate
      scrim:dismiss@window->kpop--frame#dismiss
      scrim:hide@window->kpop--frame#dismiss
      turbo:before-frame-render->kpop--frame#beforeFrameRender
      turbo:before-stream-render@window->kpop--frame#beforeStreamRender
      turbo:before-visit@window->kpop--frame#beforeVisit
      turbo:frame-load->kpop--frame#frameLoad
    ].freeze

    def initialize(id: "kpop", scrim: "#scrim", **)
      super

      @id    = id
      @scrim = scrim
    end

    def inspect
      "#<#{self.class.name} id: #{id.inspect}>"
    end

    private

    def default_html_attributes
      {
        class:  "kpop--frame",
        data:   {
          controller:                 "kpop--frame",
          action:                     ACTIONS.join(" "),
          "kpop--frame-scrim-outlet": @scrim,
          turbo_action:               "advance",
        },
        target: "_top",
      }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
katalyst-kpop-3.0.0 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.8 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.7 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.6 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.5 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.4 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.3 app/components/kpop/frame_component.rb
katalyst-kpop-3.0.0.beta.2 app/components/kpop/frame_component.rb