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

Version Path
govuk_publishing_components-14.0.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.8.1 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.8.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.7.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.6.1 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.6.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.5.4 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.5.3 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.5.2 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.5.1 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.5.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.4.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.3.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.2.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.1 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js
govuk_publishing_components-13.0.0 app/assets/javascripts/govuk_publishing_components/components/checkboxes.js