mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-04 21:07:45 +08:00
✨ feat(data-grid): 优化字段跳转列匹配与回车定位
- 提取字段跳转目标解析逻辑,优先精确匹配再回退模糊匹配 - 旧版跳转列保留补全下拉,选中或回车即可定位 - 移除旧版多余跳转按钮,统一为输入即补全的交互 - 补充 DataGrid 与 dataGridFind 定向回归覆盖 - Refs #509
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
findDataGridTextRanges,
|
||||
hasDataGridFindRenderVersionChanged,
|
||||
normalizeDataGridFindQuery,
|
||||
resolveDataGridColumnQuickFindTarget,
|
||||
resolveDataGridFindNavigationIndex,
|
||||
summarizeDataGridFindMatches,
|
||||
} from './dataGridFind';
|
||||
@@ -89,6 +90,15 @@ describe('dataGridFind', () => {
|
||||
expect(resolveDataGridFindNavigationIndex(0, 0, 'next')).toBe(-1);
|
||||
});
|
||||
|
||||
it('prefers an exact quick-find column match over earlier fuzzy matches', () => {
|
||||
const columnNames = ['user_id', 'username', 'created_at'];
|
||||
|
||||
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'username')).toBe('username');
|
||||
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'user')).toBe('user_id');
|
||||
expect(resolveDataGridColumnQuickFindTarget(columnNames, ' ')).toBe('');
|
||||
expect(resolveDataGridColumnQuickFindTarget(columnNames, 'missing')).toBe('');
|
||||
});
|
||||
|
||||
it('tracks render version changes without exposing metadata as row data', () => {
|
||||
const rows = [{ id: 1, name: 'Alpha' }];
|
||||
|
||||
|
||||
@@ -143,3 +143,20 @@ export const resolveDataGridFindNavigationIndex = (
|
||||
}
|
||||
return currentIndex < 0 || currentIndex >= matchCount - 1 ? 0 : currentIndex + 1;
|
||||
};
|
||||
|
||||
export const resolveDataGridColumnQuickFindTarget = (
|
||||
columnNames: string[],
|
||||
query: string,
|
||||
): string => {
|
||||
const normalizedQuery = normalizeDataGridFindQuery(query);
|
||||
if (!normalizedQuery) return '';
|
||||
|
||||
const exactMatch = columnNames.find((columnName) => (
|
||||
normalizeDataGridFindQuery(columnName) === normalizedQuery
|
||||
));
|
||||
if (exactMatch) return exactMatch;
|
||||
|
||||
return columnNames.find((columnName) => (
|
||||
normalizeDataGridFindQuery(columnName).includes(normalizedQuery)
|
||||
)) || '';
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user