Replace render_turbo_stream cancel handlers with form#cancel Stimulus action

Add cancel() method to form_controller that handles all close cases:
- tabular forms (<tr>): removes inner form, re-enables link, shows hidden row
- measurements create form: removes self, enables trigger link, shows no-items

Data attributes already present on controller elements (data-form, data-link,
data-hidden-row) drive the behaviour. Two extra attributes on the create form
(data-cancel-enable, data-cancel-show) cover the non-tabular case.

Delete now-unused _form_close and _edit_form_close partial templates.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-04 14:14:44 +00:00
parent fee3ce8627
commit 169e84fe8a
10 changed files with 34 additions and 16 deletions

View File

@@ -1,6 +1,8 @@
<%= tabular_form_with model: Measurement.new, id: :measurement_form,
class: 'topside-area flex vertical center',
html: {data: {controller: 'form', action: 'keydown->form#processKey'}} do |form| %>
html: {data: {controller: 'form', action: 'keydown->form#processKey',
cancel_enable: 'new_measurement_link',
cancel_show: 'no_items'}} do |form| %>
<table class="items-table center">
<tbody id="readouts">
@@ -34,6 +36,6 @@
<div class="flex reverse">
<%= form.button id: :create_measurement_button, disabled: true -%>
<%= image_link_to t(:cancel), "close-outline", measurements_path, name: :cancel,
class: 'dangerous', onclick: render_turbo_stream('form_close') %>
class: 'dangerous', data: {action: 'click->form#cancel'} %>
</div>
<% end %>