bh icon indicating copy to clipboard operation
bh copied to clipboard

Support for Number mods values

Open golyshevd opened this issue 9 years ago • 6 comments

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>

golyshevd avatar Oct 30 '15 12:10 golyshevd

@remnev @truerenton

golyshevd avatar Oct 30 '15 12:10 golyshevd

:+1: Yeah, looks like it should.

qfox avatar Oct 30 '15 13:10 qfox

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.

qfox avatar Oct 30 '15 13:10 qfox

I'll be fixing, ok?

remnev avatar Oct 30 '15 13:10 remnev

В целом задача выглядит синтетической. В приведенном примере не может быть больше 7 значений модификатора, и их можно выразить через ctx.tag('h' + (ctx.mod('level') || 1)). Использование численных модификаторов почти всегда говорит о неправильной архитектуре блока.

mishanga avatar Oct 30 '15 14:10 mishanga

Если говорить о конкретном блоке, то я не захотел писать как ты, а написал 7 шаблонов для каждого модификатора чтобы не генерировать название тега и случайно на такое наткнулся. Лично мне показалось абсолютно безобидным то, что значение модификатора является числом

golyshevd avatar Oct 30 '15 14:10 golyshevd