Используется для создания различных типов меню.
| Модификатор | Допустимые значения | Способы использования | Описание |
|---|---|---|---|
| mode | 'radio', 'radio-check', 'check' |
BEMJSON |
Тип меню. |
| disabled | true |
BEMJSON, JS |
Неактивное состояние. |
| focused | true |
BEMJSON, JS |
Фокус на блоке. |
| theme | 'islands' |
BEMJSON |
Стилевое оформление. |
| size | 's', 'm', 'l', 'xl' |
BEMJSON |
Размер блока. |
| Поле | Тип | Описание |
|---|---|---|
| content | Array |
Массив пунктов меню. |
| val | String, Number, Array |
Выбранное значение из списка. Если блоку установлен модификатор mode в значении check, выбранные значения всегда оформляются в виде массива. |
| Элемент | Способы использования | Описание |
|---|---|---|
| group | BEMJSON |
Визуальная группировка пунктов меню. Поле content является обязательным для элемента group. |
| Элемент | Поле | Тип | Описание |
|---|---|---|---|
| group | title | String |
Заголовок группы пунктов. |
Блок предоставляет возможность изменять внешний вид меню и управлять поведением вложенных независимых блоков – пунктов меню.
Реализация блока поддерживает клавиатурное управление: если блок menu находится в фокусе (установлен модификатор focused в значении true), ввод с клавиатуры одного из названий пунктов меню автоматически переводит фокус на данный пункт. Выбор происходит нажатием на кнопку Пробел или Ввод.
Допустимые значения: 'check, 'radio', 'radio-check'.
Способ использования: BEMJSON.
В зависимости от выбранного значения модификатора mode доступны следующие типы блока:
- простой список (модификатор mode не установлен);
- меню с множественным выбором (модификатор mode в значении check);
- меню с одиночным обязательным выбором (модификатор mode в значении radio);
- меню с одиночным необязательным выбором (модификатор mode в значении radio-check).
Без указания модификатора mode создается простой список без возможности выбрать пункт.
{
block : 'menu',
mods : { theme : 'islands', size : 'm' },
content : [
{
elem : 'item',
val : 1,
content : 'Море'
},
{
elem : 'item',
val : 2,
content : 'Горы'
}
]
}Позволяет выбрать произвольное количество пунктов меню.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [1, 3],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
},
{
elem : 'item',
val : 3,
content : 'Отдых на даче'
}
]
}Позволяет создать меню, в котором обязательно выбран ровно один пункт.
Если пункт не выбран, то по умолчанию выбирается первое значение из списка.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Модификатор mode в значении radio-check, так же как и модификатор mode в значении radio, позволяет выбрать ровно один пункт меню. Принципиальное отличие в том, что в значении radio-check есть возможность оставить меню без выбранных пунктов.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Допустимое значение: true.
Способы использования: BEMJSON, JS.
Отвечает за неактивное состояние, при котором блок виден, но недоступен для действий пользователя.
Если блоку menu устанавливается модификатор disabled, то все вложенные в него блоки menu__item также становятся неактивными.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check', disabled : true },
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Модификатор disabled в значении true может быть выставлен отдельным пунктам меню:
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check' },
val : 2,
content : [
{
elem : 'item',
mods : { disabled : true },
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Допустимое значение: true.
Способы использования: BEMJSON, JS.
Выставляется автоматически при получении блоком фокуса.
Отвечает за наличие фокуса на блоке.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check', focused : true },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Способ установки фокуса на блок определяет выбор модификатора: focused или focused-hard. Читать подробности.
Допустимое значение: 'islands'.
Способ использования: BEMJSON.
Отвечает за стилевое оформление блока.
Необходимо использовать с модификатором size.
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'm' },
val : [1],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Допустимые значения: 's', 'm', 'l', 'xl'.
Способ использования: BEMJSON.
Задает размер блоку.
Необходимо использовать с модификатором theme в значении islands.
s
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 's' },
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}m
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'm' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}l
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}xl
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'xl' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Тип: Array.
Определяет перечень пунктов меню.
{
block : 'menu',
mods : { theme : 'islands', size : 'm' },
content : [
{
elem : 'item',
val : 1,
content : 'Отпуск на работе'
},
{
elem : 'item',
val : 2,
content : 'Отпуск на диване'
}
]
}Тип: String, Number, Array.
Определяет:
- Выбранный пункт меню. В таком случае используется тип поля
StringилиNumber.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Отпуск на работе'
},
{
elem : 'item',
val : 2,
content : 'Отпуск на диване'
}
]
}- Список выбранных пунктов меню, если блоку установлен модификатор mode в значении check. В таком случае используется тип поля
Array.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [1, 2],
content : [
{
elem : 'item',
val : 1,
content : 'Отдых в горах'
},
{
elem : 'item',
val : 2,
content : 'Отдых на море'
}
]
}Служит для визуальной группировки пунктов меню. Не влияет на общую логику выбора пунктов.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Отпуск на работе'
},
{
elem : 'group',
content : [
{
elem : 'item',
val : 2,
content : 'Отпуск в горах'
},
{
elem : 'item',
val : 3,
content : 'Отпуск на море'
}
]
},
{
elem : 'item',
val : 4,
content : 'Отпуск на диване'
}
]
}Тип: String.
Определяет заголовок группы пунктов.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Работа'
},
{
elem : 'group',
title : 'Активный отдых',
content : [
{
elem : 'item',
val : 2,
content : 'В горах'
},
{
elem : 'item',
val : 3,
content : 'На море'
}
]
}
]
}