Sha256: c69153fc4ed2ae46f841616dd323dd374a14409dac19c1d3c9687edb1c96c0d4
Contents?: true
Size: 1.3 KB
Versions: 11
Compression:
Stored size: 1.3 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 icon].each do |slot_name| renders_one slot_name, ->(**kwargs, &block) do button.send(:"with_#{slot_name}", **kwargs, &block) end end attr_reader :method def initialize(form: nil, params: nil, method: :post, action: nil, href: nil, turbo: false, turbo_frame: nil, **kwargs) @form_args = form.to_h @action = action || href @method = method @params = params.to_h @turbo = turbo @turbo_frame = turbo_frame end def params to_form_params(@params) end def form_args { url: action, method: method, data: { turbo: turbo_data_attr_value, turbo_frame: @turbo_frame } }.deep_merge(@form_args) end def turbo_data_attr_value if @turbo == false "false" elsif @turbo == true "true" end 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