From a9307ad45526fd3305e5372fc9564e2846c7ba0b Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Mon, 23 Dec 2024 00:47:44 +0100 Subject: [PATCH] Form uses button instead of input to display SVG --- .../images/pictograms/plus-circle-outline.svg | 1 + app/assets/images/pictograms/update.svg | 1 + app/helpers/application_helper.rb | 15 +++++++++++++++ app/views/units/_form.html.erb | 2 +- app/views/units/edit.turbo_stream.erb | 2 +- app/views/units/new.turbo_stream.erb | 2 +- 6 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 app/assets/images/pictograms/plus-circle-outline.svg create mode 100644 app/assets/images/pictograms/update.svg diff --git a/app/assets/images/pictograms/plus-circle-outline.svg b/app/assets/images/pictograms/plus-circle-outline.svg new file mode 100644 index 0000000..a4dcfdd --- /dev/null +++ b/app/assets/images/pictograms/plus-circle-outline.svg @@ -0,0 +1 @@ + diff --git a/app/assets/images/pictograms/update.svg b/app/assets/images/pictograms/update.svg new file mode 100644 index 0000000..9740fdb --- /dev/null +++ b/app/assets/images/pictograms/update.svg @@ -0,0 +1 @@ + diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c9f12ab..acc4022 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -55,11 +55,26 @@ module ApplicationHelper form_for(record, **options) { |f| f.form_for(&block) } end + class TabularFormBuilder < ActionView::Helpers::FormBuilder + private + + def submit_default_value + svg_name = object ? (object.persisted? ? 'update' : 'plus-circle-outline') : '' + @template.svg_tag("pictograms/#{svg_name}") + super + end + end + def tabular_fields_for(record_name, record_object = nil, options = {}, &block) + options.merge! builder: TabularFormBuilder render_errors(record_name) fields_for(record_name, record_object, **options, &block) end + def tabular_form_with(**options, &block) + options.merge! builder: TabularFormBuilder + form_with(**options, &block) + end + def svg_tag(source, options = {}) content_tag :svg, options do tag.use href: image_path(source + ".svg") + "#icon" diff --git a/app/views/units/_form.html.erb b/app/views/units/_form.html.erb index e2013a8..59cbff1 100644 --- a/app/views/units/_form.html.erb +++ b/app/views/units/_form.html.erb @@ -20,7 +20,7 @@ - <%= form.submit form: form_tag %> + <%= form.button form: form_tag %> <%= image_link_to t(:cancel), "close-outline", units_path, class: 'dangerous', name: :cancel, onclick: render_turbo_stream('form_close', {row: row}) %> diff --git a/app/views/units/edit.turbo_stream.erb b/app/views/units/edit.turbo_stream.erb index e154cca..0ec4f9d 100644 --- a/app/views/units/edit.turbo_stream.erb +++ b/app/views/units/edit.turbo_stream.erb @@ -4,7 +4,7 @@ form_tag: dom_id(@unit, :edit, :form)} %> <%= turbo_stream.append :unit_form do %> - <%- form_with model: @unit, html: {id: ids[:form_tag]} do %> + <%- tabular_form_with model: @unit, html: {id: ids[:form_tag]} do %> <% end %> <% end %> diff --git a/app/views/units/new.turbo_stream.erb b/app/views/units/new.turbo_stream.erb index 4df54de..0c48189 100644 --- a/app/views/units/new.turbo_stream.erb +++ b/app/views/units/new.turbo_stream.erb @@ -7,7 +7,7 @@ <%= turbo_stream.disable ids[:link] -%> <%= turbo_stream.append :unit_form do %> - <%- form_with model: @unit, html: {id: ids[:form_tag]} do %> + <%- tabular_form_with model: @unit, html: {id: ids[:form_tag]} do %> <% end %> <% end %>