From ea6d87b05f429ffa64d0e24636bd00a49d31905e Mon Sep 17 00:00:00 2001 From: Dilwoar Hussain Date: Thu, 14 Jan 2021 11:21:52 +0000 Subject: [PATCH] Change GOVUK Modules scope to document What Change scope to document rather than just body Why This is done to support module within the head ie. meta tags. This also brings the scope inline with GOVUK Design system where document is used rather than the body. --- CHANGELOG.md | 1 + .../govuk_publishing_components/modules.js | 2 +- .../modules.spec.js | 25 ++++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3cc1b6a59..eef2f03c48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Tidy component filenames ([PR #1848](https://github.com/alphagov/govuk_publishing_components/pull/1848)) * Add print styling for magna charta component ([PR #1867](https://github.com/alphagov/govuk_publishing_components/pull/1867)) * Add custom aria label option for layout header nav ([PR #1865](https://github.com/alphagov/govuk_publishing_components/pull/1865)) +* Change GOVUK Modules scope to document ([PR #1869](https://github.com/alphagov/govuk_publishing_components/pull/1869)) ## 23.12.2 diff --git a/app/assets/javascripts/govuk_publishing_components/modules.js b/app/assets/javascripts/govuk_publishing_components/modules.js index abee7ae508..7fa6869517 100644 --- a/app/assets/javascripts/govuk_publishing_components/modules.js +++ b/app/assets/javascripts/govuk_publishing_components/modules.js @@ -7,7 +7,7 @@ GOVUK.modules = { find: function (container) { - container = container || $('body') + container = container || $(document) var modules var moduleSelector = '[data-module]' diff --git a/spec/javascripts/govuk_publishing_components/modules.spec.js b/spec/javascripts/govuk_publishing_components/modules.spec.js index 60952bd76b..4012582cba 100644 --- a/spec/javascripts/govuk_publishing_components/modules.spec.js +++ b/spec/javascripts/govuk_publishing_components/modules.spec.js @@ -6,7 +6,7 @@ describe('GOVUK Modules', function () { 'use strict' var GOVUK = window.GOVUK - it('finds modules', function () { + it('finds modules in body', function () { var module = $('
') $('body').append(module) @@ -15,6 +15,29 @@ describe('GOVUK Modules', function () { module.remove() }) + it('finds modules in head', function () { + var module = $('') + $('head').append(module) + + expect(GOVUK.modules.find().length).toBe(1) + expect(GOVUK.modules.find().eq(0).is('[data-module="a-module"]')).toBe(true) + module.remove() + }) + + it('finds modules in a page', function () { + var headModule = $('') + $('head').append(headModule) + + var bodyModule = $('
') + $('body').append(bodyModule) + + expect(GOVUK.modules.find().length).toBe(2) + expect(GOVUK.modules.find().eq(0).is('[data-module="head-module"]')).toBe(true) + expect(GOVUK.modules.find().eq(1).is('[data-module="body-module"]')).toBe(true) + headModule.remove() + bodyModule.remove() + }) + it('finds modules in a container', function () { var module = $('
') var container = $('
').append(module)