Fix: Preserve Leading Spaces in Graph Label Selection #2030
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix: Preserve Leading Spaces in Graph Label Selection
🐛 Problem Description
The graph label dropdown was losing leading spaces when users selected labels that contained leading whitespace characters. This caused:
🔍 Root Cause Analysis
Through comprehensive debugging, we identified that the issue was caused by the
cmdk
library'sCommandItem
component internally trimming thevalue
attribute, which stripped leading spaces from label values during the selection process.✅ Solution
Implemented a robust fix with three key components:
1. Safe Value Mapping in AsyncSelect Component
CommandItem
to use safe index-based values (option-${index}-${optionValue.length}
) that won't be trimmed2. CSS Display Preservation
whiteSpace: 'pre'
styling to bothrenderOption
andgetDisplayValue
functions3. Enhanced Debugging Support
📁 Files Modified
lightrag_webui/src/components/ui/AsyncSelect.tsx
: Core fix for value preservationlightrag_webui/src/components/graph/GraphLabels.tsx
: Display styling improvementslightrag/api/routers/graph_routes.py
: Enhanced debugging support🔧 Technical Details
The solution uses an elegant index-mapping approach that bypasses the
cmdk
library's internal string trimming while maintaining all existing functionality. The safe value format (option-${index}-${optionValue.length}
) ensures uniqueness and prevents conflicts.