From cb84c4110a3e1251a0742901a668851bc592d254 Mon Sep 17 00:00:00 2001 From: Dirk Jonker Date: Sat, 25 Apr 2020 13:01:14 +0200 Subject: [PATCH 1/2] Add data-default-select attribute to existing body element --- lib/activeadmin_addons/active_admin_config.rb | 1 + spec/features/inputs/select2_spec.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/activeadmin_addons/active_admin_config.rb b/lib/activeadmin_addons/active_admin_config.rb index ce6630df..772f1847 100644 --- a/lib/activeadmin_addons/active_admin_config.rb +++ b/lib/activeadmin_addons/active_admin_config.rb @@ -3,6 +3,7 @@ class ActiveAdmin::Views::Pages::Base def build(*args) original_build(args) + body = get_elements_by_tag_name("body").first body.set_attribute "data-default-select", ActiveadminAddons.default_select end end diff --git a/spec/features/inputs/select2_spec.rb b/spec/features/inputs/select2_spec.rb index e5ba78cc..b511bc47 100644 --- a/spec/features/inputs/select2_spec.rb +++ b/spec/features/inputs/select2_spec.rb @@ -76,4 +76,21 @@ expect(page).to have_selector("select.select2") end end + + context "when building ActiveAdmin html" do + describe "the element" do + it "is present in the document only once" do + visit admin_invoices_path + + expect(page.all('body').size).to eq 1 + end + + it "contains the data-default-select attribute" do + visit admin_invoices_path + + body = find("body") + expect(body['data-default-select']).to eq ActiveadminAddons.default_select + end + end + end end From d944ba7271be897a89d4913917c84656b1dbc0fd Mon Sep 17 00:00:00 2001 From: Dirk Jonker Date: Sat, 25 Apr 2020 12:38:55 +0200 Subject: [PATCH 2/2] Remove invalid html attributes for inputs --- lib/activeadmin_addons/support/input_base.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/activeadmin_addons/support/input_base.rb b/lib/activeadmin_addons/support/input_base.rb index 4ee6c43c..b8cf3360 100644 --- a/lib/activeadmin_addons/support/input_base.rb +++ b/lib/activeadmin_addons/support/input_base.rb @@ -16,7 +16,10 @@ def to_html end def input_html_options - super.merge(control_attributes) + # maxwidth and size are added by Formtastic::Inputs::StringInput + # but according to the HTML standard these are not valid attributes + # on the inputs provided by this module + super.except(:maxlength, :size).merge(control_attributes) end def parts_to_html