Вступление #
Группа с возможностью выбора одного или нескольких элементов.
Для работы можно использовать класс .js-choice-group по умолчанию и специальную разметку.
Установка #
Пример разметки и инициализации группы элементов.
<div class="js-choice-group" aria-label="Тип архитектуры">
<button
class="choice-group-item"
type="button"
aria-checked="true"
data-choice-group-value="Модерн"
>
Модерн
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Модернизм"
>
Модернизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Конструктивизм"
>
Конструктивизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Постмодернизм"
>
Постмодернизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Хай-тек"
>
Хай-тек
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Деконструктивизм"
>
Деконструктивизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Параметризм"
>
Параметризм
</button>
</div>
Чтобы заранее выделить активный элемент, на триггер необходимо навесить aria-checked="true".
BasicChoiceGroup.init('.my-choice-group');
BasicChoiceGroup.init(document.querySelector('.my-choice-group'));
BasicChoiceGroup.init(document.querySelectorAll('.my-choice-group'));
// или
BasicChoiceGroup.init(); // по умолчанию инициaлизирует элементы с классом .js-choice-group
Множественный выбор #
Чтобы включить множественный выбор, можно использовать атрибут data-choice-group-type со значением multiple.
<div
class="js-choice-group"
data-choice-group-type="multiple"
aria-label="Тип архитектуры"
>
<button
class="choice-group-item"
type="button"
aria-checked="true"
data-choice-group-value="Модерн"
>
Модерн
</button>
<button
class="choice-group-item"
type="button"
aria-checked="true"
data-choice-group-value="Модернизм"
>
Модернизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Конструктивизм"
>
Конструктивизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Постмодернизм"
>
Постмодернизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Хай-тек"
>
Хай-тек
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Деконструктивизм"
>
Деконструктивизм
</button>
<button
class="choice-group-item"
type="button"
data-choice-group-value="Параметризм"
>
Параметризм
</button>
</div>
Методы #
selected() #
Выбрать элемент из группы.
BasicChoiceGroup.selected({
el: '.my-choice-group',
value: 'Модернизм'
});
Где в конфигурациях указывается:
| Название | Тип | Описание |
|---|---|---|
el |
object/string |
Родительский блок группы. |
value |
string |
Значение элемента, который необходимо выбрать. |
disabled() #
Заблокировать элемент группы. Невозможно будет с ним взаимодействовать.
BasicChoiceGroup.disabled({
el: '.my-choice-group',
value: 'Модернизм'
});
Где в конфигурациях указывается:
| Название | Тип | Описание |
|---|---|---|
el |
object/string |
Родительский блок группы. |
value |
string |
Значение элемента, который необходимо заблокировать. |
enabled() #
Разблокировать элемент группы.
BasicChoiceGroup.enabled({
el: '.my-choice-group',
value: 'Модернизм'
});
Где в конфигурациях указывается:
| Название | Тип | Описание |
|---|---|---|
el |
object/string |
Родительский блок группы. |
value |
string |
Значение элемента, который необходимо разблокировать. |
clearAll() #
Полностью очистить группу от выбора.
BasicChoiceGroup.clearAll('.my-choice-group');
// или
BasicChoiceGroup.clearAll(document.querySelector('.my-choice-group'));
getValue() #
Получить значение группы.
BasicChoiceGroup.getValue('.my-choice-group');
// или
BasicChoiceGroup.getValue(document.querySelector('.my-choice-group'));
Значение, которое приходит в ответ, может быть двух видов:
string— Для обычной группы;array— Для группы с множественным выбором.
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const myСhoiceGroup = document.querySelector(".my-choice-group")
console.log(myСhoiceGroup.BasicСhoiceGroup) // пример экземпляра
В настоящее время экземпляр поддерживает все методы.
Прослушивание событий #
Можно прослушать события элемента и получить нужные параметры.
choiceGroup:change #
Срабатывает при переключении дочерних элементов.
Параметры:
| Название | Тип | Описание |
|---|---|---|
event.detail.type |
string |
Тип группы(default или multiple). |
event.detail.index |
number |
Индекс выбранного элемента. |
event.detail.next |
object |
Элемент, на котором произошло событие. |
event.detail.previous |
object |
Предыдущий выбранный элемент. |
event.detail.value |
string |
Итоговое значение выбранного/выбранных элементов. |
const myChoiceGroup = document.querySelector('.my-choice-group')
myChoiceGroup.addEventListener('choiceGroup:change', function() {
console.log(event.detail); // параметры
}, false);