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
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/// @type Colour
|
|
8
8
|
/// @access public
|
|
9
9
|
|
|
10
|
-
$govuk-button-background-colour: govuk-colour("green"
|
|
10
|
+
$govuk-button-background-colour: govuk-colour("green") !default;
|
|
11
11
|
|
|
12
12
|
/// Button component text colour
|
|
13
13
|
///
|
|
@@ -16,6 +16,20 @@ $govuk-button-background-colour: govuk-colour("green", $legacy: #00823b) !defaul
|
|
|
16
16
|
|
|
17
17
|
$govuk-button-text-colour: govuk-colour("white") !default;
|
|
18
18
|
|
|
19
|
+
/// Inverted button component background colour
|
|
20
|
+
///
|
|
21
|
+
/// @type Colour
|
|
22
|
+
/// @access public
|
|
23
|
+
|
|
24
|
+
$govuk-inverse-button-background-colour: govuk-colour("white") !default;
|
|
25
|
+
|
|
26
|
+
/// Inverted button component text colour
|
|
27
|
+
///
|
|
28
|
+
/// @type Colour
|
|
29
|
+
/// @access public
|
|
30
|
+
|
|
31
|
+
$govuk-inverse-button-text-colour: $govuk-brand-colour !default;
|
|
32
|
+
|
|
19
33
|
@include govuk-exports("govuk/component/button") {
|
|
20
34
|
$govuk-button-colour: $govuk-button-background-colour;
|
|
21
35
|
$govuk-button-text-colour: $govuk-button-text-colour;
|
|
@@ -23,7 +37,7 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
23
37
|
$govuk-button-shadow-colour: govuk-shade($govuk-button-colour, 60%);
|
|
24
38
|
|
|
25
39
|
// Secondary button variables
|
|
26
|
-
$govuk-secondary-button-colour: govuk-colour("light-grey"
|
|
40
|
+
$govuk-secondary-button-colour: govuk-colour("light-grey");
|
|
27
41
|
$govuk-secondary-button-text-colour: govuk-colour("black");
|
|
28
42
|
$govuk-secondary-button-hover-colour: govuk-shade($govuk-secondary-button-colour, 10%);
|
|
29
43
|
$govuk-secondary-button-shadow-colour: govuk-shade($govuk-secondary-button-colour, 40%);
|
|
@@ -35,8 +49,8 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
35
49
|
$govuk-warning-button-shadow-colour: govuk-shade($govuk-warning-button-colour, 60%);
|
|
36
50
|
|
|
37
51
|
// Inverse button variables
|
|
38
|
-
$govuk-inverse-button-colour: govuk-colour
|
|
39
|
-
$govuk-inverse-button-text-colour: govuk-colour
|
|
52
|
+
$govuk-inverse-button-colour: $govuk-inverse-button-background-colour;
|
|
53
|
+
$govuk-inverse-button-text-colour: $govuk-inverse-button-text-colour;
|
|
40
54
|
$govuk-inverse-button-hover-colour: govuk-tint($govuk-inverse-button-text-colour, 90%);
|
|
41
55
|
$govuk-inverse-button-shadow-colour: govuk-shade($govuk-inverse-button-text-colour, 30%);
|
|
42
56
|
|
|
@@ -56,7 +70,8 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
56
70
|
margin-right: 0;
|
|
57
71
|
margin-left: 0;
|
|
58
72
|
@include govuk-responsive-margin(6, "bottom", $adjustment: $button-shadow-size); // s2
|
|
59
|
-
padding: (govuk-spacing(2) - $govuk-border-width-form-element) govuk-spacing(2)
|
|
73
|
+
padding: (govuk-spacing(2) - $govuk-border-width-form-element) govuk-spacing(2)
|
|
74
|
+
(govuk-spacing(2) - $govuk-border-width-form-element - ($button-shadow-size / 2)); // s1
|
|
60
75
|
border: $govuk-border-width-form-element solid transparent;
|
|
61
76
|
border-radius: 0;
|
|
62
77
|
color: $govuk-button-text-colour;
|
|
@@ -67,10 +82,6 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
67
82
|
cursor: pointer;
|
|
68
83
|
-webkit-appearance: none;
|
|
69
84
|
|
|
70
|
-
@include _govuk-if-ie8 {
|
|
71
|
-
border-bottom: $button-shadow-size solid $govuk-button-shadow-colour;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
85
|
@include govuk-media-query($from: tablet) {
|
|
75
86
|
width: auto;
|
|
76
87
|
}
|
|
@@ -97,40 +108,14 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
97
108
|
&:active {
|
|
98
109
|
// Bump the button down so it looks like its being pressed in
|
|
99
110
|
top: $button-shadow-size;
|
|
100
|
-
|
|
101
|
-
@include _govuk-if-ie8 {
|
|
102
|
-
border-bottom-width: 0;
|
|
103
|
-
}
|
|
104
111
|
}
|
|
105
112
|
|
|
106
113
|
&:focus {
|
|
107
114
|
border-color: $govuk-focus-colour;
|
|
108
|
-
|
|
109
|
-
// backgrounds and box-shadows disappear, so we need to ensure there's a
|
|
110
|
-
// transparent outline which will be set to a visible colour.
|
|
111
|
-
// Since Internet Explorer 8 does not support box-shadow, we want to force the user-agent outlines
|
|
112
|
-
@include _govuk-not-ie8 {
|
|
113
|
-
outline: $govuk-focus-width solid transparent;
|
|
114
|
-
}
|
|
115
|
-
// Since Internet Explorer does not support `:not()` we set a clearer focus style to match user-agent outlines.
|
|
116
|
-
@include _govuk-if-ie8 {
|
|
117
|
-
color: $govuk-focus-text-colour;
|
|
118
|
-
background-color: $govuk-focus-colour;
|
|
119
|
-
}
|
|
115
|
+
outline: $govuk-focus-width solid transparent;
|
|
120
116
|
box-shadow: inset 0 0 0 1px $govuk-focus-colour;
|
|
121
117
|
}
|
|
122
118
|
|
|
123
|
-
// alphagov/govuk_template includes a specific a:link:focus selector
|
|
124
|
-
// designed to make unvisited links a slightly darker blue when focussed, so
|
|
125
|
-
// we need to override the text colour for that combination of selectors so
|
|
126
|
-
// so that unvisited links styled as buttons do not end up with dark blue
|
|
127
|
-
// text when focussed.
|
|
128
|
-
@include _govuk-compatibility(govuk_template) {
|
|
129
|
-
&:link:focus {
|
|
130
|
-
color: $govuk-button-text-colour;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
119
|
&:focus:not(:active):not(:hover) {
|
|
135
120
|
border-color: $govuk-focus-colour;
|
|
136
121
|
color: $govuk-focus-text-colour;
|
|
@@ -143,7 +128,7 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
143
128
|
|
|
144
129
|
// Use a pseudo element to expand the click target area to include the
|
|
145
130
|
// button's shadow as well, in case users try to click it.
|
|
146
|
-
|
|
131
|
+
&::before {
|
|
147
132
|
content: "";
|
|
148
133
|
display: block;
|
|
149
134
|
|
|
@@ -167,17 +152,13 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
167
152
|
// the click event is still fired.
|
|
168
153
|
//
|
|
169
154
|
// 🎉
|
|
170
|
-
&:active
|
|
155
|
+
&:active::before {
|
|
171
156
|
top: -($govuk-border-width-form-element + $button-shadow-size);
|
|
172
157
|
}
|
|
173
158
|
}
|
|
174
159
|
|
|
175
|
-
// @deprecated Disabling buttons using the .govuk-button--disabled class is
|
|
176
|
-
// deprecated and will be removed in the next major version.
|
|
177
|
-
.govuk-button--disabled,
|
|
178
|
-
.govuk-button[disabled="disabled"],
|
|
179
160
|
.govuk-button[disabled] {
|
|
180
|
-
opacity: (.5);
|
|
161
|
+
opacity: (0.5);
|
|
181
162
|
|
|
182
163
|
&:hover {
|
|
183
164
|
background-color: $govuk-button-colour;
|
|
@@ -187,9 +168,6 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
187
168
|
&:active {
|
|
188
169
|
top: 0;
|
|
189
170
|
box-shadow: 0 $button-shadow-size 0 $govuk-button-shadow-colour; // s0
|
|
190
|
-
@include _govuk-if-ie8 {
|
|
191
|
-
border-bottom: $button-shadow-size solid $govuk-button-shadow-colour; // s0
|
|
192
|
-
}
|
|
193
171
|
}
|
|
194
172
|
}
|
|
195
173
|
|
|
@@ -205,17 +183,6 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
205
183
|
color: $govuk-secondary-button-text-colour;
|
|
206
184
|
}
|
|
207
185
|
|
|
208
|
-
// alphagov/govuk_template includes a specific a:link:focus selector
|
|
209
|
-
// designed to make unvisited links a slightly darker blue when focussed, so
|
|
210
|
-
// we need to override the text colour for that combination of selectors so
|
|
211
|
-
// so that unvisited links styled as buttons do not end up with dark blue
|
|
212
|
-
// text when focussed.
|
|
213
|
-
@include _govuk-compatibility(govuk_template) {
|
|
214
|
-
&:link:focus {
|
|
215
|
-
color: $govuk-secondary-button-text-colour;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
186
|
&:hover {
|
|
220
187
|
background-color: $govuk-secondary-button-hover-colour;
|
|
221
188
|
|
|
@@ -237,17 +204,6 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
237
204
|
color: $govuk-warning-button-text-colour;
|
|
238
205
|
}
|
|
239
206
|
|
|
240
|
-
// alphagov/govuk_template includes a specific a:link:focus selector
|
|
241
|
-
// designed to make unvisited links a slightly darker blue when focussed, so
|
|
242
|
-
// we need to override the text colour for that combination of selectors so
|
|
243
|
-
// so that unvisited links styled as buttons do not end up with dark blue
|
|
244
|
-
// text when focussed.
|
|
245
|
-
@include _govuk-compatibility(govuk_template) {
|
|
246
|
-
&:link:focus {
|
|
247
|
-
color: $govuk-warning-button-text-colour;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
207
|
&:hover {
|
|
252
208
|
background-color: $govuk-warning-button-hover-colour;
|
|
253
209
|
|
|
@@ -269,17 +225,6 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
269
225
|
color: $govuk-inverse-button-text-colour;
|
|
270
226
|
}
|
|
271
227
|
|
|
272
|
-
// alphagov/govuk_template includes a specific a:link:focus selector
|
|
273
|
-
// designed to make unvisited links a slightly darker blue when focussed, so
|
|
274
|
-
// we need to override the text colour for that combination of selectors so
|
|
275
|
-
// so that unvisited links styled as buttons do not end up with dark blue
|
|
276
|
-
// text when focussed.
|
|
277
|
-
@include _govuk-compatibility(govuk_template) {
|
|
278
|
-
&:link:focus {
|
|
279
|
-
color: $govuk-inverse-button-text-colour;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
228
|
&:hover {
|
|
284
229
|
background-color: $govuk-inverse-button-hover-colour;
|
|
285
230
|
|
|
@@ -291,16 +236,12 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
291
236
|
|
|
292
237
|
.govuk-button--start {
|
|
293
238
|
@include govuk-typography-weight-bold;
|
|
294
|
-
@include govuk-
|
|
295
|
-
|
|
296
|
-
display: -ms-inline-flexbox;
|
|
239
|
+
@include govuk-font-size($size: 24, $line-height: 1);
|
|
297
240
|
|
|
298
241
|
display: inline-flex;
|
|
299
242
|
min-height: auto;
|
|
300
243
|
|
|
301
|
-
-
|
|
302
|
-
|
|
303
|
-
justify-content: center;
|
|
244
|
+
justify-content: center;
|
|
304
245
|
}
|
|
305
246
|
|
|
306
247
|
.govuk-button__start-icon {
|
|
@@ -310,26 +251,12 @@ $govuk-button-text-colour: govuk-colour("white") !default;
|
|
|
310
251
|
margin-left: govuk-spacing(2);
|
|
311
252
|
}
|
|
312
253
|
vertical-align: middle;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
-ms-flex-item-align: center;
|
|
316
|
-
align-self: center;
|
|
254
|
+
flex-shrink: 0;
|
|
255
|
+
align-self: center;
|
|
317
256
|
// Work around SVGs not inheriting color from parent in forced color mode
|
|
318
257
|
// (https://github.com/w3c/csswg-drafts/issues/6310)
|
|
319
258
|
forced-color-adjust: auto;
|
|
320
259
|
}
|
|
321
|
-
|
|
322
|
-
@if $govuk-use-legacy-font {
|
|
323
|
-
// Begin adjustments for font baseline offset when using v1 of nta
|
|
324
|
-
$offset: 2;
|
|
325
|
-
|
|
326
|
-
.govuk-button {
|
|
327
|
-
padding-top: (govuk-spacing(2) - $govuk-border-width-form-element - ($button-shadow-size / 2) + $offset); // s1
|
|
328
|
-
padding-bottom: (govuk-spacing(2) - $govuk-border-width-form-element - ($button-shadow-size / 2) - $offset + 1); // s1
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
.govuk-button__start-icon {
|
|
332
|
-
margin-top: -3px;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
260
|
}
|
|
261
|
+
|
|
262
|
+
/*# sourceMappingURL=_index.scss.map */
|
|
@@ -0,0 +1,318 @@
|
|
|
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 isInitialised($root, moduleName) {
|
|
78
|
+
return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Checks if GOV.UK Frontend is supported on this page
|
|
83
|
+
*
|
|
84
|
+
* Some browsers will load and run our JavaScript but GOV.UK Frontend
|
|
85
|
+
* won't be supported.
|
|
86
|
+
*
|
|
87
|
+
* @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
|
|
88
|
+
* @returns {boolean} Whether GOV.UK Frontend is supported on this page
|
|
89
|
+
*/
|
|
90
|
+
function isSupported($scope = document.body) {
|
|
91
|
+
if (!$scope) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return $scope.classList.contains('govuk-frontend-supported');
|
|
95
|
+
}
|
|
96
|
+
function isArray(option) {
|
|
97
|
+
return Array.isArray(option);
|
|
98
|
+
}
|
|
99
|
+
function isObject(option) {
|
|
100
|
+
return !!option && typeof option === 'object' && !isArray(option);
|
|
101
|
+
}
|
|
102
|
+
function formatErrorMessage(Component, message) {
|
|
103
|
+
return `${Component.moduleName}: ${message}`;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Schema for component config
|
|
108
|
+
*
|
|
109
|
+
* @typedef {object} Schema
|
|
110
|
+
* @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
|
|
111
|
+
* @property {SchemaCondition[]} [anyOf] - List of schema conditions
|
|
112
|
+
*/
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Schema property for component config
|
|
116
|
+
*
|
|
117
|
+
* @typedef {object} SchemaProperty
|
|
118
|
+
* @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Schema condition for component config
|
|
123
|
+
*
|
|
124
|
+
* @typedef {object} SchemaCondition
|
|
125
|
+
* @property {string[]} required - List of required config fields
|
|
126
|
+
* @property {string} errorMessage - Error message when required config fields not provided
|
|
127
|
+
*/
|
|
128
|
+
/**
|
|
129
|
+
* @typedef ComponentWithModuleName
|
|
130
|
+
* @property {string} moduleName - Name of the component
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
function normaliseDataset(Component, dataset) {
|
|
134
|
+
const out = {};
|
|
135
|
+
for (const [field, property] of Object.entries(Component.schema.properties)) {
|
|
136
|
+
if (field in dataset) {
|
|
137
|
+
out[field] = normaliseString(dataset[field], property);
|
|
138
|
+
}
|
|
139
|
+
if ((property == null ? void 0 : property.type) === 'object') {
|
|
140
|
+
out[field] = extractConfigByNamespace(Component, dataset, field);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
class GOVUKFrontendError extends Error {
|
|
147
|
+
constructor(...args) {
|
|
148
|
+
super(...args);
|
|
149
|
+
this.name = 'GOVUKFrontendError';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
class SupportError extends GOVUKFrontendError {
|
|
153
|
+
/**
|
|
154
|
+
* Checks if GOV.UK Frontend is supported on this page
|
|
155
|
+
*
|
|
156
|
+
* @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
|
|
157
|
+
*/
|
|
158
|
+
constructor($scope = document.body) {
|
|
159
|
+
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';
|
|
160
|
+
super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
|
|
161
|
+
this.name = 'SupportError';
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
class ElementError extends GOVUKFrontendError {
|
|
165
|
+
constructor(messageOrOptions) {
|
|
166
|
+
let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
|
|
167
|
+
if (typeof messageOrOptions === 'object') {
|
|
168
|
+
const {
|
|
169
|
+
component,
|
|
170
|
+
identifier,
|
|
171
|
+
element,
|
|
172
|
+
expectedType
|
|
173
|
+
} = messageOrOptions;
|
|
174
|
+
message = identifier;
|
|
175
|
+
message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
|
|
176
|
+
message = formatErrorMessage(component, message);
|
|
177
|
+
}
|
|
178
|
+
super(message);
|
|
179
|
+
this.name = 'ElementError';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
class InitError extends GOVUKFrontendError {
|
|
183
|
+
constructor(componentOrMessage) {
|
|
184
|
+
const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
|
|
185
|
+
super(message);
|
|
186
|
+
this.name = 'InitError';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
class GOVUKFrontendComponent {
|
|
194
|
+
/**
|
|
195
|
+
* Returns the root element of the component
|
|
196
|
+
*
|
|
197
|
+
* @protected
|
|
198
|
+
* @returns {RootElementType} - the root element of component
|
|
199
|
+
*/
|
|
200
|
+
get $root() {
|
|
201
|
+
return this._$root;
|
|
202
|
+
}
|
|
203
|
+
constructor($root) {
|
|
204
|
+
this._$root = void 0;
|
|
205
|
+
const childConstructor = this.constructor;
|
|
206
|
+
if (typeof childConstructor.moduleName !== 'string') {
|
|
207
|
+
throw new InitError(`\`moduleName\` not defined in component`);
|
|
208
|
+
}
|
|
209
|
+
if (!($root instanceof childConstructor.elementType)) {
|
|
210
|
+
throw new ElementError({
|
|
211
|
+
element: $root,
|
|
212
|
+
component: childConstructor,
|
|
213
|
+
identifier: 'Root element (`$root`)',
|
|
214
|
+
expectedType: childConstructor.elementType.name
|
|
215
|
+
});
|
|
216
|
+
} else {
|
|
217
|
+
this._$root = $root;
|
|
218
|
+
}
|
|
219
|
+
childConstructor.checkSupport();
|
|
220
|
+
this.checkInitialised();
|
|
221
|
+
const moduleName = childConstructor.moduleName;
|
|
222
|
+
this.$root.setAttribute(`data-${moduleName}-init`, '');
|
|
223
|
+
}
|
|
224
|
+
checkInitialised() {
|
|
225
|
+
const constructor = this.constructor;
|
|
226
|
+
const moduleName = constructor.moduleName;
|
|
227
|
+
if (moduleName && isInitialised(this.$root, moduleName)) {
|
|
228
|
+
throw new InitError(constructor);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
static checkSupport() {
|
|
232
|
+
if (!isSupported()) {
|
|
233
|
+
throw new SupportError();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* @typedef ChildClass
|
|
240
|
+
* @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
|
|
241
|
+
*/
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
|
|
245
|
+
*/
|
|
246
|
+
GOVUKFrontendComponent.elementType = HTMLElement;
|
|
247
|
+
|
|
248
|
+
const DEBOUNCE_TIMEOUT_IN_SECONDS = 1;
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* JavaScript enhancements for the Button component
|
|
252
|
+
*
|
|
253
|
+
* @preserve
|
|
254
|
+
*/
|
|
255
|
+
class Button extends GOVUKFrontendComponent {
|
|
256
|
+
/**
|
|
257
|
+
* @param {Element | null} $root - HTML element to use for button
|
|
258
|
+
* @param {ButtonConfig} [config] - Button config
|
|
259
|
+
*/
|
|
260
|
+
constructor($root, config = {}) {
|
|
261
|
+
super($root);
|
|
262
|
+
this.config = void 0;
|
|
263
|
+
this.debounceFormSubmitTimer = null;
|
|
264
|
+
this.config = mergeConfigs(Button.defaults, config, normaliseDataset(Button, this.$root.dataset));
|
|
265
|
+
this.$root.addEventListener('keydown', event => this.handleKeyDown(event));
|
|
266
|
+
this.$root.addEventListener('click', event => this.debounce(event));
|
|
267
|
+
}
|
|
268
|
+
handleKeyDown(event) {
|
|
269
|
+
const $target = event.target;
|
|
270
|
+
if (event.key !== ' ') {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
if ($target instanceof HTMLElement && $target.getAttribute('role') === 'button') {
|
|
274
|
+
event.preventDefault();
|
|
275
|
+
$target.click();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
debounce(event) {
|
|
279
|
+
if (!this.config.preventDoubleClick) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (this.debounceFormSubmitTimer) {
|
|
283
|
+
event.preventDefault();
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
this.debounceFormSubmitTimer = window.setTimeout(() => {
|
|
287
|
+
this.debounceFormSubmitTimer = null;
|
|
288
|
+
}, DEBOUNCE_TIMEOUT_IN_SECONDS * 1000);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Button config
|
|
294
|
+
*
|
|
295
|
+
* @typedef {object} ButtonConfig
|
|
296
|
+
* @property {boolean} [preventDoubleClick=false] - Prevent accidental double
|
|
297
|
+
* clicks on submit buttons from submitting forms multiple times.
|
|
298
|
+
*/
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* @typedef {import('../../common/index.mjs').Schema} Schema
|
|
302
|
+
*/
|
|
303
|
+
Button.moduleName = 'govuk-button';
|
|
304
|
+
Button.defaults = Object.freeze({
|
|
305
|
+
preventDoubleClick: false
|
|
306
|
+
});
|
|
307
|
+
Button.schema = Object.freeze({
|
|
308
|
+
properties: {
|
|
309
|
+
preventDoubleClick: {
|
|
310
|
+
type: 'boolean'
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
exports.Button = Button;
|
|
316
|
+
|
|
317
|
+
}));
|
|
318
|
+
//# sourceMappingURL=button.bundle.js.map
|