Вот хакерское решение для React (кстати, проблема в конвейере ag-grid - AG119):
1 Включите reactNext
и введите значение frameWorkComponents
:
<AgGridReact
animateRows={true}
columnDefs={columnDefs}
defaultColDef={defaultColDef}
frameworkComponents={frameworkComponents}
multiSortKey="ctrl"
onFirstDataRendered={onFirstDataRendered}
onGridReady={onGridReady}
quickFilterText={searchValue}
reactNext={true}
rowData={contacts}
/>
2 Определить frameWorkComponents:
import HighlightCellRenderer from './HighlightCellRenderer';
// ...
const frameworkComponents = {
highlightCellRenderer: HighlightCellRenderer,
};
3 В вашем colDefs
добавьте cellRenderer
:
cellRenderer: 'highlightCellRenderer',
4 Наконец, создайте свой пользовательский компонент:
import React from 'react';
import { useSelector } from 'react-redux';
import { getSearchValue } from '../../layout/header/search-value-reducer';
function HighlightCellRenderer({ value }) {
const searchValue = useSelector(getSearchValue);
if (searchValue && value.toLowerCase().includes(searchValue)) {
return <strong>{value}</strong>;
}
return <span>{value}</span>;
}
export default HighlightCellRenderer;
В моем случае я получаю searchValue
с помощью Redux.
Примечание. Использование таких ячеек может привести к снижению производительности и отключению таких функций, как автоматическое изменение размера:
// ? This won't work with the custom cells:
function onFirstDataRendered({ columnApi }) {
var allColumnIds = [];
columnApi.getAllColumns().forEach(function(column) {
allColumnIds.push(column.colId);
});
columnApi.autoSizeColumns(allColumnIds);
}