Files
notifications-admin/app/assets/javascripts/conditionalRadios.js

43 lines
1.1 KiB
JavaScript
Raw Normal View History

(function(Modules) {
"use strict";
Modules.ConditionalRadios = function() {
this.start = function(component) {
const $radios = $('[type=radio]', $(component)),
$checkboxes = $('[type=checkbox]', $(component));
let clearable = true;
let clearInvalidSelections = function() {
if (!clearable) {
clearable = true;
return;
}
$radios.each(function() {
let checked = $(this).is(':checked');
$('#panel-' + $(this).attr('value'))
.each(function() {
if (!checked) {
$('[type=checkbox]', this).removeAttr('checked');
}
});
});
};
let selectParent = function() {
clearable = false;
let parentValue = $(this).parents("[id^='panel-']").attr('id').replace('panel-', '');
$('[value=' + parentValue + ']').trigger('click');
};
$checkboxes.on('click', selectParent);
$radios.on('click', clearInvalidSelections);
clearInvalidSelections();
};
};
})(window.GOVUK.Modules);