# Название блока

<*Укажите текущий статус блока*>

> Отсутствие статуса означает, что блок и документация к нему находятся в актуальном состоянии.

>`Deprecated` — поддержка блока прекращена. Необходимо указать ссылку на стабильный блок, который следует использовать.

Блок предоставляет <*Выберите нужный вариант*>

>функцию, реализующую ...

>объект, содержащий набор методов для ...

>объект, содержащий набор свойств для ...

>объект, содержащий набор свойств и методов для ...

>объект события, дополненный набором методов (свойств) для ...

>компонент интерфейса для ...

>шаблон, создающий набор HTML-элементов ...

>СSS-класс, реализующий ...

>набор JS-классов, реализующий ...

<*Краткое описание блока*>

>Если блок вспомогательный, необходимо указать, в составе какого блока он используется.

>*Пример текста:* Вспомогательный блок. Используется в составе блока [название блока](ссылка на блок).

## Обзор

> Наличие и содержание таблиц определяется данными блока.

> Название описываемой сущности в таблице оформляется ссылкой на соответствующий раздел документа с подробным описанием.

### Свойства и методы объекта (класса)

>Опциональные аргументы указываются в квадратных скобках.

| Имя | Тип или возвращаемое значение | Описание |
| -------- | --- | -------- |
| [Название свойства](#fields-name) | Тип данных | Краткое описание. |
| [methodName](#fields-name)(<br>`{String} arg1`, <br>`{Array} arg2`, <br>`[{Boolean} argN]`) | `Возвращаемое значение` | Краткое описание. |

### Модификаторы блока

>Если функциональные особенности модификатора БЭМ-сущности описываются в отдельном файле, необходимо в обязательном порядке указывать заголовок `h1` с полным названием модификатора. Например,:<br>
```
# Модификатор `elem-instances` элемента `dom` блока `i-bem`
```

>Последовательность перечисления модификаторов в таблице определяется степенью их воздействия на блок: выше в таблице указаны модификаторы, изменяющие тип и поведение блока, ниже — внешний вид. Модификаторы, влияющие на внешний вид блока, описываются после модификатора `theme`.

>Пример последовательности модификаторов: `type`, `mode`, `disabled`, `focused`, `togglable`, `pressed`, `hovered`, `theme`, `size`, `view`.

>Возможные способы использования: JS, BEMJSON, — (нет возможности устанавливать вручную).

| Модификатор | Допустимые значения | Способы использования | Описание |
| ----------- | ------------------- | --------------------- | -------- |
| [Название модификатора](#modifiers-name) | `'значение-1'`, `'значение-2'` | BEMJSON, JS, — (<i>Выберите необходимое значение</i>) | Краткое описание. |

### Специализированные поля блока

>Пример последовательности полей: `name`, `val`, `text`, `url`, `icon`, `title`, `id`, `tabIndex`.

>Возможные типы данных: String, Number, Boolean, Array, BEMJSON.

| Поле | Тип | Описание |
| ---- | --- | -------- |
| [Название поля](#declfields-field) | Тип данных | Краткое описание. |

### Элементы блока

>Если функциональные особенности элемента блока описываются в отдельном файле, необходимо в обязательном порядке указывать заголовок `h1` с полным названием элемента. Например,<br>
```
# Элемент `channels` блока `events
```

>Возможные способы использования: JS, BEMJSON, — (нет возможности устанавливать вручную).

| Элемент | Способы использования | Описание |
| --------| --------------------- | -------- |
| [Название элемента](#elems-name) | BEMJSON | Краткое описание. |

#### Свойства и методы объекта

>Опциональные аргументы указываются в квадратных скобках.

| Элемент | Имя | Тип или возвращаемое значение | Описание |
|---------| -------- | --- | -------- |
| Название элемента, к которому относятся описываемые свойства и методы | [Название свойства](#fields-name) | Тип данных | Краткое описание. |
| Название элемента, к которому относятся описываемые свойства и методы | [methodName](#fields-name)(<br>`{String} arg1`, <br>`{Array} arg2`, <br>`[{Boolean} argN]`) | `Возвращаемое значение` | Краткое описание. |

#### Специализированные поля элементов блока

| Элемент | Поле | Тип | Описание |
| ------- | ---- | --- | -------- |
| Название элемента, к которому относится описываемое поле | [Название поля](#elems-name-declfields-name) | Тип данных | Краткое описание. |

### JS-параметры блока

>Опциональные аргументы указываются в квадратных скобках.

| Параметр | Тип | Значение по умолчанию | Описание |
| -------- | --- | --------------------- | -------- |
| [Название параметра](#params-name1) | Тип данных | `Значение по умолчанию` | Краткое описание. |

### Публичные технологии блока

Блок реализован в технологиях:

>Лишнее удалить. Технологии, отсутствующие в списке, не являются публичными и не указываются.

* `vanilla.js`
* `js`
* `browser.js`
* `node.js`
* `bh.js`
* `bemhtml`
* `json`
* `css`
* `svg`

## Подробное описание

<*Подробное описание блока*>

Реализация блока включает в себя блоки:

* [название блока-1](ссылка на блок-1)
* [название блока-2](ссылка на блок-2)

Блок является составной частью блока [название блока](ссылка на блок).

>В описании не указываются изменения внешнего вида блока, связанное с применением модификатора темы.

>Раздел содержит подробное описание всех сущностей блока в порядке, определенном в [обзоре блока](#block-overview). Каждая сущность (модификатор, элемент, поле, свойство, метод и т.д.) оформляется отдельным вложенным разделом.

>**Оформление заголовков**

>Заголовок содержит тип сущности (модификатор, элемент, поле, событие и т.д.) и ее имя. Имя заключается в бэктики.<br>
>Например:
```
#### Модификатор `type`
```

>Все допустимые значения описываются и выделяются во вложенные разделы с заголовками следующего уровня. Заголовок оформляется следующим образом:<br>
```
##### Смысловое название блока (модификатор `название модификатора` в значении `значение`)
```

>Например:<br>
```
##### Поле для ввода пароля (модификатор `type` в значении `password`)
```


>Описание каждой сущности сопровождается примером — фрагментом `BEMJSON`. Сложные примеры, требующие применения JavaScript, размещаются на отдельной вкладке **Примеры**.

>**Оформление примера**

>Пример выделяется в тексте тройными бэктиками с двух сторон. Обязательно указывать идентификатор языка для подсветки синтаксиса. Встроенные примеры помечаются идентификатором `js`. Пример JavaScript-кода, который не должен быть собран на сайте, — `javascript`.
>Например:
```
```js
...
code block for inline example // Встроенный пример. Будет собран при публикации документа на сайте.
...
```
>
```
```javascript
...
code block // Пример кода. Будет отображаться блок кода с подсветкой синтаксиса.
...
```

<a name="fields"></a>
### Свойства и методы объекта

<a name="fields-name"></a>
#### Поле `название свойства`

Тип: `{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}`. <*Выберите ожидаемый тип данных*>

>Типы разделяются знаком `|`.

<Описание>

<a name="fields-name"></a>
#### Метод `название метода`

<Описание метода>

Принимаемые аргументы:

* `arg1` `{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}`. <*Выберите ожидаемый тип данных*> <Краткое описание аргумента> Обязательный аргумент. <*Удалить, если аргумент необязательный*>

>Для полиморфных методов типы разделяются знаком `|`.

>Имя и тип данных для необязательных аргументов указываются в квадратных скобках.

Не принимает аргументов.

<*Возвращаемое значение. Выберите нужный вариант*>

>Возвращаемое значение: <*Впишите нужное значение*>

>Не имеет возвращаемого значения.

>Возвращает объект `this`.

`{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}` — в случае, если ... <*Выберите нужное значение*>

<Пример>

<a name="modifiers"></a>
### Модификаторы блока

<a name="modifiers-name"></a>
#### Модификатор `название модификатора`

Допустимые значения: `'значение-1'`, `'значение-2'`.

>Строчные значения заключаются в одинарные вертикальные кавычки и бэктики.

Значение по умолчанию: <*Если отсутствует, ставится прочерк*>

Обязательный модификатор. <*Для необязательных модификаторов признак не указывается*>

Способ использования: BEMJSON, JS, —. <*Выберите нужное значение*>

Уровень переопределения: <*Указывается, если уровень отличен от `common`. Для `common` — признак удаляется.*>

<Описание>

<a name="modifiers-name-1"></a>
##### Смысловое название блока (модификатор `название модификатора` в значении `значение-1`)

<Описание>

<Пример>

<a name="modifiers-name-2"></a>
##### Смысловое название блока (модификатор `название модификатора` в значении `значение-2`)

<Описание>

<Пример>

<a name="modifiers-name"></a>
#### Модификатор `название модификатора`

Допустимое значение: `булево значение`.

Способ использования: BEMJSON, JS, —. <*Выберите нужное значение*>

<Описание>

<Пример>

<a name="declfields"></a>
### Специализированные поля блока

<a name="declfields-field"></a>
#### Поле `название поля`

Тип: String, Number, Array, Boolean. <*Выберите нужный тип данных*>

Значение по умолчанию: <*Если отсутствует, ставится прочерк*>

Обязательное поле. <*Для необязательных полей признак не указывается*>

<Описание>

<Пример>

<a name="elems"></a>
### Элементы блока

<a name="elems-name"></a>
#### Элемент `название элемента`

Элемент предоставляет <*Выберите нужный вариант*>

>функцию, реализующую ...

>объект, содержащий набор методов для ...

>объект, содержащий набор свойств для ...

>объект, содержащий набор свойств и методов для ...

>объект события, дополненный набором методов (свойств) для ...

>шаблон для ...

>набор специализированных полей для ...

>СSS-класс, реализующий ...

>JS-класс, реализующий ...

Элемент дополняет <*Выберите нужный вариант*>

>объект события набором методов (свойств) для ...

>базовый блок набором методов (свойств) для ...

Обязательный элемент. <*Для необязательных элементов признак не указывается*>

<Описание>

<Пример>

<a name="elems-name-fields"></a>
### Свойства и методы объекта

<a name="elems-name-fields-name"></a>
#### Поле `название свойства`

Тип: `{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}`. <*Выберите ожидаемый тип данных. Типы разделяется знаком `|`.*>

<Описание>

<a name="elems-name-fields-method"></a>
#### Метод `название метода`

<Описание метода>

Принимаемые аргументы:

* `arg1` `{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}` — <*Выберите ожидаемый тип данных*> <Краткое описание аргумента> Обязательный аргумент. <*Удалить, если аргумент необязательный*>

>Для полиморфных методов типы разделяются знаком `|`.

>Имя и тип данных для необязательных аргументов указываются в квадратных скобках.

Не принимает аргументов.

<*Возвращаемое значение. Выберите нужный вариант*>

>Возвращаемое значение: <*Впишите нужное значение*>

>Не имеет возвращаемого значения.

>Возвращает объект `this`.

`{String}`, `{Number}`, `{Array}`, `{Boolean}`, `{Object}`, `{Function}`, `{*}` — в случае если ... <*Выберите нужное значение*>

<Пример>

<a name="elems-name-declfields"></a>
### Специализированные поля элементов блока

<a name="elems-name-declfields-name"></a>
#### Специализированное поле `название поля` элемента `название элемента`

Тип: String, Number, Array, Boolean. <*Выберите нужный тип данных*>

<Описание>

<Пример>

<a name="declparams"></a>
### JS-параметры блока

<a name="params-name"></a>
#### Параметр `название параметра`

Тип: String, Number, Array, Boolean. <*Выберите нужный тип данных*>

Значение по умолчанию: <*Если отсутствует, ставится прочерк*>

Обязательный параметр. <*Для необязательных параметров признак не указывается*>

Уровень переопределения: <*Указывается, если уровень отличен от `common`. Для `common` — удаляется*.>

<Описание>

<Пример>
