Sha256: 4f38e2c110a8a988a08ac76c6e897c0f08b2b3420cfe5f9af987d29e20d4e126

Contents?: true

Size: 1.13 KB

Versions: 7

Compression:

Stored size: 1.13 KB

Contents

module Coco
  module App
    module Elements
      class ButtonTo < Coco::Component
        include Concerns::WrapsComponent

        wraps_component :button do |args|
          Coco::App::Elements::Button.new(type: :submit, **args)
        end

        %i[confirmation].each do |slot_name|
          renders_one slot_name, ->(**kwargs, &block) do
            button.send("with_#{slot_name}".to_sym, **kwargs, &block)
          end
        end

        attr_reader :method, :turbo

        def initialize(form: nil, params: nil, method: :post, action: nil, href: nil, turbo: false, **kwargs)
          @form_args = form.to_h
          @action = action || href
          @method = method
          @params = params.to_h
          @turbo = turbo
        end

        def params
          to_form_params(@params)
        end

        def form_args
          {
            url: action,
            method: method,
            data: {
              turbo: ("false" if !turbo)
            }
          }.deep_merge(@form_args)
        end

        def action
          @action.is_a?(String) ? @action : helpers.url_for(@action)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
coveragebook_components-0.7.9 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.8 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.7 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.6 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.5 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.4 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.3 app/components/coco/app/elements/button_to/button_to.rb