Sha256: 9187cd1252b69ccaea4290237a3cb5f331ebb51d6ae0586d1bac0fb45dfdce6f
Contents?: true
Size: 1.75 KB
Versions: 16
Compression:
Stored size: 1.75 KB
Contents
// This component relies on JavaScript from GOV.UK Frontend //= require govuk-frontend/components/checkboxes/checkboxes.js window.GOVUK = window.GOVUK || {}; window.GOVUK.Modules = window.GOVUK.Modules || {}; (function (Modules) { 'use strict'; Modules.Checkboxes = function () { this.start = function (scope) { var _this = this; this.applyAriaControlsAttributes(scope); $(scope).find('[data-nested=true] input[type=checkbox]').on('change', function(e) { var checkbox = e.target; var isNested = $(checkbox).closest('.govuk-checkboxes--nested'); var hasNested = $('.govuk-checkboxes--nested[data-parent=' + checkbox.id + ']'); if (hasNested.length) { _this.toggleNestedCheckboxes(hasNested, checkbox); } else if (isNested.length) { _this.toggleParentCheckbox(isNested, checkbox); } }); }; this.toggleNestedCheckboxes = function(scope, checkbox) { if (checkbox.checked) { scope.find('input[type=checkbox]').prop("checked", true); } else { scope.find('input[type=checkbox]').prop("checked", false); } }; this.toggleParentCheckbox = function(scope, checkbox) { var siblings = $(checkbox).closest('.gem-c-checkboxes__list-item').siblings(); var parent_id = scope.data('parent'); if (checkbox.checked && siblings.length == siblings.find(':checked').length) { $('#' + parent_id).prop("checked", true); } else { $('#' + parent_id).prop("checked", false); } }; this.applyAriaControlsAttributes = function (scope) { $(scope).find('[data-controls]').each(function () { $(this).attr('aria-controls', $(this).attr('data-controls')); }); }; }; })(window.GOVUK.Modules);
Version data entries
16 entries across 16 versions & 1 rubygems