-
дизайн — на ваше усмотрение
-
изначально файл index.html должен быть пустым (все необходимые элементы генерируются с использованием JS)
-
нажатие на кнопкy физической клавиатуры должно подсвечивать нажатую кнопку на виртуальной:
Может быть различия в нажатиях на кнопки клавиатуры для разных операционных систем: windows и Mac OS. Чтобы избежать ошибок необходимо на странице с клавиатурой указать в какой OS создавалась клавиатура.
-
Если нажатие происходит на несколько кнопок, то подсвечиваются все нажатые кнопки (исключений нет и для
Ctrl
,Alt
иShift
): -
виртуальная клавиатура должна уметь переключаться между двумя раскладками (английский + любой другой язык), при этом:
- назначение сочетания клавиш для переключения раскладки клавиатуры зависит от вас;
- кнопки на виртуальной клавиатуре отображают символы выбранного языка;
- приложение сохраняет выбранный язык после перезагрузки страницы и отображает клавиатуру на этом языке;
- сочетание клавиш для смены языка должно быть указано на странице, чтобы пользователю было понятно, как переключить раскладку клавиатуры;
-
нажатия на кнопку сопровождаются анимацией;
-
клики мышкой по кнопкам на виртуальной клавиатуре и нажатие на кнопки физической клавиатуры выводят вводимые символы в инпут (textarea), расположенный на странице над клавиатурой.
- нажатие стрелок вниз-вверх-влево-вправо либо выводят соответствующую стрелочку в инпут, либо реализуют навигацию по инпуту;
- нажатие на
Enter
должно осуществлять перевод курсора на новую строку; Tab
создает горизонтальный отступ;- нажатие остальных функциональных клавиш на клавиатуре не приводит к вводу символов;
Backspace
удаляет символ, стоящий перед курсором;Del
удаляет символ, стоящий после курсора;- оставшиеся
Shift
,Alt
,Ctrl
,Caps Lock
,Space
должны работать как в реальной клавиатуре.
- должно работать в Chrome последней версии
- использование jQuery и других библиотек не допускается
- использование Bootstrap и других CSS фреймворков не допускается
- использование Angular/React/Vue и других фреймворков не допускается
- можно использовать CSS preprocessors
- использовать eslint (eslint-config-airbnb-base). Разрешается добавить в файл .eslintrc.js игнорирование правила 'import/extensions' а случае использования модулей и необходимости импортов их в основной файл.
- рабочее приложение должно быть размещено на GitHub Pages (https://pages.github.com/), это произойдет автоматически при создании ветки
gh-pages
. После чего страница будет доступна по адресу вида https://your-github-account.github.io/имя-твоего-репозитория
- работа должна выполняться в вашем личном (private) репозитории
- имя репозитория совпадает с именем задачи (virtual-keyboard)
- исходный код должен быть зафиксирован в отдельной ветке
- ветка main должна быть пустой (содержать только такие файлы как README.md или .gitignore)
- сообщения коммитов должны следовать гайдлайну
- после завершения работы над заданием, создайте pull request из ветки development в ветку main
- название pull request должно содержать имя задания
- описание pull request должно содержать следующую информацию:
- ссылка на задание
- скриншот твоего приложения (одного будет достаточно)
- ссылка на твоё приложение
- дата завершения работы над задачей/дедлайн
- ваша самопроверка с предварительной оценкой, которая основана на критериях оценки из задания
Пример:
1. Task:
Здесь прилагается ссылка на задание
2. App screenshot:
Скриншот твоего приложения
3. Deploy:
Ссылка на задеплоенную версию твоего приложения
4. Выполнено 19.04.20 (дедлайн 19.04.20)
5. Score: 200 / 200
- [x] Минимальный объём выполнения
- [x] Реализована возможность 1 (+10)
- [x] Реализована возможность 2 (+10)
- [x] Основной объём выполнения
- [x] Реализована возможность 3 (+10)
- [x] Реализована возможность 4 (+10)
- [x] Расширенный объём выполнения
- [x] Реализована возможность 5 (+10)
- [x] Реализована возможность 6 (+10)
- [x] Технические требования
- [x] используется ESLint (+10)
- [x] используются возможности ES6 (+10)
- [x] Требования к репозиторию, коммитам и pull request выполнены (+10)
- [x] Штрафы
- [x] Ошибки во время работы приложения. (-10 за каждую, но не больше общего количества баллов за реализацию требований)
- [x] Несоблюдение требований к pull request, репозиторию, названию коммитов (-10) оценивается ментором
- Pull request
не должен содержать закомментированного кода, ненужных файлов, изменений из других веток и сгенерированных файлов
, например.bundle.js
. Пожалуйста, просмотрите ваши изменения, прежде чем делать PR. Файлы.editorconfig
,.gitignore
и т.д. могут быть включены в PR - Комментарии в PR являются хорошей практикой
- Как сделать хороший PR
Максимальный балл за задание: 110
минимальный набор:
- реализована генерация DOM-элементов и
body
в index.html пустой изначально (может находится только тегscript
):+20
- нажатие на кнопку на физической клавиатуре подсвечивает кнопку на виртуальной (проверять следует нажатие цифр, букв, знаков препинания,
backspace
,del
(если она присутствует),enter
,shift
,alt
,ctrl
,tab
,caps lock
,space
, стрелки вниз-вверх-влево-вправо):+10
стандартный набор:
- есть переключение между английским и любым другим языком. Выбранный язык должен сохраняться и использоваться при перезагрузке страницы. На странице должна быть указана комбинация клавиш для переключения языка:
+15
- клики мышкой по кнопкам на виртуальной клавиатуре или нажатие на кнопки физической клавиатуры, выводят символы в инпут (textarea):
+15
дополнительный набор:
- реализована анимация нажатия на кнопку:
+15
технические требования:
- использование в коде возможностей стандарта ES6 и выше (classes, деструктуризация и т.д.):
+15
- использование eslint:
+10
- требования к репозиторию, коммитам и PR выполнены:
+10
Штрафы, налагаемые только администрацией курса:
- название репозитория (virtual-keyboard) или название ветки development (development) не соответствуют требованиям:
-110
- сделано меньше 5 коммитов или коммиты сделаны в один день:
-110 или исключить из курса
- значительная часть приложения была выполнена после дедлайна:
-110 или исключить из курса
- ссылка на Pull Request должна быть засабмичена в Cross-Check: Submit;
- репозиторий с твоей работой должен быть сделан публичным (public) после дедлайна выполнения задания. Убедись, что pull request и deploy доступны для просмотра;
- это задание будет проверяться другими участниками курса в ходе кросс-чека.
- Demo
- DOM
- Event
- An Introduction To DOM Events
- Keycode (Пожалуйста, обрати внимание, что
event.keyCode
устарел) - Keyboard events
- Eslint (eslint-config-airbnb-base)