Closed just-boris closed 8 years ago
При использовании шаблонов можно сделать что-то вроде
block('*').def()(function() {
this.mods.theme || (this.mods.theme = 'islands');
return applyNext();
});
Я все еще пользуюсь dist-сборкой. Куда мне это написать?
Например, что нужно добавить в этот fiddle: http://jsfiddle.net/z1cLLt4w/9/
Например, можно в postcss оторвать тему совсем и не задавать её в HTML.
@vithar а что делать если css грузится с yastatic, как в fiddle?
твой шаблонизатор не может проставлять дополнительные классы?
@tadatuta я пользуюсь Handlebars. Куда и как он должен проставлять дополнительные классы?
Еще у меня есть хелпер renderBem
function renderBem(el, bemjson) {
modules.require(['i-bem__dom', 'BEMHTML'], function(BEMDOM, BEMHTML) {
BEMDOM.append(el, BEMHTML.apply(bemjson));
});
}
Могу в него добавить принудительное выставление theme для bemjson: http://jsfiddle.net/z1cLLt4w/12/
Но я не уверен, что так делать правильно
Твой вариант с renderBem
вполне годный.
@tadatuta на самом деле нет, потому что он не работает, если у блока в content
будут другие блоки.
Может есть способ зарегистрировать общий шаблон из этого коммента?
Для диста такая возможность появится после https://github.com/bem/bem-components/issues/1691 (задачу планирую сделать на этой неделе, версию выпустим в обозримом будущем).
@tadatuta добрый день!
Issue по ссылке уже закрыта, в этой задаче что-нибудь поменялось?
@just-boris Ага, прости, что сразу не отписался :(
@tadatuta спасибо!
Я правильно понимаю что match всех блоков по *
работает только в bemhtml?
А в bh это возможно?
Кажется, https://github.com/bem/bh/blob/master/lib/bh.js#L687-L698 должно помочь.
Помогло. Последний вопрос: правильно ли я делаю, чтобы модификатор ставился только для блока, без элементов?
bh.beforeEach(function(ctx, json) {
if(json.block && !json.elem) {
if(!json.mods.size) {
ctx.mod('size', 'm');
}
ctx.mod('theme', 'islands');
}
});
да, в bem-components
тема указывается только блокам
Вопрос решен. Спасибо за советы!
Каждый блок имеет модификатор theme. И во всех примерах он пишется непосредственно к блоку
Хочу чтобы все контролы в проекте получили тему islands по умолчанию. Как это сделать?