diff --git a/services/web/frontend/js/features/settings/components/emails/downshift-input.tsx b/services/web/frontend/js/features/settings/components/emails/downshift-input.tsx index 62c6cd42c2..a737af5649 100644 --- a/services/web/frontend/js/features/settings/components/emails/downshift-input.tsx +++ b/services/web/frontend/js/features/settings/components/emails/downshift-input.tsx @@ -1,8 +1,10 @@ import { useState, useEffect, forwardRef } from 'react' import { useCombobox } from 'downshift' import classnames from 'classnames' +import { escapeRegExp } from 'lodash' type DownshiftInputProps = { + highlightMatches?: boolean items: string[] itemsTitle?: string inputValue: string @@ -19,6 +21,7 @@ const filterItemsByInputValue = ( ) => items.filter(item => item.toLowerCase().includes(inputValue.toLowerCase())) function Downshift({ + highlightMatches = false, items, itemsTitle, inputValue, @@ -63,6 +66,15 @@ function Downshift({ }, }) + const highlightMatchedCharacters = (item: string, query: string) => { + if (!query || !highlightMatches) return item + const regex = new RegExp(`(${escapeRegExp(query)})`, 'gi') + const parts = item.split(regex) + return parts.map((part, index) => + regex.test(part) ? {part} : part + ) + } + return (