🐛 fix: 修复 Issue #763 (Closes #763)

This commit is contained in:
mango
2026-07-28 18:30:23 +08:00
parent 6fc11c4c8b
commit 3e933358e6
3 changed files with 26 additions and 3 deletions

View File

@@ -114,6 +114,7 @@ import {
collectDataGridFindResult,
findDataGridTextRanges,
hasDataGridFindRenderVersionChanged,
matchesDataGridColumnQuickFind,
normalizeDataGridFindQuery,
resolveDataGridColumnQuickFindTarget,
resolveDataGridFindNavigationIndex,
@@ -4446,7 +4447,7 @@ const DataGrid: React.FC<DataGridProps> = ({
const visibleColumnQuickFindMatches = useMemo(() => {
if (!normalizedColumnQuickFindText) return [];
return displayColumnNames.filter((columnName) => (
normalizeDataGridFindQuery(columnName).includes(normalizedColumnQuickFindText)
matchesDataGridColumnQuickFind(columnName, normalizedColumnQuickFindText)
));
}, [displayColumnNames, normalizedColumnQuickFindText]);

View File

@@ -6,6 +6,7 @@ import {
collectDataGridFindResult,
findDataGridTextRanges,
hasDataGridFindRenderVersionChanged,
matchesDataGridColumnQuickFind,
normalizeDataGridFindQuery,
resolveDataGridColumnQuickFindTarget,
resolveDataGridFindNavigationIndex,
@@ -120,6 +121,16 @@ describe('dataGridFind', () => {
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'missing')).toBe('');
});
it('matches quick-find column names without case sensitivity', () => {
const columnNames = ['USER_NAME_ARCHIVE', 'USER_NAME', 'CREATED_AT'];
expect(matchesDataGridColumnQuickFind('USER_NAME', 'user')).toBe(true);
expect(matchesDataGridColumnQuickFind('user_name', 'USER')).toBe(true);
expect(matchesDataGridColumnQuickFind('USER_NAME', 'missing')).toBe(false);
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'user_name')).toBe('USER_NAME');
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'created')).toBe('CREATED_AT');
});
it('tracks render version changes without exposing metadata as row data', () => {
const rows = [{ id: 1, name: 'Alpha' }];

View File

@@ -179,6 +179,16 @@ export const resolveDataGridFindNavigationIndex = (
return currentIndex < 0 || currentIndex >= matchCount - 1 ? 0 : currentIndex + 1;
};
export const matchesDataGridColumnQuickFind = (
columnName: string,
query: string,
): boolean => {
const normalizedQuery = normalizeDataGridFindQuery(query).toLocaleLowerCase();
if (!normalizedQuery) return false;
return normalizeDataGridFindQuery(columnName).toLocaleLowerCase().includes(normalizedQuery);
};
export const resolveDataGridColumnQuickFindTarget = (
columnNames: string[],
query: string,
@@ -186,12 +196,13 @@ export const resolveDataGridColumnQuickFindTarget = (
const normalizedQuery = normalizeDataGridFindQuery(query);
if (!normalizedQuery) return '';
const lowerQuery = normalizedQuery.toLocaleLowerCase();
const exactMatch = columnNames.find((columnName) => (
normalizeDataGridFindQuery(columnName) === normalizedQuery
normalizeDataGridFindQuery(columnName).toLocaleLowerCase() === lowerQuery
));
if (exactMatch) return exactMatch;
return columnNames.find((columnName) => (
normalizeDataGridFindQuery(columnName).includes(normalizedQuery)
matchesDataGridColumnQuickFind(columnName, normalizedQuery)
)) || '';
};