- 
                Notifications
    
You must be signed in to change notification settings  - Fork 64
 
feat: add keyboard navigation for select charts #4481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds keyboard navigation functionality to Column and Pie chart components, enabling users to navigate and interact with chart elements using the Tab key and Space/Enter keys for selection. The changes also update repository references from "trunk" to "main" branch across multiple package.json files.
Key changes:
- Adds keyboard navigation support with Tab, Space, and Enter keys for Column and Pie charts
 - Implements ARIA attributes and focus states for improved accessibility
 - Updates CSS styling for hover, focus, and selection states with visual feedback
 - Updates homepage URLs from "trunk" to "main" branch in package.json files
 
Reviewed Changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description | 
|---|---|
| packages/util/package.json | Updated homepage URL from trunk to main branch | 
| packages/observablehq-compiler/package.json | Updated homepage URL from trunk to main branch | 
| packages/markdown-it-plugins/package.json | Updated homepage URL from trunk to main branch (with typo) | 
| packages/dataflow/package.json | Updated homepage URL from trunk to main branch | 
| packages/chart/src/Pie.ts | Added keyboard navigation, ARIA attributes, and slice padding functionality to Pie chart | 
| packages/chart/src/Pie.css | Added CSS for focus states, hover effects, and keyboard navigation styling | 
| packages/chart/src/Column.ts | Added keyboard navigation, ARIA attributes, and Tabster integration to Column chart | 
| packages/chart/src/Column.css | Updated CSS for selected state, added focus and hover styles | 
| packages/chart/index.html | Added demo controls for testing keyboard navigation on both chart types | 
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| "url": "https://github.com/hpcc-systems/Visualization/issues" | ||
| }, | ||
| "homepage": "https://github.com/hpcc-systems/Visualization/tree/trunk/packages/markdonw-it-plugins" | ||
| "homepage": "https://github.com/hpcc-systems/Visualization/tree/main/packages/markdonw-it-plugins" | 
    
      
    
      Copilot
AI
    
    
    
      Oct 23, 2025 
    
  
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Corrected spelling of 'markdonw' to 'markdown' in the homepage URL path.
| "homepage": "https://github.com/hpcc-systems/Visualization/tree/main/packages/markdonw-it-plugins" | |
| "homepage": "https://github.com/hpcc-systems/Visualization/tree/main/packages/markdown-it-plugins" | 
| this._totalValue = this.calcTotalValue(); | ||
| const innerRadius = this.calcInnerRadius(); | ||
| const outerRadius = this.calcOuterRadius(); | ||
| const innerRadius = Math.max(this.calcInnerRadius(), Math.min(outerRadius / 30, 6)); | 
    
      
    
      Copilot
AI
    
    
    
      Oct 23, 2025 
    
  
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The magic numbers 30 and 6 should be defined as named constants to clarify their purpose (e.g., MIN_INNER_RADIUS_RATIO = 30, MIN_INNER_RADIUS_PIXELS = 6).
| const paddingValue = this.slicePadding(); | ||
| 
               | 
          ||
| // Use a small pad angle for visual separation | ||
| const padAngleRadians = paddingValue > 0 ? Math.min(paddingValue, 0.05) : 0; | 
    
      
    
      Copilot
AI
    
    
    
      Oct 23, 2025 
    
  
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The magic number 0.05 should be defined as a named constant (e.g., MAX_PAD_ANGLE = 0.05) to clarify the maximum allowed pad angle.
| .domain(context.layerColumns(host).filter(function (_d, idx) { return idx > 0; })) | ||
| .rangeRound(isHorizontal ? [0, dataLen] : [dataLen, 0]) | ||
| .paddingInner(this.xAxisSeriesPaddingInner()) | ||
| .paddingInner(Math.max(this.xAxisSeriesPaddingInner(), 0.05)) | 
    
      
    
      Copilot
AI
    
    
    
      Oct 23, 2025 
    
  
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The magic number 0.05 should be defined as a named constant (e.g., MIN_SERIES_PADDING = 0.05) to clarify the minimum padding value.
Signed-off-by: Gordon Smith <[email protected]>
cd27015    to
    f140d09      
    Compare
  
    ac285a3    to
    136469b      
    Compare
  
    
Checklist:
Testing: