Sha256: 092b885aa9c31691dc4e35d46c6084453c15de49bd40872353a58f9e779713a4

Contents?: true

Size: 1.08 KB

Versions: 11

Compression:

Stored size: 1.08 KB

Contents

module Coco
  class ButtonTo < Coco::Component
    include Concerns::WrapsComponent
    include Concerns::AcceptsOptions

    accepts_option :fit, from: [:auto, :full]

    wraps_component :button do |args|
      Coco::Button.new(
        type: :submit,
        fit: get_option_value(:fit) || :auto,
        **args
      )
    end

    %i[confirmation].each do |slot_name|
      renders_one slot_name, ->(**kwargs, &block) do
        button.send(:"with_#{slot_name}", **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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
coveragebook_components-0.17.5 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.17.4 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.17.3 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.17.2 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.17.1 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.17.0 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.16.0 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.15.0 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.14.0 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.13.1 app/components/coco/buttons/button_to/button_to.rb
coveragebook_components-0.13.0 app/components/coco/buttons/button_to/button_to.rb