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