Вступление #
Группа, где можно выбрать один из элементов.
Для работы группы, можно использовать по умолчанию класс .js-choice-group
и специальную разметку.
Установка #
Пример разметки и инициализации группы элементов.
<div class="js-choice-group" aria-label="Тип архитектуры">
<!--
Чтобы заранее выделить активный элемент,
на триггер необходимо навесить aria-checked="true".
-->
<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>
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-атрибут 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({
group: '.my-choice-group',
value: 'Модернизм'
});
где в конфигурациях указывается:
Название | Тип | Описание |
---|---|---|
group |
object /string |
Род.блок группы. |
value |
string |
Значение элемента, который необходимо выбрать. |
disabled() #
Заблокировать элемент группы, невозможно будет с ним взаимодействовать.
BasicChoiceGroup.disabled({
group: '.my-choice-group',
value: 'Модернизм'
});
где в конфигурациях указывается:
Название | Тип | Описание |
---|---|---|
group |
object /string |
Род.блок группы. |
value |
string |
Значение элемента, который необходимо заблокировать. |
enabled() #
Разблокировать элемент группы.
BasicChoiceGroup.enabled({
group: '.my-choice-group',
value: 'Модернизм'
});
где в конфигурациях указывается:
Название | Тип | Описание |
---|---|---|
group |
object /string |
Род.блок группы. |
value |
string |
Значение элемента, который необходимо разблокировать. |
clearAll() #
Полностью очистить группу от выбора.
BasicChoiceGroup.clearAll('.my-choice-group');
// или
BasicChoiceGroup.clearAll(document.querySelector('.my-choice-group'));
value() #
Получить значение группы.
BasicChoiceGroup.value('.my-choice-group');
// или
BasicChoiceGroup.value(document.querySelector('.my-choice-group'));
Само значение имеет два вида: string
для обычной группы и array
для группы с множественным выбором.
Прослушивание событий #
Можно прослушать события элемента и получить необходимые параметры.
choiceGroup selected #
Срабатывает при выборе элемента из группы.
Параметры:
Название | Тип | Описание |
---|---|---|
event.detail.index |
number |
index выбранного элемента. |
event.detail.checked |
object |
Выбранный элемент. |
event.detail.previous |
object |
Предыдущий выбранный элемент. |
event.detail.value |
string |
Значение выбранного элемента, само значение указывается в data-choice-group-value . |
document.querySelector('.my-choice-group').addEventListener('choiceGroup selected', function() {
console.log(event.detail); // параметры
}, false);