govuk_publishing_components 20.5.1 → 20.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav.scss +1 -7
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/govuk-frontend/govuk/all.js +56 -63
- data/node_modules/govuk-frontend/govuk/components/accordion/README.md +0 -2
- data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +18 -16
- data/node_modules/govuk-frontend/govuk/components/button/_button.scss +11 -0
- data/node_modules/govuk-frontend/govuk/components/button/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/button/template.njk +3 -3
- data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +14 -0
- data/node_modules/govuk-frontend/govuk/components/character-count/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/checkboxes/template.njk +47 -45
- data/node_modules/govuk-frontend/govuk/components/date-input/template.njk +2 -3
- data/node_modules/govuk-frontend/govuk/components/details/details.js +56 -63
- data/node_modules/govuk-frontend/govuk/components/fieldset/_fieldset.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/fieldset/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/footer/_footer.scss +4 -2
- data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/input/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/radios/template.njk +48 -46
- data/node_modules/govuk-frontend/govuk/components/select/template.njk +6 -4
- data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +27 -25
- data/node_modules/govuk-frontend/govuk/components/table/template.njk +20 -18
- data/node_modules/govuk-frontend/govuk/components/tabs/template.njk +15 -11
- data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +20 -18
- data/node_modules/govuk-frontend/package.json +18 -18
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 38f751bcc662ac5194c82e962eddca8edd4b0fa27c1af17f1cb59dc2d9c19e4a
         | 
| 4 | 
            +
              data.tar.gz: 4c87626b816dd2bebc14ab205f8cb5752c6010b07ebc1e08dd80b7e4c9465039
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b53285bb7fe7369a290e2cb0d40ca82edf0e54c5131dbec6611b14e548026f34f1baf39cdd2b7dc20b3a60f6a122cae9eae202ecca70411d6039038ae6ac64b6
         | 
| 7 | 
            +
              data.tar.gz: 502a6b3a0650938848b4cd46cb16f6de1e43157e215073297578ce1400b21533e4e735ca6ac0a983a53ac091216fc7b47a3031383d07a969693a62488dac5260
         | 
| @@ -262,7 +262,7 @@ $top-border: solid 2px govuk-colour("mid-grey", $legacy: "grey-3"); | |
| 262 262 | 
             
              }
         | 
| 263 263 |  | 
| 264 264 | 
             
              &:hover {
         | 
| 265 | 
            -
                .gem-c-step-nav__button,
         | 
| 265 | 
            +
                .gem-c-step-nav__button:not(:focus),
         | 
| 266 266 | 
             
                .gem-c-step-nav__circle {
         | 
| 267 267 | 
             
                  color: $govuk-link-colour;
         | 
| 268 268 | 
             
                }
         | 
| @@ -272,12 +272,6 @@ $top-border: solid 2px govuk-colour("mid-grey", $legacy: "grey-3"); | |
| 272 272 | 
             
                }
         | 
| 273 273 | 
             
              }
         | 
| 274 274 |  | 
| 275 | 
            -
              &:focus {
         | 
| 276 | 
            -
                .gem-c-step-nav__button {
         | 
| 277 | 
            -
                  color: $govuk-focus-text-colour;
         | 
| 278 | 
            -
                }
         | 
| 279 | 
            -
              }
         | 
| 280 | 
            -
             | 
| 281 275 | 
             
              .gem-c-step-nav--large & {
         | 
| 282 276 | 
             
                @include govuk-media-query($from: tablet) {
         | 
| 283 277 | 
             
                  padding: govuk-spacing(6) 0;
         | 
| @@ -1361,58 +1361,28 @@ Button.prototype.init = function () { | |
| 1361 1361 | 
             
            var KEY_ENTER = 13;
         | 
| 1362 1362 | 
             
            var KEY_SPACE$1 = 32;
         | 
| 1363 1363 |  | 
| 1364 | 
            -
            // Create a flag to know if the browser supports navtive details
         | 
| 1365 | 
            -
            var NATIVE_DETAILS = typeof document.createElement('details').open === 'boolean';
         | 
| 1366 | 
            -
             | 
| 1367 1364 | 
             
            function Details ($module) {
         | 
| 1368 1365 | 
             
              this.$module = $module;
         | 
| 1369 1366 | 
             
            }
         | 
| 1370 1367 |  | 
| 1371 | 
            -
             | 
| 1372 | 
            -
             | 
| 1373 | 
            -
             | 
| 1374 | 
            -
             | 
| 1375 | 
            -
            */
         | 
| 1376 | 
            -
            Details.prototype.handleInputs = function (node, callback) {
         | 
| 1377 | 
            -
              node.addEventListener('keypress', function (event) {
         | 
| 1378 | 
            -
                var target = event.target;
         | 
| 1379 | 
            -
                // When the key gets pressed - check if it is enter or space
         | 
| 1380 | 
            -
                if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE$1) {
         | 
| 1381 | 
            -
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 1382 | 
            -
                    // Prevent space from scrolling the page
         | 
| 1383 | 
            -
                    // and enter from submitting a form
         | 
| 1384 | 
            -
                    event.preventDefault();
         | 
| 1385 | 
            -
                    // Click to let the click event do all the necessary action
         | 
| 1386 | 
            -
                    if (target.click) {
         | 
| 1387 | 
            -
                      target.click();
         | 
| 1388 | 
            -
                    } else {
         | 
| 1389 | 
            -
                      // except Safari 5.1 and under don't support .click() here
         | 
| 1390 | 
            -
                      callback(event);
         | 
| 1391 | 
            -
                    }
         | 
| 1392 | 
            -
                  }
         | 
| 1393 | 
            -
                }
         | 
| 1394 | 
            -
              });
         | 
| 1368 | 
            +
            Details.prototype.init = function () {
         | 
| 1369 | 
            +
              if (!this.$module) {
         | 
| 1370 | 
            +
                return
         | 
| 1371 | 
            +
              }
         | 
| 1395 1372 |  | 
| 1396 | 
            -
              //  | 
| 1397 | 
            -
               | 
| 1398 | 
            -
                var target = event.target;
         | 
| 1399 | 
            -
                if (event.keyCode === KEY_SPACE$1) {
         | 
| 1400 | 
            -
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 1401 | 
            -
                    event.preventDefault();
         | 
| 1402 | 
            -
                  }
         | 
| 1403 | 
            -
                }
         | 
| 1404 | 
            -
              });
         | 
| 1373 | 
            +
              // If there is native details support, we want to avoid running code to polyfill native behaviour.
         | 
| 1374 | 
            +
              var hasNativeDetails = typeof this.$module.open === 'boolean';
         | 
| 1405 1375 |  | 
| 1406 | 
            -
               | 
| 1376 | 
            +
              if (hasNativeDetails) {
         | 
| 1377 | 
            +
                return
         | 
| 1378 | 
            +
              }
         | 
| 1379 | 
            +
             | 
| 1380 | 
            +
              this.polyfillDetails();
         | 
| 1407 1381 | 
             
            };
         | 
| 1408 1382 |  | 
| 1409 | 
            -
            Details.prototype. | 
| 1383 | 
            +
            Details.prototype.polyfillDetails = function () {
         | 
| 1410 1384 | 
             
              var $module = this.$module;
         | 
| 1411 1385 |  | 
| 1412 | 
            -
              if (!$module) {
         | 
| 1413 | 
            -
                return
         | 
| 1414 | 
            -
              }
         | 
| 1415 | 
            -
             | 
| 1416 1386 | 
             
              // Save shortcuts to the inner summary and content elements
         | 
| 1417 1387 | 
             
              var $summary = this.$summary = $module.getElementsByTagName('summary').item(0);
         | 
| 1418 1388 | 
             
              var $content = this.$content = $module.getElementsByTagName('div').item(0);
         | 
| @@ -1442,9 +1412,7 @@ Details.prototype.init = function () { | |
| 1442 1412 | 
             
              //
         | 
| 1443 1413 | 
             
              // We have to use the camelcase `tabIndex` property as there is a bug in IE6/IE7 when we set the correct attribute lowercase:
         | 
| 1444 1414 | 
             
              // See http://web.archive.org/web/20170120194036/http://www.saliences.com/browserBugs/tabIndex.html for more information.
         | 
| 1445 | 
            -
               | 
| 1446 | 
            -
                $summary.tabIndex = 0;
         | 
| 1447 | 
            -
              }
         | 
| 1415 | 
            +
              $summary.tabIndex = 0;
         | 
| 1448 1416 |  | 
| 1449 1417 | 
             
              // Detect initial open state
         | 
| 1450 1418 | 
             
              var openAttr = $module.getAttribute('open') !== null;
         | 
| @@ -1454,20 +1422,18 @@ Details.prototype.init = function () { | |
| 1454 1422 | 
             
              } else {
         | 
| 1455 1423 | 
             
                $summary.setAttribute('aria-expanded', 'false');
         | 
| 1456 1424 | 
             
                $content.setAttribute('aria-hidden', 'true');
         | 
| 1457 | 
            -
                 | 
| 1458 | 
            -
                  $content.style.display = 'none';
         | 
| 1459 | 
            -
                }
         | 
| 1425 | 
            +
                $content.style.display = 'none';
         | 
| 1460 1426 | 
             
              }
         | 
| 1461 1427 |  | 
| 1462 1428 | 
             
              // Bind an event to handle summary elements
         | 
| 1463 | 
            -
              this. | 
| 1429 | 
            +
              this.polyfillHandleInputs($summary, this.polyfillSetAttributes.bind(this));
         | 
| 1464 1430 | 
             
            };
         | 
| 1465 1431 |  | 
| 1466 1432 | 
             
            /**
         | 
| 1467 1433 | 
             
            * Define a statechange function that updates aria-expanded and style.display
         | 
| 1468 1434 | 
             
            * @param {object} summary element
         | 
| 1469 1435 | 
             
            */
         | 
| 1470 | 
            -
            Details.prototype. | 
| 1436 | 
            +
            Details.prototype.polyfillSetAttributes = function () {
         | 
| 1471 1437 | 
             
              var $module = this.$module;
         | 
| 1472 1438 | 
             
              var $summary = this.$summary;
         | 
| 1473 1439 | 
             
              var $content = this.$content;
         | 
| @@ -1478,27 +1444,54 @@ Details.prototype.setAttributes = function () { | |
| 1478 1444 | 
             
              $summary.setAttribute('aria-expanded', (expanded ? 'false' : 'true'));
         | 
| 1479 1445 | 
             
              $content.setAttribute('aria-hidden', (hidden ? 'false' : 'true'));
         | 
| 1480 1446 |  | 
| 1481 | 
            -
               | 
| 1482 | 
            -
                $content.style.display = (expanded ? 'none' : '');
         | 
| 1447 | 
            +
              $content.style.display = (expanded ? 'none' : '');
         | 
| 1483 1448 |  | 
| 1484 | 
            -
             | 
| 1485 | 
            -
             | 
| 1486 | 
            -
             | 
| 1487 | 
            -
             | 
| 1488 | 
            -
             | 
| 1489 | 
            -
                }
         | 
| 1449 | 
            +
              var hasOpenAttr = $module.getAttribute('open') !== null;
         | 
| 1450 | 
            +
              if (!hasOpenAttr) {
         | 
| 1451 | 
            +
                $module.setAttribute('open', 'open');
         | 
| 1452 | 
            +
              } else {
         | 
| 1453 | 
            +
                $module.removeAttribute('open');
         | 
| 1490 1454 | 
             
              }
         | 
| 1455 | 
            +
             | 
| 1491 1456 | 
             
              return true
         | 
| 1492 1457 | 
             
            };
         | 
| 1493 1458 |  | 
| 1494 1459 | 
             
            /**
         | 
| 1495 | 
            -
            *  | 
| 1460 | 
            +
            * Handle cross-modal click events
         | 
| 1496 1461 | 
             
            * @param {object} node element
         | 
| 1462 | 
            +
            * @param {function} callback function
         | 
| 1497 1463 | 
             
            */
         | 
| 1498 | 
            -
            Details.prototype. | 
| 1499 | 
            -
              node. | 
| 1500 | 
            -
             | 
| 1501 | 
            -
             | 
| 1464 | 
            +
            Details.prototype.polyfillHandleInputs = function (node, callback) {
         | 
| 1465 | 
            +
              node.addEventListener('keypress', function (event) {
         | 
| 1466 | 
            +
                var target = event.target;
         | 
| 1467 | 
            +
                // When the key gets pressed - check if it is enter or space
         | 
| 1468 | 
            +
                if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE$1) {
         | 
| 1469 | 
            +
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 1470 | 
            +
                    // Prevent space from scrolling the page
         | 
| 1471 | 
            +
                    // and enter from submitting a form
         | 
| 1472 | 
            +
                    event.preventDefault();
         | 
| 1473 | 
            +
                    // Click to let the click event do all the necessary action
         | 
| 1474 | 
            +
                    if (target.click) {
         | 
| 1475 | 
            +
                      target.click();
         | 
| 1476 | 
            +
                    } else {
         | 
| 1477 | 
            +
                      // except Safari 5.1 and under don't support .click() here
         | 
| 1478 | 
            +
                      callback(event);
         | 
| 1479 | 
            +
                    }
         | 
| 1480 | 
            +
                  }
         | 
| 1481 | 
            +
                }
         | 
| 1482 | 
            +
              });
         | 
| 1483 | 
            +
             | 
| 1484 | 
            +
              // Prevent keyup to prevent clicking twice in Firefox when using space key
         | 
| 1485 | 
            +
              node.addEventListener('keyup', function (event) {
         | 
| 1486 | 
            +
                var target = event.target;
         | 
| 1487 | 
            +
                if (event.keyCode === KEY_SPACE$1) {
         | 
| 1488 | 
            +
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 1489 | 
            +
                    event.preventDefault();
         | 
| 1490 | 
            +
                  }
         | 
| 1491 | 
            +
                }
         | 
| 1492 | 
            +
              });
         | 
| 1493 | 
            +
             | 
| 1494 | 
            +
              node.addEventListener('click', callback);
         | 
| 1502 1495 | 
             
            };
         | 
| 1503 1496 |  | 
| 1504 1497 | 
             
            function CharacterCount ($module) {
         | 
| @@ -12,6 +12,4 @@ Find out when to use the details component in your service in the [GOV.UK Design | |
| 12 12 |  | 
| 13 13 | 
             
            Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.
         | 
| 14 14 |  | 
| 15 | 
            -
            `id` option given to instances of the component must be **unique** across the domain of your service (as the expanded state of individual instances of the component persists across page loads using [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)).
         | 
| 16 | 
            -
             | 
| 17 15 | 
             
            See [options table](https://design-system.service.gov.uk/components/accordion/#options-example-default) for details.
         | 
| @@ -4,22 +4,24 @@ | |
| 4 4 | 
             
            <div class="govuk-accordion {%- if params.classes %} {{ params.classes }}{% endif -%}" data-module="govuk-accordion" id="{{ id }}"
         | 
| 5 5 | 
             
            {%- for attribute, value in params.attributes %} {{attribute}}="{{value}}"{% endfor %}>
         | 
| 6 6 | 
             
              {% for item in params.items %}
         | 
| 7 | 
            -
                 | 
| 8 | 
            -
                  <div class="govuk-accordion__section- | 
| 9 | 
            -
                    < | 
| 10 | 
            -
                      < | 
| 11 | 
            -
                        {{  | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
                       | 
| 16 | 
            -
                         | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 7 | 
            +
                {% if item %}
         | 
| 8 | 
            +
                  <div class="govuk-accordion__section {% if item.expanded %}govuk-accordion__section--expanded{% endif %}">
         | 
| 9 | 
            +
                    <div class="govuk-accordion__section-header">
         | 
| 10 | 
            +
                      <h{{ headingLevel }} class="govuk-accordion__section-heading">
         | 
| 11 | 
            +
                        <span class="govuk-accordion__section-button" id="{{ id }}-heading-{{ loop.index }}">
         | 
| 12 | 
            +
                          {{ item.heading.html | safe if item.heading.html else item.heading.text }}
         | 
| 13 | 
            +
                        </span>
         | 
| 14 | 
            +
                      </h{{ headingLevel }}>
         | 
| 15 | 
            +
                      {% if item.summary.html or item.summary.text %}
         | 
| 16 | 
            +
                        <div class="govuk-accordion__section-summary govuk-body" id="{{ id }}-summary-{{ loop.index }}">
         | 
| 17 | 
            +
                          {{ item.summary.html | safe if item.summary.html else item.summary.text }}
         | 
| 18 | 
            +
                        </div>
         | 
| 19 | 
            +
                      {% endif %}
         | 
| 20 | 
            +
                    </div>
         | 
| 21 | 
            +
                    <div id="{{ id }}-content-{{ loop.index }}" class="govuk-accordion__section-content" aria-labelledby="{{ id }}-heading-{{ loop.index }}">
         | 
| 22 | 
            +
                      {{ item.content.html | safe if item.content.html else item.content.text }}
         | 
| 23 | 
            +
                    </div>
         | 
| 19 24 | 
             
                  </div>
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                    {{ item.content.html | safe if item.content.html else item.content.text }}
         | 
| 22 | 
            -
                  </div>
         | 
| 23 | 
            -
                </div>
         | 
| 25 | 
            +
                {% endif %}
         | 
| 24 26 | 
             
              {% endfor %}
         | 
| 25 27 | 
             
            </div>
         | 
| @@ -98,6 +98,17 @@ | |
| 98 98 | 
             
                  box-shadow: inset 0 0 0 1px $govuk-focus-colour;
         | 
| 99 99 | 
             
                }
         | 
| 100 100 |  | 
| 101 | 
            +
                // alphagov/govuk_template includes a specific a:link:focus selector
         | 
| 102 | 
            +
                // designed to make unvisited links a slightly darker blue when focussed, so
         | 
| 103 | 
            +
                // we need to override the text colour for that combination of selectors so
         | 
| 104 | 
            +
                // so that unvisited links styled as buttons do not end up with dark blue
         | 
| 105 | 
            +
                // text when focussed.
         | 
| 106 | 
            +
                @include govuk-compatibility(govuk_template) {
         | 
| 107 | 
            +
                  &:link:focus {
         | 
| 108 | 
            +
                    color: $govuk-button-text-colour;
         | 
| 109 | 
            +
                  }
         | 
| 110 | 
            +
                }
         | 
| 111 | 
            +
             | 
| 101 112 | 
             
                &:focus:not(:active):not(:hover) {
         | 
| 102 113 | 
             
                  border-color: $govuk-focus-colour;
         | 
| 103 114 | 
             
                  color: $govuk-focus-text-colour;
         | 
| @@ -64,5 +64,11 @@ | |
| 64 64 | 
             
                    "type": "boolean",
         | 
| 65 65 | 
             
                    "required": false,
         | 
| 66 66 | 
             
                    "description": "Prevent accidental double clicks on submit buttons from submitting forms multiple times"
         | 
| 67 | 
            +
                },
         | 
| 68 | 
            +
                {
         | 
| 69 | 
            +
                    "name": "isStartButton",
         | 
| 70 | 
            +
                    "type": "boolean",
         | 
| 71 | 
            +
                    "required": false,
         | 
| 72 | 
            +
                    "description": "Use for the main call to action on your service's start page."
         | 
| 67 73 | 
             
                }
         | 
| 68 74 | 
             
            ]
         | 
| @@ -37,7 +37,7 @@ treat it as an interactive element - without this it will be | |
| 37 37 |  | 
| 38 38 | 
             
            {#- Define common attributes we can use for both button and input types #}
         | 
| 39 39 |  | 
| 40 | 
            -
            {%- set buttonAttributes %}{% if params.name %} name="{{ params.name }}"{% endif %} | 
| 40 | 
            +
            {%- set buttonAttributes %}{% if params.name %} name="{{ params.name }}"{% endif %}{% if params.disabled %} disabled="disabled" aria-disabled="true"{% endif %}{% if params.preventDoubleClick %} data-prevent-double-click="true"{% endif %}{% endset %}
         | 
| 41 41 |  | 
| 42 42 | 
             
            {#- Actually create a button... or a link! #}
         | 
| 43 43 |  | 
| @@ -49,12 +49,12 @@ treat it as an interactive element - without this it will be | |
| 49 49 | 
             
            </a>
         | 
| 50 50 |  | 
| 51 51 | 
             
            {%- elseif element == 'button' %}
         | 
| 52 | 
            -
            <button {%- if params.value %} value="{{ params.value }}"{% endif %} {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
         | 
| 52 | 
            +
            <button {%- if params.value %} value="{{ params.value }}"{% endif %}{%- if params.type %} type="{{ params.type }}"{% endif %} {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
         | 
| 53 53 | 
             
              {{ params.html | safe if params.html else params.text }}
         | 
| 54 54 | 
             
            {# Indentation is intentional to output HTML nicely #}
         | 
| 55 55 | 
             
            {{- iconHtml | safe | trim | indent(2, true) if iconHtml -}}
         | 
| 56 56 | 
             
            </button>
         | 
| 57 57 |  | 
| 58 58 | 
             
            {%- elseif element == 'input' %}
         | 
| 59 | 
            -
            <input value="{{ params.text }}" {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
         | 
| 59 | 
            +
            <input value="{{ params.text }}" type="{{ params.type if params.type else 'submit' }}" {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
         | 
| 60 60 | 
             
            {%- endif %}
         | 
| @@ -62,6 +62,20 @@ | |
| 62 62 | 
             
                    "description": "Options for the errorMessage component (e.g. text).",
         | 
| 63 63 | 
             
                    "isComponent": true
         | 
| 64 64 | 
             
                },
         | 
| 65 | 
            +
                {
         | 
| 66 | 
            +
                    "name": "formGroup",
         | 
| 67 | 
            +
                    "type": "object",
         | 
| 68 | 
            +
                    "required": false,
         | 
| 69 | 
            +
                    "description": "Options for the form-group wrapper",
         | 
| 70 | 
            +
                    "params": [
         | 
| 71 | 
            +
                        {
         | 
| 72 | 
            +
                            "name": "classes",
         | 
| 73 | 
            +
                            "type": "string",
         | 
| 74 | 
            +
                            "required": false,
         | 
| 75 | 
            +
                            "description": "Classes to add to the form group (e.g. to show error state for the whole group)"
         | 
| 76 | 
            +
                        }
         | 
| 77 | 
            +
                    ]
         | 
| 78 | 
            +
                },
         | 
| 65 79 | 
             
                {
         | 
| 66 80 | 
             
                    "name": "classes",
         | 
| 67 81 | 
             
                    "type": "string",
         | 
| @@ -10,6 +10,7 @@ | |
| 10 10 | 
             
                describedBy: params.id + '-info',
         | 
| 11 11 | 
             
                rows: params.rows,
         | 
| 12 12 | 
             
                value: params.value,
         | 
| 13 | 
            +
                formGroup: params.formGroup,
         | 
| 13 14 | 
             
                classes: 'govuk-js-character-count ' + (' govuk-textarea--error' if params.errorMessage) + (params.classes if params.classes),
         | 
| 14 15 | 
             
                label: {
         | 
| 15 16 | 
             
                  html: params.label.html,
         | 
| @@ -53,52 +53,54 @@ | |
| 53 53 | 
             
                {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
         | 
| 54 54 | 
             
                {%- if isConditional %} data-module="govuk-checkboxes"{% endif -%}>
         | 
| 55 55 | 
             
                {% for item in params.items %}
         | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 56 | 
            +
                  {% if item %}
         | 
| 57 | 
            +
                    {#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
         | 
| 58 | 
            +
                    {%- if item.id -%}
         | 
| 59 | 
            +
                      {%- set id = item.id -%}
         | 
| 60 | 
            +
                    {%- else -%}
         | 
| 61 | 
            +
                      {#- The first id should not have a number suffix so it's easy to link to from the error summary component -#}
         | 
| 62 | 
            +
                      {%- if loop.first -%}
         | 
| 63 | 
            +
                        {%- set id = idPrefix %}
         | 
| 64 | 
            +
                      {% else %}
         | 
| 65 | 
            +
                        {%- set id = idPrefix + "-" + loop.index -%}
         | 
| 66 | 
            +
                      {%- endif -%}
         | 
| 67 | 
            +
                    {%- endif -%}
         | 
| 68 | 
            +
                    {% set name = item.name if item.name else params.name %}
         | 
| 69 | 
            +
                    {% set conditionalId = "conditional-" + id %}
         | 
| 70 | 
            +
                    {% set hasHint = true if item.hint.text or item.hint.html %}
         | 
| 71 | 
            +
                    {% set itemHintId = id + "-item-hint" if hasHint else "" %}
         | 
| 72 | 
            +
                    {% set itemDescribedBy = describedBy if not hasFieldset else "" %}
         | 
| 73 | 
            +
                    {% set itemDescribedBy = (itemDescribedBy + " " + itemHintId) | trim %}
         | 
| 74 | 
            +
                    <div class="govuk-checkboxes__item">
         | 
| 75 | 
            +
                      <input class="govuk-checkboxes__input" id="{{ id }}" name="{{ name }}" type="checkbox" value="{{ item.value }}"
         | 
| 76 | 
            +
                      {{-" checked" if item.checked }}
         | 
| 77 | 
            +
                      {{-" disabled" if item.disabled }}
         | 
| 78 | 
            +
                      {%- if item.conditional %} data-aria-controls="{{ conditionalId }}"{% endif -%}
         | 
| 79 | 
            +
                      {%- if itemDescribedBy %} aria-describedby="{{ itemDescribedBy }}"{% endif -%}
         | 
| 80 | 
            +
                      {%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
         | 
| 81 | 
            +
                      {{ govukLabel({
         | 
| 82 | 
            +
                        html: item.html,
         | 
| 83 | 
            +
                        text: item.text,
         | 
| 84 | 
            +
                        classes: 'govuk-checkboxes__label' + (' ' + item.label.classes if item.label.classes),
         | 
| 85 | 
            +
                        attributes: item.label.attributes,
         | 
| 86 | 
            +
                        for: id
         | 
| 87 | 
            +
                      }) | indent(6) | trim }}
         | 
| 88 | 
            +
                      {% if hasHint %}
         | 
| 89 | 
            +
                      {{ govukHint({
         | 
| 90 | 
            +
                        id: itemHintId,
         | 
| 91 | 
            +
                        classes: 'govuk-checkboxes__hint',
         | 
| 92 | 
            +
                        attributes: item.hint.attributes,
         | 
| 93 | 
            +
                        html: item.hint.html,
         | 
| 94 | 
            +
                        text: item.hint.text
         | 
| 95 | 
            +
                      }) | indent(6) | trim }}
         | 
| 96 | 
            +
                      {% endif %}
         | 
| 97 | 
            +
                    </div>
         | 
| 98 | 
            +
                    {% if item.conditional %}
         | 
| 99 | 
            +
                      <div class="govuk-checkboxes__conditional{% if not item.checked %} govuk-checkboxes__conditional--hidden{% endif %}" id="{{ conditionalId }}">
         | 
| 100 | 
            +
                        {{ item.conditional.html | safe }}
         | 
| 101 | 
            +
                      </div>
         | 
| 102 | 
            +
                    {% endif %}
         | 
| 95 103 | 
             
                  {% endif %}
         | 
| 96 | 
            -
                </div>
         | 
| 97 | 
            -
                {% if item.conditional %}
         | 
| 98 | 
            -
                  <div class="govuk-checkboxes__conditional{% if not item.checked %} govuk-checkboxes__conditional--hidden{% endif %}" id="{{ conditionalId }}">
         | 
| 99 | 
            -
                    {{ item.conditional.html | safe }}
         | 
| 100 | 
            -
                  </div>
         | 
| 101 | 
            -
                {% endif %}
         | 
| 102 104 | 
             
                {% endfor %}
         | 
| 103 105 | 
             
              </div>
         | 
| 104 106 | 
             
            {% endset -%}
         | 
| @@ -84,9 +84,8 @@ | |
| 84 84 | 
             
              {% call govukFieldset({
         | 
| 85 85 | 
             
                describedBy: describedBy,
         | 
| 86 86 | 
             
                classes: params.fieldset.classes,
         | 
| 87 | 
            -
                 | 
| 88 | 
            -
             | 
| 89 | 
            -
                },
         | 
| 87 | 
            +
                role: 'group',
         | 
| 88 | 
            +
                attributes: params.fieldset.attributes,
         | 
| 90 89 | 
             
                legend: params.fieldset.legend
         | 
| 91 90 | 
             
              }) %}
         | 
| 92 91 | 
             
              {{ innerHtml | trim | safe }}
         | 
| @@ -690,58 +690,28 @@ function generateUniqueID () { | |
| 690 690 | 
             
            var KEY_ENTER = 13;
         | 
| 691 691 | 
             
            var KEY_SPACE = 32;
         | 
| 692 692 |  | 
| 693 | 
            -
            // Create a flag to know if the browser supports navtive details
         | 
| 694 | 
            -
            var NATIVE_DETAILS = typeof document.createElement('details').open === 'boolean';
         | 
| 695 | 
            -
             | 
| 696 693 | 
             
            function Details ($module) {
         | 
| 697 694 | 
             
              this.$module = $module;
         | 
| 698 695 | 
             
            }
         | 
| 699 696 |  | 
| 700 | 
            -
             | 
| 701 | 
            -
             | 
| 702 | 
            -
             | 
| 703 | 
            -
             | 
| 704 | 
            -
            */
         | 
| 705 | 
            -
            Details.prototype.handleInputs = function (node, callback) {
         | 
| 706 | 
            -
              node.addEventListener('keypress', function (event) {
         | 
| 707 | 
            -
                var target = event.target;
         | 
| 708 | 
            -
                // When the key gets pressed - check if it is enter or space
         | 
| 709 | 
            -
                if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE) {
         | 
| 710 | 
            -
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 711 | 
            -
                    // Prevent space from scrolling the page
         | 
| 712 | 
            -
                    // and enter from submitting a form
         | 
| 713 | 
            -
                    event.preventDefault();
         | 
| 714 | 
            -
                    // Click to let the click event do all the necessary action
         | 
| 715 | 
            -
                    if (target.click) {
         | 
| 716 | 
            -
                      target.click();
         | 
| 717 | 
            -
                    } else {
         | 
| 718 | 
            -
                      // except Safari 5.1 and under don't support .click() here
         | 
| 719 | 
            -
                      callback(event);
         | 
| 720 | 
            -
                    }
         | 
| 721 | 
            -
                  }
         | 
| 722 | 
            -
                }
         | 
| 723 | 
            -
              });
         | 
| 697 | 
            +
            Details.prototype.init = function () {
         | 
| 698 | 
            +
              if (!this.$module) {
         | 
| 699 | 
            +
                return
         | 
| 700 | 
            +
              }
         | 
| 724 701 |  | 
| 725 | 
            -
              //  | 
| 726 | 
            -
               | 
| 727 | 
            -
                var target = event.target;
         | 
| 728 | 
            -
                if (event.keyCode === KEY_SPACE) {
         | 
| 729 | 
            -
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 730 | 
            -
                    event.preventDefault();
         | 
| 731 | 
            -
                  }
         | 
| 732 | 
            -
                }
         | 
| 733 | 
            -
              });
         | 
| 702 | 
            +
              // If there is native details support, we want to avoid running code to polyfill native behaviour.
         | 
| 703 | 
            +
              var hasNativeDetails = typeof this.$module.open === 'boolean';
         | 
| 734 704 |  | 
| 735 | 
            -
               | 
| 705 | 
            +
              if (hasNativeDetails) {
         | 
| 706 | 
            +
                return
         | 
| 707 | 
            +
              }
         | 
| 708 | 
            +
             | 
| 709 | 
            +
              this.polyfillDetails();
         | 
| 736 710 | 
             
            };
         | 
| 737 711 |  | 
| 738 | 
            -
            Details.prototype. | 
| 712 | 
            +
            Details.prototype.polyfillDetails = function () {
         | 
| 739 713 | 
             
              var $module = this.$module;
         | 
| 740 714 |  | 
| 741 | 
            -
              if (!$module) {
         | 
| 742 | 
            -
                return
         | 
| 743 | 
            -
              }
         | 
| 744 | 
            -
             | 
| 745 715 | 
             
              // Save shortcuts to the inner summary and content elements
         | 
| 746 716 | 
             
              var $summary = this.$summary = $module.getElementsByTagName('summary').item(0);
         | 
| 747 717 | 
             
              var $content = this.$content = $module.getElementsByTagName('div').item(0);
         | 
| @@ -771,9 +741,7 @@ Details.prototype.init = function () { | |
| 771 741 | 
             
              //
         | 
| 772 742 | 
             
              // We have to use the camelcase `tabIndex` property as there is a bug in IE6/IE7 when we set the correct attribute lowercase:
         | 
| 773 743 | 
             
              // See http://web.archive.org/web/20170120194036/http://www.saliences.com/browserBugs/tabIndex.html for more information.
         | 
| 774 | 
            -
               | 
| 775 | 
            -
                $summary.tabIndex = 0;
         | 
| 776 | 
            -
              }
         | 
| 744 | 
            +
              $summary.tabIndex = 0;
         | 
| 777 745 |  | 
| 778 746 | 
             
              // Detect initial open state
         | 
| 779 747 | 
             
              var openAttr = $module.getAttribute('open') !== null;
         | 
| @@ -783,20 +751,18 @@ Details.prototype.init = function () { | |
| 783 751 | 
             
              } else {
         | 
| 784 752 | 
             
                $summary.setAttribute('aria-expanded', 'false');
         | 
| 785 753 | 
             
                $content.setAttribute('aria-hidden', 'true');
         | 
| 786 | 
            -
                 | 
| 787 | 
            -
                  $content.style.display = 'none';
         | 
| 788 | 
            -
                }
         | 
| 754 | 
            +
                $content.style.display = 'none';
         | 
| 789 755 | 
             
              }
         | 
| 790 756 |  | 
| 791 757 | 
             
              // Bind an event to handle summary elements
         | 
| 792 | 
            -
              this. | 
| 758 | 
            +
              this.polyfillHandleInputs($summary, this.polyfillSetAttributes.bind(this));
         | 
| 793 759 | 
             
            };
         | 
| 794 760 |  | 
| 795 761 | 
             
            /**
         | 
| 796 762 | 
             
            * Define a statechange function that updates aria-expanded and style.display
         | 
| 797 763 | 
             
            * @param {object} summary element
         | 
| 798 764 | 
             
            */
         | 
| 799 | 
            -
            Details.prototype. | 
| 765 | 
            +
            Details.prototype.polyfillSetAttributes = function () {
         | 
| 800 766 | 
             
              var $module = this.$module;
         | 
| 801 767 | 
             
              var $summary = this.$summary;
         | 
| 802 768 | 
             
              var $content = this.$content;
         | 
| @@ -807,27 +773,54 @@ Details.prototype.setAttributes = function () { | |
| 807 773 | 
             
              $summary.setAttribute('aria-expanded', (expanded ? 'false' : 'true'));
         | 
| 808 774 | 
             
              $content.setAttribute('aria-hidden', (hidden ? 'false' : 'true'));
         | 
| 809 775 |  | 
| 810 | 
            -
               | 
| 811 | 
            -
                $content.style.display = (expanded ? 'none' : '');
         | 
| 776 | 
            +
              $content.style.display = (expanded ? 'none' : '');
         | 
| 812 777 |  | 
| 813 | 
            -
             | 
| 814 | 
            -
             | 
| 815 | 
            -
             | 
| 816 | 
            -
             | 
| 817 | 
            -
             | 
| 818 | 
            -
                }
         | 
| 778 | 
            +
              var hasOpenAttr = $module.getAttribute('open') !== null;
         | 
| 779 | 
            +
              if (!hasOpenAttr) {
         | 
| 780 | 
            +
                $module.setAttribute('open', 'open');
         | 
| 781 | 
            +
              } else {
         | 
| 782 | 
            +
                $module.removeAttribute('open');
         | 
| 819 783 | 
             
              }
         | 
| 784 | 
            +
             | 
| 820 785 | 
             
              return true
         | 
| 821 786 | 
             
            };
         | 
| 822 787 |  | 
| 823 788 | 
             
            /**
         | 
| 824 | 
            -
            *  | 
| 789 | 
            +
            * Handle cross-modal click events
         | 
| 825 790 | 
             
            * @param {object} node element
         | 
| 791 | 
            +
            * @param {function} callback function
         | 
| 826 792 | 
             
            */
         | 
| 827 | 
            -
            Details.prototype. | 
| 828 | 
            -
              node. | 
| 829 | 
            -
             | 
| 830 | 
            -
             | 
| 793 | 
            +
            Details.prototype.polyfillHandleInputs = function (node, callback) {
         | 
| 794 | 
            +
              node.addEventListener('keypress', function (event) {
         | 
| 795 | 
            +
                var target = event.target;
         | 
| 796 | 
            +
                // When the key gets pressed - check if it is enter or space
         | 
| 797 | 
            +
                if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE) {
         | 
| 798 | 
            +
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 799 | 
            +
                    // Prevent space from scrolling the page
         | 
| 800 | 
            +
                    // and enter from submitting a form
         | 
| 801 | 
            +
                    event.preventDefault();
         | 
| 802 | 
            +
                    // Click to let the click event do all the necessary action
         | 
| 803 | 
            +
                    if (target.click) {
         | 
| 804 | 
            +
                      target.click();
         | 
| 805 | 
            +
                    } else {
         | 
| 806 | 
            +
                      // except Safari 5.1 and under don't support .click() here
         | 
| 807 | 
            +
                      callback(event);
         | 
| 808 | 
            +
                    }
         | 
| 809 | 
            +
                  }
         | 
| 810 | 
            +
                }
         | 
| 811 | 
            +
              });
         | 
| 812 | 
            +
             | 
| 813 | 
            +
              // Prevent keyup to prevent clicking twice in Firefox when using space key
         | 
| 814 | 
            +
              node.addEventListener('keyup', function (event) {
         | 
| 815 | 
            +
                var target = event.target;
         | 
| 816 | 
            +
                if (event.keyCode === KEY_SPACE) {
         | 
| 817 | 
            +
                  if (target.nodeName.toLowerCase() === 'summary') {
         | 
| 818 | 
            +
                    event.preventDefault();
         | 
| 819 | 
            +
                  }
         | 
| 820 | 
            +
                }
         | 
| 821 | 
            +
              });
         | 
| 822 | 
            +
             | 
| 823 | 
            +
              node.addEventListener('click', callback);
         | 
| 831 824 | 
             
            };
         | 
| 832 825 |  | 
| 833 826 | 
             
            return Details;
         | 
| @@ -43,6 +43,12 @@ | |
| 43 43 | 
             
                    "required": false,
         | 
| 44 44 | 
             
                    "description": "Classes to add to the fieldset container."
         | 
| 45 45 | 
             
                },
         | 
| 46 | 
            +
                {
         | 
| 47 | 
            +
                    "name": "role",
         | 
| 48 | 
            +
                    "type": "string",
         | 
| 49 | 
            +
                    "required": false,
         | 
| 50 | 
            +
                    "description": "Optional ARIA role attribute."
         | 
| 51 | 
            +
                },
         | 
| 46 52 | 
             
                {
         | 
| 47 53 | 
             
                    "name": "attributes",
         | 
| 48 54 | 
             
                    "type": "object",
         | 
| @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            <fieldset class="govuk-fieldset
         | 
| 2 2 | 
             
              {%- if params.classes %} {{ params.classes }}{% endif %}"
         | 
| 3 | 
            +
              {%- if params.role %} role="{{ params.role }}"{% endif %}
         | 
| 3 4 | 
             
              {%- if params.describedBy %} aria-describedby="{{ params.describedBy }}"{% endif %}
         | 
| 4 5 | 
             
              {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
         | 
| 5 6 | 
             
              {% if params.legend.html or params.legend.text %}
         | 
| @@ -224,9 +224,11 @@ | |
| 224 224 | 
             
                }
         | 
| 225 225 | 
             
              }
         | 
| 226 226 |  | 
| 227 | 
            -
              //  | 
| 227 | 
            +
              // If there are only two sections, set the layout to be two-third:one-third on desktop
         | 
| 228 228 | 
             
              @include mq ($from: desktop) {
         | 
| 229 | 
            -
                 | 
| 229 | 
            +
                // We match the first section with `:first-child`.
         | 
| 230 | 
            +
                // To ensure the section is one of two, we can count backwards using `:nth-last-child(2)`.
         | 
| 231 | 
            +
                .govuk-footer__section:first-child:nth-last-child(2) {
         | 
| 230 232 | 
             
                  -webkit-box-flex: 2;
         | 
| 231 233 | 
             
                  -webkit-flex-grow: 2;
         | 
| 232 234 | 
             
                      -ms-flex-positive: 2;
         | 
| @@ -17,6 +17,12 @@ | |
| 17 17 | 
             
                    "required": false,
         | 
| 18 18 | 
             
                    "description": "Type of input control to render. Defaults to \"text\"."
         | 
| 19 19 | 
             
                },
         | 
| 20 | 
            +
                {
         | 
| 21 | 
            +
                    "name": "inputmode",
         | 
| 22 | 
            +
                    "type": "string",
         | 
| 23 | 
            +
                    "require": false,
         | 
| 24 | 
            +
                    "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)."
         | 
| 25 | 
            +
                },
         | 
| 20 26 | 
             
                {
         | 
| 21 27 | 
             
                    "name": "value",
         | 
| 22 28 | 
             
                    "type": "string",
         | 
| @@ -42,5 +42,6 @@ | |
| 42 42 | 
             
              {%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %}
         | 
| 43 43 | 
             
              {%- if params.autocomplete %} autocomplete="{{ params.autocomplete}}"{% endif %}
         | 
| 44 44 | 
             
              {%- if params.pattern %} pattern="{{ params.pattern }}"{% endif %}
         | 
| 45 | 
            +
              {%- if params.inputmode %} inputmode="{{ params.inputmode }}"{% endif %}
         | 
| 45 46 | 
             
              {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
         | 
| 46 47 | 
             
            </div>
         | 
| @@ -47,53 +47,55 @@ | |
| 47 47 | 
             
                {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
         | 
| 48 48 | 
             
                {%- if isConditional %} data-module="govuk-radios"{% endif -%}>
         | 
| 49 49 | 
             
                {% for item in params.items %}
         | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 50 | 
            +
                  {% if item %}
         | 
| 51 | 
            +
                    {#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
         | 
| 52 | 
            +
                    {%- if item.id -%}
         | 
| 53 | 
            +
                      {%- set id = item.id -%}
         | 
| 54 | 
            +
                    {%- else -%}
         | 
| 55 | 
            +
                      {#- The first id should not have a number suffix so it's easy to link to from the error summary component -#}
         | 
| 56 | 
            +
                      {%- if loop.first -%}
         | 
| 57 | 
            +
                        {%- set id = idPrefix %}
         | 
| 58 | 
            +
                      {% else %}
         | 
| 59 | 
            +
                        {%- set id = idPrefix + "-" + loop.index -%}
         | 
| 60 | 
            +
                      {%- endif -%}
         | 
| 61 | 
            +
                    {%- endif -%}
         | 
| 62 | 
            +
                    {% set conditionalId = "conditional-" + id %}
         | 
| 63 | 
            +
                    {%- if item.divider %}
         | 
| 64 | 
            +
                    <div class="govuk-radios__divider">{{ item.divider }}</div>
         | 
| 65 | 
            +
                    {%- else %}
         | 
| 66 | 
            +
                    {% set hasHint = true if item.hint.text or item.hint.html %}
         | 
| 67 | 
            +
                    {% set itemHintId = id + '-item-hint' %}
         | 
| 68 | 
            +
                    <div class="govuk-radios__item">
         | 
| 69 | 
            +
                      <input class="govuk-radios__input" id="{{ id }}" name="{{ params.name }}" type="radio" value="{{ item.value }}"
         | 
| 70 | 
            +
                      {{-" checked" if item.checked }}
         | 
| 71 | 
            +
                      {{-" disabled" if item.disabled }}
         | 
| 72 | 
            +
                      {%- if item.conditional %} data-aria-controls="{{ conditionalId }}"{% endif -%}
         | 
| 73 | 
            +
                      {%- if hasHint %} aria-describedby="{{ itemHintId }}"{% endif -%}
         | 
| 74 | 
            +
                      {%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
         | 
| 75 | 
            +
                      {{ govukLabel({
         | 
| 76 | 
            +
                        html: item.html,
         | 
| 77 | 
            +
                        text: item.text,
         | 
| 78 | 
            +
                        classes: 'govuk-radios__label' + (' ' + item.label.classes if item.label.classes),
         | 
| 79 | 
            +
                        attributes: item.label.attributes,
         | 
| 80 | 
            +
                        for: id
         | 
| 81 | 
            +
                      }) | indent(6) | trim }}
         | 
| 82 | 
            +
                      {% if hasHint %}
         | 
| 83 | 
            +
                      {{ govukHint({
         | 
| 84 | 
            +
                        id: itemHintId,
         | 
| 85 | 
            +
                        classes: 'govuk-radios__hint',
         | 
| 86 | 
            +
                        attributes: item.hint.attributes,
         | 
| 87 | 
            +
                        html: item.hint.html,
         | 
| 88 | 
            +
                        text: item.hint.text
         | 
| 89 | 
            +
                      }) | indent(6) | trim }}
         | 
| 90 | 
            +
                      {% endif %}
         | 
| 91 | 
            +
                    </div>
         | 
| 92 | 
            +
                    {% if item.conditional %}
         | 
| 93 | 
            +
                      <div class="govuk-radios__conditional{% if not item.checked %} govuk-radios__conditional--hidden{% endif %}" id="{{ conditionalId }}">
         | 
| 94 | 
            +
                        {{ item.conditional.html | safe }}
         | 
| 95 | 
            +
                      </div>
         | 
| 96 | 
            +
                    {% endif %}
         | 
| 97 | 
            +
                    {% endif %}
         | 
| 89 98 | 
             
                  {% endif %}
         | 
| 90 | 
            -
                </div>
         | 
| 91 | 
            -
                {% if item.conditional %}
         | 
| 92 | 
            -
                  <div class="govuk-radios__conditional{% if not item.checked %} govuk-radios__conditional--hidden{% endif %}" id="{{ conditionalId }}">
         | 
| 93 | 
            -
                    {{ item.conditional.html | safe }}
         | 
| 94 | 
            -
                  </div>
         | 
| 95 | 
            -
                {% endif %}
         | 
| 96 | 
            -
                {% endif %}
         | 
| 97 99 | 
             
                {% endfor %}
         | 
| 98 100 | 
             
              </div>
         | 
| 99 101 | 
             
            {% endset -%}
         | 
| @@ -40,10 +40,12 @@ | |
| 40 40 | 
             
              <select class="govuk-select
         | 
| 41 41 | 
             
                {%- if params.classes %} {{ params.classes }}{% endif %}{%- if params.errorMessage %} govuk-select--error{% endif %}" id="{{ params.id }}" name="{{ params.name }}" {%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
         | 
| 42 42 | 
             
              {% for item in params.items %}
         | 
| 43 | 
            -
                 | 
| 44 | 
            -
                  {{ | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 43 | 
            +
                {% if item %}
         | 
| 44 | 
            +
                  <option value="{{ item.value }}"
         | 
| 45 | 
            +
                    {{-" selected" if item.selected }}
         | 
| 46 | 
            +
                    {{-" disabled" if item.disabled }}
         | 
| 47 | 
            +
                    {%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>{{ item.text }}</option>
         | 
| 48 | 
            +
                {% endif %}
         | 
| 47 49 | 
             
              {% endfor %}
         | 
| 48 50 | 
             
              </select>
         | 
| 49 51 | 
             
            </div>
         | 
| @@ -3,8 +3,14 @@ | |
| 3 3 | 
             
                    "name": "rows",
         | 
| 4 4 | 
             
                    "type": "array",
         | 
| 5 5 | 
             
                    "required": true,
         | 
| 6 | 
            -
                    "description": "Array of row item objects",
         | 
| 6 | 
            +
                    "description": "Array of row item objects.",
         | 
| 7 7 | 
             
                    "params": [
         | 
| 8 | 
            +
                        {
         | 
| 9 | 
            +
                            "name": "classes",
         | 
| 10 | 
            +
                            "type": "string",
         | 
| 11 | 
            +
                            "required": false,
         | 
| 12 | 
            +
                            "description": "Classes to add to the row `div`"
         | 
| 13 | 
            +
                        },
         | 
| 8 14 | 
             
                        {
         | 
| 9 15 | 
             
                            "name": "key.text",
         | 
| 10 16 | 
             
                            "type": "string",
         | 
| @@ -15,31 +15,33 @@ | |
| 15 15 |  | 
| 16 16 | 
             
            <dl class="govuk-summary-list {%- if params.classes %} {{ params.classes }}{% endif %}"{% for attribute, value in params.attributes %} {{attribute}}="{{value}}"{% endfor %}>
         | 
| 17 17 | 
             
              {% for row in params.rows %}
         | 
| 18 | 
            -
                 | 
| 19 | 
            -
                  < | 
| 20 | 
            -
                     | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
                     | 
| 24 | 
            -
             | 
| 25 | 
            -
                  {% if row.actions.items.length %}
         | 
| 26 | 
            -
                    <dd class="govuk-summary-list__actions {%- if row.actions.classes %} {{ row.actions.classes }}{% endif %}">
         | 
| 27 | 
            -
                      {% if row.actions.items.length == 1 %}
         | 
| 28 | 
            -
                        {{ _actionLink(row.actions.items[0]) | indent(12) | trim }}
         | 
| 29 | 
            -
                      {% else %}
         | 
| 30 | 
            -
                        <ul class="govuk-summary-list__actions-list">
         | 
| 31 | 
            -
                          {% for action in row.actions.items %}
         | 
| 32 | 
            -
                            <li class="govuk-summary-list__actions-list-item">
         | 
| 33 | 
            -
                              {{ _actionLink(action) | indent(18) | trim }}
         | 
| 34 | 
            -
                            </li>
         | 
| 35 | 
            -
                          {% endfor %}
         | 
| 36 | 
            -
                        </ul>
         | 
| 37 | 
            -
                      {% endif %}
         | 
| 18 | 
            +
                {% if row %}
         | 
| 19 | 
            +
                  <div class="govuk-summary-list__row {%- if row.classes %} {{ row.classes }}{% endif %}">
         | 
| 20 | 
            +
                    <dt class="govuk-summary-list__key {%- if row.key.classes %} {{ row.key.classes }}{% endif %}">
         | 
| 21 | 
            +
                      {{ row.key.html | safe if row.key.html else row.key.text }}
         | 
| 22 | 
            +
                    </dt>
         | 
| 23 | 
            +
                    <dd class="govuk-summary-list__value {%- if row.value.classes %} {{ row.value.classes }}{% endif %}">
         | 
| 24 | 
            +
                      {{ row.value.html | indent(8) | trim | safe if row.value.html else row.value.text }}
         | 
| 38 25 | 
             
                    </dd>
         | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 26 | 
            +
                    {% if row.actions.items.length %}
         | 
| 27 | 
            +
                      <dd class="govuk-summary-list__actions {%- if row.actions.classes %} {{ row.actions.classes }}{% endif %}">
         | 
| 28 | 
            +
                        {% if row.actions.items.length == 1 %}
         | 
| 29 | 
            +
                          {{ _actionLink(row.actions.items[0]) | indent(12) | trim }}
         | 
| 30 | 
            +
                        {% else %}
         | 
| 31 | 
            +
                          <ul class="govuk-summary-list__actions-list">
         | 
| 32 | 
            +
                            {% for action in row.actions.items %}
         | 
| 33 | 
            +
                              <li class="govuk-summary-list__actions-list-item">
         | 
| 34 | 
            +
                                {{ _actionLink(action) | indent(18) | trim }}
         | 
| 35 | 
            +
                              </li>
         | 
| 36 | 
            +
                            {% endfor %}
         | 
| 37 | 
            +
                          </ul>
         | 
| 38 | 
            +
                        {% endif %}
         | 
| 39 | 
            +
                      </dd>
         | 
| 40 | 
            +
                    {% elseif anyRowHasActions %}
         | 
| 41 | 
            +
                      {# Add dummy column to extend border #}
         | 
| 42 | 
            +
                      <span class="govuk-summary-list__actions"></span>
         | 
| 43 | 
            +
                    {% endif %}
         | 
| 44 | 
            +
                  </div>
         | 
| 45 | 
            +
                {% endif %}
         | 
| 44 46 | 
             
              {% endfor %}
         | 
| 45 47 | 
             
            </dl>
         | 
| @@ -19,25 +19,27 @@ | |
| 19 19 | 
             
              {% endif %}
         | 
| 20 20 | 
             
              <tbody class="govuk-table__body">
         | 
| 21 21 | 
             
                {% for row in params.rows %}
         | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 22 | 
            +
                  {% if row %}
         | 
| 23 | 
            +
                    <tr class="govuk-table__row">
         | 
| 24 | 
            +
                    {% for cell in row %}
         | 
| 25 | 
            +
                      {% set commonAttributes %}
         | 
| 26 | 
            +
                        {%- if cell.colspan %} colspan="{{ cell.colspan }}"{% endif %}
         | 
| 27 | 
            +
                        {%- if cell.rowspan %} rowspan="{{ cell.rowspan }}"{% endif %}{% for attribute, value in cell.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
         | 
| 28 | 
            +
                      {% endset %}
         | 
| 29 | 
            +
                      {% if loop.first and params.firstCellIsHeader %}
         | 
| 30 | 
            +
                      <th scope="row" class="govuk-table__header{%- if cell.classes %} {{ cell.classes }}{% endif %}"
         | 
| 31 | 
            +
                        {{- commonAttributes | safe -}}
         | 
| 32 | 
            +
                      >{{ cell.html | safe if cell.html else cell.text }}</th>
         | 
| 33 | 
            +
                      {% else %}
         | 
| 34 | 
            +
                      <td class="govuk-table__cell
         | 
| 35 | 
            +
                        {%- if cell.format %} govuk-table__cell--{{ cell.format }}{% endif %}
         | 
| 36 | 
            +
                        {%- if cell.classes %} {{ cell.classes }}{% endif %}"
         | 
| 37 | 
            +
                        {{- commonAttributes | safe -}}
         | 
| 38 | 
            +
                      >{{ cell.html | safe if cell.html else cell.text }}</td>
         | 
| 39 | 
            +
                      {% endif %}
         | 
| 40 | 
            +
                    {% endfor %}
         | 
| 41 | 
            +
                    </tr>
         | 
| 38 42 | 
             
                  {% endif %}
         | 
| 39 43 | 
             
                {% endfor %}
         | 
| 40 | 
            -
                </tr>
         | 
| 41 | 
            -
                {% endfor %}
         | 
| 42 44 | 
             
              </tbody>
         | 
| 43 45 | 
             
            </table>
         | 
| @@ -9,20 +9,24 @@ | |
| 9 9 | 
             
              {% if(params.items) %}
         | 
| 10 10 | 
             
              <ul class="govuk-tabs__list">
         | 
| 11 11 | 
             
                {% for item in params.items %}
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
                    < | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 12 | 
            +
                  {% if item %}
         | 
| 13 | 
            +
                    {% set id = item.id if item.id else idPrefix + "-" + loop.index %}
         | 
| 14 | 
            +
                    <li class="govuk-tabs__list-item{% if loop.index == 1 %} govuk-tabs__list-item--selected{% endif %}">
         | 
| 15 | 
            +
                      <a class="govuk-tabs__tab" href="#{{ id }}"
         | 
| 16 | 
            +
                        {%- for attribute, value in item.attributes %} {{attribute}}="{{value}}"{% endfor %}>
         | 
| 17 | 
            +
                        {{ item.label }}
         | 
| 18 | 
            +
                      </a>
         | 
| 19 | 
            +
                    </li>
         | 
| 20 | 
            +
                  {% endif %}
         | 
| 19 21 | 
             
                {% endfor %}
         | 
| 20 22 | 
             
              </ul>
         | 
| 21 23 | 
             
              {% endif %}
         | 
| 22 24 | 
             
              {% for item in params.items %}
         | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 25 | 
            +
                {% if item %}
         | 
| 26 | 
            +
                  {% set id = item.id if item.id else idPrefix + "-" + loop.index %}
         | 
| 27 | 
            +
                  <section class="govuk-tabs__panel{% if loop.index > 1 %} govuk-tabs__panel--hidden{% endif %}" id="{{ id }}"{% for attribute, value in item.panel.attributes %} {{attribute}}="{{value}}"{% endfor %}>
         | 
| 28 | 
            +
                    {{ item.panel.html | safe if item.panel.html else item.panel.text }}
         | 
| 29 | 
            +
                  </section>
         | 
| 30 | 
            +
                {% endif %}
         | 
| 27 31 | 
             
              {% endfor %}
         | 
| 28 32 | 
             
            </div>
         | 
| @@ -15,26 +15,28 @@ | |
| 15 15 | 
             
            /// @access private
         | 
| 16 16 |  | 
| 17 17 | 
             
            @mixin _govuk-font-face-gds-transport {
         | 
| 18 | 
            -
              @include govuk- | 
| 19 | 
            -
                @ | 
| 20 | 
            -
                   | 
| 18 | 
            +
              @include govuk-not-ie8 { // In IE8, which cannot render WOFF format, we fall back to system fonts
         | 
| 19 | 
            +
                @include govuk-exports("govuk/helpers/font-faces") {
         | 
| 20 | 
            +
                  @at-root {
         | 
| 21 | 
            +
                    /*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */
         | 
| 21 22 |  | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 23 | 
            +
                    @font-face {
         | 
| 24 | 
            +
                      font-family: "GDS Transport";
         | 
| 25 | 
            +
                      src: govuk-font-url("light-94a07e06a1-v2.woff2") format("woff2"),
         | 
| 26 | 
            +
                           govuk-font-url("light-f591b13f7d-v2.woff") format("woff");
         | 
| 27 | 
            +
                      font-weight: normal;
         | 
| 28 | 
            +
                      font-style: normal;
         | 
| 29 | 
            +
                      font-display: fallback;
         | 
| 30 | 
            +
                    }
         | 
| 30 31 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 32 | 
            +
                    @font-face {
         | 
| 33 | 
            +
                      font-family: "GDS Transport";
         | 
| 34 | 
            +
                      src: govuk-font-url("bold-b542beb274-v2.woff2") format("woff2"),
         | 
| 35 | 
            +
                           govuk-font-url("bold-affa96571d-v2.woff") format("woff");
         | 
| 36 | 
            +
                      font-weight: bold;
         | 
| 37 | 
            +
                      font-style: normal;
         | 
| 38 | 
            +
                      font-display: fallback;
         | 
| 39 | 
            +
                    }
         | 
| 38 40 | 
             
                  }
         | 
| 39 41 | 
             
                }
         | 
| 40 42 | 
             
              }
         | 
| @@ -2,26 +2,26 @@ | |
| 2 2 | 
             
              "_args": [
         | 
| 3 3 | 
             
                [
         | 
| 4 4 | 
             
                  {
         | 
| 5 | 
            -
                    "raw": "govuk-frontend@3. | 
| 5 | 
            +
                    "raw": "govuk-frontend@3.2.0",
         | 
| 6 6 | 
             
                    "scope": null,
         | 
| 7 7 | 
             
                    "escapedName": "govuk-frontend",
         | 
| 8 8 | 
             
                    "name": "govuk-frontend",
         | 
| 9 | 
            -
                    "rawSpec": "3. | 
| 10 | 
            -
                    "spec": "3. | 
| 9 | 
            +
                    "rawSpec": "3.2.0",
         | 
| 10 | 
            +
                    "spec": "3.2.0",
         | 
| 11 11 | 
             
                    "type": "version"
         | 
| 12 12 | 
             
                  },
         | 
| 13 13 | 
             
                  "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ"
         | 
| 14 14 | 
             
                ]
         | 
| 15 15 | 
             
              ],
         | 
| 16 | 
            -
              "_from": "govuk-frontend@3. | 
| 16 | 
            +
              "_from": "govuk-frontend@3.2.0",
         | 
| 17 17 | 
             
              "_hasShrinkwrap": false,
         | 
| 18 | 
            -
              "_id": "govuk-frontend@3. | 
| 18 | 
            +
              "_id": "govuk-frontend@3.2.0",
         | 
| 19 19 | 
             
              "_inCache": true,
         | 
| 20 20 | 
             
              "_location": "/govuk-frontend",
         | 
| 21 21 | 
             
              "_nodeVersion": "10.15.1",
         | 
| 22 22 | 
             
              "_npmOperationalInternal": {
         | 
| 23 23 | 
             
                "host": "s3://npm-registry-packages",
         | 
| 24 | 
            -
                "tmp": "tmp/govuk-frontend_3. | 
| 24 | 
            +
                "tmp": "tmp/govuk-frontend_3.2.0_1568198961302_0.8446682726447414"
         | 
| 25 25 | 
             
              },
         | 
| 26 26 | 
             
              "_npmUser": {
         | 
| 27 27 | 
             
                "name": "govuk-patterns-and-tools",
         | 
| @@ -30,21 +30,21 @@ | |
| 30 30 | 
             
              "_npmVersion": "6.4.1",
         | 
| 31 31 | 
             
              "_phantomChildren": {},
         | 
| 32 32 | 
             
              "_requested": {
         | 
| 33 | 
            -
                "raw": "govuk-frontend@3. | 
| 33 | 
            +
                "raw": "govuk-frontend@3.2.0",
         | 
| 34 34 | 
             
                "scope": null,
         | 
| 35 35 | 
             
                "escapedName": "govuk-frontend",
         | 
| 36 36 | 
             
                "name": "govuk-frontend",
         | 
| 37 | 
            -
                "rawSpec": "3. | 
| 38 | 
            -
                "spec": "3. | 
| 37 | 
            +
                "rawSpec": "3.2.0",
         | 
| 38 | 
            +
                "spec": "3.2.0",
         | 
| 39 39 | 
             
                "type": "version"
         | 
| 40 40 | 
             
              },
         | 
| 41 41 | 
             
              "_requiredBy": [
         | 
| 42 42 | 
             
                "/"
         | 
| 43 43 | 
             
              ],
         | 
| 44 | 
            -
              "_resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3. | 
| 45 | 
            -
              "_shasum": " | 
| 44 | 
            +
              "_resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.2.0.tgz",
         | 
| 45 | 
            +
              "_shasum": "0f935bee092929455bf7ed08bba40ab07ea72769",
         | 
| 46 46 | 
             
              "_shrinkwrap": null,
         | 
| 47 | 
            -
              "_spec": "govuk-frontend@3. | 
| 47 | 
            +
              "_spec": "govuk-frontend@3.2.0",
         | 
| 48 48 | 
             
              "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
         | 
| 49 49 | 
             
              "author": {
         | 
| 50 50 | 
             
                "name": "GOV.UK Design System Team",
         | 
| @@ -59,12 +59,12 @@ | |
| 59 59 | 
             
              "devDependencies": {},
         | 
| 60 60 | 
             
              "directories": {},
         | 
| 61 61 | 
             
              "dist": {
         | 
| 62 | 
            -
                "integrity": "sha512- | 
| 63 | 
            -
                "shasum": " | 
| 64 | 
            -
                "tarball": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3. | 
| 62 | 
            +
                "integrity": "sha512-OtJozAGMEKFu195fNVVrQHUX7+znCkA4cXDKs4lgFlRQOTzN1ogT9010GBARuoTwbeL0VqQ8nerZYjVxH/wafA==",
         | 
| 63 | 
            +
                "shasum": "0f935bee092929455bf7ed08bba40ab07ea72769",
         | 
| 64 | 
            +
                "tarball": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.2.0.tgz",
         | 
| 65 65 | 
             
                "fileCount": 247,
         | 
| 66 | 
            -
                "unpackedSize":  | 
| 67 | 
            -
                "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\ | 
| 66 | 
            +
                "unpackedSize": 1024849,
         | 
| 67 | 
            +
                "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeNEyCRA9TVsSAnZWagAAvgEP/1HO7jFF0rLInQ94X27S\nRAfPVJBV5YE6jlwZfTU7SEXph6KTVCP5WSW9MI1gunkU0EX2KnxT9Pn4Q5/L\nzs9+8dy/R5ejDQKi1ftwaO7MwGOnrOC81TSKPiOL0c3hib3ipfyD5Fqozh/k\nxtHvmQYJ8CwcVE7EK8GbFo9/Qe8MWulQtcd4hsNe+umdd+SyY7I67ysYvV2k\nFD+P5gvwqpPWEyEJ00TjG3YjJAXzE7zcqT6HNVIz3XwC2FH8mmKHatX+n8Mp\nWj/76If933/nG2VvO11uma+T6/buFie/MljkziM2fduc5IUxE/hl1qJegtrq\naWZzAjVU/H+ysrrWfF5rSPTQx866iQUzKd1IQ4Cm68Ativd21JFhEtnJYNhn\n43PF9virumnJoQWCXktOWFpH6/WuPsd2btnLlT3RBRM7Lb5MIsAtloLmE00b\n1qYgaXqnoP41N1HAC/jhXTN9qh33zI4NHX+sJUbjbQLXShQs8V6dq1QoVj2l\nN3MtS8rvIpwaG8Iy2jmy/84dGNh+WguSDv5RipLomWSAY+dGY8Cw4NNpldLm\nG4AUL9bnORIL4tj3zoHoRURI8COe+kDgG5hqpLv44LOFMM8sOrBxEUKqKd4T\nYpEHZ+CFF3bFZOH/80WhKOjy+XJCQIGtL/Lmge2yKNB88rqD66LGweCfjxbt\nXApr\r\n=T15p\r\n-----END PGP SIGNATURE-----\r\n"
         | 
| 68 68 | 
             
              },
         | 
| 69 69 | 
             
              "engines": {
         | 
| 70 70 | 
             
                "node": ">= 4.2.0"
         | 
| @@ -92,5 +92,5 @@ | |
| 92 92 | 
             
                "url": "git+https://github.com/alphagov/govuk-frontend.git"
         | 
| 93 93 | 
             
              },
         | 
| 94 94 | 
             
              "sass": "govuk/all.scss",
         | 
| 95 | 
            -
              "version": "3. | 
| 95 | 
            +
              "version": "3.2.0"
         | 
| 96 96 | 
             
            }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: govuk_publishing_components
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 20.5. | 
| 4 | 
            +
              version: 20.5.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - GOV.UK Dev
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-09- | 
| 11 | 
            +
            date: 2019-09-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: gds-api-adapters
         |