diff --git a/app/views/units/_form.html.erb b/app/views/units/_form.html.erb
index c1a9298..b1c22ce 100644
--- a/app/views/units/_form.html.erb
+++ b/app/views/units/_form.html.erb
@@ -1,37 +1,26 @@
<%= fields_for @unit do |form| %>
-
- <%= form.text_field :symbol, form: :unit_form, required: true, autofocus: true, size: 10,
- maxlength: @unit.class.columns_hash['symbol'].limit, autocomplete: "off" %>
- |
-
- <%= form.text_field :name, form: :unit_form, size: 25,
- maxlength: @unit.class.columns_hash['name'].limit, autocomplete: "off" %>
- |
-
- <% unless @unit.base.nil? %>
- <%= form.number_field :multiplier, form: :unit_form, step: "any", size: 10,
- autocomplete: "off" %>
- <% end %>
- |
+
+
+ <%= form.text_field :symbol, form: :unit_form, required: true, autofocus: true, size: 12,
+ maxlength: @unit.class.columns_hash['symbol'].limit, autocomplete: "off" %>
+ |
+
+ <%= form.text_field :name, form: :unit_form, size: 30,
+ maxlength: @unit.class.columns_hash['name'].limit, autocomplete: "off" %>
+ |
+
+ <% unless @unit.base.nil? %>
+ <%= form.number_field :multiplier, form: :unit_form, step: "any", size: 10,
+ autocomplete: "off" %>
+ <% end %>
+ |
-
- <%= form.submit @unit.persisted? ? t(:update) : t(:add), form: :unit_form,
- onclick: 'focusAddLink(event);' %>
- <%= image_link_to t(:cancel), "close-circle-outline", units_path, class: 'dangerous',
- onclick: 'closeForm(event); return false;' %>
- |
+
+ <%= form.submit form: :unit_form, onclick: 'focusAddLink(event)' %>
+ <%= image_link_to t(:cancel), "close-circle-outline", units_path, class: 'dangerous',
+ onclick: 'closeForm(event); return false;' %>
+ |
+
<% end %>
-<%= javascript_tag do %>
- function closeForm(event) {
- event.target.closest("tr").replaceChildren();
- focusAddLink(event);
- }
-
- function focusAddLink(event) {
- 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 fc0ad52..51e1739 100644
--- a/app/views/units/_index.html.erb
+++ b/app/views/units/_index.html.erb
@@ -1,5 +1,3 @@
-
-
<% Unit.each_with_level(@units) do |unit, level| %>
diff --git a/app/views/units/index.html.erb b/app/views/units/index.html.erb
index 0a7f8a0..7a6057f 100644
--- a/app/views/units/index.html.erb
+++ b/app/views/units/index.html.erb
@@ -24,3 +24,22 @@
<%= render partial: 'index' %>
+
+<%= javascript_tag do %>
+ function closeForm(event) {
+ event.target.closest("tr").remove();
+ focusAddLink(event);
+ }
+
+ function focusAddLink(event) {
+ var add_unit_link = document.querySelector("a#add_unit");
+ add_unit_link.style.visibility = "visible";
+ add_unit_link.focus({ focusVisible: true });
+ }
+
+ function processKey(event) {
+ if (event.key == "Escape") {
+ closeForm(event);
+ }
+ }
+<% end %>
diff --git a/app/views/units/new.turbo_stream.erb b/app/views/units/new.turbo_stream.erb
index 15692a3..6cbfd9b 100644
--- a/app/views/units/new.turbo_stream.erb
+++ b/app/views/units/new.turbo_stream.erb
@@ -1,4 +1,4 @@
-<%= turbo_stream.update @unit do %>
+<%= turbo_stream.prepend :units do %>
<%= render partial: 'form' %>
<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index a167d62..8838154 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -13,6 +13,10 @@ en:
created_at: registered
confirmed_at: confirmed
unconfirmed_email: Awaiting confirmation for
+ helpers:
+ submit:
+ create: Create
+ update: Update
units:
index:
add_unit: Add unit
diff --git a/test/system/units_test.rb b/test/system/units_test.rb
index 29f714b..4364e16 100644
--- a/test/system/units_test.rb
+++ b/test/system/units_test.rb
@@ -36,4 +36,10 @@ class UnitsTest < ApplicationSystemTestCase
# assert_selector flash
end
+
+ test "close new unit form with escape" do
+ click_on t('units.index.add_unit')
+ first('tbody > tr').all(:field).sample.send_keys :escape
+ within('tbody') { assert_no_selector :fillable_field }
+ end
end
|