govuk_tech_docs 3.4.5 → 4.0.0
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/.github/workflows/publish.yaml +8 -4
- data/.github/workflows/test.yaml +11 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +22 -1
- data/example/.ruby-version +1 -1
- data/example/source/javascripts/govuk_frontend.js +1 -0
- data/govuk_tech_docs.gemspec +17 -11
- data/lib/assets/javascripts/_modules/page-expiry.js +2 -2
- data/lib/assets/javascripts/_modules/table-of-contents.js +48 -2
- data/lib/assets/javascripts/govuk_frontend_all.js +3 -0
- data/lib/assets/javascripts/govuk_tech_docs.js +0 -2
- data/lib/assets/stylesheets/_govuk_tech_docs.scss +4 -10
- data/lib/assets/stylesheets/modules/_page-review.scss +0 -2
- data/lib/assets/stylesheets/modules/_search.scss +0 -4
- data/lib/govuk_tech_docs/meta_tags.rb +1 -1
- data/lib/govuk_tech_docs/redirects.rb +1 -1
- data/lib/govuk_tech_docs/table_of_contents/heading_tree_builder.rb +1 -1
- data/lib/govuk_tech_docs/table_of_contents/helpers.rb +2 -2
- data/lib/govuk_tech_docs/tech_docs_html_renderer.rb +6 -2
- data/lib/govuk_tech_docs/version.rb +1 -1
- data/lib/govuk_tech_docs.rb +20 -3
- data/lib/source/layouts/_header.erb +8 -12
- data/lib/source/layouts/_page_review.erb +1 -1
- data/lib/source/layouts/_search.erb +2 -2
- data/lib/source/layouts/core.erb +8 -2
- data/lib/source/stylesheets/manifest.css +1 -1
- data/node_modules/govuk-frontend/dist/govuk/_base.scss +5 -0
- data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +2554 -0
- data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +2529 -0
- data/node_modules/govuk-frontend/dist/govuk/all.mjs +18 -0
- data/node_modules/govuk-frontend/dist/govuk/all.scss +3 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/favicon.svg +1 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-crest.svg +1 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-180.png +0 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-192.png +0 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-512.png +0 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-mask.svg +1 -0
- data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-opengraph-image.png +0 -0
- data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs +7 -0
- data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +4 -0
- data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +159 -0
- data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +18 -0
- data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +31 -0
- data/node_modules/govuk-frontend/dist/govuk/components/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk/components/_all.scss → dist/govuk/components/_index.scss} +8 -3
- data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/accordion/_index.scss +55 -77
- data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +785 -0
- data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +777 -0
- data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +349 -0
- data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/back-link/_index.scss +12 -36
- data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/breadcrumbs/_index.scss +11 -36
- data/node_modules/govuk-frontend/dist/govuk/components/button/_button.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/button/_index.scss +30 -103
- data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +318 -0
- data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +310 -0
- data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +73 -0
- data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/character-count/_index.scss +8 -6
- data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +761 -0
- data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +753 -0
- data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +295 -0
- data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/checkboxes/_index.scss +108 -132
- data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +268 -0
- data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +260 -0
- data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs +111 -0
- data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/cookie-banner/_index.scss +19 -15
- data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/date-input/_index.scss +3 -2
- data/node_modules/govuk-frontend/dist/govuk/components/details/_details.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/details/_index.scss +139 -0
- data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-message/_index.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-summary/_index.scss +19 -6
- data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +378 -0
- data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +370 -0
- data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +103 -0
- data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/exit-this-page/_index.scss +5 -10
- data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +662 -0
- data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +654 -0
- data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +226 -0
- data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/fieldset/_index.scss +20 -15
- data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/file-upload/_index.scss +11 -15
- data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/footer/_index.scss +25 -68
- data/node_modules/govuk-frontend/dist/govuk/components/header/_header.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/header/_index.scss +84 -79
- data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +252 -0
- data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +244 -0
- data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs +88 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/_hint.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/_index.scss +3 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/_index.scss +24 -49
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/_input.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/inset-text/_index.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/_index.scss +12 -7
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/_label.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/notification-banner/_index.scss +11 -7
- data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +320 -0
- data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +312 -0
- data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +51 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/pagination/_index.scss +36 -55
- data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +58 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/panel/_panel.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +57 -0
- data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +594 -0
- data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +586 -0
- data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +154 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/phase-banner/_index.scss +10 -1
- data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/radios/_index.scss +92 -113
- data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +245 -0
- data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +237 -0
- data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs +88 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/select/_index.scss +9 -16
- data/node_modules/govuk-frontend/dist/govuk/components/select/_select.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +168 -0
- data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js +249 -0
- data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs +241 -0
- data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.mjs +85 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/skip-link/_index.scss +10 -5
- data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +244 -0
- data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +236 -0
- data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs +58 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/summary-list/_index.scss +22 -20
- data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/_index.scss +21 -17
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/_table.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/_index.scss +13 -9
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/_tabs.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +453 -0
- data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +445 -0
- data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +283 -0
- data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +97 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tag/_tag.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +79 -0
- data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/textarea/_index.scss +6 -10
- data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.scss +4 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/warning-text/_index.scss +13 -13
- data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.scss +4 -0
- data/node_modules/govuk-frontend/dist/govuk/core/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_global-styles.scss +2 -1
- data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +12 -0
- data/node_modules/govuk-frontend/{govuk/core/_all.scss → dist/govuk/core/_index.scss} +3 -1
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_links.scss +8 -1
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_lists.scss +2 -1
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_section-break.scss +2 -7
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_typography.scss +8 -5
- data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs +57 -0
- data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs +60 -0
- data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -0
- data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_clearfix.scss +3 -1
- data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +127 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_device-pixels.scss +4 -3
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_focused.scss +22 -6
- data/node_modules/govuk-frontend/dist/govuk/helpers/_font-faces.scss +41 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_grid.scss +3 -1
- data/node_modules/govuk-frontend/{govuk/helpers/_all.scss → dist/govuk/helpers/_index.scss} +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_links.scss +38 -76
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_media-queries.scss +3 -12
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_shape-arrow.scss +3 -1
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_spacing.scss +12 -10
- data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +288 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_visually-hidden.scss +39 -50
- data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +195 -0
- data/node_modules/govuk-frontend/dist/govuk/index.scss +11 -0
- data/node_modules/govuk-frontend/dist/govuk/init.mjs +162 -0
- data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_button-group.scss +7 -12
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_form-group.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_grid.scss +4 -2
- data/node_modules/govuk-frontend/{govuk/objects/_all.scss → dist/govuk/objects/_index.scss} +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_main-wrapper.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_template.scss +2 -1
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_width-container.scss +2 -9
- data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss +9 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_display.scss +2 -0
- data/node_modules/govuk-frontend/{govuk/overrides/_all.scss → dist/govuk/overrides/_index.scss} +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_spacing.scss +3 -19
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_text-align.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +42 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_width.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_assets.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_colours-applied.scss +9 -7
- data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +378 -0
- data/node_modules/govuk-frontend/dist/govuk/settings/_colours-palette.scss +37 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_global-styles.scss +2 -0
- data/node_modules/govuk-frontend/{govuk/settings/_all.scss → dist/govuk/settings/_index.scss} +2 -3
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_links.scss +3 -20
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_measurements.scss +18 -6
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_media-queries.scss +5 -3
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_spacing.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss +52 -0
- data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +322 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_warnings.scss +33 -8
- data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_exports.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_font-url.scss +3 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_image-url.scss +3 -0
- data/node_modules/govuk-frontend/{govuk/tools/_all.scss → dist/govuk/tools/_index.scss} +2 -2
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_px-to-em.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_px-to-rem.scss +2 -0
- data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss +10 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/utilities/_clearfix.scss +2 -0
- data/node_modules/govuk-frontend/{govuk/utilities/_all.scss → dist/govuk/utilities/_index.scss} +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/utilities/_visually-hidden.scss +2 -0
- data/node_modules/govuk-frontend/{govuk → dist/govuk}/vendor/_sass-mq.scss +3 -1
- data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.js +15 -0
- data/node_modules/govuk-frontend/{govuk-prototype-kit → dist/govuk-prototype-kit}/init.scss +3 -2
- data/package-lock.json +37 -37
- data/package.json +6 -1
- metadata +316 -206
- data/node_modules/govuk-frontend/govuk/_base.scss +0 -3
- data/node_modules/govuk-frontend/govuk/all-ie8.scss +0 -14
- data/node_modules/govuk-frontend/govuk/all.js +0 -5172
- data/node_modules/govuk-frontend/govuk/all.scss +0 -9
- data/node_modules/govuk-frontend/govuk/assets/images/favicon.ico +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-152x152.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-167x167.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-180x180.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-crest-2x.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-crest.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-logotype-crown.png +0 -0
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-mask-icon.svg +0 -7
- data/node_modules/govuk-frontend/govuk/assets/images/govuk-opengraph-image.png +0 -0
- data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +0 -75
- data/node_modules/govuk-frontend/govuk/common/govuk-frontend-version.js +0 -17
- data/node_modules/govuk-frontend/govuk/common/index.js +0 -192
- data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +0 -386
- data/node_modules/govuk-frontend/govuk/common.js +0 -194
- data/node_modules/govuk-frontend/govuk/components/accordion/_accordion.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +0 -2386
- data/node_modules/govuk-frontend/govuk/components/back-link/_back-link.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_breadcrumbs.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/button/_button.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/button/button.js +0 -1027
- data/node_modules/govuk-frontend/govuk/components/character-count/_character-count.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +0 -2281
- data/node_modules/govuk-frontend/govuk/components/checkboxes/_checkboxes.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +0 -1277
- data/node_modules/govuk-frontend/govuk/components/cookie-banner/_cookie-banner.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/date-input/_date-input.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/details/_details.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/details/_index.scss +0 -88
- data/node_modules/govuk-frontend/govuk/components/details/details.js +0 -873
- data/node_modules/govuk-frontend/govuk/components/error-message/_error-message.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/error-summary/_error-summary.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +0 -1189
- data/node_modules/govuk-frontend/govuk/components/exit-this-page/_exit-this-page.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/exit-this-page/exit-this-page.js +0 -2120
- data/node_modules/govuk-frontend/govuk/components/fieldset/_fieldset.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/file-upload/_file-upload.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/footer/_footer.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/header/_header.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/header/header.js +0 -794
- data/node_modules/govuk-frontend/govuk/components/inset-text/_inset-text.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/notification-banner/_notification-banner.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +0 -843
- data/node_modules/govuk-frontend/govuk/components/pagination/_pagination.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/panel/_index.scss +0 -56
- data/node_modules/govuk-frontend/govuk/components/phase-banner/_phase-banner.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/radios/_radios.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/radios/radios.js +0 -1222
- data/node_modules/govuk-frontend/govuk/components/select/_select.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/skip-link/_skip-link.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +0 -1145
- data/node_modules/govuk-frontend/govuk/components/summary-list/_summary-list.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +0 -1621
- data/node_modules/govuk-frontend/govuk/components/tag/_index.scss +0 -81
- data/node_modules/govuk-frontend/govuk/components/textarea/_textarea.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/warning-text/_warning-text.scss +0 -2
- data/node_modules/govuk-frontend/govuk/core/_govuk-frontend-version.scss +0 -5
- data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +0 -98
- data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +0 -41
- data/node_modules/govuk-frontend/govuk/helpers/_typography.scss +0 -214
- data/node_modules/govuk-frontend/govuk/i18n.js +0 -397
- data/node_modules/govuk-frontend/govuk/overrides/_typography.scss +0 -21
- data/node_modules/govuk-frontend/govuk/settings/_colours-organisations.scss +0 -146
- data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +0 -120
- data/node_modules/govuk-frontend/govuk/settings/_compatibility.scss +0 -100
- data/node_modules/govuk-frontend/govuk/settings/_ie8.scss +0 -34
- data/node_modules/govuk-frontend/govuk/settings/_typography-font-families.scss +0 -32
- data/node_modules/govuk-frontend/govuk/settings/_typography-font.scss +0 -112
- data/node_modules/govuk-frontend/govuk/settings/_typography-responsive.scss +0 -195
- data/node_modules/govuk-frontend/govuk/tools/_compatibility.scss +0 -50
- data/node_modules/govuk-frontend/govuk/tools/_ie8.scss +0 -87
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +0 -274
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +0 -23
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +0 -36
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +0 -597
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +0 -58
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +0 -307
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +0 -33
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +0 -261
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +0 -261
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +0 -151
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +0 -512
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +0 -256
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +0 -96
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +0 -23
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +0 -30
- data/node_modules/govuk-frontend/govuk-prototype-kit/init.js +0 -8
- /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-affa96571d-v2.woff +0 -0
- /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
- /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
- /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-f591b13f7d-v2.woff +0 -0
- /data/{lib/source → node_modules/govuk-frontend/dist/govuk/assets/images}/favicon.ico +0 -0
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
@include govuk-exports("govuk/component/cookie-banner") {
|
|
2
|
-
|
|
3
2
|
// This needs to be kept in sync with the header component's styles
|
|
4
3
|
$border-bottom-width: govuk-spacing(2);
|
|
5
4
|
|
|
6
5
|
.govuk-cookie-banner {
|
|
7
6
|
padding-top: govuk-spacing(4);
|
|
8
|
-
// The component does not set bottom spacing.
|
|
9
|
-
//
|
|
7
|
+
// The component does not set bottom spacing. The bottom spacing should be
|
|
8
|
+
// created by the items inside the component.
|
|
10
9
|
|
|
11
|
-
// Visually separate the cookie banner from content underneath
|
|
12
|
-
//
|
|
10
|
+
// Visually separate the cookie banner from content underneath when user
|
|
11
|
+
// changes colours in their browser.
|
|
13
12
|
border-bottom: $border-bottom-width solid transparent;
|
|
14
13
|
|
|
15
|
-
background-color: govuk-
|
|
14
|
+
background-color: $govuk-canvas-background-colour;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
// Support older browsers which don't hide elements with the `hidden` attribute
|
|
@@ -26,24 +25,29 @@
|
|
|
26
25
|
margin-bottom: -$border-bottom-width;
|
|
27
26
|
|
|
28
27
|
&[hidden] {
|
|
29
|
-
// Support older browsers which don't hide elements with the `hidden`
|
|
30
|
-
// when the visibility of cookie and replacement messages is
|
|
28
|
+
// Support older browsers which don't hide elements with the `hidden`
|
|
29
|
+
// attribute when the visibility of cookie and replacement messages is
|
|
30
|
+
// toggled.
|
|
31
31
|
display: none;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
&:focus {
|
|
35
|
-
// Remove the native visible focus indicator when the element is
|
|
35
|
+
// Remove the native visible focus indicator when the element is
|
|
36
|
+
// programmatically focused.
|
|
36
37
|
//
|
|
37
|
-
// The focused cookie banner is the first element on the page and the last
|
|
38
|
-
// interacted with prior to it gaining focus.
|
|
39
|
-
//
|
|
40
|
-
// it a visible focus indicator could be more confusing than
|
|
41
|
-
// element is not normally keyboard operable.
|
|
38
|
+
// The focused cookie banner is the first element on the page and the last
|
|
39
|
+
// thing the user interacted with prior to it gaining focus. We therefore
|
|
40
|
+
// assume that moving focus to it is not going to surprise users, and that
|
|
41
|
+
// giving it a visible focus indicator could be more confusing than
|
|
42
|
+
// helpful, especially as the element is not normally keyboard operable.
|
|
42
43
|
//
|
|
43
|
-
// We have flagged this in the research section of the guidance as
|
|
44
|
+
// We have flagged this in the research section of the guidance as
|
|
45
|
+
// something to monitor.
|
|
44
46
|
//
|
|
45
47
|
// A related discussion: https://github.com/w3c/wcag/issues/1001
|
|
46
48
|
outline: none;
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
}
|
|
52
|
+
|
|
53
|
+
/*# sourceMappingURL=_index.scss.map */
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
@include govuk-exports("govuk/component/date-input") {
|
|
7
7
|
.govuk-date-input {
|
|
8
8
|
@include govuk-clearfix;
|
|
9
|
-
|
|
10
|
-
font-size: 0;
|
|
9
|
+
font-size: 0; // removes whitespace caused by inline-block
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
.govuk-date-input__item {
|
|
@@ -24,3 +23,5 @@
|
|
|
24
23
|
margin-bottom: 0;
|
|
25
24
|
}
|
|
26
25
|
}
|
|
26
|
+
|
|
27
|
+
/*# sourceMappingURL=_index.scss.map */
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
@include govuk-exports("govuk/component/details") {
|
|
2
|
+
.govuk-details {
|
|
3
|
+
@include govuk-font($size: 19);
|
|
4
|
+
@include govuk-text-colour;
|
|
5
|
+
@include govuk-responsive-margin(6, "bottom");
|
|
6
|
+
|
|
7
|
+
display: block;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.govuk-details__summary {
|
|
11
|
+
display: block;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.govuk-details[open] .govuk-details__summary {
|
|
15
|
+
margin-bottom: govuk-spacing(1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.govuk-details__summary-text {
|
|
19
|
+
> :first-child {
|
|
20
|
+
margin-top: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
> :only-child,
|
|
24
|
+
> :last-child {
|
|
25
|
+
margin-bottom: 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.govuk-details__text {
|
|
30
|
+
padding-top: govuk-spacing(3);
|
|
31
|
+
padding-bottom: govuk-spacing(3);
|
|
32
|
+
padding-left: govuk-spacing(4);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.govuk-details__text p {
|
|
36
|
+
margin-top: 0;
|
|
37
|
+
margin-bottom: govuk-spacing(4);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.govuk-details__text > :last-child {
|
|
41
|
+
margin-bottom: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Hack to target IE8 - IE11 (and REALLY old Firefox)
|
|
45
|
+
// These browsers don't support the details element, so fall back to looking
|
|
46
|
+
// like inset text
|
|
47
|
+
@media screen\0 {
|
|
48
|
+
.govuk-details {
|
|
49
|
+
border-left: $govuk-border-width-wide solid $govuk-border-colour;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.govuk-details__summary {
|
|
53
|
+
margin-top: govuk-spacing(3);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.govuk-details__summary-text {
|
|
57
|
+
@include govuk-typography-weight-bold;
|
|
58
|
+
@include govuk-responsive-margin(4, "bottom");
|
|
59
|
+
padding-left: govuk-spacing(4);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// We wrap styles for newer browsers in a feature query, which is ignored by
|
|
64
|
+
// older browsers, which always expand the details element.
|
|
65
|
+
//
|
|
66
|
+
// Additionally, -ms-ime-align is only supported by Edge 12 - 18
|
|
67
|
+
//
|
|
68
|
+
// This ensures we don't use these styles in browsers which:
|
|
69
|
+
// - support ES6 modules but not the <details> element (Edge 16 - 18)
|
|
70
|
+
// - do not support ES6 modules or the <details> element (eg, IE8+)
|
|
71
|
+
@supports not (-ms-ime-align: auto) {
|
|
72
|
+
.govuk-details__summary {
|
|
73
|
+
// Absolutely position the marker against this element
|
|
74
|
+
position: relative;
|
|
75
|
+
|
|
76
|
+
// Make the focus outline shrink-wrap the text content of the summary
|
|
77
|
+
width: -webkit-fit-content;
|
|
78
|
+
width: fit-content;
|
|
79
|
+
|
|
80
|
+
// Allow for absolutely positioned marker and align with disclosed text
|
|
81
|
+
padding-left: govuk-spacing(4) + $govuk-border-width;
|
|
82
|
+
|
|
83
|
+
// Style the summary to look like a link...
|
|
84
|
+
color: $govuk-link-colour;
|
|
85
|
+
cursor: pointer;
|
|
86
|
+
|
|
87
|
+
&:hover {
|
|
88
|
+
color: $govuk-link-hover-colour;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&:focus {
|
|
92
|
+
@include govuk-focused-text;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ...but only underline the text, not the arrow
|
|
96
|
+
.govuk-details__summary-text {
|
|
97
|
+
@include govuk-link-decoration;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.govuk-details__summary:hover .govuk-details__summary-text {
|
|
101
|
+
@include govuk-link-hover-decoration;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Remove the underline when focussed to avoid duplicate borders
|
|
105
|
+
.govuk-details__summary:focus .govuk-details__summary-text {
|
|
106
|
+
text-decoration: none;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Remove the default details marker so we can style our own consistently and
|
|
110
|
+
// ensure it displays in Firefox (see implementation.md for details)
|
|
111
|
+
.govuk-details__summary::-webkit-details-marker {
|
|
112
|
+
display: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Append our own open / closed marker using a pseudo-element
|
|
116
|
+
.govuk-details__summary::before {
|
|
117
|
+
content: "";
|
|
118
|
+
position: absolute;
|
|
119
|
+
|
|
120
|
+
top: -1px;
|
|
121
|
+
bottom: 0;
|
|
122
|
+
left: 0;
|
|
123
|
+
|
|
124
|
+
margin: auto;
|
|
125
|
+
|
|
126
|
+
@include govuk-shape-arrow($direction: right, $base: 14px);
|
|
127
|
+
|
|
128
|
+
.govuk-details[open] > & {
|
|
129
|
+
@include govuk-shape-arrow($direction: down, $base: 14px);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.govuk-details__text {
|
|
134
|
+
border-left: $govuk-border-width solid $govuk-border-colour;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/*# sourceMappingURL=_index.scss.map */
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
@include govuk-exports("govuk/component/error-summary") {
|
|
4
4
|
.govuk-error-summary {
|
|
5
|
+
@include govuk-font($size: 19);
|
|
5
6
|
@include govuk-text-colour;
|
|
6
7
|
@include govuk-responsive-padding(4);
|
|
7
8
|
@include govuk-responsive-margin(8, "bottom");
|
|
@@ -14,24 +15,34 @@
|
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
.govuk-error-summary__title {
|
|
17
|
-
@include govuk-font($size: 24
|
|
18
|
+
@include govuk-font-size($size: 24);
|
|
19
|
+
@include govuk-typography-weight-bold;
|
|
18
20
|
|
|
19
21
|
margin-top: 0;
|
|
20
22
|
@include govuk-responsive-margin(4, "bottom");
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
.govuk-error-summary__body {
|
|
24
|
-
@include govuk-font($size: 19);
|
|
25
|
-
|
|
26
26
|
p {
|
|
27
|
-
margin-
|
|
28
|
-
|
|
27
|
+
margin-bottom: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
> * + * {
|
|
31
|
+
@include govuk-responsive-margin(4, "top");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
> :last-child {
|
|
35
|
+
@include govuk-responsive-margin(1, "bottom");
|
|
29
36
|
}
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
// Cross-component class - adjusts styling of list component
|
|
33
40
|
.govuk-error-summary__list {
|
|
34
|
-
margin-
|
|
41
|
+
margin-bottom: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Remove the bottom margin from the last list item
|
|
45
|
+
.govuk-error-summary__list li:last-child {
|
|
35
46
|
margin-bottom: 0;
|
|
36
47
|
}
|
|
37
48
|
|
|
@@ -41,3 +52,5 @@
|
|
|
41
52
|
@include govuk-link-style-error;
|
|
42
53
|
}
|
|
43
54
|
}
|
|
55
|
+
|
|
56
|
+
/*# sourceMappingURL=_index.scss.map */
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.GOVUKFrontend = {}));
|
|
5
|
+
})(this, (function (exports) { 'use strict';
|
|
6
|
+
|
|
7
|
+
function normaliseString(value, property) {
|
|
8
|
+
const trimmedValue = value ? value.trim() : '';
|
|
9
|
+
let output;
|
|
10
|
+
let outputType = property == null ? void 0 : property.type;
|
|
11
|
+
if (!outputType) {
|
|
12
|
+
if (['true', 'false'].includes(trimmedValue)) {
|
|
13
|
+
outputType = 'boolean';
|
|
14
|
+
}
|
|
15
|
+
if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
|
|
16
|
+
outputType = 'number';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
switch (outputType) {
|
|
20
|
+
case 'boolean':
|
|
21
|
+
output = trimmedValue === 'true';
|
|
22
|
+
break;
|
|
23
|
+
case 'number':
|
|
24
|
+
output = Number(trimmedValue);
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
output = value;
|
|
28
|
+
}
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
function mergeConfigs(...configObjects) {
|
|
37
|
+
const formattedConfigObject = {};
|
|
38
|
+
for (const configObject of configObjects) {
|
|
39
|
+
for (const key of Object.keys(configObject)) {
|
|
40
|
+
const option = formattedConfigObject[key];
|
|
41
|
+
const override = configObject[key];
|
|
42
|
+
if (isObject(option) && isObject(override)) {
|
|
43
|
+
formattedConfigObject[key] = mergeConfigs(option, override);
|
|
44
|
+
} else {
|
|
45
|
+
formattedConfigObject[key] = override;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return formattedConfigObject;
|
|
50
|
+
}
|
|
51
|
+
function extractConfigByNamespace(Component, dataset, namespace) {
|
|
52
|
+
const property = Component.schema.properties[namespace];
|
|
53
|
+
if ((property == null ? void 0 : property.type) !== 'object') {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const newObject = {
|
|
57
|
+
[namespace]: ({})
|
|
58
|
+
};
|
|
59
|
+
for (const [key, value] of Object.entries(dataset)) {
|
|
60
|
+
let current = newObject;
|
|
61
|
+
const keyParts = key.split('.');
|
|
62
|
+
for (const [index, name] of keyParts.entries()) {
|
|
63
|
+
if (typeof current === 'object') {
|
|
64
|
+
if (index < keyParts.length - 1) {
|
|
65
|
+
if (!isObject(current[name])) {
|
|
66
|
+
current[name] = {};
|
|
67
|
+
}
|
|
68
|
+
current = current[name];
|
|
69
|
+
} else if (key !== namespace) {
|
|
70
|
+
current[name] = normaliseString(value);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return newObject[namespace];
|
|
76
|
+
}
|
|
77
|
+
function getFragmentFromUrl(url) {
|
|
78
|
+
if (!url.includes('#')) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
return url.split('#').pop();
|
|
82
|
+
}
|
|
83
|
+
function setFocus($element, options = {}) {
|
|
84
|
+
var _options$onBeforeFocu;
|
|
85
|
+
const isFocusable = $element.getAttribute('tabindex');
|
|
86
|
+
if (!isFocusable) {
|
|
87
|
+
$element.setAttribute('tabindex', '-1');
|
|
88
|
+
}
|
|
89
|
+
function onFocus() {
|
|
90
|
+
$element.addEventListener('blur', onBlur, {
|
|
91
|
+
once: true
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function onBlur() {
|
|
95
|
+
var _options$onBlur;
|
|
96
|
+
(_options$onBlur = options.onBlur) == null || _options$onBlur.call($element);
|
|
97
|
+
if (!isFocusable) {
|
|
98
|
+
$element.removeAttribute('tabindex');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
$element.addEventListener('focus', onFocus, {
|
|
102
|
+
once: true
|
|
103
|
+
});
|
|
104
|
+
(_options$onBeforeFocu = options.onBeforeFocus) == null || _options$onBeforeFocu.call($element);
|
|
105
|
+
$element.focus();
|
|
106
|
+
}
|
|
107
|
+
function isInitialised($root, moduleName) {
|
|
108
|
+
return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Checks if GOV.UK Frontend is supported on this page
|
|
113
|
+
*
|
|
114
|
+
* Some browsers will load and run our JavaScript but GOV.UK Frontend
|
|
115
|
+
* won't be supported.
|
|
116
|
+
*
|
|
117
|
+
* @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
|
|
118
|
+
* @returns {boolean} Whether GOV.UK Frontend is supported on this page
|
|
119
|
+
*/
|
|
120
|
+
function isSupported($scope = document.body) {
|
|
121
|
+
if (!$scope) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
return $scope.classList.contains('govuk-frontend-supported');
|
|
125
|
+
}
|
|
126
|
+
function isArray(option) {
|
|
127
|
+
return Array.isArray(option);
|
|
128
|
+
}
|
|
129
|
+
function isObject(option) {
|
|
130
|
+
return !!option && typeof option === 'object' && !isArray(option);
|
|
131
|
+
}
|
|
132
|
+
function formatErrorMessage(Component, message) {
|
|
133
|
+
return `${Component.moduleName}: ${message}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Schema for component config
|
|
138
|
+
*
|
|
139
|
+
* @typedef {object} Schema
|
|
140
|
+
* @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
|
|
141
|
+
* @property {SchemaCondition[]} [anyOf] - List of schema conditions
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Schema property for component config
|
|
146
|
+
*
|
|
147
|
+
* @typedef {object} SchemaProperty
|
|
148
|
+
* @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Schema condition for component config
|
|
153
|
+
*
|
|
154
|
+
* @typedef {object} SchemaCondition
|
|
155
|
+
* @property {string[]} required - List of required config fields
|
|
156
|
+
* @property {string} errorMessage - Error message when required config fields not provided
|
|
157
|
+
*/
|
|
158
|
+
/**
|
|
159
|
+
* @typedef ComponentWithModuleName
|
|
160
|
+
* @property {string} moduleName - Name of the component
|
|
161
|
+
*/
|
|
162
|
+
|
|
163
|
+
function normaliseDataset(Component, dataset) {
|
|
164
|
+
const out = {};
|
|
165
|
+
for (const [field, property] of Object.entries(Component.schema.properties)) {
|
|
166
|
+
if (field in dataset) {
|
|
167
|
+
out[field] = normaliseString(dataset[field], property);
|
|
168
|
+
}
|
|
169
|
+
if ((property == null ? void 0 : property.type) === 'object') {
|
|
170
|
+
out[field] = extractConfigByNamespace(Component, dataset, field);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return out;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
class GOVUKFrontendError extends Error {
|
|
177
|
+
constructor(...args) {
|
|
178
|
+
super(...args);
|
|
179
|
+
this.name = 'GOVUKFrontendError';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
class SupportError extends GOVUKFrontendError {
|
|
183
|
+
/**
|
|
184
|
+
* Checks if GOV.UK Frontend is supported on this page
|
|
185
|
+
*
|
|
186
|
+
* @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
|
|
187
|
+
*/
|
|
188
|
+
constructor($scope = document.body) {
|
|
189
|
+
const supportMessage = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';
|
|
190
|
+
super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
|
|
191
|
+
this.name = 'SupportError';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
class ElementError extends GOVUKFrontendError {
|
|
195
|
+
constructor(messageOrOptions) {
|
|
196
|
+
let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
|
|
197
|
+
if (typeof messageOrOptions === 'object') {
|
|
198
|
+
const {
|
|
199
|
+
component,
|
|
200
|
+
identifier,
|
|
201
|
+
element,
|
|
202
|
+
expectedType
|
|
203
|
+
} = messageOrOptions;
|
|
204
|
+
message = identifier;
|
|
205
|
+
message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
|
|
206
|
+
message = formatErrorMessage(component, message);
|
|
207
|
+
}
|
|
208
|
+
super(message);
|
|
209
|
+
this.name = 'ElementError';
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
class InitError extends GOVUKFrontendError {
|
|
213
|
+
constructor(componentOrMessage) {
|
|
214
|
+
const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
|
|
215
|
+
super(message);
|
|
216
|
+
this.name = 'InitError';
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
|
|
221
|
+
*/
|
|
222
|
+
|
|
223
|
+
class GOVUKFrontendComponent {
|
|
224
|
+
/**
|
|
225
|
+
* Returns the root element of the component
|
|
226
|
+
*
|
|
227
|
+
* @protected
|
|
228
|
+
* @returns {RootElementType} - the root element of component
|
|
229
|
+
*/
|
|
230
|
+
get $root() {
|
|
231
|
+
return this._$root;
|
|
232
|
+
}
|
|
233
|
+
constructor($root) {
|
|
234
|
+
this._$root = void 0;
|
|
235
|
+
const childConstructor = this.constructor;
|
|
236
|
+
if (typeof childConstructor.moduleName !== 'string') {
|
|
237
|
+
throw new InitError(`\`moduleName\` not defined in component`);
|
|
238
|
+
}
|
|
239
|
+
if (!($root instanceof childConstructor.elementType)) {
|
|
240
|
+
throw new ElementError({
|
|
241
|
+
element: $root,
|
|
242
|
+
component: childConstructor,
|
|
243
|
+
identifier: 'Root element (`$root`)',
|
|
244
|
+
expectedType: childConstructor.elementType.name
|
|
245
|
+
});
|
|
246
|
+
} else {
|
|
247
|
+
this._$root = $root;
|
|
248
|
+
}
|
|
249
|
+
childConstructor.checkSupport();
|
|
250
|
+
this.checkInitialised();
|
|
251
|
+
const moduleName = childConstructor.moduleName;
|
|
252
|
+
this.$root.setAttribute(`data-${moduleName}-init`, '');
|
|
253
|
+
}
|
|
254
|
+
checkInitialised() {
|
|
255
|
+
const constructor = this.constructor;
|
|
256
|
+
const moduleName = constructor.moduleName;
|
|
257
|
+
if (moduleName && isInitialised(this.$root, moduleName)) {
|
|
258
|
+
throw new InitError(constructor);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
static checkSupport() {
|
|
262
|
+
if (!isSupported()) {
|
|
263
|
+
throw new SupportError();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* @typedef ChildClass
|
|
270
|
+
* @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
|
|
271
|
+
*/
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
|
|
275
|
+
*/
|
|
276
|
+
GOVUKFrontendComponent.elementType = HTMLElement;
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Error summary component
|
|
280
|
+
*
|
|
281
|
+
* Takes focus on initialisation for accessible announcement, unless disabled in
|
|
282
|
+
* configuration.
|
|
283
|
+
*
|
|
284
|
+
* @preserve
|
|
285
|
+
*/
|
|
286
|
+
class ErrorSummary extends GOVUKFrontendComponent {
|
|
287
|
+
/**
|
|
288
|
+
* @param {Element | null} $root - HTML element to use for error summary
|
|
289
|
+
* @param {ErrorSummaryConfig} [config] - Error summary config
|
|
290
|
+
*/
|
|
291
|
+
constructor($root, config = {}) {
|
|
292
|
+
super($root);
|
|
293
|
+
this.config = void 0;
|
|
294
|
+
this.config = mergeConfigs(ErrorSummary.defaults, config, normaliseDataset(ErrorSummary, this.$root.dataset));
|
|
295
|
+
if (!this.config.disableAutoFocus) {
|
|
296
|
+
setFocus(this.$root);
|
|
297
|
+
}
|
|
298
|
+
this.$root.addEventListener('click', event => this.handleClick(event));
|
|
299
|
+
}
|
|
300
|
+
handleClick(event) {
|
|
301
|
+
const $target = event.target;
|
|
302
|
+
if ($target && this.focusTarget($target)) {
|
|
303
|
+
event.preventDefault();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
focusTarget($target) {
|
|
307
|
+
if (!($target instanceof HTMLAnchorElement)) {
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
const inputId = getFragmentFromUrl($target.href);
|
|
311
|
+
if (!inputId) {
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
const $input = document.getElementById(inputId);
|
|
315
|
+
if (!$input) {
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
const $legendOrLabel = this.getAssociatedLegendOrLabel($input);
|
|
319
|
+
if (!$legendOrLabel) {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
$legendOrLabel.scrollIntoView();
|
|
323
|
+
$input.focus({
|
|
324
|
+
preventScroll: true
|
|
325
|
+
});
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
getAssociatedLegendOrLabel($input) {
|
|
329
|
+
var _document$querySelect;
|
|
330
|
+
const $fieldset = $input.closest('fieldset');
|
|
331
|
+
if ($fieldset) {
|
|
332
|
+
const $legends = $fieldset.getElementsByTagName('legend');
|
|
333
|
+
if ($legends.length) {
|
|
334
|
+
const $candidateLegend = $legends[0];
|
|
335
|
+
if ($input instanceof HTMLInputElement && ($input.type === 'checkbox' || $input.type === 'radio')) {
|
|
336
|
+
return $candidateLegend;
|
|
337
|
+
}
|
|
338
|
+
const legendTop = $candidateLegend.getBoundingClientRect().top;
|
|
339
|
+
const inputRect = $input.getBoundingClientRect();
|
|
340
|
+
if (inputRect.height && window.innerHeight) {
|
|
341
|
+
const inputBottom = inputRect.top + inputRect.height;
|
|
342
|
+
if (inputBottom - legendTop < window.innerHeight / 2) {
|
|
343
|
+
return $candidateLegend;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return (_document$querySelect = document.querySelector(`label[for='${$input.getAttribute('id')}']`)) != null ? _document$querySelect : $input.closest('label');
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Error summary config
|
|
354
|
+
*
|
|
355
|
+
* @typedef {object} ErrorSummaryConfig
|
|
356
|
+
* @property {boolean} [disableAutoFocus=false] - If set to `true` the error
|
|
357
|
+
* summary will not be focussed when the page loads.
|
|
358
|
+
*/
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* @typedef {import('../../common/index.mjs').Schema} Schema
|
|
362
|
+
*/
|
|
363
|
+
ErrorSummary.moduleName = 'govuk-error-summary';
|
|
364
|
+
ErrorSummary.defaults = Object.freeze({
|
|
365
|
+
disableAutoFocus: false
|
|
366
|
+
});
|
|
367
|
+
ErrorSummary.schema = Object.freeze({
|
|
368
|
+
properties: {
|
|
369
|
+
disableAutoFocus: {
|
|
370
|
+
type: 'boolean'
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
exports.ErrorSummary = ErrorSummary;
|
|
376
|
+
|
|
377
|
+
}));
|
|
378
|
+
//# sourceMappingURL=error-summary.bundle.js.map
|