From fa247d2b73b0b85c2f7dfd1171ce37e835636d1d Mon Sep 17 00:00:00 2001 From: right9alt <62570575+right9alt@users.noreply.github.com> Date: Mon, 24 Jun 2024 16:32:56 +0400 Subject: [PATCH] feat: enable overwrite default html params (#33) --- lib/active_dry_form/builder.rb | 4 +++- lib/active_dry_form/configuration.rb | 5 ++++- lib/active_dry_form/form_helper.rb | 4 +++- spec/active_dry_form/form_helper_spec.rb | 14 +++++++++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/active_dry_form/builder.rb b/lib/active_dry_form/builder.rb index 41520fe..c3531a9 100644 --- a/lib/active_dry_form/builder.rb +++ b/lib/active_dry_form/builder.rb @@ -100,7 +100,9 @@ def fields_for(association_name, fields_options = {}, &block) private def wrap_input(method_type, field, options, wrapper_options = {}) config = ActiveDryForm.config.html_options._settings[method_type] ? ActiveDryForm.config.html_options[method_type] : EMPTY_HASH - options = options.merge(config) { |_key, oldval, newval| Array.wrap(newval) + Array.wrap(oldval) } + options = config.merge(options) + + options[:class] = Array.wrap(config[:class]) + Array.wrap(options[:class]) if config[:class] options[:required] = object.info(field)[:required] unless options.key?(:required) Input diff --git a/lib/active_dry_form/configuration.rb b/lib/active_dry_form/configuration.rb index 9c7e29a..18a5c0d 100644 --- a/lib/active_dry_form/configuration.rb +++ b/lib/active_dry_form/configuration.rb @@ -15,6 +15,7 @@ module ActiveDryForm setting :input, default: 'form-input' setting :input_required, default: 'form-input-required' setting :input_error, default: 'form-input-error' + setting :form, default: ['active-dry-form'] end setting :html_options do @@ -25,6 +26,8 @@ module ActiveDryForm setting :input_email, default: EMPTY_HASH setting :input_file, default: EMPTY_HASH setting :input_integer, default: EMPTY_HASH + + # If without 'any', the fractional part of the number is lost when step is an integer (1 by default) setting :input_number, default: { step: 'any' } setting :input_password, default: EMPTY_HASH setting :input_select, default: EMPTY_HASH @@ -33,7 +36,7 @@ module ActiveDryForm setting :input_text, default: EMPTY_HASH setting :input_url, default: EMPTY_HASH - setting :form, default: { class: ['active-dry-form'] } + setting :form, default: EMPTY_HASH end end diff --git a/lib/active_dry_form/form_helper.rb b/lib/active_dry_form/form_helper.rb index c0b2ed3..57ae051 100644 --- a/lib/active_dry_form/form_helper.rb +++ b/lib/active_dry_form/form_helper.rb @@ -16,7 +16,9 @@ def active_dry_form_for(name, options = {}, &block) end private def html_options(options) - (options[:html] || {}).merge(ActiveDryForm.config.html_options.form) do |_key, oldval, newval| + classes = { class: ActiveDryForm.config.css_classes.form } + + (options[:html] || {}).merge(ActiveDryForm.config.html_options.form, classes) do |_key, oldval, newval| Array.wrap(newval) + Array.wrap(oldval) end end diff --git a/spec/active_dry_form/form_helper_spec.rb b/spec/active_dry_form/form_helper_spec.rb index 415603d..058284f 100644 --- a/spec/active_dry_form/form_helper_spec.rb +++ b/spec/active_dry_form/form_helper_spec.rb @@ -125,7 +125,7 @@ def polymorphic_path(*) expect(html).to include_html(expected_html) end - it 'renders float input' do + it 'renders float input default step' do html = context.active_dry_form_for(form) { |f| f.input :balance } expected_html = <<-HTML