From 759a0b31b7f8eb878a3af9c4b1ca4298e6336ebe Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sun, 4 Feb 2024 20:11:44 +0100 Subject: [PATCH] Disable only form-opening link Close other forms on new form open --- app/views/units/_form_close.html.erb | 7 +++---- app/views/units/_unit.html.erb | 6 ++++-- app/views/units/edit.turbo_stream.erb | 7 ++----- app/views/units/new.turbo_stream.erb | 14 ++++++++------ 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/views/units/_form_close.html.erb b/app/views/units/_form_close.html.erb index bea914b..5226d99 100644 --- a/app/views/units/_form_close.html.erb +++ b/app/views/units/_form_close.html.erb @@ -1,4 +1,3 @@ -<%= turbo_stream.remove @unit %> -<%= turbo_stream.enable_all 'td.actions .button' %> -<%= turbo_stream.enable :add_unit %> -<%= turbo_stream.focus :add_unit %> +<%= @unit.persisted? ? turbo_stream.replace(@unit) : turbo_stream.remove(@unit) %> +<%= turbo_stream.enable id %> +<%= turbo_stream.focus id %> diff --git a/app/views/units/_unit.html.erb b/app/views/units/_unit.html.erb index cd2332b..b787939 100644 --- a/app/views/units/_unit.html.erb +++ b/app/views/units/_unit.html.erb @@ -1,6 +1,7 @@ - <%= link_to unit.symbol, edit_unit_path(unit), data: {turbo_stream: true} %> + <%= link_to unit.symbol, edit_unit_path(unit), id: dom_id(unit, :edit), + data: {turbo_stream: true} %> <%= unit.name %> <%= scientifize(unit.multiplier) if unit.multiplier %> @@ -9,7 +10,8 @@ <% if unit.base.nil? %> <%= image_link_to t(".add_subunit"), "plus-outline", new_unit_path(unit), - onclick: 'this.blur();', data: {turbo_stream: true} %> + id: dom_id(unit, :add), onclick: 'this.blur();', + data: {turbo_stream: true} %> <% end %> <%= image_button_to t(".delete_unit"), "delete-outline", unit_path(unit), diff --git a/app/views/units/edit.turbo_stream.erb b/app/views/units/edit.turbo_stream.erb index ebb2aed..e5df3f7 100644 --- a/app/views/units/edit.turbo_stream.erb +++ b/app/views/units/edit.turbo_stream.erb @@ -1,10 +1,7 @@ <%# TODO: make sure turbo_stream layout is used in new/edit %> -<%= turbo_stream.disable :add_unit %> -<%= turbo_stream.disable_all 'td.actions .button' %> - -<%= turbo_stream.replace @unit, partial: 'form' %> +<%= turbo_stream.replace @unit, partial: 'form', locals: {id: dom_id(@unit, :edit)} %> <%= turbo_stream.update :unit_form_frame do %> <%= form_with model: @unit, html: {id: :unit_form} do %> <% end %> -<% end %> +<% end unless @unit.errors.present? %> diff --git a/app/views/units/new.turbo_stream.erb b/app/views/units/new.turbo_stream.erb index dd4d73f..ff2d753 100644 --- a/app/views/units/new.turbo_stream.erb +++ b/app/views/units/new.turbo_stream.erb @@ -1,14 +1,16 @@ -<%= turbo_stream.disable :add_unit %> -<%# TODO: disable only form-opening actions %> -<%= turbo_stream.disable_all 'td.actions .button' %> +<% options = {partial: 'form', locals: {id: dom_id(@unit.base || @unit, :add)}} %> <% if @unit.errors.present? %> - <%= turbo_stream.replace @unit, partial: 'form' %> + <%= turbo_stream.replace @unit, **options -%> <% else %> + <%= turbo_stream.disable options[:locals][:id] -%> + <%= turbo_stream.click_all 'tbody a[name=cancel]' -%> + <%#= turbo_stream.blur_all %> + <% if @unit.base.nil? %> - <%= turbo_stream.prepend :units, partial: 'form' %> + <%= turbo_stream.prepend :units, **options -%> <% else %> - <%= turbo_stream.after @unit.base, partial: 'form' %> + <%= turbo_stream.after @unit.base, **options -%> <% end %> <%= turbo_stream.update :unit_form_frame do %>