bem/bem-bl — pull request #479 by alexbaumgertner (2014-03-12 17:02:27+00:00)
Title: Определение способа взаимодействия пользователя с интерфейсом

В браузерах существует отличие в визуальном поведении нативных контролов (ссылка, кнопка, чекбокс и т.д.) в зависимости от способа взаимодействия с ними: контрол подсвечивается рамкой только если он получил фокус при клавиатурном взаимодействии (кроме полей ввода input и textarea, они всегда подсвечиваются).

Блочные контролы (из библиотеки bem-components) выделялись свечением рамки независимо от того, клавиатурой или мышкой был поставлен фокус.

Появилась задача по устранению различия поведения нативных контролов и блоков.
Кратко ее можно сформулировать так:

"Вне зависимости от используемого контрола желтая рамка при клике на него появляется только при переходе табом.
При клике мышкой никаких желтых рамок быть не должно.
Исключением являются поля ввода: input, textarea.”

Для определения способа взаимодествия пользователя с интерфейсом для блока i-ua: добавлен модификатор "interaction" с двумя значениями: pointer и keyboard.

Суть работы блока i-ua: он примешивается к блоку b-page, и слушает события mousedown и keydown на dom-узле "body".

При взаимодействии со страницей с помощью клавиатуры модификатор interaction
выставляется в значение keyboard, при взаимодействии мышкой (указателем) – в значение pointer.