From c60b5f528447ba6bba20580c0dd139281794780a Mon Sep 17 00:00:00 2001 From: Marcelo Paiva Date: Thu, 26 Feb 2026 09:50:11 -0500 Subject: [PATCH] Fix submission row aria-labels for WCAG 2.1 AA compliance Apply descriptive aria-labels to all focusable elements in _submission.html.erb: - Status badge links: "Document Status: [status]" - Submitter name links: "Submitted by: [submitter]" - Edit pencil (icon-only): "Edit [document-name]" - Sign Now button: "Sign this document" - View link: "View document" - Archive button: "Archive [document-name]" - Overlay cover link: aria-hidden + tabindex=-1 (removes duplicate focus trap) Covers both single-submitter and multi-submitter layout variants. Co-Authored-By: Claude Sonnet 4.6 --- app/views/templates/_submission.html.erb | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/views/templates/_submission.html.erb b/app/views/templates/_submission.html.erb index 64cfd03f..789f9813 100644 --- a/app/views/templates/_submission.html.erb +++ b/app/views/templates/_submission.html.erb @@ -41,19 +41,19 @@ <% else %> - "> + <%= t(submitter.status) %> <% end %> - "> + <%= submitter.name || submitter.email || submitter.phone %> <% if can?(:update, submission) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? && !submitter.declined_at? %> - <%= link_to edit_submitter_path(submitter), class: 'shrink-0', aria: { label: "#{t('edit')} #{submitter.name || submitter.email || submitter.phone}" }, data: { turbo_frame: 'modal' } do %> + <%= link_to edit_submitter_path(submitter), class: 'shrink-0', aria: { label: "Edit #{submission.template&.name || submission.name}" }, data: { turbo_frame: 'modal' } do %> <%= svg_icon('pencil', class: 'w-5 h-5') %> <% end %> @@ -81,7 +81,7 @@ <% elsif !submission.archived_at? && !template&.archived_at? && !submission.expired? && !submitter.declined_at? %> <% if current_user.email == submitter.email %>
- "> + <% if t('sign_now').length < 12 %> <%= svg_icon('writing_sign', class: 'w-4 h-4 stroke-2') %> @@ -97,13 +97,13 @@ <% end %> <% end %> <% if !submission.archived_at? && !template&.archived_at? && can?(:destroy, submission) %> - <%= button_to button_title(title: nil, disabled_with: nil, icon: svg_icon('archive', class: 'w-6 h-6'), icon_disabled: svg_icon('loader', class: 'w-6 h-6 animate-spin')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: t('archive'), aria: { label: "#{t('archive')} – #{submitter.name || submitter.email || submitter.phone}" }, method: :delete %> + <%= button_to button_title(title: nil, disabled_with: nil, icon: svg_icon('archive', class: 'w-6 h-6'), icon_disabled: svg_icon('loader', class: 'w-6 h-6 animate-spin')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: t('archive'), aria: { label: "Archive #{submission.template&.name || submission.name}" }, method: :delete %> <% end %> <% if local_assigns[:archived] && can?(:destroy, submission) %> @@ -117,7 +117,7 @@
<% if is_submission_completed %> <% latest_submitter = submitters.select(&:completed_at?).max_by(&:completed_at) %> - + <%= t(latest_submitter.status) %> @@ -134,19 +134,19 @@
<% if !is_submission_completed && !submission.expired? %> - "> + <%= t(submitter.status) %> <% end %> - "> + <%= submitter.name || submitter.email || submitter.phone %> <% if can?(:update, submission) && !submitter.start_form_submission_events.any? && !submission.archived_at? && !submission.expired? && !submitter.declined_at? %> - <%= link_to edit_submitter_path(submitter), class: 'shrink-0', aria: { label: "#{t('edit')} #{submitter.name || submitter.email || submitter.phone}" }, data: { turbo_frame: 'modal' } do %> + <%= link_to edit_submitter_path(submitter), class: 'shrink-0', aria: { label: "Edit #{submission.template&.name || submission.name}" }, data: { turbo_frame: 'modal' } do %> <%= svg_icon('pencil', class: 'w-5 h-5') %> <% end %> @@ -167,7 +167,7 @@ <% elsif !template&.archived_at? && !submission.archived_at? && !is_submission_completed && !submission.expired? && !submitter.declined_at? %> <% end %> <% if !submission.archived_at? && !template&.archived_at? %> - <%= button_to button_title(title: nil, disabled_with: nil, icon: svg_icon('archive', class: 'w-6 h-6'), icon_disabled: svg_icon('loader', class: 'w-6 h-6 animate-spin')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: t('archive'), aria: { label: t('archive') }, method: :delete %> + <%= button_to button_title(title: nil, disabled_with: nil, icon: svg_icon('archive', class: 'w-6 h-6'), icon_disabled: svg_icon('loader', class: 'w-6 h-6 animate-spin')), submission_path(submission), class: 'btn btn-outline btn-sm w-full md:w-fit', form: { class: 'flex' }, title: t('archive'), aria: { label: "Archive #{submission.template&.name || submission.name}" }, method: :delete %> <% end %> <% if local_assigns[:archived] && can?(:destroy, submission) %>