mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-23 00:22:19 +01:00
feat: Multi highlighter (#5666)
This commit is contained in:
parent
7fdd720aa3
commit
5ba588f59a
@ -41,3 +41,21 @@ test('respects case sensitivity when specified', () => {
|
|||||||
|
|
||||||
expect(container.innerHTML).not.toContain('<mark>');
|
expect(container.innerHTML).not.toContain('<mark>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('highlights multiple search terms', () => {
|
||||||
|
const { container } = render(
|
||||||
|
<Highlighter search='Test,Text'>Test Text</Highlighter>,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(container.innerHTML).toContain('<mark>Test</mark>');
|
||||||
|
expect(container.innerHTML).toContain('<mark>Text</mark>');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('highlights first match on conflict', () => {
|
||||||
|
const { container } = render(
|
||||||
|
<Highlighter search='Test,stText'>TestText</Highlighter>,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(container.innerHTML).toContain('<mark>Test</mark>');
|
||||||
|
expect(container.innerHTML).not.toContain('<mark>stText</mark>');
|
||||||
|
});
|
||||||
|
@ -27,7 +27,11 @@ export const Highlighter: VFC<IHighlighterProps> = ({
|
|||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const regex = safeRegExp(search, caseSensitive ? 'g' : 'gi');
|
const searchTerms = search.split(',').map((term) => term.trim());
|
||||||
|
const searchRegex = searchTerms
|
||||||
|
.map((term) => safeRegExp(term, '').source)
|
||||||
|
.join('|');
|
||||||
|
const regex = new RegExp(searchRegex, caseSensitive ? 'g' : 'gi');
|
||||||
|
|
||||||
const parts = children.split(regex);
|
const parts = children.split(regex);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user