52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
function chooseRadioInput(el, callback){
|
|
if (!el) return;
|
|
|
|
let $parent = el.closest('.w_radio_inputs');
|
|
if (!$parent) return;
|
|
|
|
let $radios = $parent.querySelectorAll('.radio');
|
|
$radios.forEach(radio => {
|
|
radio.classList.remove('checked')
|
|
})
|
|
|
|
$parent = el.closest('.cw_w_radio_inputs_radio_input');
|
|
let $radio = $parent.querySelector('.radio');
|
|
$radio.classList.toggle("checked");
|
|
|
|
let el_name = $parent.dataset.name;
|
|
|
|
resetFieldError(el);
|
|
if (callback) callback(el, el_name)
|
|
}
|
|
|
|
function generateRadioInput(data, selected){
|
|
let title = data.title;
|
|
if (title.includes('(')){
|
|
title = title.replace(')', '')
|
|
title = title.split('(')
|
|
if (title.length > 1){
|
|
title = `<div>${title[0]}</div><div class="annotation">(${title[1]})</div>`
|
|
}
|
|
}
|
|
let html = `
|
|
<div class="cw_w_radio_inputs_radio_input" data-name="${data.name}">
|
|
<div class="radio${selected? ' checked' : ''}" onclick="chooseRadioInput(this, ${data.callback})"></div>
|
|
<div class="radio_label" onclick="chooseRadioInput(this, ${data.callback})">${title}</div>
|
|
</div>
|
|
`
|
|
|
|
return html;
|
|
}
|
|
|
|
function resetWRadioInputs(widget_name){
|
|
let $widget = getWRadioInputsWidget(widget_name);
|
|
if (!$widget) return;
|
|
|
|
$widget.innerHTML = '';
|
|
}
|
|
|
|
function getWRadioInputsWidget(widget_name){
|
|
if (!widget_name) return;
|
|
let $widget = $(`.field_container[data-type="radio"][data-name="${widget_name}"] .w_radio_inputs`)[0];
|
|
return $widget;
|
|
} |