mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-10 00:33:28 +08:00
@@ -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]);
|
||||
|
||||
|
||||
@@ -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' }];
|
||||
|
||||
|
||||
@@ -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)
|
||||
)) || '';
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user