-
Изучить реализации input компонент в существующих библиотеках (Gooey https://github.com/britzl/gooey, Druid https://github.com/Insality/druid)
-
Реализовать следующие подпункты:
2.1) Индикация интерактивности поля ввода: Создать стилизацию поля ввода, которая будет отображать приглашение для ввода текста. Например, серый текст с наклоном, который исчезнет при начале ввода. Добавить обработчик событий, чтобы при клике на поле ввода или при получении фокуса поле очищалось от приглашения и становилось готовым для ввода текста.
2.2) Перемещающаяся каретка: Реализовать отображение каретки в поле ввода. Например вертикальная линия, которая мигает или плавно перемещается внутри поля. Добавить обработчики событий, чтобы каретка перемещалась в соответствии с позицией ввода текста.
2.3) Возможность начать ввод в любой части поля ввода: Добавить обработчик событий, чтобы при клике на любую позицию в поле ввода каретка перемещалась в эту позицию и пользователь мог начать вводить текст.
2.4) Отпускание фокуса ввода: Реализовать обработку события клика за пределами компонента input, чтобы отпустить фокус ввода. Это поможет избежать двойных кликов и улучшит пользовательский опыт.
2.5) Выделение участка текста: Разработать функциональность выделения участка текста внутри поля ввода. Это может включать возможность выделение текста с помощью курсора или с клавиатуры, а также функции копирования, удаления и замены выделенного текста.
2.6) ...
-
Создать небольшое приложение, демонстрирующее разработанный функционал.
-
Создать Pull request с реализованными фичами в Druid.