fix(search-modal): fixed search modal keyboard nav#823
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
1 Skipped Deployment
|
There was a problem hiding this comment.
Greptile Summary
This PR refactors the search modal's keyboard navigation system to support multi-dimensional navigation across different content types. The changes extract complex navigation logic into a dedicated custom hook useSearchNavigation and restructure the UI to handle both grid-based layouts (for blocks and tools) and list-based layouts (for other items).
The core improvement enables users to navigate blocks and tools using arrow keys in a 2D grid pattern - left/right for horizontal movement and up/down for vertical movement - while maintaining traditional up/down navigation for list items like workspaces and workflows. The implementation introduces a sophisticated section-aware navigation system where each content type (blocks, tools, templates, list items) defines its own navigation behavior.
Key architectural changes include:
- Custom Hook Extraction: Navigation logic moved to
useSearchNavigationhook following React best practices for complex state management - Section-Based Navigation: Items organized into typed sections with grid vs list navigation modes
- Position Memory: The system remembers the last selected position in each section when users switch between them
- CSS Grid Layout: Simplified rendering by replacing synchronized multi-row containers with CSS grid
- Enhanced Selection State: Visual feedback now works consistently across all section types
This change integrates with the existing search modal component in the workspace marketplace, enhancing the user experience for discovering and selecting blocks and tools within workflows.
Confidence score: 3/5
- This PR has some concerning hardcoded assumptions that could cause navigation issues if the UI layout changes
- The hardcoded grid row calculations and complex mathematical positioning logic create potential brittleness
- The hook needs closer examination for edge cases around grid boundaries and section switching, particularly the
handleItemClickand grid navigation calculations
2 files reviewed, 1 comment
| id: string | ||
| name: string | ||
| type: 'grid' | 'list' | ||
| items: any[] |
There was a problem hiding this comment.
style: Using any[] type reduces type safety. Consider defining specific union types for the different item types (BlockItem | ToolItem | TemplateData | etc.).
Context Used: Context - Avoid using type assertions to 'any' in TypeScript. Instead, ensure proper type definitions are used to maintain type safety. (link)
* fixed search modal keyboard nav * break down file --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>
…n, deployed chat improvements (#843) * fix(domain): fix telemetry endpoint, only add redirects for hosted version (#822) * fix(otel): change back telemetry endpoint * only add redirects for hosted version --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * fix(search-modal): fixed search modal keyboard nav (#823) * fixed search modal keyboard nav * break down file --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * improvement(docs): add base exec charge info to docs (#826) * improvement(doc-tags-subblock): use table for doc tags subblock in create_document tool for KB (#827) * improvement(doc-tags-subblock): use table for doc tags create doc tool in KB block * enforce max tags * remove red warning text * fix(bugs): fixed rb2b csp, fixed overly-verbose logs, fixed x URLs (#828) Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * feat(wand): subblock level wand configuration + migrate old wand usage to this (#829) * feat(wand): subblock level wand configuration + migrate old wand usage to this * fix build issue * Update apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/wand-prompt-bar/wand-prompt-bar.tsx Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * remove optional param * remove unused test file * address greptile comments * change to enum for gen type * fix caching issue --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * feat(tools): added hunter.io tools/block, added default values of first option in dropdowns to avoid operation selector issue, added descriptions & param validation & updated docs (#825) * feat(tools): added hunter.io tools/block, added default values of first option in dropdowns to avoid operation selector issue * fix * added description for all outputs, fixed param validation for tools * cleanup * add dual validation, once during serialization and once during execution * improvement(docs): add base exec charge info to docs (#826) * improvement(doc-tags-subblock): use table for doc tags subblock in create_document tool for KB (#827) * improvement(doc-tags-subblock): use table for doc tags create doc tool in KB block * enforce max tags * remove red warning text * fix(bugs): fixed rb2b csp, fixed overly-verbose logs, fixed x URLs (#828) Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * fixed serialization errors to appear like execution errors, also fixed contrast on cmdk modal * fixed required for tools, added tag dropdown for kb tags * fix remaining tools with required fields * update utils * update docs * fix kb tags * fix types for exa * lint * updated contributing guide + pr template * Test pre-commit hook with linting * Test pre-commit hook again * remove test files * fixed wealthbox tool * update telemetry endpoints --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> * fix(deployed-chat): trigger blocks should not interfere with deployed chat exec (#832) * fix(deployed-chat): allow non-streaming responses in deployed chat, allow partial failure responses in deployed chat (#833) * fix(deployed-chat): allow non-streaming responses in deployed chat, allow partial failure responses in deployed chat * fix(csp): runtime variable resolution for CSP * cleanup --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * fix(sockets): duplicate block op should go through debounced path (#834) * improvement(sockets): add batch subblock updates for duplicate to clear queue faster (#835) * improvement(sockets): duplicate op should let addBlock take subblock values instead of separate looped op (#836) * improvement(sockets): addBlock can accept subblock values * cleanup unused code * fix(deploy-modal): break down deploy modal into separate components (#837) Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * fix(kb-tags): docs page kb tags ui (#838) * fix(kb-tags): docs page kb tags ui * remove console logs * remove console error * fix(chat-deploy): fixed form submission access patterns, fixed kb block filters (#839) * fix(chat-deploy): fixed form submission access patterns * fix(kb-block): fix tag filters component, removed unused component * fixed kb block subcomponents --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * fix(kb-tags): ui fixes, delete persistence for doc page header (#841) * fix deletion of tags + refactor next slot calc * fix kb tag filters count ui * fix(chat-deploy): added new image upload component, fixed some state issues with success view (#842) * fix(chat-deploy): added new image upload component, fixed some state issues with success view * cleanup --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> * feat(deploy-chat): added a logo upload for the chat, incr font size * fix(deploy-modal): break down deploy modal into separate components (#837) Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local> Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* fixed search modal keyboard nav * break down file --------- Co-authored-by: waleedlatif <waleedlatif@waleedlatifs-MacBook-Pro.local>
Description
fixed search modal keyboard nav to include tools and blocks
Type of change
How Has This Been Tested?
Tested manually
Checklist:
bun run test)Security Considerations:
Additional Information:
Screen.Recording.2025-07-29.at.11.30.38.PM.mov