bh
bh copied to clipboard
Support for Number mods values
see details in commit
The modifier serializes to class well, but template does not match
+ expected - actual
-<h1 class="title title_level_2"></h1>
+<h2 class="title title_level_2"></h2>
@remnev @truerenton
:+1: Yeah, looks like it should.
https://github.com/bem/bh/blob/master/lib/bh.js#L822-L831
To fix that you need:
if (decl.elemMod) {
conds.push(
'json.elemMods && json.elemMods["' + decl.elemMod + '"] === ' +
- (decl.elemModVal === true || '"' + decl.elemModVal + '"'));
+ (decl.elemModVal === true || Number(decl.elemModVal) || '"' + decl.elemModVal +
}
if (decl.blockMod) {
conds.push(
'json.mods && json.mods["' + decl.blockMod + '"] === ' +
- (decl.blockModVal === true || '"' + decl.blockModVal + '"'));
+ (decl.blockModVal === true || Number(decl.blockModVal) || '"' + decl.blockModVal + '"'));
}
Or something similar.
I'll be fixing, ok?
В целом задача выглядит синтетической. В приведенном примере не может быть больше 7 значений модификатора, и их можно выразить через ctx.tag('h' + (ctx.mod('level') || 1))
.
Использование численных модификаторов почти всегда говорит о неправильной архитектуре блока.
Если говорить о конкретном блоке, то я не захотел писать как ты, а написал 7 шаблонов для каждого модификатора чтобы не генерировать название тега и случайно на такое наткнулся. Лично мне показалось абсолютно безобидным то, что значение модификатора является числом