Marcelo Paiva
cf20940023
Implement accessibility plan: Sprints 5, 6, and 7 (WCAG 2.1 AA)
...
Sprint 5 – Critical fixes:
- 5-A: Add sr-only label + aria-label to search input and clear/submit buttons
- 5-B: Add role/aria-live/aria-atomic to flash messages; dismiss button label
- 5-C: Add role=dialog aria-modal aria-labelledby to _html_modal
- 5-D: Change file-dropzone inputs from display:none to sr-only; add region/label to dropzone element
- 5-E: Convert all <a href="#"> acting as buttons to <button type="button"> in signature_step, initials_step, phone_step
Sprint 6 – High priority:
- 6-A: Wrap pagination in <nav aria-label>; add aria-current="page" to current page
- 6-B: Wrap settings nav in <nav aria-label>; add aria-labels to icon-only social links
- 6-B/7-J: menu_active.js sets aria-current="page" on active links
- 6-C/D: Progress dots → <button> with aria-label/aria-current; form container gets aria-hidden; expand button gets aria-expanded/aria-controls
- 6-E: Add aria-label to folder card link
- 6-F: Wrap breadcrumb back-link in <nav aria-label="Breadcrumb">
- 6-G: scroll_to.js adds keydown (Enter/Space) handler and focuses target after scroll
- 6-H: Add aria-label to template builder option remove (×) button
- 6-I: fetch_form.js announces success via announcePolite when data-success-message set
- 6-J: Convert turbo_drawer close anchors to <button> with aria-label
Sprint 7 – Medium priority:
- 7-A: aria-errormessage + aria-invalid on signature/initials canvas linked to error divs
- 7-B: aria-busy on payment step processing/checkout buttons
- 7-D: Add id/aria-label/aria-controls to API settings DaisyUI collapse checkboxes
- 7-E: Add table caption, scope="col" on headers, sr-only Actions column header
- 7-F: Wrap SMTP security radio buttons in <fieldset><legend>
- 7-G: Add aria-pressed to dashboard toggle view buttons
- 7-I: Add aria-label="Country code" to phone step select
- i18n: Add dismiss, step, form_progress, breadcrumb, actions keys
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 weeks ago
Marcelo Paiva
60f09745dc
Fix WCAG 2.1 AA medium issues: color-only indicators, form errors, icon-only buttons
...
- M1: submissions/show.html.erb — aria-hidden on decorative color dot; sr-only text on
colored field overlays (field name + submitter) for screen reader users (WCAG 1.4.1)
- M2: field_submitter.vue — aria-hidden on all decorative color dots; aria-label on
compact mode label (selectedSubmitter name); changed inner button to span (WCAG 1.4.1)
- M8: profile/index.html.erb — inline validation error messages (role="alert") with
aria-describedby + aria-invalid on all profile and password form fields (WCAG 3.3.1)
- M10: Add aria-label to icon-only buttons/links across 7 files:
- field.vue: draw, formula, condition, settings, remove, draw-option buttons
- preview.vue: document condition and reorder buttons
- signature_step.vue: QR toggle (with aria-pressed) and close QR buttons
- text_step.vue: toggle multiline text button
- import_list.vue: preview column data info button
- Add i18n keys: show_qr_code, close_qr_code (submission_form); preview_column_data (template_builder)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 weeks ago
Marcelo Paiva
bf4bbedc28
Fix WCAG 2.1 AA medium/high issues: keyboard nav, canvas ARIA, live regions, focus management
...
- H7: Add user_menu.js custom element for navbar dropdown keyboard navigation
(ArrowDown/Up, Enter/Space, Escape, roving tabindex, aria-expanded) (WCAG 2.1.1)
- H8: Add aria-label + fallback text to signature, initials, and QR canvas elements (WCAG 1.1.1)
- M3: Add role="textbox" + aria-label to field name contenteditable in area.vue (WCAG 4.1.2)
- M4: Add aria-hidden/aria-expanded to toggle_visible.js and field_condition.js (WCAG 4.1.2)
- M5: Add aria-label ("Show/Hide password") + aria-pressed to password_input.js toggle (WCAG 4.1.2)
- M6: Move focus to first input on addItem; announce removal via announcePolite in dynamic_list.js (WCAG 2.4.3)
- M7: Announce "Copied to clipboard" via announcePolite in clipboard_copy.js (WCAG 4.1.3)
- M9: Fix placeholder contrast text-neutral-400 → text-neutral-600 in contenteditable.vue (WCAG 1.4.3)
- M9: Fix placeholder contrast before:text-base-content/30 → /60 in template_builder/area.vue (WCAG 1.4.3)
- M11: Add persistent aria-live="polite" region for QR code appearance in signature_step.vue (WCAG 4.1.3)
- Fix missed alert() in initials_step.vue → initialsError data prop + live region (WCAG 4.1.3)
- Add canvas accessibility i18n keys: signature_drawing_pad, initials_drawing_pad, qr_code_for_mobile_signature
- Add field_name i18n key to template_builder for contenteditable aria-label
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 weeks ago
Marcelo Paiva
797fb32a37
Add PDF/Text tab switcher to template builder for sighted users
...
- Create pdf_text_to_html.js: JS port of the Ruby heuristic parser
(ALL_CAPS→h2, numbered headings→h3, bullets→ul/li, body→p dir=auto)
- Add pdf_view, text_view, document_view_options keys to i18n.js (en)
- Update document.vue: tab switcher shown when all pages have extracted
text; PDF View renders the existing page images; Text View renders
heuristic HTML in a prose container with per-page sections
- ArrowLeft/ArrowRight keyboard navigation between tabs with focus management
- Tab is hidden entirely for scanned/image-only PDFs (hasFullText gate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 weeks ago
Pete Matsyburka
362994afd5
adjust i18n
2 months ago
Pete Matsyburka
d7682f4ebd
add number conditions
2 months ago
Alex Turchyn
12c767b7d3
add more options to context menu
2 months ago
Pete Matsyburka
91814ca105
custom fields
2 months ago
Pete Matsyburka
0543c25054
detect fields in context menu
2 months ago
Pete Matsyburka
43c41e2557
add select fields mode
2 months ago
Alex Turchyn
bf53204a41
add context menu to template builder
2 months ago
Pete Matsyburka
b10ed46ccc
add kba
3 months ago
Pete Matsyburka
7ec3282b56
i18n
4 months ago
Pete Matsyburka
daba2505bc
fix detection
4 months ago
Pete Matsyburka
72dd2c6bc5
add template download
5 months ago
Pete Matsyburka
1c8a7b6a7c
detect fields
5 months ago
Pete Matsyburka
201e4010c5
fix german i18n
5 months ago
Pete Matsyburka
b9bbdbffae
fix french i18n
5 months ago
Alex Turchyn
9e8e1996e8
google drive file picker
5 months ago
Pete Matsyburka
189f7b2d7b
add dutch langauge
6 months ago
Pete Matsyburka
3c6a32caba
payment link
6 months ago
Pete Matsyburka
9cc92b59b3
add strikethrough
6 months ago
Pete Matsyburka
df8c44d2ce
quantity formula
6 months ago
Pete Matsyburka
389a47a152
expand options
7 months ago
Pete Matsyburka
a8f1c1c323
add new signature formats
8 months ago
Pete Matsyburka
b2b97a313a
prefillable fields
8 months ago
Pete Matsyburka
ec9293bac0
with signature id
8 months ago
Pete Matsyburka
7b74487214
add length validation
9 months ago
Pete Matsyburka
5050a67d08
add datenow type
9 months ago
Alex Turchyn
5f44806287
adjust dropoze border style
10 months ago
Alex Turchyn
dffa59fecd
add translations
11 months ago
Pete Matsyburka
24fe2a1192
fix refactor dropzone
11 months ago
Alex Turchyn
97b8ac4444
add builder dashboard dropzone
11 months ago
Alex Turchyn
cfdc978a2a
add app tour
12 months ago
Pete Matsyburka
3affd67d24
add font field preferences
1 year ago
Pete Matsyburka
5458e82b6e
increase parties limit
1 year ago
Pete Matsyburka
794e339425
add verification settings
1 year ago
Pete Matsyburka
81521dee81
add ability to reorder fields
1 year ago
Pete Matsyburka
e7e5d0e776
add signature formats
1 year ago
Pete Matsyburka
5724159b7b
verification
1 year ago
Alex Turchyn
75683631f0
add logical 'or' to field conditions
1 year ago
Alex Turchyn
18d60f5522
add signing form specs
1 year ago
Pete Matsyburka
40f5fa4217
add recurrent payment
1 year ago
Oleksandr Turchyn
94e552d170
improve translations
1 year ago
Oleksandr Turchyn
9479771fc8
fix i18n
1 year ago
Alex Turchyn
c7b08e8d30
add languages
1 year ago
Oleksandr Turchyn
e9d728fa4a
add i18n
2 years ago
Pete Matsyburka
cf6b378ccb
adjust payment step
2 years ago
Pete Matsyburka
286b8d7067
add heading field
2 years ago
Pete Matsyburka
e96cb5eb8a
add blank page button
2 years ago