diff --git a/app/views/units/_form.html.erb b/app/views/units/_form.html.erb index 217c54c..014a937 100644 --- a/app/views/units/_form.html.erb +++ b/app/views/units/_form.html.erb @@ -16,9 +16,16 @@ <%= form.submit unit.persisted? ? t(:update) : t(:add), form: :unit_form %> <%= image_link_to t(:cancel), "close-circle-outline", units_path, class: 'dangerous', - onclick: 'this.closest("tr").replaceChildren(); - document.querySelector("a#add_unit").style.visibility = "visible"; - return false;' %> + onclick: 'closeForm(event); return false;' %> <% end %> + +<%= javascript_tag do %> + function closeForm(event) { + event.target.closest("tr").replaceChildren(); + var add_unit_link = document.querySelector("a#add_unit"); + add_unit_link.style.visibility = "visible"; + add_unit_link.focus({ focusVisible: true }); + } +<% end %> diff --git a/app/views/units/index.html.erb b/app/views/units/index.html.erb index a43e5ad..a4f3c0e 100644 --- a/app/views/units/index.html.erb +++ b/app/views/units/index.html.erb @@ -2,7 +2,7 @@ <% if current_user.at_least(:active) %> <%= turbo_frame_tag do %> <%= image_link_to t('.add_unit'), 'plus-outline', new_unit_path, id: :add_unit, - onclick: 'this.style.visibility = "hidden";', data: {turbo_stream: true} %> + onclick: 'this.blur(); this.style.visibility = "hidden";', data: {turbo_stream: true} %> <% end %> <% end %> diff --git a/test/system/units_test.rb b/test/system/units_test.rb index 5f2369f..2c4e676 100644 --- a/test/system/units_test.rb +++ b/test/system/units_test.rb @@ -17,6 +17,7 @@ class UnitsTest < ApplicationSystemTestCase assert_no_selector :link_or_button, text: t('units.index.add_unit') within first('tbody > tr') do + assert_selector ':focus' fill_in 'unit[symbol]', with: SecureRandom.random_symbol(rand(1..10)) fill_in 'unit[name]', with: [nil, SecureRandom.alphanumeric(rand(1..500))].sample assert_difference ->{ Unit.count }, 1 do