Сделал всё-таки через имитацию события:
let elements = frstItem.concat(scndItem, lstItem)
elements.forEach(element => {
let choices = element.querySelectorAll('.choices__list.choices__list--single .choices__item--selectable')
choices.forEach(element => {
let value = element.getAttribute('data-value')
let choices = element.closest('.choices').querySelector(`.choices__list.choices__list--dropdown .choices__list [data-value="${value}"]`)
choices.addEventListener("choice", ruleEvent)
// у кастомного события в этом контексте нет event.detail.choice.value
// поэтому выше вытягивает его из дата-атрибута, а тут присваиваем
choices.dispatchEvent(new CustomEvent("choice", {
detail: {
choice: {
value: value
}
}
}))
})
})