Раскрывающийся список с автодополнением и автозаполнением

Реализовать возможность устанавливать раскрывающийся список с автодополнением и автозаполнением при выборе из справочника.

Автодополнение– это, когда в поле ввода отображаются варианты, из которых пользователь может выбирать. Автозаполнение – это, когда форма предлагает способ завершения слова или фразы.

Например: Пользователь открывает форму для добавления, в ней предусмотрены поля с выбором из справочника. В текущей реализации при нажатии на данное поле открывается новая форма или эта же форма только под полем сразу, в виде грида.
Предложение реализовать раскрывающийся список в данном поле, с возможность вводить текст в него и фильтровать содержимое списка, а также предлагать завершения слов или фраз.