Доброго времени суток!
Наткнулся на очень странное поведение блока select с модификатором radio-check. Берем bemjson из документации:
{
block : 'select',
mods : { mode : 'radio-check', theme : 'islands', size : 'm' },
name : 'select3',
val : 2,
text : '—',
options : [
{ val : 1, text : 'Доклад' },
{ val : 2, text : 'Мастер-класс' },
{ val : 3, text : 'Круглый стол' }
]
}
несколько раз клацаем, меняем выбранное значение - все прекрасно. Но так как далеко не всегда существует значение по-умолчанию, убираем val:
{
block : 'select',
mods : { mode : 'radio-check', theme : 'islands', size : 'm' },
name : 'select3',
text : '—',
options : [
{ val : 1, text : 'Доклад' },
{ val : 2, text : 'Мастер-класс' },
{ val : 3, text : 'Круглый стол' }
]
}
и повторяем манипуляции. Вот тут и начинаются странности: проклацав по-очереди все пункты получаю примерно такую разметку:
...
<div class="select select_mode_radio-check select_theme_islands select_size_m i-bem select_js_inited" data-bem="{"select":{"name":"select3","text":"—"}}">
<input type="hidden" name="select3" class="select__control" value="3">
<input type="hidden" name="select3" class="select__control" value="2">
<input type="hidden" name="select3" class="select__control" value="1">
<button class="button button_size_m button_theme_islands select__button button__control i-bem button_js_inited button__control_js_inited _popup-destructor_js_inited button_checked" data-bem="{"button":{}}" role="listbox" aria-owns="uniq14993408571141 uniq14993408571142 uniq14993408571143" aria-labelledby="uniq14993408571144" type="button">
<span class="button__text i-bem button__text_js_inited" id="uniq14993408571144">Круглый стол</span>
<span class="icon select__tick"></span>
</button>
</div>
...
Версия bem-components 6.0.0
Исправлено в https://github.com/bem/bem-components/pull/2055, выйдет в ближайшем минорном или патч-релизе. Ориентировочно на этих выходных.
Выпустили
bem-components@6.0.1
, можно забирать6.0.1, ура! Там же и
addJs(true)
зафиксено в npm'овском пакете теперь, да?@lilliputten ага )