From ff6fecd39b302c6014c55384bd1eb2a784813830 Mon Sep 17 00:00:00 2001 From: tolvitty Date: Fri, 13 Feb 2026 14:54:49 +0100 Subject: [PATCH] feat: add keyboard accessibility to toggle and rating fields Co-Authored-By: Claude Opus 4.6 --- src/ui/field-renderers.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/ui/field-renderers.ts b/src/ui/field-renderers.ts index ea7d3fe..8018788 100644 --- a/src/ui/field-renderers.ts +++ b/src/ui/field-renderers.ts @@ -135,6 +135,15 @@ function renderToggle( const toggle = controlEl.createDiv({ cls: 'checkbox-container' }); if (enabled) toggle.addClass('is-enabled'); + toggle.setAttribute('tabindex', '0'); + toggle.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === ' ' || e.key === 'Enter') { + e.preventDefault(); + enabled = !enabled; + toggle.toggleClass('is-enabled', enabled); + } + }); + toggle.addEventListener('click', () => { enabled = !enabled; toggle.toggleClass('is-enabled', enabled); @@ -531,6 +540,19 @@ function renderRating( updateStars(); }); + ratingEl.setAttribute('tabindex', '0'); + ratingEl.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'ArrowRight' || e.key === 'ArrowUp') { + e.preventDefault(); + rating = Math.min(5, rating + 1); + updateStars(); + } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') { + e.preventDefault(); + rating = Math.max(1, rating - 1); + updateStars(); + } + }); + updateStars(); return {