diff --git a/example/source/nested-page/another-nested-nested-page/index.html.md b/example/source/nested-page/another-nested-nested-page/index.html.md new file mode 100644 index 00000000..2cac582c --- /dev/null +++ b/example/source/nested-page/another-nested-nested-page/index.html.md @@ -0,0 +1,5 @@ +--- +title: Another nested nested page +--- + +# Another nested nested page diff --git a/lib/assets/javascripts/_modules/collapsible-navigation.js b/lib/assets/javascripts/_modules/collapsible-navigation.js index 56cf5309..d7e8d65d 100644 --- a/lib/assets/javascripts/_modules/collapsible-navigation.js +++ b/lib/assets/javascripts/_modules/collapsible-navigation.js @@ -28,9 +28,11 @@ continue } $topLevelItem.addClass('collapsible') - $listing.addClass('collapsible__body') - .attr('id', id) - .attr('aria-expanded', 'false') + $listing.each(function(i){ + $(this).addClass('collapsible__body') + .attr('id', id + '-' + i) + .attr('aria-expanded', 'false') + }) $heading.addClass('collapsible__heading') .after('') $topLevelItem.on('click', '.collapsible__toggle', function (e) { diff --git a/spec/javascripts/collapsible-navigation-spec.js b/spec/javascripts/collapsible-navigation-spec.js new file mode 100644 index 00000000..6105fa3c --- /dev/null +++ b/spec/javascripts/collapsible-navigation-spec.js @@ -0,0 +1,36 @@ +describe('Collapsible navigation', function () { + 'use strict' + + var module + var $navigation + + beforeEach(function () { + module = new GOVUK.Modules.CollapsibleNavigation() + $navigation = $(` + `) + module.start($navigation) + }) + + it('sanitizes headings to unique IDs correctly', function () { + $navigation.find('ul > li > ul').each(function(i){ + expect($(this)[0].id).toEqual("toc-nested-page-"+i) + }) + }) + +})