Use this block for creating different types of menu.
Modifier | Acceptable values | Use cases | Description |
---|---|---|---|
mode | 'radio' , 'radio-check' , 'check' |
BEMJSON |
The type of the menu. |
disabled | true |
BEMJSON , JS |
The disabled state. |
focused | true |
BEMJSON , JS |
The block is in focus. |
theme | 'islands' |
BEMJSON |
A custom design. |
size | 's' , 'm' , 'l' , 'xl' |
BEMJSON |
The size of the menu. Use sizes only for menus when the theme modifier is set to islands. |
Field | Type | Description |
---|---|---|
content | Array |
The array of the menu items. |
val | String , Number , Array |
The selected value from the menu. If the mode modifier with check value is applied to the block, the selected values must be declared as an array . |
Element | Use cases | Description |
---|---|---|
group | BEMJSON |
Visual grouping of menu items. The content field is required for this element. |
Element | Field | Type | Description |
---|---|---|---|
group | title | String |
The name of the menu items group. |
Use the menu
block to control the state, behavior and appearance of the menu and its nested components – the item elements.
The block supports key-pad control. If menu
block is in focus (focused
modifier with true
value), type a menu item name on your keyboard to switch to the menu item. Use Space bar
or Enter
buttons to select the menu item.
Acceptable values: 'check
, 'radio'
, 'radio-check'
.
Use case: BEMJSON
.
The mode
modifier changes the type of the menu
block depending on the selected value:
- basic list (mode modifier is not specified)
- multiple-choice list (mode modifier with check value)
- mandatory single-choice list (mode modifier with radio value)
- optional single-choice list (mode modifier with radio-check value).
If the mode
modifier is not set to the block, the basic list without the possibility to select the menu item is created.
{
block : 'menu',
mods : { theme : 'islands', size : 'm' },
content : [
{
elem : 'item',
val : 1,
content : 'Swimming'
},
{
elem : 'item',
val : 2,
content : 'Skiing'
}
]
}
Use this modifier to create the menu with the possibility to select any number of menu items.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [1, 3],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
},
{
elem : 'item',
val : 3,
content : 'Downshifting'
}
]
}
Use this modifier to create the menu that has one mandatory selected item.
If any item is not selected in BEMJSON declaration, the first menu item is selected by default.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Use this modifier to create the menu that has one mandatory selected item like in the mandatory single-choice list
. The fundamental difference between these two menu types is that the menu
block with the mode
modifier with the radio-check
value has the opportunity to leave the menu without the selected items.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Acceptable value: true
.
Use cases: BEMJSON
, JS
.
The modifier makes the block inactive. The disabled block is visible but not available for user actions.
If menu
block is disabled, all nested menu__item
blocks are also disabled:
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check', disabled : true },
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
The disabled
modifier with the true
value could be set to a separate menu items:
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check' },
val : 2,
content : [
{
elem : 'item',
mods : { disabled : true },
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Acceptable value: true
.
Use cases: BEMJSON
, JS
.
The modifier puts the focus on the block.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio-check', focused : true },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Acceptable value: 'islands'
.
Use case: BEMJSON
.
The modifier gives the block a custom design.
The islands
theme requires the size modifier.
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'm' },
val : [1],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Acceptable values for the islands
theme: 's'
, 'm'
, 'l'
, 'xl'
.
Use case: BEMJSON
.
Use the size
modifier only for blocks with the islands
theme.
Sets the size value for all types of menus.
s
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 's' },
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
m
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'm' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
l
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
xl
{
block : 'menu',
mods : { theme : 'islands', mode : 'check', size : 'xl' },
val : [2],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
Type: Array
.
Specifies the list of the menu items.
{
block : 'menu',
mods : { theme : 'islands', size : 'm' },
content : [
{
elem : 'item',
val : 1,
content : 'Vacation at work'
},
{
elem : 'item',
val : 2,
content : 'Vacation on the couch'
}
]
}
Type: String
, Number
, Array
.
Specifies:
- The selected value from the menu. In this case the field type is
String
orNumber
.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Vacation at work'
},
{
elem : 'item',
val : 2,
content : 'Vacation on the couch'
}
]
}
- The set of selected values from the menu. This case is possible if the block has the mode modifier set to check. The field type is an
Array
.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'check' },
val : [1, 2],
content : [
{
elem : 'item',
val : 1,
content : 'Skiing'
},
{
elem : 'item',
val : 2,
content : 'Swimming'
}
]
}
A visual grouping of the menu items that does not affect the general logic of items selection.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Work'
},
{
elem : 'group',
content : [
{
elem : 'item',
val : 2,
content : 'Skiing'
},
{
elem : 'item',
val : 3,
content : 'Swimming'
}
]
},
{
elem : 'item',
val : 4,
content : 'Downshifting'
}
]
}
Type: String
.
Specifies the title for a group of menu items.
{
block : 'menu',
mods : { theme : 'islands', size : 'm', mode : 'radio' },
val : 2,
content : [
{
elem : 'item',
val : 1,
content : 'Work'
},
{
elem : 'group',
title : 'Outdoor activity',
content : [
{
elem : 'item',
val : 2,
content : 'Skiing'
},
{
elem : 'item',
val : 3,
content : 'Swimming'
}
]
}
]
}