mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-06 00:07:44 +01:00
1772997d28
* experiment with generic table * feat: example implementation of sortable table interfaces * add enhanced table header Co-authored-by: Nuno Góis <github@nunogois.com> * table cleanup Co-authored-by: Nuno Góis Co-authored-by: Fredrik Strand Oseberg * useSort hook interface surface Co-authored-by: Nuno Góis <github@nunogois.com> * sort handler initial implementation Co-authored-by: Tymoteusz Czech <Tymek@users.noreply.github.com> * new table unified components * feature flags table components Co-authored-by: Nuno Góis <github@nunogois.com> * feat: new table sort hook * feat: table sort * useSearch hook implementation * update new sort hook tests * sortable headers hook * feat: add sort to other table features * move experimental table hooks to a directory * update new table header styles * fix: header, tableActions * add some details like pagination and highlighter so we keep them in mind * feature table cells * update new table sort logic * new pagination * fix formatting and remove unused component * fix: adapt useSearch default search to text instead of regex (PR #924) * fix: update table title based on visible rows * fix: remove test route * refactor: move table experiment files * features table experimentation * feat: enhanced feature flags table * fix: features default sort * feat: enhanced table loading * fix: table theme after mui5 update * features list placeholder * add react-table * update snapshots after theme change * remove unused files * fix: improve features table after review * refactor: rename feature type cell variables Co-authored-by: Fredrik Oseberg <fredrik.no@gmail.com> Co-authored-by: Nuno Góis <github@nunogois.com> Co-authored-by: Tymoteusz Czech <Tymek@users.noreply.github.com>
34 lines
692 B
TypeScript
34 lines
692 B
TypeScript
import { VFC } from 'react';
|
|
|
|
interface IHighlighterProps {
|
|
search?: string;
|
|
children?: string;
|
|
caseSensitive?: boolean;
|
|
}
|
|
|
|
const escapeRegex = (str: string) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
|
|
export const Highlighter: VFC<IHighlighterProps> = ({
|
|
search,
|
|
children,
|
|
caseSensitive,
|
|
}) => {
|
|
if (!children) {
|
|
return null;
|
|
}
|
|
|
|
if (!search) {
|
|
return <>{children}</>;
|
|
}
|
|
|
|
const regex = new RegExp(escapeRegex(search), caseSensitive ? 'g' : 'gi');
|
|
|
|
return (
|
|
<span
|
|
dangerouslySetInnerHTML={{
|
|
__html: children?.replaceAll(regex, '<mark>$&</mark>') || '',
|
|
}}
|
|
/>
|
|
);
|
|
};
|