Skip to content

Conversation

@prabhuignoto
Copy link
Owner

@prabhuignoto prabhuignoto commented Oct 31, 2025

Description

  • Accessibility enhancements: Improved keyboard navigation, focus management, and ARIA support across Timeline, PopOver, and
    List components
  • Focus ring improvements: Removed focus rings from timeline item containers and enhanced visual feedback on card content
  • Keyboard navigation: Fixed arrow key, Home/End key, and Tab navigation across all timeline modes (horizontal, vertical,
    alternating)
  • Focus management: Strengthened focus trapping in modals/popovers and prevented focus stealing from search inputs
  • Event handling: Enhanced event propagation control to prevent unintended fullscreen handler execution during popover
    interactions
  • New accessibility hooks: Added comprehensive hooks for roving tab index, ARIA live regions, dialog management, and motion
    preferences
  • Test coverage: Expanded test suite with keyboard navigation, accessibility, and component interaction tests
  • Documentation: Added comprehensive documentation for accessibility patterns and API references
  • Dependencies: Updated package dependencies and Playwright configuration for improved testing
  • Component optimizations: Performance improvements in List, PopOver, and Timeline rendering with better accessibility

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactor (non-breaking change that neither fixes a bug nor adds a feature)
  • Performance improvement
  • Styling (UI/UX changes)
  • Other (please describe):

How Has This Been Tested?

Screenshots / Screen Recordings (if applicable)

Checklist before requesting a review

  • I have read the Contributing Guidelines.
  • I have performed a self-review of my own code.
  • My code follows the style guidelines of this project.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have made corresponding changes to the documentation.
  • My changes generate no new warnings.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • Any dependent changes have been merged and published in downstream modules.
  • I have checked that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.

AI Tooling Disclosure (Optional)

Additional Context

- Expanded context structure descriptions for clarity on static, dynamic, and memoized values.
- Updated usage patterns to include performance-optimized selective subscriptions for hooks.
- Enhanced custom hooks organization with hierarchical composition for better modularity.
- Improved component structure section with detailed descriptions of main components and their roles.
- Added Google Fonts integration section detailing dynamic loading and configuration options.
- Introduced comprehensive internationalization support with new i18n configurations and examples.
- Updated common development workflows and best practices for improved clarity and guidance.
…for React Chrono v3.0

- Added new documentation files including API documentation index, quick reference guide, and issue analysis summary.
- Created detailed navigation and focus management review to improve accessibility and user experience.
- Established next steps for running and fixing Playwright tests, ensuring a smooth testing process.
- Updated package.json dependencies and configurations for improved performance and compatibility.
- Enhanced CI workflows for better build and testing processes, including Playwright integration.
- Introduced a selector map for consistent test element targeting across Playwright tests.
- Refactored existing tests to utilize new selectors and improve clarity and maintainability.
- Implemented various performance optimizations and accessibility improvements across components.
…ine components

- Integrated focus trap and key handler for improved keyboard navigation in PopOver.
- Updated PopOver to manage focus more effectively, ensuring compliance with WCAG standards.
- Enhanced Timeline components with ARIA attributes for better screen reader support.
- Improved focus styles across components for better visibility and user experience.
- Added comprehensive tests for new accessibility features and focus management logic.
…er components

- Added roving tabindex support to List and ListItem for improved keyboard navigation.
- Updated keyboard event handling in ListItem to support Enter and Space for item selection.
- Enhanced PopOver to handle item selection via keyboard, closing the popover and restoring focus.
- Improved ARIA roles and attributes for better screen reader compatibility across components.
…en by adding stopPropagation to keyboard event handling
…and accessibility

- Simplified click handling in List component by removing unnecessary useCallback.
- Updated PopOver component to enhance focus management and accessibility, including improved state handling and event listeners.
- Refactored search functionality in Timeline components to trigger searches explicitly on Enter key, improving user experience.
- Enhanced styling and layout for better responsiveness across components.
… search input

- Updated PopOver component to avoid restoring focus to the trigger button when the user is interacting with a search input, improving accessibility and user experience.
- Adjusted styling in toolbar components to ensure consistent dimensions for search buttons and icons, enhancing visual coherence across different screen sizes.
…search input

- Enhanced focus handling in the Timeline component to avoid stealing focus from the search input during user interactions.
- Captured search state at the moment of focus management to prevent timing issues with requestAnimationFrame callbacks.
- Updated related hooks to ensure consistent behavior across timeline navigation and search functionalities.
- Deleted the Playwright testing workflow from the GitHub Actions configuration.
- This change simplifies the CI setup by removing the now unnecessary Playwright tests workflow.
@vercel
Copy link

vercel bot commented Oct 31, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
react-chrono-uc7v Ready Ready Preview Comment Nov 3, 2025 4:20pm

Comment on lines +15 to +48
name: Build & Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.15.1
- uses: actions/setup-node@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm test -- --run

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run unit tests (Vitest)
run: pnpm test -- --run
env:
CI: true
- run: pnpm build
- uses: actions/upload-artifact@v4

- name: Build library
run: pnpm build

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist
retention-days: 7

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
- Updated various dependencies in package.json and pnpm-lock.yaml for improved performance and security.
- Enhanced keyboard navigation in List and Timeline components by implementing roving tabindex for better accessibility.
- Improved focus management in PopOver and Timeline components to prevent focus stealing from search inputs.
- Added ARIA attributes and roles to enhance screen reader compatibility across components.
- Refactored tests to ensure consistent behavior and coverage for new accessibility features.
- Improved focus handling in Timeline and PopOver components to prevent focus stealing from search inputs and ensure better keyboard navigation.
- Updated focus restoration logic to only trigger under specific conditions, enhancing user experience during interactions.
- Disabled auto-focus for dropdown menus to maintain natural tab order and prevent unexpected focus shifts.
- Refactored event handlers in Timeline controls to prevent focus stealing during button interactions, ensuring compliance with accessibility standards.
- Implemented keyboard navigation for ArrowUp and ArrowDown keys in the PopOver component to improve accessibility and user experience.
- Wrapped timeline item activation and update callbacks to prevent focus stealing during toolbar navigation, ensuring a smoother interaction flow.
- Updated CSS for active timeline items to provide visual feedback without disrupting keyboard focus order.
- Refactored focus management logic in Timeline and related components to comply with accessibility standards and enhance usability.
- Replaced useCloseClickOutside with useOutsideClick and useEscapeKey hooks for better separation of concerns in closing the popover.
- Enhanced closePopover function to handle focus restoration selectively based on the closing reason (Escape key or click outside).
- Updated keyboard event handling for ArrowUp and ArrowDown keys to prevent timeline navigation interference.
- Improved comments for clarity on focus restoration logic, ensuring compliance with accessibility standards.
- Updated PopOver component to use an inline function for closePopover, enhancing clarity in event handling.
- Refactored Timeline component to ensure text density updates are type-safe by casting to TextDensity.
- Simplified event handling in Timeline controls by removing unnecessary parameters from handlePlay and handlePause functions.
- Enhanced accessibility in Toolbar by ensuring item IDs are consistently generated, improving focus management.
- Replaced jest.fn() with vi.fn() in keyboard navigation tests for consistency with Vitest.
- Enhanced keyboard event handling in useTimelineKeyboardNavigation and useTimelineNavigation tests by adding mock target elements.
- Refactored search tests to trigger searches directly, improving clarity and reducing reliance on debounce timing.
- Updated CSS styles for timeline card media to ensure consistent class names in snapshots.
- Updated keyboard navigation tests to utilize custom rendering and improved mock implementations for IntersectionObserver and matchMedia.
- Refactored timeline component tests to ensure proper rendering and interaction with navigation buttons.
- Enhanced accessibility by ensuring ARIA attributes and roles are correctly applied to timeline elements and navigation controls.
- Improved focus management during keyboard interactions to prevent focus stealing and ensure a smooth user experience.
- Refactored toolbar tests to enhance accessibility by ensuring buttons are correctly identified by their ARIA labels.
- Updated keyboard navigation tests to utilize a mock function for item selection, improving clarity and consistency in event handling.
- Enhanced interaction tests to verify that clicking items triggers the expected selection behavior, ensuring a better user experience.
- Removed unnecessary spies and async handling in focus management tests for clarity.
- Updated tests to ensure hooks render without errors and handle unmounting gracefully.
- Enhanced focus management assertions to verify that hooks are defined and functioning correctly.
- Updated CSS for both horizontal and vertical timeline components to remove the focus ring from the list item containers.
- Ensured that the focus ring only appears on the inner card content, improving accessibility and visual clarity.
@prabhuignoto prabhuignoto merged commit 058a18f into master Nov 3, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant