From ea765d5b4a9283c1c5c010bd204042e372169722 Mon Sep 17 00:00:00 2001 From: Matthew Costabile Date: Thu, 23 Oct 2025 15:30:53 +0000 Subject: [PATCH 1/7] update devtool a11y --- packages/query-devtools/src/Devtools.tsx | 302 +++++++++++------------ packages/query-devtools/src/Explorer.tsx | 1 + 2 files changed, 150 insertions(+), 153 deletions(-) diff --git a/packages/query-devtools/src/Devtools.tsx b/packages/query-devtools/src/Devtools.tsx index 0959e1e459..c0e6f76d5e 100644 --- a/packages/query-devtools/src/Devtools.tsx +++ b/packages/query-devtools/src/Devtools.tsx @@ -1000,7 +1000,7 @@ export const ContentView: Component = (props) => { 'tsqd-action-open-pip', )} aria-label="Open in picture-in-picture mode" - title={`Open in picture-in-picture mode`} + title="Open in picture-in-picture mode" > @@ -1013,6 +1013,8 @@ export const ContentView: Component = (props) => { 'tsqd-actions-btn', 'tsqd-action-settings', )} + aria-label="Open settings menu" + title="Open settings menu" > @@ -1061,62 +1063,55 @@ export const ContentView: Component = (props) => { 'tsqd-settings-submenu', )} > - { - setDevtoolsPosition('top') - }} - as="button" - class={cx( - styles().settingsSubButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-top', - )} - > - Top - - - { - setDevtoolsPosition('bottom') - }} - as="button" - class={cx( - styles().settingsSubButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-bottom', - )} - > - Bottom - - - { - setDevtoolsPosition('left') - }} - as="button" - class={cx( - styles().settingsSubButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-left', - )} - > - Left - - - { - setDevtoolsPosition('right') - }} - as="button" - class={cx( - styles().settingsSubButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-right', - )} - > - Right - - + setDevtoolsPosition(value as DevtoolsPosition)}> + + Top + + + + Bottom + + + + Left + + + + Right + + + @@ -1146,54 +1141,47 @@ export const ContentView: Component = (props) => { 'tsqd-settings-submenu', )} > - { - props.setLocalStore('theme_preference', 'light') - }} - as="button" - class={cx( - styles().settingsSubButton, - props.localStore.theme_preference === 'light' && - styles().themeSelectedButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-top', - )} - > - Light - - - { - props.setLocalStore('theme_preference', 'dark') + { + props.setLocalStore('theme_preference', value) }} - as="button" - class={cx( - styles().settingsSubButton, - props.localStore.theme_preference === 'dark' && - styles().themeSelectedButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-bottom', - )} + aria-label="Theme preference" > - Dark - - - { - props.setLocalStore('theme_preference', 'system') - }} - as="button" - class={cx( - styles().settingsSubButton, - props.localStore.theme_preference === 'system' && - styles().themeSelectedButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-left', - )} - > - System - - + + Light + + + + Dark + + + + System + + + @@ -1221,51 +1209,48 @@ export const ContentView: Component = (props) => { styles().settingsMenu, 'tsqd-settings-submenu', )} + aria-label="Hide disabled queries setting" > - { - props.setLocalStore('hideDisabledQueries', 'false') - }} - as="button" - class={cx( - styles().settingsSubButton, - props.localStore.hideDisabledQueries !== 'true' && - styles().themeSelectedButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-show', - )} + props.setLocalStore('hideDisabledQueries', value) } > - Show - - - - - { - props.setLocalStore('hideDisabledQueries', 'true') - }} - as="button" - class={cx( - styles().settingsSubButton, - props.localStore.hideDisabledQueries === 'true' && - styles().themeSelectedButton, - 'tsqd-settings-menu-position-btn', - 'tsqd-settings-menu-position-btn-hide', - )} - > - Hide - Show + + + + + - - - + Hide + + + + + @@ -1961,6 +1946,9 @@ const QueryDetails = () => { styles().detailsBody, 'tsqd-query-details-summary-container', )} + role="status" + aria-live="polite" + aria-atomic="true" >
@@ -2372,8 +2360,16 @@ const MutationDetails = () => {
             styles().detailsBody,
             'tsqd-query-details-summary-container',
           )}
+          role="status"  
+          aria-live="polite"
+          aria-atomic="true"
         >
-          
+
               
                  toggleExpanded()}
+            aria-expanded={expanded() ? 'true' : 'false'}
           >
              {props.label}{' '}
             

From 22c2ae3fa8459b81e29b8d75855754478f9df063 Mon Sep 17 00:00:00 2001
From: Matthew Costabile 
Date: Thu, 23 Oct 2025 15:34:58 +0000
Subject: [PATCH 2/7] changeset

---
 .changeset/slick-clubs-lay.md | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 .changeset/slick-clubs-lay.md

diff --git a/.changeset/slick-clubs-lay.md b/.changeset/slick-clubs-lay.md
new file mode 100644
index 0000000000..aaf5fda7c4
--- /dev/null
+++ b/.changeset/slick-clubs-lay.md
@@ -0,0 +1,5 @@
+---
+'@tanstack/query-devtools': patch
+---
+
+improves accessibility of devtools

From 0f98da774f47b9cec6f8c3f740ca84a88997b8b9 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Thu, 23 Oct 2025 15:36:14 +0000
Subject: [PATCH 3/7] ci: apply automated fixes

---
 packages/query-devtools/src/Devtools.tsx | 28 +++++++++++++++---------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/packages/query-devtools/src/Devtools.tsx b/packages/query-devtools/src/Devtools.tsx
index c0e6f76d5e..729a8eb64a 100644
--- a/packages/query-devtools/src/Devtools.tsx
+++ b/packages/query-devtools/src/Devtools.tsx
@@ -1063,7 +1063,13 @@ export const ContentView: Component = (props) => {
                             'tsqd-settings-submenu',
                           )}
                         >
-                           setDevtoolsPosition(value as DevtoolsPosition)}>
+                          
+                              setDevtoolsPosition(value as DevtoolsPosition)
+                            }
+                          >
                              = (props) => {
                           'tsqd-settings-submenu',
                         )}
                       >
-                         {
                             props.setLocalStore('theme_preference', value)
                           }}
                           aria-label="Theme preference"
                         >
                            = (props) => {
                       >
                          props.setLocalStore('hideDisabledQueries', value) }
+                          onChange={(value) =>
+                            props.setLocalStore('hideDisabledQueries', value)
+                          }
                         >
                            {
             styles().detailsBody,
             'tsqd-query-details-summary-container',
           )}
-          role="status"  
+          role="status"
           aria-live="polite"
           aria-atomic="true"
         >
@@ -2360,13 +2368,13 @@ const MutationDetails = () => {
             styles().detailsBody,
             'tsqd-query-details-summary-container',
           )}
-          role="status"  
+          role="status"
           aria-live="polite"
           aria-atomic="true"
         >
-          
From 03bbee52ca3e14f8e911a6f0aa8a178e28706ae0 Mon Sep 17 00:00:00 2001 From: Matthew Costabile Date: Thu, 23 Oct 2025 11:44:54 -0400 Subject: [PATCH 4/7] Update packages/query-devtools/src/Devtools.tsx --- packages/query-devtools/src/Devtools.tsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/query-devtools/src/Devtools.tsx b/packages/query-devtools/src/Devtools.tsx index 729a8eb64a..5f513bc7dd 100644 --- a/packages/query-devtools/src/Devtools.tsx +++ b/packages/query-devtools/src/Devtools.tsx @@ -2372,12 +2372,7 @@ const MutationDetails = () => { aria-live="polite" aria-atomic="true" > -
+
               
                 
Date: Thu, 23 Oct 2025 16:02:26 +0000
Subject: [PATCH 5/7] unnecessary role

---
 packages/query-devtools/src/Devtools.tsx | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/packages/query-devtools/src/Devtools.tsx b/packages/query-devtools/src/Devtools.tsx
index 5f513bc7dd..5202e97781 100644
--- a/packages/query-devtools/src/Devtools.tsx
+++ b/packages/query-devtools/src/Devtools.tsx
@@ -1072,7 +1072,6 @@ export const ContentView: Component = (props) => {
                           >
                              = (props) => {
                             
                              = (props) => {
                             
                              = (props) => {
                           
                           
Date: Thu, 23 Oct 2025 18:25:20 +0000
Subject: [PATCH 6/7] label -> input

---
 packages/query-devtools/src/Explorer.tsx | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/packages/query-devtools/src/Explorer.tsx b/packages/query-devtools/src/Explorer.tsx
index 6e1e0c6810..1a815de363 100644
--- a/packages/query-devtools/src/Explorer.tsx
+++ b/packages/query-devtools/src/Explorer.tsx
@@ -1,6 +1,6 @@
 import { serialize, stringify } from 'superjson'
 import { clsx as cx } from 'clsx'
-import { Index, Match, Show, Switch, createMemo, createSignal } from 'solid-js'
+import { Index, Match, Show, Switch, createMemo, createSignal, createUniqueId} from 'solid-js'
 import { Key } from '@solid-primitives/keyed'
 import * as goober from 'goober'
 import { tokens } from './theme'
@@ -325,6 +325,8 @@ export default function Explorer(props: ExplorerProps) {
 
   const currentDataPath = props.dataPath ?? []
 
+  const inputId = createUniqueId()
+  
   return (
     
@@ -447,7 +449,7 @@ export default function Explorer(props: ExplorerProps) {
- {props.label}: + Date: Thu, 23 Oct 2025 18:26:31 +0000 Subject: [PATCH 7/7] ci: apply automated fixes --- packages/query-devtools/src/Explorer.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/query-devtools/src/Explorer.tsx b/packages/query-devtools/src/Explorer.tsx index 1a815de363..3f3debcada 100644 --- a/packages/query-devtools/src/Explorer.tsx +++ b/packages/query-devtools/src/Explorer.tsx @@ -1,6 +1,14 @@ import { serialize, stringify } from 'superjson' import { clsx as cx } from 'clsx' -import { Index, Match, Show, Switch, createMemo, createSignal, createUniqueId} from 'solid-js' +import { + Index, + Match, + Show, + Switch, + createMemo, + createSignal, + createUniqueId, +} from 'solid-js' import { Key } from '@solid-primitives/keyed' import * as goober from 'goober' import { tokens } from './theme' @@ -326,7 +334,7 @@ export default function Explorer(props: ExplorerProps) { const currentDataPath = props.dataPath ?? [] const inputId = createUniqueId() - + return (
@@ -449,7 +457,9 @@ export default function Explorer(props: ExplorerProps) {
- +