govuk_publishing_components 35.3.3 → 35.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +4 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +1 -1
- data/app/assets/stylesheets/component_guide/application.scss +37 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +10 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +0 -24
- data/app/views/govuk_publishing_components/component_guide/example.html.erb +1 -1
- data/app/views/govuk_publishing_components/component_guide/preview.html.erb +1 -1
- data/app/views/govuk_publishing_components/component_guide/show.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +2 -2
- data/app/views/govuk_publishing_components/components/_metadata.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_share_links.html.erb +6 -2
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_related.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/docs/metadata.yml +1 -3
- data/app/views/govuk_publishing_components/components/docs/organisation_logo.yml +5 -5
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_related.yml +1 -0
- data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +1 -1
- data/app/views/layouts/govuk_publishing_components/application.html.erb +1 -0
- data/config/locales/en.yml +2 -2
- data/lib/govuk_publishing_components/app_helpers/asset_helper.rb +4 -0
- data/lib/govuk_publishing_components/presenters/breadcrumbs_helper.rb +1 -1
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/axe-core/axe.d.ts +77 -6
- data/node_modules/axe-core/axe.js +955 -600
- data/node_modules/axe-core/axe.min.js +2 -2
- data/node_modules/axe-core/locales/_template.json +6 -6
- data/node_modules/axe-core/locales/ja.json +91 -11
- data/node_modules/axe-core/package.json +5 -5
- data/node_modules/axe-core/sri-history.json +4 -0
- data/node_modules/govuk-frontend/README.md +4 -5
- data/node_modules/govuk-frontend/govuk/all-ie8.scss +8 -0
- data/node_modules/govuk-frontend/govuk/all.js +738 -258
- data/node_modules/govuk-frontend/govuk/all.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +11 -7
- data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/common/govuk-frontend-version.js +17 -0
- data/node_modules/govuk-frontend/govuk/common/govuk-frontend-version.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/common/index.js +16 -4
- data/node_modules/govuk-frontend/govuk/common/index.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +20 -10
- data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/common.js +16 -4
- data/node_modules/govuk-frontend/govuk/common.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +3 -3
- data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +234 -86
- data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +32 -13
- data/node_modules/govuk-frontend/govuk/components/accordion/macro-options.json +8 -2
- data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/back-link/_index.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/back-link/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/back-link/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/fixtures.json +12 -12
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/button/_index.scss +8 -6
- data/node_modules/govuk-frontend/govuk/components/button/button.js +54 -19
- data/node_modules/govuk-frontend/govuk/components/button/button.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/button/fixtures.json +11 -1
- data/node_modules/govuk-frontend/govuk/components/button/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/button/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +170 -76
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/character-count/fixtures.json +24 -24
- data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +3 -3
- data/node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss +6 -6
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +75 -24
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/checkboxes/fixtures.json +47 -47
- data/node_modules/govuk-frontend/govuk/components/checkboxes/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/checkboxes/template.njk +3 -3
- data/node_modules/govuk-frontend/govuk/components/cookie-banner/fixtures.json +24 -24
- data/node_modules/govuk-frontend/govuk/components/cookie-banner/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/date-input/fixtures.json +26 -26
- data/node_modules/govuk-frontend/govuk/components/date-input/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/date-input/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/details/details.js +39 -13
- data/node_modules/govuk-frontend/govuk/components/details/details.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/details/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/details/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/error-message/fixtures.json +10 -10
- data/node_modules/govuk-frontend/govuk/components/error-message/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +67 -27
- data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/error-summary/fixtures.json +19 -19
- data/node_modules/govuk-frontend/govuk/components/error-summary/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/fieldset/fixtures.json +19 -19
- data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/file-upload/_index.scss +6 -1
- data/node_modules/govuk-frontend/govuk/components/file-upload/fixtures.json +14 -14
- data/node_modules/govuk-frontend/govuk/components/file-upload/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/file-upload/template.njk +2 -1
- data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +0 -7
- data/node_modules/govuk-frontend/govuk/components/footer/fixtures.json +24 -24
- data/node_modules/govuk-frontend/govuk/components/footer/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/header/fixtures.json +22 -22
- data/node_modules/govuk-frontend/govuk/components/header/header.js +46 -14
- data/node_modules/govuk-frontend/govuk/components/header/header.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/header/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/hint/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/hint/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/input/_index.scss +15 -3
- data/node_modules/govuk-frontend/govuk/components/input/fixtures.json +54 -41
- data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/input/template.njk +2 -1
- data/node_modules/govuk-frontend/govuk/components/inset-text/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/inset-text/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/label/fixtures.json +6 -6
- data/node_modules/govuk-frontend/govuk/components/label/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/notification-banner/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/notification-banner/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +49 -22
- data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/pagination/fixtures.json +16 -16
- data/node_modules/govuk-frontend/govuk/components/pagination/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/panel/fixtures.json +10 -10
- data/node_modules/govuk-frontend/govuk/components/panel/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/phase-banner/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/radios/_index.scss +5 -5
- data/node_modules/govuk-frontend/govuk/components/radios/fixtures.json +46 -46
- data/node_modules/govuk-frontend/govuk/components/radios/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/radios/radios.js +65 -22
- data/node_modules/govuk-frontend/govuk/components/radios/radios.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/radios/template.njk +2 -2
- data/node_modules/govuk-frontend/govuk/components/select/_index.scss +7 -1
- data/node_modules/govuk-frontend/govuk/components/select/fixtures.json +19 -20
- data/node_modules/govuk-frontend/govuk/components/select/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/select/template.njk +5 -2
- data/node_modules/govuk-frontend/govuk/components/skip-link/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/skip-link/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +41 -13
- data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +34 -34
- data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/table/fixtures.json +21 -21
- data/node_modules/govuk-frontend/govuk/components/table/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/tabs/fixtures.json +15 -15
- data/node_modules/govuk-frontend/govuk/components/tabs/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +178 -60
- data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/components/tabs/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/tag/_index.scss +18 -18
- data/node_modules/govuk-frontend/govuk/components/tag/fixtures.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/tag/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/textarea/_index.scss +8 -1
- data/node_modules/govuk-frontend/govuk/components/textarea/fixtures.json +18 -18
- data/node_modules/govuk-frontend/govuk/components/textarea/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/textarea/template.njk +2 -1
- data/node_modules/govuk-frontend/govuk/components/warning-text/fixtures.json +9 -5
- data/node_modules/govuk-frontend/govuk/components/warning-text/macro-options.json +3 -3
- data/node_modules/govuk-frontend/govuk/components/warning-text/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/core/_all.scss +1 -0
- data/node_modules/govuk-frontend/govuk/core/_govuk-frontend-version.scss +5 -0
- data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +5 -2
- data/node_modules/govuk-frontend/govuk/helpers/_focused.scss +1 -1
- data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +1 -1
- data/node_modules/govuk-frontend/govuk/i18n.js +38 -30
- data/node_modules/govuk-frontend/govuk/i18n.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/macros/i18n.njk +12 -11
- data/node_modules/govuk-frontend/govuk/objects/_width-container.scss +1 -1
- data/node_modules/govuk-frontend/govuk/settings/_colours-organisations.scss +4 -0
- data/node_modules/govuk-frontend/govuk/settings/_ie8.scss +16 -0
- data/node_modules/govuk-frontend/govuk/settings/_links.scss +5 -1
- data/node_modules/govuk-frontend/govuk/tools/_ie8.scss +38 -2
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +10 -3
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +4 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +13 -7
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +8 -2
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +8 -2
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +4 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +10 -3
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +4 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +3 -2
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js.map +1 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +2 -1
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js.map +1 -1
- data/node_modules/govuk-frontend/govuk-esm/all.mjs +81 -60
- data/node_modules/govuk-frontend/govuk-esm/all.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/common/closest-attribute-value.mjs +12 -8
- data/node_modules/govuk-frontend/govuk-esm/common/closest-attribute-value.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/common/govuk-frontend-version.mjs +9 -0
- data/node_modules/govuk-frontend/govuk-esm/common/govuk-frontend-version.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/common/index.mjs +44 -29
- data/node_modules/govuk-frontend/govuk-esm/common/index.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/common/normalise-dataset.mjs +15 -9
- data/node_modules/govuk-frontend/govuk-esm/common/normalise-dataset.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/common.mjs +3 -5
- data/node_modules/govuk-frontend/govuk-esm/common.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +319 -211
- data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs +47 -30
- data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs +169 -115
- data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs +88 -51
- data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +64 -54
- data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs +69 -50
- data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +59 -35
- data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs +36 -25
- data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs +67 -38
- data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs +49 -32
- data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs +263 -163
- data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/i18n.mjs +68 -57
- data/node_modules/govuk-frontend/govuk-esm/i18n.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/DOMTokenList.mjs +5 -3
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/DOMTokenList.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Date/now.mjs +4 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Date/now.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Document.mjs +4 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Document.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/classList.mjs +7 -4
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/classList.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/closest.mjs +5 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/closest.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/dataset.mjs +13 -10
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/dataset.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/matches.mjs +4 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/matches.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/nextElementSibling.mjs +6 -3
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/nextElementSibling.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/previousElementSibling.mjs +6 -3
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/previousElementSibling.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element.mjs +5 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Event.mjs +7 -4
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Event.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Function/prototype/bind.mjs +5 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Function/prototype/bind.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Object/defineProperty.mjs +4 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Object/defineProperty.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/String/prototype/trim.mjs +5 -3
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/String/prototype/trim.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Window.mjs +4 -2
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Window.mjs.map +1 -0
- data/node_modules/govuk-frontend/govuk-prototype-kit/init.js +1 -0
- data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +2 -1
- data/node_modules/govuk-frontend/package.json +3 -2
- metadata +44 -7
- /data/app/assets/images/govuk_publishing_components/crests/{dit_crest_13px.png → dbt_crest_13px.png} +0 -0
- /data/app/assets/images/govuk_publishing_components/crests/{dit_crest_13px_x2.png → dbt_crest_13px_x2.png} +0 -0
- /data/app/assets/images/govuk_publishing_components/crests/{dit_crest_18px.png → dbt_crest_18px.png} +0 -0
- /data/app/assets/images/govuk_publishing_components/crests/{dit_crest_18px_x2.png → dbt_crest_18px_x2.png} +0 -0
@@ -1,19 +1,31 @@
|
|
1
|
-
|
1
|
+
import { nodeListForEach } from '../../common/index.mjs';
|
2
|
+
import '../../vendor/polyfills/Element/prototype/classList.mjs';
|
3
|
+
import '../../vendor/polyfills/Event.mjs';
|
4
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs';
|
2
5
|
|
3
|
-
|
4
|
-
import '../../vendor/polyfills/Element/prototype/classList.mjs'
|
5
|
-
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
6
|
-
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
6
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
7
7
|
|
8
8
|
/**
|
9
9
|
* Radios component
|
10
10
|
*
|
11
11
|
* @class
|
12
|
-
* @param {
|
12
|
+
* @param {Element} $module - HTML element to use for radios
|
13
13
|
*/
|
14
14
|
function Radios ($module) {
|
15
|
-
|
16
|
-
|
15
|
+
if (!($module instanceof HTMLElement)) {
|
16
|
+
return this
|
17
|
+
}
|
18
|
+
|
19
|
+
var $inputs = $module.querySelectorAll('input[type="radio"]');
|
20
|
+
if (!$inputs.length) {
|
21
|
+
return this
|
22
|
+
}
|
23
|
+
|
24
|
+
/** @deprecated Will be made private in v5.0 */
|
25
|
+
this.$module = $module;
|
26
|
+
|
27
|
+
/** @deprecated Will be made private in v5.0 */
|
28
|
+
this.$inputs = $inputs;
|
17
29
|
}
|
18
30
|
|
19
31
|
/**
|
@@ -31,11 +43,16 @@ function Radios ($module) {
|
|
31
43
|
* the reveal in sync with the radio state.
|
32
44
|
*/
|
33
45
|
Radios.prototype.init = function () {
|
34
|
-
|
35
|
-
|
46
|
+
// Check that required elements are present
|
47
|
+
if (!this.$module || !this.$inputs) {
|
48
|
+
return
|
49
|
+
}
|
50
|
+
|
51
|
+
var $module = this.$module;
|
52
|
+
var $inputs = this.$inputs;
|
36
53
|
|
37
54
|
nodeListForEach($inputs, function ($input) {
|
38
|
-
var targetId = $input.getAttribute('data-aria-controls')
|
55
|
+
var targetId = $input.getAttribute('data-aria-controls');
|
39
56
|
|
40
57
|
// Skip radios without data-aria-controls attributes, or where the
|
41
58
|
// target element does not exist.
|
@@ -45,35 +62,36 @@ Radios.prototype.init = function () {
|
|
45
62
|
|
46
63
|
// Promote the data-aria-controls attribute to a aria-controls attribute
|
47
64
|
// so that the relationship is exposed in the AOM
|
48
|
-
$input.setAttribute('aria-controls', targetId)
|
49
|
-
$input.removeAttribute('data-aria-controls')
|
50
|
-
})
|
65
|
+
$input.setAttribute('aria-controls', targetId);
|
66
|
+
$input.removeAttribute('data-aria-controls');
|
67
|
+
});
|
51
68
|
|
52
69
|
// When the page is restored after navigating 'back' in some browsers the
|
53
70
|
// state of form controls is not restored until *after* the DOMContentLoaded
|
54
71
|
// event is fired, so we need to sync after the pageshow event in browsers
|
55
72
|
// that support it.
|
56
|
-
|
57
|
-
window
|
58
|
-
|
59
|
-
|
60
|
-
}
|
73
|
+
window.addEventListener(
|
74
|
+
'onpageshow' in window ? 'pageshow' : 'DOMContentLoaded',
|
75
|
+
this.syncAllConditionalReveals.bind(this)
|
76
|
+
);
|
61
77
|
|
62
78
|
// Although we've set up handlers to sync state on the pageshow or
|
63
79
|
// DOMContentLoaded event, init could be called after those events have fired,
|
64
80
|
// for example if they are added to the page dynamically, so sync now too.
|
65
|
-
this.syncAllConditionalReveals()
|
81
|
+
this.syncAllConditionalReveals();
|
66
82
|
|
67
83
|
// Handle events
|
68
|
-
$module.addEventListener('click', this.handleClick.bind(this))
|
69
|
-
}
|
84
|
+
$module.addEventListener('click', this.handleClick.bind(this));
|
85
|
+
};
|
70
86
|
|
71
87
|
/**
|
72
88
|
* Sync the conditional reveal states for all radio buttons in this $module.
|
89
|
+
*
|
90
|
+
* @deprecated Will be made private in v5.0
|
73
91
|
*/
|
74
92
|
Radios.prototype.syncAllConditionalReveals = function () {
|
75
|
-
nodeListForEach(this.$inputs, this.syncConditionalRevealWithInputState.bind(this))
|
76
|
-
}
|
93
|
+
nodeListForEach(this.$inputs, this.syncConditionalRevealWithInputState.bind(this));
|
94
|
+
};
|
77
95
|
|
78
96
|
/**
|
79
97
|
* Sync conditional reveal with the input state
|
@@ -81,18 +99,23 @@ Radios.prototype.syncAllConditionalReveals = function () {
|
|
81
99
|
* Synchronise the visibility of the conditional reveal, and its accessible
|
82
100
|
* state, with the input's checked state.
|
83
101
|
*
|
102
|
+
* @deprecated Will be made private in v5.0
|
84
103
|
* @param {HTMLInputElement} $input - Radio input
|
85
104
|
*/
|
86
105
|
Radios.prototype.syncConditionalRevealWithInputState = function ($input) {
|
87
|
-
var
|
106
|
+
var targetId = $input.getAttribute('aria-controls');
|
107
|
+
if (!targetId) {
|
108
|
+
return
|
109
|
+
}
|
88
110
|
|
111
|
+
var $target = document.getElementById(targetId);
|
89
112
|
if ($target && $target.classList.contains('govuk-radios__conditional')) {
|
90
|
-
var inputIsChecked = $input.checked
|
113
|
+
var inputIsChecked = $input.checked;
|
91
114
|
|
92
|
-
$input.setAttribute('aria-expanded', inputIsChecked)
|
93
|
-
$target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked)
|
115
|
+
$input.setAttribute('aria-expanded', inputIsChecked.toString());
|
116
|
+
$target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked);
|
94
117
|
}
|
95
|
-
}
|
118
|
+
};
|
96
119
|
|
97
120
|
/**
|
98
121
|
* Click event handler
|
@@ -102,28 +125,34 @@ Radios.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
102
125
|
* with the same name (because checking one radio could have un-checked a radio
|
103
126
|
* in another $module)
|
104
127
|
*
|
128
|
+
* @deprecated Will be made private in v5.0
|
105
129
|
* @param {MouseEvent} event - Click event
|
106
130
|
*/
|
107
131
|
Radios.prototype.handleClick = function (event) {
|
108
|
-
var $
|
132
|
+
var $component = this;
|
133
|
+
var $clickedInput = event.target;
|
109
134
|
|
110
135
|
// Ignore clicks on things that aren't radio buttons
|
111
|
-
if ($clickedInput.type !== 'radio') {
|
136
|
+
if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {
|
112
137
|
return
|
113
138
|
}
|
114
139
|
|
115
140
|
// We only need to consider radios with conditional reveals, which will have
|
116
141
|
// aria-controls attributes.
|
117
|
-
var $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]')
|
142
|
+
var $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]');
|
143
|
+
|
144
|
+
var $clickedInputForm = $clickedInput.form;
|
145
|
+
var $clickedInputName = $clickedInput.name;
|
118
146
|
|
119
147
|
nodeListForEach($allInputs, function ($input) {
|
120
|
-
var hasSameFormOwner =
|
121
|
-
var hasSameName =
|
148
|
+
var hasSameFormOwner = $input.form === $clickedInputForm;
|
149
|
+
var hasSameName = $input.name === $clickedInputName;
|
122
150
|
|
123
151
|
if (hasSameName && hasSameFormOwner) {
|
124
|
-
|
152
|
+
$component.syncConditionalRevealWithInputState($input);
|
125
153
|
}
|
126
|
-
}
|
127
|
-
}
|
154
|
+
});
|
155
|
+
};
|
128
156
|
|
129
|
-
export default Radios
|
157
|
+
export default Radios;
|
158
|
+
//# sourceMappingURL=components/radios/radios.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"radios.mjs","sources":["../../../../src/govuk/components/radios/radios.mjs"],"sourcesContent":["/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */\n\nimport { nodeListForEach } from '../../common/index.mjs'\nimport '../../vendor/polyfills/Element/prototype/classList.mjs'\nimport '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded\nimport '../../vendor/polyfills/Function/prototype/bind.mjs'\n\n/**\n * Radios component\n *\n * @class\n * @param {Element} $module - HTML element to use for radios\n */\nfunction Radios ($module) {\n if (!($module instanceof HTMLElement)) {\n return this\n }\n\n var $inputs = $module.querySelectorAll('input[type=\"radio\"]')\n if (!$inputs.length) {\n return this\n }\n\n /** @deprecated Will be made private in v5.0 */\n this.$module = $module\n\n /** @deprecated Will be made private in v5.0 */\n this.$inputs = $inputs\n}\n\n/**\n * Initialise component\n *\n * Radios can be associated with a 'conditionally revealed' content block – for\n * example, a radio for 'Phone' could reveal an additional form field for the\n * user to enter their phone number.\n *\n * These associations are made using a `data-aria-controls` attribute, which is\n * promoted to an aria-controls attribute during initialisation.\n *\n * We also need to restore the state of any conditional reveals on the page (for\n * example if the user has navigated back), and set up event handlers to keep\n * the reveal in sync with the radio state.\n */\nRadios.prototype.init = function () {\n // Check that required elements are present\n if (!this.$module || !this.$inputs) {\n return\n }\n\n var $module = this.$module\n var $inputs = this.$inputs\n\n nodeListForEach($inputs, function ($input) {\n var targetId = $input.getAttribute('data-aria-controls')\n\n // Skip radios without data-aria-controls attributes, or where the\n // target element does not exist.\n if (!targetId || !document.getElementById(targetId)) {\n return\n }\n\n // Promote the data-aria-controls attribute to a aria-controls attribute\n // so that the relationship is exposed in the AOM\n $input.setAttribute('aria-controls', targetId)\n $input.removeAttribute('data-aria-controls')\n })\n\n // When the page is restored after navigating 'back' in some browsers the\n // state of form controls is not restored until *after* the DOMContentLoaded\n // event is fired, so we need to sync after the pageshow event in browsers\n // that support it.\n window.addEventListener(\n 'onpageshow' in window ? 'pageshow' : 'DOMContentLoaded',\n this.syncAllConditionalReveals.bind(this)\n )\n\n // Although we've set up handlers to sync state on the pageshow or\n // DOMContentLoaded event, init could be called after those events have fired,\n // for example if they are added to the page dynamically, so sync now too.\n this.syncAllConditionalReveals()\n\n // Handle events\n $module.addEventListener('click', this.handleClick.bind(this))\n}\n\n/**\n * Sync the conditional reveal states for all radio buttons in this $module.\n *\n * @deprecated Will be made private in v5.0\n */\nRadios.prototype.syncAllConditionalReveals = function () {\n nodeListForEach(this.$inputs, this.syncConditionalRevealWithInputState.bind(this))\n}\n\n/**\n * Sync conditional reveal with the input state\n *\n * Synchronise the visibility of the conditional reveal, and its accessible\n * state, with the input's checked state.\n *\n * @deprecated Will be made private in v5.0\n * @param {HTMLInputElement} $input - Radio input\n */\nRadios.prototype.syncConditionalRevealWithInputState = function ($input) {\n var targetId = $input.getAttribute('aria-controls')\n if (!targetId) {\n return\n }\n\n var $target = document.getElementById(targetId)\n if ($target && $target.classList.contains('govuk-radios__conditional')) {\n var inputIsChecked = $input.checked\n\n $input.setAttribute('aria-expanded', inputIsChecked.toString())\n $target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked)\n }\n}\n\n/**\n * Click event handler\n *\n * Handle a click within the $module – if the click occurred on a radio, sync\n * the state of the conditional reveal for all radio buttons in the same form\n * with the same name (because checking one radio could have un-checked a radio\n * in another $module)\n *\n * @deprecated Will be made private in v5.0\n * @param {MouseEvent} event - Click event\n */\nRadios.prototype.handleClick = function (event) {\n var $component = this\n var $clickedInput = event.target\n\n // Ignore clicks on things that aren't radio buttons\n if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {\n return\n }\n\n // We only need to consider radios with conditional reveals, which will have\n // aria-controls attributes.\n var $allInputs = document.querySelectorAll('input[type=\"radio\"][aria-controls]')\n\n var $clickedInputForm = $clickedInput.form\n var $clickedInputName = $clickedInput.name\n\n nodeListForEach($allInputs, function ($input) {\n var hasSameFormOwner = $input.form === $clickedInputForm\n var hasSameName = $input.name === $clickedInputName\n\n if (hasSameName && hasSameFormOwner) {\n $component.syncConditionalRevealWithInputState($input)\n }\n })\n}\n\nexport default Radios\n"],"names":[],"mappings":"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"}
|
@@ -1,86 +1,101 @@
|
|
1
|
-
|
1
|
+
import '../../vendor/polyfills/Element/prototype/classList.mjs';
|
2
|
+
import '../../vendor/polyfills/Event.mjs';
|
3
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs';
|
2
4
|
|
3
|
-
|
4
|
-
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
5
|
-
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
5
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
6
6
|
|
7
7
|
/**
|
8
8
|
* Skip link component
|
9
9
|
*
|
10
10
|
* @class
|
11
|
-
* @param {
|
11
|
+
* @param {Element} $module - HTML element to use for skip link
|
12
12
|
*/
|
13
13
|
function SkipLink ($module) {
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
if (!($module instanceof HTMLAnchorElement)) {
|
15
|
+
return this
|
16
|
+
}
|
17
|
+
|
18
|
+
/** @deprecated Will be made private in v5.0 */
|
19
|
+
this.$module = $module;
|
20
|
+
|
21
|
+
/** @deprecated Will be made private in v5.0 */
|
22
|
+
this.$linkedElement = null;
|
23
|
+
|
24
|
+
/** @deprecated Will be made private in v5.0 */
|
25
|
+
this.linkedElementListener = false;
|
17
26
|
}
|
18
27
|
|
19
28
|
/**
|
20
29
|
* Initialise component
|
21
30
|
*/
|
22
31
|
SkipLink.prototype.init = function () {
|
23
|
-
// Check
|
32
|
+
// Check that required elements are present
|
24
33
|
if (!this.$module) {
|
25
34
|
return
|
26
35
|
}
|
27
36
|
|
28
37
|
// Check for linked element
|
29
|
-
|
30
|
-
if (
|
38
|
+
var $linkedElement = this.getLinkedElement();
|
39
|
+
if (!$linkedElement) {
|
31
40
|
return
|
32
41
|
}
|
33
42
|
|
34
|
-
this.$
|
35
|
-
|
43
|
+
this.$linkedElement = $linkedElement;
|
44
|
+
this.$module.addEventListener('click', this.focusLinkedElement.bind(this));
|
45
|
+
};
|
36
46
|
|
37
47
|
/**
|
38
48
|
* Get linked element
|
39
49
|
*
|
40
|
-
* @
|
50
|
+
* @deprecated Will be made private in v5.0
|
51
|
+
* @returns {HTMLElement | null} $linkedElement - DOM element linked to from the skip link
|
41
52
|
*/
|
42
53
|
SkipLink.prototype.getLinkedElement = function () {
|
43
|
-
var linkedElementId = this.getFragmentFromUrl()
|
44
|
-
|
54
|
+
var linkedElementId = this.getFragmentFromUrl();
|
45
55
|
if (!linkedElementId) {
|
46
|
-
return
|
56
|
+
return null
|
47
57
|
}
|
48
58
|
|
49
59
|
return document.getElementById(linkedElementId)
|
50
|
-
}
|
60
|
+
};
|
51
61
|
|
52
62
|
/**
|
53
63
|
* Focus the linked element
|
54
64
|
*
|
55
65
|
* Set tabindex and helper CSS class. Set listener to remove them on blur.
|
66
|
+
*
|
67
|
+
* @deprecated Will be made private in v5.0
|
56
68
|
*/
|
57
69
|
SkipLink.prototype.focusLinkedElement = function () {
|
58
|
-
var $linkedElement = this.$linkedElement
|
70
|
+
var $linkedElement = this.$linkedElement;
|
59
71
|
|
60
72
|
if (!$linkedElement.getAttribute('tabindex')) {
|
61
73
|
// Set the element tabindex to -1 so it can be focused with JavaScript.
|
62
|
-
$linkedElement.setAttribute('tabindex', '-1')
|
63
|
-
$linkedElement.classList.add('govuk-skip-link-focused-element')
|
74
|
+
$linkedElement.setAttribute('tabindex', '-1');
|
75
|
+
$linkedElement.classList.add('govuk-skip-link-focused-element');
|
64
76
|
|
65
77
|
// Add listener for blur on the focused element (unless the listener has previously been added)
|
66
78
|
if (!this.linkedElementListener) {
|
67
|
-
this.$linkedElement.addEventListener('blur', this.removeFocusProperties.bind(this))
|
68
|
-
this.linkedElementListener = true
|
79
|
+
this.$linkedElement.addEventListener('blur', this.removeFocusProperties.bind(this));
|
80
|
+
this.linkedElementListener = true;
|
69
81
|
}
|
70
82
|
}
|
71
|
-
|
72
|
-
|
83
|
+
|
84
|
+
$linkedElement.focus();
|
85
|
+
};
|
73
86
|
|
74
87
|
/**
|
75
88
|
* Remove the tabindex that makes the linked element focusable because the element only needs to be
|
76
89
|
* focusable until it has received programmatic focus and a screen reader has announced it.
|
77
90
|
*
|
78
91
|
* Remove the CSS class that removes the native focus styles.
|
92
|
+
*
|
93
|
+
* @deprecated Will be made private in v5.0
|
79
94
|
*/
|
80
95
|
SkipLink.prototype.removeFocusProperties = function () {
|
81
|
-
this.$linkedElement.removeAttribute('tabindex')
|
82
|
-
this.$linkedElement.classList.remove('govuk-skip-link-focused-element')
|
83
|
-
}
|
96
|
+
this.$linkedElement.removeAttribute('tabindex');
|
97
|
+
this.$linkedElement.classList.remove('govuk-skip-link-focused-element');
|
98
|
+
};
|
84
99
|
|
85
100
|
/**
|
86
101
|
* Get fragment from URL
|
@@ -88,15 +103,17 @@ SkipLink.prototype.removeFocusProperties = function () {
|
|
88
103
|
* Extract the fragment (everything after the hash symbol) from a URL, but not including
|
89
104
|
* the symbol.
|
90
105
|
*
|
91
|
-
* @
|
106
|
+
* @deprecated Will be made private in v5.0
|
107
|
+
* @returns {string | undefined} Fragment from URL, without the hash symbol
|
92
108
|
*/
|
93
109
|
SkipLink.prototype.getFragmentFromUrl = function () {
|
94
110
|
// Bail if the anchor link doesn't have a hash
|
95
111
|
if (!this.$module.hash) {
|
96
|
-
return
|
112
|
+
return
|
97
113
|
}
|
98
114
|
|
99
115
|
return this.$module.hash.split('#').pop()
|
100
|
-
}
|
116
|
+
};
|
101
117
|
|
102
|
-
export default SkipLink
|
118
|
+
export default SkipLink;
|
119
|
+
//# sourceMappingURL=components/skip-link/skip-link.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"skip-link.mjs","sources":["../../../../src/govuk/components/skip-link/skip-link.mjs"],"sourcesContent":["/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */\n\nimport '../../vendor/polyfills/Element/prototype/classList.mjs'\nimport '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded\nimport '../../vendor/polyfills/Function/prototype/bind.mjs'\n\n/**\n * Skip link component\n *\n * @class\n * @param {Element} $module - HTML element to use for skip link\n */\nfunction SkipLink ($module) {\n if (!($module instanceof HTMLAnchorElement)) {\n return this\n }\n\n /** @deprecated Will be made private in v5.0 */\n this.$module = $module\n\n /** @deprecated Will be made private in v5.0 */\n this.$linkedElement = null\n\n /** @deprecated Will be made private in v5.0 */\n this.linkedElementListener = false\n}\n\n/**\n * Initialise component\n */\nSkipLink.prototype.init = function () {\n // Check that required elements are present\n if (!this.$module) {\n return\n }\n\n // Check for linked element\n var $linkedElement = this.getLinkedElement()\n if (!$linkedElement) {\n return\n }\n\n this.$linkedElement = $linkedElement\n this.$module.addEventListener('click', this.focusLinkedElement.bind(this))\n}\n\n/**\n * Get linked element\n *\n * @deprecated Will be made private in v5.0\n * @returns {HTMLElement | null} $linkedElement - DOM element linked to from the skip link\n */\nSkipLink.prototype.getLinkedElement = function () {\n var linkedElementId = this.getFragmentFromUrl()\n if (!linkedElementId) {\n return null\n }\n\n return document.getElementById(linkedElementId)\n}\n\n/**\n * Focus the linked element\n *\n * Set tabindex and helper CSS class. Set listener to remove them on blur.\n *\n * @deprecated Will be made private in v5.0\n */\nSkipLink.prototype.focusLinkedElement = function () {\n var $linkedElement = this.$linkedElement\n\n if (!$linkedElement.getAttribute('tabindex')) {\n // Set the element tabindex to -1 so it can be focused with JavaScript.\n $linkedElement.setAttribute('tabindex', '-1')\n $linkedElement.classList.add('govuk-skip-link-focused-element')\n\n // Add listener for blur on the focused element (unless the listener has previously been added)\n if (!this.linkedElementListener) {\n this.$linkedElement.addEventListener('blur', this.removeFocusProperties.bind(this))\n this.linkedElementListener = true\n }\n }\n\n $linkedElement.focus()\n}\n\n/**\n * Remove the tabindex that makes the linked element focusable because the element only needs to be\n * focusable until it has received programmatic focus and a screen reader has announced it.\n *\n * Remove the CSS class that removes the native focus styles.\n *\n * @deprecated Will be made private in v5.0\n */\nSkipLink.prototype.removeFocusProperties = function () {\n this.$linkedElement.removeAttribute('tabindex')\n this.$linkedElement.classList.remove('govuk-skip-link-focused-element')\n}\n\n/**\n * Get fragment from URL\n *\n * Extract the fragment (everything after the hash symbol) from a URL, but not including\n * the symbol.\n *\n * @deprecated Will be made private in v5.0\n * @returns {string | undefined} Fragment from URL, without the hash symbol\n */\nSkipLink.prototype.getFragmentFromUrl = function () {\n // Bail if the anchor link doesn't have a hash\n if (!this.$module.hash) {\n return\n }\n\n return this.$module.hash.split('#').pop()\n}\n\nexport default SkipLink\n"],"names":[],"mappings":";;;;AAAA;AACA,AAIA;;;;;;;AAOA,SAAS,QAAQ,EAAE,OAAO,EAAE;EAC1B,IAAI,EAAE,OAAO,YAAY,iBAAiB,CAAC,EAAE;IAC3C,OAAO,IAAI;GACZ;;;EAGD,IAAI,CAAC,OAAO,GAAG,QAAO;;;EAGtB,IAAI,CAAC,cAAc,GAAG,KAAI;;;EAG1B,IAAI,CAAC,qBAAqB,GAAG,MAAK;CACnC;;;;;AAKD,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;;EAEpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACjB,MAAM;GACP;;;EAGD,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,GAAE;EAC5C,IAAI,CAAC,cAAc,EAAE;IACnB,MAAM;GACP;;EAED,IAAI,CAAC,cAAc,GAAG,eAAc;EACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;EAC3E;;;;;;;;AAQD,QAAQ,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;EAChD,IAAI,eAAe,GAAG,IAAI,CAAC,kBAAkB,GAAE;EAC/C,IAAI,CAAC,eAAe,EAAE;IACpB,OAAO,IAAI;GACZ;;EAED,OAAO,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC;EAChD;;;;;;;;;AASD,QAAQ,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;EAClD,IAAI,cAAc,GAAG,IAAI,CAAC,eAAc;;EAExC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;;IAE5C,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAC;IAC7C,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,EAAC;;;IAG/D,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;MAC/B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;MACnF,IAAI,CAAC,qBAAqB,GAAG,KAAI;KAClC;GACF;;EAED,cAAc,CAAC,KAAK,GAAE;EACvB;;;;;;;;;;AAUD,QAAQ,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;EACrD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,EAAC;EAC/C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,EAAC;EACxE;;;;;;;;;;;AAWD,QAAQ,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;;EAElD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACtB,MAAM;GACP;;EAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;CAC1C;;;;"}
|