Sha256: 1b7bc9c231bd7f8057d39df8f7e5ba46f0c91f6144fa2fd4945e9209709e288d

Contents?: true

Size: 1.31 KB

Versions: 17

Compression:

Stored size: 1.31 KB

Contents

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

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

        wraps_component :button do |args|
          Coco::App::Elements::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}".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

17 entries across 17 versions & 1 rubygems

Version Path
coveragebook_components-0.10.0 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.9.1 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.9.0 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.9 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.8 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.7 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.6 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.5 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.4 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.3 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.2 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.1 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.0 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.0.beta.3 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.0.beta.2 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.8.0.beta.1 app/components/coco/app/elements/button_to/button_to.rb
coveragebook_components-0.7.10 app/components/coco/app/elements/button_to/button_to.rb