Привет! Переопределяю из bem-components:
common.blocks/control-group
├── __icon
│ └── control-group__icon.css
├── __input
│ └── control-group__input.css
└── _attached
└── control-group_attached.css
Элементы __icon и __input (создаются через микс) актуальны, только если блок control-group содержит модификатор _attached. Возможно ли сделать так, чтобы при их использовании в *.bemjson.js модификатор применялся автоматически?
Фрагмент index.bemjson.js:
{
block : 'control-group',
mods: { attached: true },
content : [
{
block: 'icon',
mix: {
block : 'control-group',
elem : 'icon'
},
content: {
tag: 'svg',
cls: 'action_type_download',
attrs: {
xmlns: 'http://www.w3.org/2000/svg',
width: 16,
height: 16
},
content: '<path d="M1 13v2h14v-2h-14zm13-7h-3v-5h-6v5.031l-3-.031 6 6 6-6z"/>'
}
},
{
block : 'input',
mods : {
name : 'username',
theme : 'islands',
tabIndex : 1,
size : 'xl',
'has-clear' : true,
focused : true,
autocomplete : true
},
mix: {
block : 'control-group',
elem : 'input'
},
placeholder : 'Введите логин',
}
]
}
Есть два варианта ответа:
this.ctx.content
и, если обнаружатся данные элементы, выставить модификатор и вернутьapplyNext()
._attached
, то добавить потомкам миксы:Это будет не так криво, хотя я бы предложил на уровне BEMJSON оставить все как есть, а вот сам BEMJSON начать генерировать с помощью дополнительного слоя (например, BEMTREE). Пример, который можно взять в качестве отправной точки, можно подсмотреть здесь.
Большое спасибо, Владимир. Сейчас «поковыряюсь»…
@tadatuta :+1: