Add ARIA labels to all icon-only buttons for screen reader accessibility#2137
Add ARIA labels to all icon-only buttons for screen reader accessibility#2137
Conversation
…nButton Both components had aria-label conditionally derived from tooltip using `typeof tooltip === "string" ? tooltip : undefined`. When tooltip is a ReactNode (e.g. ToolbarIconButton with a ShortcutHint), the IconButton would render without any aria-label. Add an explicit `ariaLabel?: string` prop to both components so callers can supply a plain-text accessible label when the tooltip is not a string. The prop takes precedence over the tooltip-derived value via the nullish coalescing operator (`ariaLabel ?? ...`). All other files in ui_primitives already had correct aria-label attributes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…bar and TableActions - ImageEditorToolbar: added aria-labels to all 10 tool-selection buttons (Select/Pan, Crop, Draw/Paint, Erase, Fill, Text, Rectangle, Ellipse, Line, Arrow), 4 transform buttons (Rotate CCW/CW, Flip H/V), zoom controls (Zoom Out, Zoom In, Reset Zoom), and history buttons (Undo, Redo, Reset to Original) - TableActions: added aria-labels to all 11 action buttons (Add new row, Delete selected rows, Duplicate selected rows, Reset table sorting, Undo, Redo, Paste from clipboard, Export as CSV, Show Select column, Show Row Numbers, Copy table data to clipboard) - All aria-labels match the corresponding Tooltip titles Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… and PanelLeft - VerticalToolbar.tsx: add aria-labels to all 9 icon buttons (Inspector, Operator, Agent, Workspace, Version History, Workflow Settings, Workflow Assets, Logs, Jobs) - PanelLeft.tsx: add aria-labels to all 6 icon buttons (Workflows, Assets, Collections, Model Manager, Workspaces Manager, Toggle Panel) - All labels match their corresponding Tooltip titles Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- NodeToolButtons: Run from here, Bypass/Enable node, Add/Remove comment, Duplicate node, Toggle node info, More actions (dynamic labels based on state) - NodeHeader: Open link, View logs, Show result, Show inputs - NodePropertyForm: Add input, Add output Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Model3DViewer: grid, axes, reset camera, screenshot, fullscreen buttons - PDFViewer: previous/next page, zoom in/out/reset buttons - DownloadManagerDialog: close button - DownloadProgress: remove/cancel button (dynamic label from getCloseButtonTooltip) - ModelPackCard: expand/collapse button (dynamic label based on expanded state) - ModelTypeSidebar: view on Hugging Face link button Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- PreviewImageGrid: Download, Open in Viewer, Clear selection, Close compare dialog - ConstantStringNode: Open Editor - MiniMapNavigator: Node Type Legend, Color Mode Settings - NodeColorSelector: Select node color - ImageView: Download, Open in Viewer - ResultOverlay: View History - BypassGroupButton: dynamic Enable/Bypass All Nodes - RunGroupButton: Run Group - DataframeRenderer: Open in Full View - FalSchemaLoader, KieSchemaLoader, ReplicateSchemaLoader: Reload Schema Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add descriptive aria-label attributes to all icon-only <IconButton> and <button> elements across 9 property component files for improved accessibility: - DataframeProperty: 'Open editor' on expand button - ImageListProperty: 'Remove image' on remove button - ImageSizeProperty: swap, lock/unlock aspect ratio, presets buttons - JSONProperty: 'Open editor' on expand button - PropertyDropzone: 'Replace file' on folder-open button - StringProperty: 'Open editor' on expand button - ToolsListProperty: per-tool labels, 'Add or remove tools' - DataframeEditorModal: fullscreen toggle, close editor buttons - TextEditorModal: find, format, word wrap, toggle editor mode, toggle assistant, download, fullscreen, close editor buttons Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add missing aria-label attributes to IconButton and icon-only button elements to improve screen reader accessibility. - WorkflowAssistantChat: "Open chat history" on thread list button - JobItem: dynamic "Expand"/"Collapse" on expand button; "Stop job" on stop button - SecretsMenu: "Update secret", "Delete secret", "Set secret" - MiniAppSidePanel: "Open settings" on toggle button - ModelFiltersBar: dynamic labels for type and size filter buttons - NodeInfoPanel: "Close" on close button - ViewportStatusIndicator: "Zoom out", "Zoom in", "Fit view" - WorkspacesManager: "Save changes", "Cancel edit", "Edit", "Delete" - ProviderSetupPanel: dynamic "Expand"/"Collapse" on accordion button - FileBrowserDialog: "Go up" on directory navigation button - EditorToolbar: "Undo", "Redo", "Find & Replace", "Toggle Word Wrap", "Format as Code Block" - ImageComparer: dynamic "Switch to vertical"/"Switch to horizontal" - VibeCodingPreview: "View Source", "Open in New Tab" Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: georgi <19498+georgi@users.noreply.github.com>
Deploying nodetool-staging with
|
| Latest commit: |
579b9db
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7e0e4b0e.nodetool-staging.pages.dev |
| Branch Preview URL: | https://copilot-add-aria-labels-to-i.nodetool-staging.pages.dev |
Deploying nodetool with
|
| Latest commit: |
579b9db
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://2bbf9915.nodetool.pages.dev |
| Branch Preview URL: | https://copilot-add-aria-labels-to-i.nodetool.pages.dev |
|
Review: This PR now conflicts with #2142 (merged), which added The rest of the changes (~130 additional IconButtons across 50+ files) look good and are much broader in scope. Please rebase on latest |
|
Unable to rebase this branch automatically — it has merge conflicts with main (likely in the files that overlap with the already-merged #2142: |
…ls-to-icon-buttons
Merged |
~200
<IconButton>components and several icon-only<button>elements acrossweb/src/lackedaria-labelattributes, making them completely opaque to screen readers.IconButton components (~130 instances across 50+ files)
Key areas fixed:
IconButtonsDynamic labels used where toggle state changes meaning:
Icon-only
<button>elementsUtility component changes
Added an
ariaLabel?: stringprop toCircularActionButtonandToolbarIconButtonto support cases where thetooltipprop is aReactNode(not a plain string), which previously causedaria-labelto resolve toundefined.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.