govuk_publishing_components 32.1.0 → 35.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/README.md +1 -0
- data/app/assets/config/govuk_publishing_components_manifest.js +75 -1
- data/app/assets/images/govuk_publishing_components/icon-search.svg +3 -0
- data/app/assets/images/govuk_publishing_components/youtube-play-icon.png +0 -0
- data/app/assets/images/govuk_publishing_components/youtube-play-icon.svg +4 -0
- data/app/assets/javascripts/component_guide/accessibility-test.js +0 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics/auto-scroll-tracker.js +2 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics/linked-domains.js +135 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-auto-tracker.js +49 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +341 -27
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-ecommerce-tracker.js +17 -92
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js +11 -23
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-form-tracker.js +121 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +86 -305
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-page-views.js +13 -6
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-schemas.js +31 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-smart-answer-results-tracker.js +57 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-specialist-link-tracker.js +131 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +9 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/pii-remover.js +4 -2
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +4 -0
- data/app/assets/javascripts/govuk_publishing_components/components/accordion.js +12 -1
- data/app/assets/javascripts/govuk_publishing_components/components/cookie-banner.js +2 -2
- data/app/assets/javascripts/govuk_publishing_components/components/image-card.js +19 -0
- data/app/assets/javascripts/govuk_publishing_components/components/layout-super-navigation-header.js +2 -81
- data/app/assets/javascripts/govuk_publishing_components/components/single-page-notification-button.js +24 -8
- data/app/assets/javascripts/govuk_publishing_components/components/step-by-step-nav.js +23 -1
- data/app/assets/javascripts/govuk_publishing_components/dependencies.js +13 -0
- data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js +3 -2
- data/app/assets/javascripts/govuk_publishing_components/lib/trigger-event.js +1 -0
- data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +116 -0
- data/app/assets/javascripts/govuk_publishing_components/modules.js +7 -2
- data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js +140 -191
- data/app/assets/stylesheets/govuk_publishing_components/_individual_component_support.scss +10 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss +29 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_action-link.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_attachment.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_back-link.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_big-number.scss +4 -5
- data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_button.scss +12 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_cards.scss +20 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_character-count.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_checkboxes.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +21 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_contextual-guidance.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_contextual-sidebar.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_cookie-banner.scss +7 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_date-input.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_details.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_devolved-nations.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +8 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_emergency-banner.scss +8 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_error-alert.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_error-message.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_error-summary.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_feedback.scss +17 -19
- data/app/assets/stylesheets/govuk_publishing_components/components/_fieldset.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_file-upload.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak-html-publication.scss +10 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak.scss +85 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_heading.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_hint.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +85 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_input.scss +6 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_inset-text.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_intervention.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_inverse-header.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_label.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-footer.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-for-public.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +253 -483
- data/app/assets/stylesheets/govuk_publishing_components/components/_lead-paragraph.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_modal-dialogue.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_notice.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_panel.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_phase-banner.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_previous-and-next-navigation.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_print-link.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_radio.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_related-navigation.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_reorderable-list.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +2 -7
- data/app/assets/stylesheets/govuk_publishing_components/components/_select.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_share-links.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_show-password.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_signup-link.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_single-page-notification-button.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_skip-link.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-header.scss +17 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-related.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav.scss +8 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_subscription-links.scss +2 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_success-alert.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_summary-list.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_table.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_tabs.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_textarea.scss +17 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_title.scss +12 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_translation-nav.scss +2 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_steps.scss +26 -9
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_tables.scss +12 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_contents-list-helper.scss +0 -1
- data/app/controllers/govuk_publishing_components/application_controller.rb +0 -13
- data/app/controllers/govuk_publishing_components/audit_controller.rb +1 -1
- data/app/controllers/govuk_publishing_components/component_guide_controller.rb +6 -9
- data/app/models/govuk_publishing_components/audit_applications.rb +10 -19
- data/app/models/govuk_publishing_components/audit_comparer.rb +29 -24
- data/app/models/govuk_publishing_components/audit_components.rb +157 -82
- data/app/models/govuk_publishing_components/component_doc.rb +14 -0
- data/app/models/govuk_publishing_components/component_wrapper_helper_options.rb +15 -0
- data/app/views/govuk_publishing_components/audit/_applications.html.erb +3 -3
- data/app/views/govuk_publishing_components/audit/_component_contents.html.erb +47 -39
- data/app/views/govuk_publishing_components/audit/_components.html.erb +47 -2
- data/app/views/govuk_publishing_components/component_guide/_application_stylesheet.html.erb +0 -3
- data/app/views/govuk_publishing_components/component_guide/index.html.erb +0 -7
- data/app/views/govuk_publishing_components/component_guide/show.html.erb +21 -6
- data/app/views/govuk_publishing_components/components/_accordion.html.erb +30 -36
- data/app/views/govuk_publishing_components/components/_action_link.html.erb +7 -2
- data/app/views/govuk_publishing_components/components/_attachment.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_attachment_link.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_back_link.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_big_number.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +8 -2
- data/app/views/govuk_publishing_components/components/_button.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_cards.html.erb +6 -4
- data/app/views/govuk_publishing_components/components/_character_count.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_checkboxes.html.erb +6 -2
- data/app/views/govuk_publishing_components/components/_contents_list.html.erb +11 -15
- data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +7 -4
- data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_contextual_guidance.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +13 -6
- data/app/views/govuk_publishing_components/components/_cookie_banner.html.erb +12 -6
- data/app/views/govuk_publishing_components/components/_date_input.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_details.html.erb +5 -1
- data/app/views/govuk_publishing_components/components/_devolved_nations.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_document_list.html.erb +3 -0
- data/app/views/govuk_publishing_components/components/_emergency_banner.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_error_alert.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_error_message.html.erb +4 -1
- data/app/views/govuk_publishing_components/components/_error_summary.html.erb +29 -26
- data/app/views/govuk_publishing_components/components/_feedback.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_fieldset.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_file_upload.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_google_tag_manager_script.html.erb +2 -2
- data/app/views/govuk_publishing_components/components/_govspeak.html.erb +1 -0
- data/app/views/govuk_publishing_components/components/_govspeak_html_publication.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_heading.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_hint.html.erb +4 -1
- data/app/views/govuk_publishing_components/components/_image_card.html.erb +17 -12
- data/app/views/govuk_publishing_components/components/_input.html.erb +10 -2
- data/app/views/govuk_publishing_components/components/_inset_text.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_intervention.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_inverse_header.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_label.html.erb +7 -3
- data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_layout_for_admin.html.erb +8 -5
- data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +8 -3
- data/app/views/govuk_publishing_components/components/_layout_header.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +238 -267
- data/app/views/govuk_publishing_components/components/_lead_paragraph.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_metadata.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_modal_dialogue.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_notice.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_organisation_logo.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_panel.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_phase_banner.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_previous_and_next_navigation.html.erb +6 -1
- data/app/views/govuk_publishing_components/components/_print_link.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_radio.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +16 -6
- data/app/views/govuk_publishing_components/components/_reorderable_list.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_search.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_select.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_share_links.html.erb +13 -13
- data/app/views/govuk_publishing_components/components/_show_password.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_signup_link.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb +8 -2
- data/app/views/govuk_publishing_components/components/_skip_link.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_step_by_step_nav.html.erb +8 -1
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_header.html.erb +12 -2
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_related.html.erb +21 -8
- data/app/views/govuk_publishing_components/components/_subscription_links.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_success_alert.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_summary_list.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_table.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_tabs.html.erb +22 -2
- data/app/views/govuk_publishing_components/components/_textarea.html.erb +12 -2
- data/app/views/govuk_publishing_components/components/_title.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_translation_nav.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_warning_text.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/contextual_sidebar/_ukraine_cta.html.erb +16 -6
- data/app/views/govuk_publishing_components/components/docs/accordion.yml +16 -3
- data/app/views/govuk_publishing_components/components/docs/action_link.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/breadcrumbs.yml +2 -1
- data/app/views/govuk_publishing_components/components/docs/button.yml +10 -0
- data/app/views/govuk_publishing_components/components/docs/cards.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/checkboxes.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/contents_list.yml +1 -12
- data/app/views/govuk_publishing_components/components/docs/contextual_breadcrumbs.yml +13 -0
- data/app/views/govuk_publishing_components/components/docs/contextual_footer.yml +43 -0
- data/app/views/govuk_publishing_components/components/docs/contextual_sidebar.yml +65 -0
- data/app/views/govuk_publishing_components/components/docs/details.yml +17 -0
- data/app/views/govuk_publishing_components/components/docs/document_list.yml +18 -1
- data/app/views/govuk_publishing_components/components/docs/emergency_banner.yml +3 -1
- data/app/views/govuk_publishing_components/components/docs/error_message.yml +13 -0
- data/app/views/govuk_publishing_components/components/docs/govspeak.yml +22 -1
- data/app/views/govuk_publishing_components/components/docs/hint.yml +6 -0
- data/app/views/govuk_publishing_components/components/docs/image_card.yml +24 -1
- data/app/views/govuk_publishing_components/components/docs/input.yml +32 -0
- data/app/views/govuk_publishing_components/components/docs/intervention.yml +2 -1
- data/app/views/govuk_publishing_components/components/docs/label.yml +17 -0
- data/app/views/govuk_publishing_components/components/docs/layout_header.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/previous_and_next_navigation.yml +2 -0
- data/app/views/govuk_publishing_components/components/docs/related_navigation.yml +47 -0
- data/app/views/govuk_publishing_components/components/docs/share_links.yml +59 -30
- data/app/views/govuk_publishing_components/components/docs/single_page_notification_button.yml +16 -1
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav.yml +54 -0
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_header.yml +6 -0
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_related.yml +10 -0
- data/app/views/govuk_publishing_components/components/docs/tabs.yml +15 -0
- data/app/views/govuk_publishing_components/components/docs/textarea.yml +31 -0
- data/app/views/govuk_publishing_components/components/docs/translation_nav.yml +2 -0
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +3 -3
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +4 -5
- data/app/views/govuk_publishing_components/components/metadata/_sentence.html.erb +4 -2
- data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +36 -16
- data/app/views/layouts/govuk_publishing_components/application.html.erb +3 -4
- data/config/locales/ar.yml +14 -14
- data/config/locales/az.yml +15 -14
- data/config/locales/be.yml +14 -14
- data/config/locales/bg.yml +14 -14
- data/config/locales/bn.yml +14 -14
- data/config/locales/cs.yml +14 -14
- data/config/locales/cy.yml +14 -14
- data/config/locales/da.yml +14 -14
- data/config/locales/de.yml +14 -14
- data/config/locales/dr.yml +14 -14
- data/config/locales/el.yml +14 -14
- data/config/locales/en.yml +21 -28
- data/config/locales/es-419.yml +14 -14
- data/config/locales/es.yml +14 -14
- data/config/locales/et.yml +14 -14
- data/config/locales/fa.yml +15 -14
- data/config/locales/fi.yml +14 -14
- data/config/locales/fr.yml +14 -14
- data/config/locales/gd.yml +14 -14
- data/config/locales/gu.yml +14 -14
- data/config/locales/he.yml +14 -14
- data/config/locales/hi.yml +14 -14
- data/config/locales/hr.yml +14 -14
- data/config/locales/hu.yml +14 -14
- data/config/locales/hy.yml +14 -14
- data/config/locales/id.yml +14 -14
- data/config/locales/is.yml +14 -14
- data/config/locales/it.yml +14 -14
- data/config/locales/ja.yml +14 -14
- data/config/locales/ka.yml +14 -14
- data/config/locales/kk.yml +14 -14
- data/config/locales/ko.yml +14 -14
- data/config/locales/lt.yml +14 -14
- data/config/locales/lv.yml +14 -14
- data/config/locales/ms.yml +14 -14
- data/config/locales/mt.yml +14 -14
- data/config/locales/nl.yml +14 -14
- data/config/locales/no.yml +14 -14
- data/config/locales/pa-pk.yml +14 -14
- data/config/locales/pa.yml +14 -14
- data/config/locales/pl.yml +14 -14
- data/config/locales/ps.yml +14 -14
- data/config/locales/pt.yml +14 -14
- data/config/locales/ro.yml +14 -14
- data/config/locales/ru.yml +14 -14
- data/config/locales/si.yml +14 -14
- data/config/locales/sk.yml +14 -14
- data/config/locales/sl.yml +14 -14
- data/config/locales/so.yml +14 -14
- data/config/locales/sq.yml +14 -14
- data/config/locales/sr.yml +14 -14
- data/config/locales/sv.yml +14 -14
- data/config/locales/sw.yml +14 -14
- data/config/locales/ta.yml +14 -14
- data/config/locales/th.yml +14 -14
- data/config/locales/tk.yml +14 -14
- data/config/locales/tr.yml +14 -14
- data/config/locales/uk.yml +14 -14
- data/config/locales/ur.yml +14 -14
- data/config/locales/uz.yml +14 -14
- data/config/locales/vi.yml +14 -14
- data/config/locales/zh-hk.yml +14 -14
- data/config/locales/zh-tw.yml +14 -14
- data/config/locales/zh.yml +14 -14
- data/lib/govuk_publishing_components/app_helpers/asset_helper.rb +86 -0
- data/lib/govuk_publishing_components/config.rb +3 -3
- data/lib/govuk_publishing_components/presenters/accordion_helper.rb +38 -0
- data/lib/govuk_publishing_components/presenters/breadcrumb_selector.rb +3 -2
- data/lib/govuk_publishing_components/presenters/{breadcrumbs.rb → breadcrumbs_helper.rb} +8 -0
- data/lib/govuk_publishing_components/presenters/button_helper.rb +9 -2
- data/lib/govuk_publishing_components/presenters/component_wrapper_helper.rb +95 -0
- data/lib/govuk_publishing_components/presenters/image_card_helper.rb +65 -2
- data/lib/govuk_publishing_components/presenters/page_with_step_by_step_navigation.rb +3 -2
- data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +16 -7
- data/lib/govuk_publishing_components/presenters/single_page_notification_button_helper.rb +43 -2
- data/lib/govuk_publishing_components/presenters/step_by_step_nav_helper.rb +16 -0
- data/lib/govuk_publishing_components/railtie.rb +7 -0
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/lib/govuk_publishing_components.rb +6 -1
- data/node_modules/axe-core/README.md +1 -1
- data/node_modules/axe-core/axe.d.ts +76 -24
- data/node_modules/axe-core/axe.js +9200 -9059
- data/node_modules/axe-core/axe.min.js +3 -3
- data/node_modules/axe-core/package.json +29 -29
- data/node_modules/axe-core/sri-history.json +20 -0
- data/node_modules/govuk-frontend/README.md +1 -2
- data/node_modules/govuk-frontend/govuk/all.js +4035 -2673
- data/node_modules/govuk-frontend/govuk/all.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +71 -0
- data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/common/index.js +180 -0
- data/node_modules/govuk-frontend/govuk/common/index.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +376 -0
- data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/common.js +173 -30
- data/node_modules/govuk-frontend/govuk/common.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/_all.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +23 -4
- data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +2116 -983
- data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +54 -22
- data/node_modules/govuk-frontend/govuk/components/accordion/macro-options.json +36 -0
- data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +8 -2
- data/node_modules/govuk-frontend/govuk/components/back-link/_index.scss +19 -19
- data/node_modules/govuk-frontend/govuk/components/back-link/fixtures.json +12 -12
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +21 -10
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/fixtures.json +22 -22
- data/node_modules/govuk-frontend/govuk/components/button/_index.scss +23 -5
- data/node_modules/govuk-frontend/govuk/components/button/button.js +958 -690
- data/node_modules/govuk-frontend/govuk/components/button/button.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/button/fixtures.json +85 -66
- data/node_modules/govuk-frontend/govuk/components/button/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/character-count/_index.scss +9 -0
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +2083 -1161
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/character-count/fixtures.json +112 -36
- data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +42 -0
- data/node_modules/govuk-frontend/govuk/components/character-count/template.njk +27 -3
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +1155 -1119
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/checkboxes/fixtures.json +96 -93
- data/node_modules/govuk-frontend/govuk/components/cookie-banner/fixtures.json +46 -46
- data/node_modules/govuk-frontend/govuk/components/cookie-banner/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/date-input/fixtures.json +50 -50
- data/node_modules/govuk-frontend/govuk/components/details/details.js +797 -766
- data/node_modules/govuk-frontend/govuk/components/details/details.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/details/fixtures.json +20 -20
- data/node_modules/govuk-frontend/govuk/components/error-message/fixtures.json +20 -20
- data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +1089 -814
- data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/error-summary/fixtures.json +44 -35
- data/node_modules/govuk-frontend/govuk/components/error-summary/template.njk +25 -21
- data/node_modules/govuk-frontend/govuk/components/fieldset/fixtures.json +51 -39
- data/node_modules/govuk-frontend/govuk/components/file-upload/fixtures.json +26 -26
- data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/footer/fixtures.json +46 -46
- data/node_modules/govuk-frontend/govuk/components/footer/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/header/_index.scss +6 -0
- data/node_modules/govuk-frontend/govuk/components/header/fixtures.json +93 -38
- data/node_modules/govuk-frontend/govuk/components/header/header.js +646 -992
- data/node_modules/govuk-frontend/govuk/components/header/header.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +8 -2
- data/node_modules/govuk-frontend/govuk/components/header/template.njk +4 -2
- data/node_modules/govuk-frontend/govuk/components/hint/fixtures.json +12 -12
- data/node_modules/govuk-frontend/govuk/components/input/fixtures.json +80 -80
- data/node_modules/govuk-frontend/govuk/components/inset-text/fixtures.json +12 -12
- data/node_modules/govuk-frontend/govuk/components/label/fixtures.json +34 -34
- data/node_modules/govuk-frontend/govuk/components/notification-banner/fixtures.json +56 -46
- data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +790 -532
- data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/notification-banner/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/pagination/_index.scss +10 -7
- data/node_modules/govuk-frontend/govuk/components/pagination/fixtures.json +94 -26
- data/node_modules/govuk-frontend/govuk/components/pagination/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/panel/fixtures.json +18 -18
- data/node_modules/govuk-frontend/govuk/components/phase-banner/fixtures.json +14 -14
- data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +1 -1
- data/node_modules/govuk-frontend/govuk/components/radios/fixtures.json +94 -91
- data/node_modules/govuk-frontend/govuk/components/radios/radios.js +1110 -1079
- data/node_modules/govuk-frontend/govuk/components/radios/radios.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/select/fixtures.json +32 -32
- data/node_modules/govuk-frontend/govuk/components/skip-link/fixtures.json +22 -20
- data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +1017 -1008
- data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/summary-list/_index.scss +107 -0
- data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +345 -50
- data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +110 -0
- data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +72 -28
- data/node_modules/govuk-frontend/govuk/components/table/_index.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/table/fixtures.json +40 -40
- data/node_modules/govuk-frontend/govuk/components/tabs/fixtures.json +29 -29
- data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +1389 -1233
- data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/components/tag/fixtures.json +28 -28
- data/node_modules/govuk-frontend/govuk/components/textarea/fixtures.json +34 -34
- data/node_modules/govuk-frontend/govuk/components/warning-text/fixtures.json +14 -14
- data/node_modules/govuk-frontend/govuk/core/_section-break.scss +1 -1
- data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +2 -2
- data/node_modules/govuk-frontend/govuk/helpers/_focused.scss +5 -0
- data/node_modules/govuk-frontend/govuk/helpers/_links.scss +6 -6
- data/node_modules/govuk-frontend/govuk/i18n.js +389 -0
- data/node_modules/govuk-frontend/govuk/i18n.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/macros/i18n.njk +15 -0
- data/node_modules/govuk-frontend/govuk/settings/_all.scss +1 -0
- data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +12 -0
- data/node_modules/govuk-frontend/govuk/settings/_compatibility.scss +26 -0
- data/node_modules/govuk-frontend/govuk/settings/_measurements.scss +5 -5
- data/node_modules/govuk-frontend/govuk/settings/_typography-font.scss +23 -0
- data/node_modules/govuk-frontend/govuk/settings/_typography-responsive.scss +12 -0
- data/node_modules/govuk-frontend/govuk/settings/_warnings.scss +53 -0
- data/node_modules/govuk-frontend/govuk/tools/_compatibility.scss +20 -6
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +242 -241
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +22 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +17 -16
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +547 -546
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +37 -36
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +301 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +21 -20
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +198 -197
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +198 -197
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +106 -105
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +400 -399
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +239 -238
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +72 -71
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +22 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js.map +1 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +17 -16
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js.map +1 -0
- data/node_modules/govuk-frontend/govuk-esm/all.mjs +52 -29
- data/node_modules/govuk-frontend/govuk-esm/common/closest-attribute-value.mjs +15 -0
- data/node_modules/govuk-frontend/govuk-esm/common/index.mjs +166 -0
- data/node_modules/govuk-frontend/govuk-esm/common/normalise-dataset.mjs +60 -0
- data/node_modules/govuk-frontend/govuk-esm/common.mjs +6 -28
- data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +238 -85
- data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs +73 -34
- data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs +329 -124
- data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs +32 -20
- data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +41 -20
- data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs +60 -14
- data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +9 -2
- data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs +33 -4
- data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs +18 -11
- data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs +15 -7
- data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs +171 -38
- data/node_modules/govuk-frontend/govuk-esm/i18n.mjs +378 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Date/now.mjs +13 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/dataset.mjs +68 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/String/prototype/trim.mjs +13 -0
- data/node_modules/govuk-frontend/govuk-prototype-kit/init.js +7 -0
- data/node_modules/govuk-frontend/govuk-prototype-kit/init.scss +12 -0
- data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +138 -7
- data/node_modules/govuk-frontend/package.json +1 -1
- metadata +70 -19
- data/app/assets/stylesheets/component_guide/print.scss +0 -1
- data/app/assets/stylesheets/govuk_publishing_components/_all_components_print.scss +0 -18
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_accordion.scss +0 -28
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_button.scss +0 -8
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_cards.scss +0 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_contents-list.scss +0 -19
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_emergency-banner.scss +0 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_govspeak-html-publication.scss +0 -5
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_govspeak.scss +0 -80
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_layout-super-navigation-header.scss +0 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_organisation-logo.scss +0 -7
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_step-by-step-nav-header.scss +0 -7
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_step-by-step-nav.scss +0 -116
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_textarea.scss +0 -13
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_title.scss +0 -7
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import '../../
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
3
|
+
import { nodeListForEach } from '../../common/index.mjs'
|
|
4
4
|
import '../../vendor/polyfills/Element/prototype/classList.mjs'
|
|
5
|
-
import
|
|
5
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
6
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
6
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Checkboxes component
|
|
10
|
+
*
|
|
11
|
+
* @class
|
|
12
|
+
* @param {HTMLElement} $module - HTML element to use for checkboxes
|
|
13
|
+
*/
|
|
7
14
|
function Checkboxes ($module) {
|
|
8
15
|
this.$module = $module
|
|
9
16
|
this.$inputs = $module.querySelectorAll('input[type="checkbox"]')
|
|
10
17
|
}
|
|
11
18
|
|
|
12
19
|
/**
|
|
13
|
-
* Initialise
|
|
20
|
+
* Initialise component
|
|
14
21
|
*
|
|
15
22
|
* Checkboxes can be associated with a 'conditionally revealed' content block –
|
|
16
23
|
* for example, a checkbox for 'Phone' could reveal an additional form field for
|
|
@@ -28,17 +35,17 @@ Checkboxes.prototype.init = function () {
|
|
|
28
35
|
var $inputs = this.$inputs
|
|
29
36
|
|
|
30
37
|
nodeListForEach($inputs, function ($input) {
|
|
31
|
-
var
|
|
38
|
+
var targetId = $input.getAttribute('data-aria-controls')
|
|
32
39
|
|
|
33
40
|
// Skip checkboxes without data-aria-controls attributes, or where the
|
|
34
41
|
// target element does not exist.
|
|
35
|
-
if (!
|
|
42
|
+
if (!targetId || !document.getElementById(targetId)) {
|
|
36
43
|
return
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
// Promote the data-aria-controls attribute to a aria-controls attribute
|
|
40
47
|
// so that the relationship is exposed in the AOM
|
|
41
|
-
$input.setAttribute('aria-controls',
|
|
48
|
+
$input.setAttribute('aria-controls', targetId)
|
|
42
49
|
$input.removeAttribute('data-aria-controls')
|
|
43
50
|
})
|
|
44
51
|
|
|
@@ -57,11 +64,12 @@ Checkboxes.prototype.init = function () {
|
|
|
57
64
|
// for example if they are added to the page dynamically, so sync now too.
|
|
58
65
|
this.syncAllConditionalReveals()
|
|
59
66
|
|
|
67
|
+
// Handle events
|
|
60
68
|
$module.addEventListener('click', this.handleClick.bind(this))
|
|
61
69
|
}
|
|
62
70
|
|
|
63
71
|
/**
|
|
64
|
-
* Sync the conditional reveal states for all
|
|
72
|
+
* Sync the conditional reveal states for all checkboxes in this $module.
|
|
65
73
|
*/
|
|
66
74
|
Checkboxes.prototype.syncAllConditionalReveals = function () {
|
|
67
75
|
nodeListForEach(this.$inputs, this.syncConditionalRevealWithInputState.bind(this))
|
|
@@ -73,7 +81,7 @@ Checkboxes.prototype.syncAllConditionalReveals = function () {
|
|
|
73
81
|
* Synchronise the visibility of the conditional reveal, and its accessible
|
|
74
82
|
* state, with the input's checked state.
|
|
75
83
|
*
|
|
76
|
-
* @param {HTMLInputElement} $input Checkbox input
|
|
84
|
+
* @param {HTMLInputElement} $input - Checkbox input
|
|
77
85
|
*/
|
|
78
86
|
Checkboxes.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
79
87
|
var $target = document.getElementById($input.getAttribute('aria-controls'))
|
|
@@ -91,6 +99,8 @@ Checkboxes.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
|
91
99
|
*
|
|
92
100
|
* Find any other checkbox inputs with the same name value, and uncheck them.
|
|
93
101
|
* This is useful for when a “None of these" checkbox is checked.
|
|
102
|
+
*
|
|
103
|
+
* @param {HTMLElement} $input - Checkbox input
|
|
94
104
|
*/
|
|
95
105
|
Checkboxes.prototype.unCheckAllInputsExcept = function ($input) {
|
|
96
106
|
var allInputsWithSameName = document.querySelectorAll('input[type="checkbox"][name="' + $input.name + '"]')
|
|
@@ -105,11 +115,13 @@ Checkboxes.prototype.unCheckAllInputsExcept = function ($input) {
|
|
|
105
115
|
}
|
|
106
116
|
|
|
107
117
|
/**
|
|
108
|
-
* Uncheck exclusive
|
|
118
|
+
* Uncheck exclusive checkboxes
|
|
109
119
|
*
|
|
110
120
|
* Find any checkbox inputs with the same name value and the 'exclusive' behaviour,
|
|
111
121
|
* and uncheck them. This helps prevent someone checking both a regular checkbox and a
|
|
112
122
|
* "None of these" checkbox in the same fieldset.
|
|
123
|
+
*
|
|
124
|
+
* @param {HTMLInputElement} $input - Checkbox input
|
|
113
125
|
*/
|
|
114
126
|
Checkboxes.prototype.unCheckExclusiveInputs = function ($input) {
|
|
115
127
|
var allInputsWithSameNameAndExclusiveBehaviour = document.querySelectorAll(
|
|
@@ -131,33 +143,33 @@ Checkboxes.prototype.unCheckExclusiveInputs = function ($input) {
|
|
|
131
143
|
* Handle a click within the $module – if the click occurred on a checkbox, sync
|
|
132
144
|
* the state of any associated conditional reveal with the checkbox state.
|
|
133
145
|
*
|
|
134
|
-
* @param {MouseEvent} event Click event
|
|
146
|
+
* @param {MouseEvent} event - Click event
|
|
135
147
|
*/
|
|
136
148
|
Checkboxes.prototype.handleClick = function (event) {
|
|
137
|
-
var $
|
|
149
|
+
var $clickedInput = event.target
|
|
138
150
|
|
|
139
151
|
// Ignore clicks on things that aren't checkbox inputs
|
|
140
|
-
if ($
|
|
152
|
+
if ($clickedInput.type !== 'checkbox') {
|
|
141
153
|
return
|
|
142
154
|
}
|
|
143
155
|
|
|
144
156
|
// If the checkbox conditionally-reveals some content, sync the state
|
|
145
|
-
var hasAriaControls = $
|
|
157
|
+
var hasAriaControls = $clickedInput.getAttribute('aria-controls')
|
|
146
158
|
if (hasAriaControls) {
|
|
147
|
-
this.syncConditionalRevealWithInputState($
|
|
159
|
+
this.syncConditionalRevealWithInputState($clickedInput)
|
|
148
160
|
}
|
|
149
161
|
|
|
150
162
|
// No further behaviour needed for unchecking
|
|
151
|
-
if (!$
|
|
163
|
+
if (!$clickedInput.checked) {
|
|
152
164
|
return
|
|
153
165
|
}
|
|
154
166
|
|
|
155
167
|
// Handle 'exclusive' checkbox behaviour (ie "None of these")
|
|
156
|
-
var hasBehaviourExclusive = ($
|
|
168
|
+
var hasBehaviourExclusive = ($clickedInput.getAttribute('data-behaviour') === 'exclusive')
|
|
157
169
|
if (hasBehaviourExclusive) {
|
|
158
|
-
this.unCheckAllInputsExcept($
|
|
170
|
+
this.unCheckAllInputsExcept($clickedInput)
|
|
159
171
|
} else {
|
|
160
|
-
this.unCheckExclusiveInputs($
|
|
172
|
+
this.unCheckExclusiveInputs($clickedInput)
|
|
161
173
|
}
|
|
162
174
|
}
|
|
163
175
|
|
|
@@ -1,20 +1,31 @@
|
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* JavaScript 'polyfill' for HTML5's <details> and <summary> elements
|
|
3
5
|
* and 'shim' to add accessiblity enhancements for all browsers
|
|
4
6
|
*
|
|
5
7
|
* http://caniuse.com/#feat=details
|
|
6
8
|
*/
|
|
9
|
+
import { generateUniqueID } from '../../common/index.mjs'
|
|
10
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
7
11
|
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
8
|
-
import '../../vendor/polyfills/Event.mjs' // addEventListener and event.target normaliziation
|
|
9
|
-
import { generateUniqueID } from '../../common.mjs'
|
|
10
12
|
|
|
11
13
|
var KEY_ENTER = 13
|
|
12
14
|
var KEY_SPACE = 32
|
|
13
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Details component
|
|
18
|
+
*
|
|
19
|
+
* @class
|
|
20
|
+
* @param {HTMLElement} $module - HTML element to use for details
|
|
21
|
+
*/
|
|
14
22
|
function Details ($module) {
|
|
15
23
|
this.$module = $module
|
|
16
24
|
}
|
|
17
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Initialise component
|
|
28
|
+
*/
|
|
18
29
|
Details.prototype.init = function () {
|
|
19
30
|
if (!this.$module) {
|
|
20
31
|
return
|
|
@@ -30,6 +41,9 @@ Details.prototype.init = function () {
|
|
|
30
41
|
this.polyfillDetails()
|
|
31
42
|
}
|
|
32
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Polyfill component in older browsers
|
|
46
|
+
*/
|
|
33
47
|
Details.prototype.polyfillDetails = function () {
|
|
34
48
|
var $module = this.$module
|
|
35
49
|
|
|
@@ -73,13 +87,14 @@ Details.prototype.polyfillDetails = function () {
|
|
|
73
87
|
}
|
|
74
88
|
|
|
75
89
|
// Bind an event to handle summary elements
|
|
76
|
-
this.polyfillHandleInputs(
|
|
90
|
+
this.polyfillHandleInputs(this.polyfillSetAttributes.bind(this))
|
|
77
91
|
}
|
|
78
92
|
|
|
79
93
|
/**
|
|
80
|
-
* Define a statechange function that updates aria-expanded and style.display
|
|
81
|
-
*
|
|
82
|
-
|
|
94
|
+
* Define a statechange function that updates aria-expanded and style.display
|
|
95
|
+
*
|
|
96
|
+
* @returns {boolean} Returns true
|
|
97
|
+
*/
|
|
83
98
|
Details.prototype.polyfillSetAttributes = function () {
|
|
84
99
|
if (this.$module.hasAttribute('open')) {
|
|
85
100
|
this.$module.removeAttribute('open')
|
|
@@ -95,22 +110,22 @@ Details.prototype.polyfillSetAttributes = function () {
|
|
|
95
110
|
}
|
|
96
111
|
|
|
97
112
|
/**
|
|
98
|
-
* Handle cross-modal click events
|
|
99
|
-
*
|
|
100
|
-
* @param {
|
|
101
|
-
*/
|
|
102
|
-
Details.prototype.polyfillHandleInputs = function (
|
|
103
|
-
|
|
104
|
-
var target = event.target
|
|
113
|
+
* Handle cross-modal click events
|
|
114
|
+
*
|
|
115
|
+
* @param {polyfillHandleInputsCallback} callback - function
|
|
116
|
+
*/
|
|
117
|
+
Details.prototype.polyfillHandleInputs = function (callback) {
|
|
118
|
+
this.$summary.addEventListener('keypress', function (event) {
|
|
119
|
+
var $target = event.target
|
|
105
120
|
// When the key gets pressed - check if it is enter or space
|
|
106
121
|
if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE) {
|
|
107
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
|
122
|
+
if ($target.nodeName.toLowerCase() === 'summary') {
|
|
108
123
|
// Prevent space from scrolling the page
|
|
109
124
|
// and enter from submitting a form
|
|
110
125
|
event.preventDefault()
|
|
111
126
|
// Click to let the click event do all the necessary action
|
|
112
|
-
if (target.click) {
|
|
113
|
-
target.click()
|
|
127
|
+
if ($target.click) {
|
|
128
|
+
$target.click()
|
|
114
129
|
} else {
|
|
115
130
|
// except Safari 5.1 and under don't support .click() here
|
|
116
131
|
callback(event)
|
|
@@ -120,16 +135,22 @@ Details.prototype.polyfillHandleInputs = function (node, callback) {
|
|
|
120
135
|
})
|
|
121
136
|
|
|
122
137
|
// Prevent keyup to prevent clicking twice in Firefox when using space key
|
|
123
|
-
|
|
124
|
-
var target = event.target
|
|
138
|
+
this.$summary.addEventListener('keyup', function (event) {
|
|
139
|
+
var $target = event.target
|
|
125
140
|
if (event.keyCode === KEY_SPACE) {
|
|
126
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
|
141
|
+
if ($target.nodeName.toLowerCase() === 'summary') {
|
|
127
142
|
event.preventDefault()
|
|
128
143
|
}
|
|
129
144
|
}
|
|
130
145
|
})
|
|
131
146
|
|
|
132
|
-
|
|
147
|
+
this.$summary.addEventListener('click', callback)
|
|
133
148
|
}
|
|
134
149
|
|
|
135
150
|
export default Details
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @callback polyfillHandleInputsCallback
|
|
154
|
+
* @param {UIEvent} event - Keyboard or mouse event
|
|
155
|
+
* @returns {void}
|
|
156
|
+
*/
|
|
@@ -1,11 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
3
|
+
import { mergeConfigs } from '../../common/index.mjs'
|
|
4
|
+
import { normaliseDataset } from '../../common/normalise-dataset.mjs'
|
|
3
5
|
import '../../vendor/polyfills/Element/prototype/closest.mjs'
|
|
6
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
7
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* JavaScript enhancements for the ErrorSummary
|
|
11
|
+
*
|
|
12
|
+
* Takes focus on initialisation for accessible announcement, unless disabled in configuration.
|
|
13
|
+
*
|
|
14
|
+
* @class
|
|
15
|
+
* @param {HTMLElement} $module - HTML element to use for error summary
|
|
16
|
+
* @param {ErrorSummaryConfig} [config] - Error summary config
|
|
17
|
+
*/
|
|
18
|
+
function ErrorSummary ($module, config) {
|
|
19
|
+
// Some consuming code may not be passing a module,
|
|
20
|
+
// for example if they initialise the component
|
|
21
|
+
// on their own by directly passing the result
|
|
22
|
+
// of `document.querySelector`.
|
|
23
|
+
// To avoid breaking further JavaScript initialisation
|
|
24
|
+
// we need to safeguard against this so things keep
|
|
25
|
+
// working the same now we read the elements data attributes
|
|
26
|
+
if (!$module) {
|
|
27
|
+
// Little safety in case code gets ported as-is
|
|
28
|
+
// into and ES6 class constructor, where the return value matters
|
|
29
|
+
return this
|
|
30
|
+
}
|
|
4
31
|
|
|
5
|
-
function ErrorSummary ($module) {
|
|
6
32
|
this.$module = $module
|
|
33
|
+
|
|
34
|
+
var defaultConfig = {
|
|
35
|
+
disableAutoFocus: false
|
|
36
|
+
}
|
|
37
|
+
this.config = mergeConfigs(
|
|
38
|
+
defaultConfig,
|
|
39
|
+
config || {},
|
|
40
|
+
normaliseDataset($module.dataset)
|
|
41
|
+
)
|
|
7
42
|
}
|
|
8
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Initialise component
|
|
46
|
+
*/
|
|
9
47
|
ErrorSummary.prototype.init = function () {
|
|
10
48
|
var $module = this.$module
|
|
11
49
|
if (!$module) {
|
|
@@ -22,7 +60,7 @@ ErrorSummary.prototype.init = function () {
|
|
|
22
60
|
ErrorSummary.prototype.setFocus = function () {
|
|
23
61
|
var $module = this.$module
|
|
24
62
|
|
|
25
|
-
if (
|
|
63
|
+
if (this.config.disableAutoFocus) {
|
|
26
64
|
return
|
|
27
65
|
}
|
|
28
66
|
|
|
@@ -38,13 +76,13 @@ ErrorSummary.prototype.setFocus = function () {
|
|
|
38
76
|
}
|
|
39
77
|
|
|
40
78
|
/**
|
|
41
|
-
* Click event handler
|
|
42
|
-
*
|
|
43
|
-
* @param {MouseEvent} event - Click event
|
|
44
|
-
*/
|
|
79
|
+
* Click event handler
|
|
80
|
+
*
|
|
81
|
+
* @param {MouseEvent} event - Click event
|
|
82
|
+
*/
|
|
45
83
|
ErrorSummary.prototype.handleClick = function (event) {
|
|
46
|
-
var target = event.target
|
|
47
|
-
if (this.focusTarget(target)) {
|
|
84
|
+
var $target = event.target
|
|
85
|
+
if (this.focusTarget($target)) {
|
|
48
86
|
event.preventDefault()
|
|
49
87
|
}
|
|
50
88
|
}
|
|
@@ -64,7 +102,7 @@ ErrorSummary.prototype.handleClick = function (event) {
|
|
|
64
102
|
* NVDA (as tested in 2018.3.2) - without this only the field type is announced
|
|
65
103
|
* (e.g. "Edit, has autocomplete").
|
|
66
104
|
*
|
|
67
|
-
* @param {
|
|
105
|
+
* @param {EventTarget} $target - Event target
|
|
68
106
|
* @returns {boolean} True if the target was able to be focussed
|
|
69
107
|
*/
|
|
70
108
|
ErrorSummary.prototype.focusTarget = function ($target) {
|
|
@@ -129,10 +167,10 @@ ErrorSummary.prototype.getAssociatedLegendOrLabel = function ($input) {
|
|
|
129
167
|
var $fieldset = $input.closest('fieldset')
|
|
130
168
|
|
|
131
169
|
if ($fieldset) {
|
|
132
|
-
var legends = $fieldset.getElementsByTagName('legend')
|
|
170
|
+
var $legends = $fieldset.getElementsByTagName('legend')
|
|
133
171
|
|
|
134
|
-
if (legends.length) {
|
|
135
|
-
var $candidateLegend = legends[0]
|
|
172
|
+
if ($legends.length) {
|
|
173
|
+
var $candidateLegend = $legends[0]
|
|
136
174
|
|
|
137
175
|
// If the input type is radio or checkbox, always use the legend if there
|
|
138
176
|
// is one.
|
|
@@ -166,3 +204,11 @@ ErrorSummary.prototype.getAssociatedLegendOrLabel = function ($input) {
|
|
|
166
204
|
}
|
|
167
205
|
|
|
168
206
|
export default ErrorSummary
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Error summary config
|
|
210
|
+
*
|
|
211
|
+
* @typedef {object} ErrorSummaryConfig
|
|
212
|
+
* @property {boolean} [disableAutoFocus = false] -
|
|
213
|
+
* If set to `true` the error summary will not be focussed when the page loads.
|
|
214
|
+
*/
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
1
3
|
import '../../vendor/polyfills/Event.mjs'
|
|
2
|
-
import '../../vendor/polyfills/Element/prototype/classList.mjs'
|
|
3
4
|
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Header component
|
|
8
|
+
*
|
|
9
|
+
* @class
|
|
10
|
+
* @param {HTMLElement} $module - HTML element to use for header
|
|
11
|
+
*/
|
|
5
12
|
function Header ($module) {
|
|
6
13
|
this.$module = $module
|
|
7
14
|
this.$menuButton = $module && $module.querySelector('.govuk-js-header-toggle')
|
|
@@ -22,7 +29,7 @@ function Header ($module) {
|
|
|
22
29
|
}
|
|
23
30
|
|
|
24
31
|
/**
|
|
25
|
-
* Initialise
|
|
32
|
+
* Initialise component
|
|
26
33
|
*
|
|
27
34
|
* Check for the presence of the header, menu and menu button – if any are
|
|
28
35
|
* missing then there's nothing to do so return early.
|
data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
|
-
import '../../
|
|
1
|
+
import { mergeConfigs } from '../../common/index.mjs'
|
|
2
|
+
import { normaliseDataset } from '../../common/normalise-dataset.mjs'
|
|
3
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Notification Banner component
|
|
7
|
+
*
|
|
8
|
+
* @class
|
|
9
|
+
* @param {HTMLElement} $module - HTML element to use for notification banner
|
|
10
|
+
* @param {NotificationBannerConfig} [config] - Notification banner config
|
|
11
|
+
*/
|
|
12
|
+
function NotificationBanner ($module, config) {
|
|
4
13
|
this.$module = $module
|
|
14
|
+
|
|
15
|
+
var defaultConfig = {
|
|
16
|
+
disableAutoFocus: false
|
|
17
|
+
}
|
|
18
|
+
this.config = mergeConfigs(
|
|
19
|
+
defaultConfig,
|
|
20
|
+
config || {},
|
|
21
|
+
normaliseDataset($module.dataset)
|
|
22
|
+
)
|
|
5
23
|
}
|
|
6
24
|
|
|
7
25
|
/**
|
|
8
|
-
* Initialise
|
|
26
|
+
* Initialise component
|
|
9
27
|
*/
|
|
10
28
|
NotificationBanner.prototype.init = function () {
|
|
11
29
|
var $module = this.$module
|
|
@@ -30,7 +48,7 @@ NotificationBanner.prototype.init = function () {
|
|
|
30
48
|
NotificationBanner.prototype.setFocus = function () {
|
|
31
49
|
var $module = this.$module
|
|
32
50
|
|
|
33
|
-
if (
|
|
51
|
+
if (this.config.disableAutoFocus) {
|
|
34
52
|
return
|
|
35
53
|
}
|
|
36
54
|
|
|
@@ -53,3 +71,14 @@ NotificationBanner.prototype.setFocus = function () {
|
|
|
53
71
|
}
|
|
54
72
|
|
|
55
73
|
export default NotificationBanner
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Notification banner config
|
|
77
|
+
*
|
|
78
|
+
* @typedef {object} NotificationBannerConfig
|
|
79
|
+
* @property {boolean} [disableAutoFocus = false] -
|
|
80
|
+
* If set to `true` the notification banner will not be focussed when the page
|
|
81
|
+
* loads. This only applies if the component has a `role` of `alert` – in
|
|
82
|
+
* other cases the component will not be focused on page load, regardless of
|
|
83
|
+
* this option.
|
|
84
|
+
*/
|
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import '../../
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
3
|
+
import { nodeListForEach } from '../../common/index.mjs'
|
|
4
4
|
import '../../vendor/polyfills/Element/prototype/classList.mjs'
|
|
5
|
-
import
|
|
5
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
6
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
6
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Radios component
|
|
10
|
+
*
|
|
11
|
+
* @class
|
|
12
|
+
* @param {HTMLElement} $module - HTML element to use for radios
|
|
13
|
+
*/
|
|
7
14
|
function Radios ($module) {
|
|
8
15
|
this.$module = $module
|
|
9
16
|
this.$inputs = $module.querySelectorAll('input[type="radio"]')
|
|
10
17
|
}
|
|
11
18
|
|
|
12
19
|
/**
|
|
13
|
-
* Initialise
|
|
20
|
+
* Initialise component
|
|
14
21
|
*
|
|
15
22
|
* Radios can be associated with a 'conditionally revealed' content block – for
|
|
16
23
|
* example, a radio for 'Phone' could reveal an additional form field for the
|
|
@@ -28,17 +35,17 @@ Radios.prototype.init = function () {
|
|
|
28
35
|
var $inputs = this.$inputs
|
|
29
36
|
|
|
30
37
|
nodeListForEach($inputs, function ($input) {
|
|
31
|
-
var
|
|
38
|
+
var targetId = $input.getAttribute('data-aria-controls')
|
|
32
39
|
|
|
33
40
|
// Skip radios without data-aria-controls attributes, or where the
|
|
34
41
|
// target element does not exist.
|
|
35
|
-
if (!
|
|
42
|
+
if (!targetId || !document.getElementById(targetId)) {
|
|
36
43
|
return
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
// Promote the data-aria-controls attribute to a aria-controls attribute
|
|
40
47
|
// so that the relationship is exposed in the AOM
|
|
41
|
-
$input.setAttribute('aria-controls',
|
|
48
|
+
$input.setAttribute('aria-controls', targetId)
|
|
42
49
|
$input.removeAttribute('data-aria-controls')
|
|
43
50
|
})
|
|
44
51
|
|
|
@@ -62,7 +69,7 @@ Radios.prototype.init = function () {
|
|
|
62
69
|
}
|
|
63
70
|
|
|
64
71
|
/**
|
|
65
|
-
* Sync the conditional reveal states for all
|
|
72
|
+
* Sync the conditional reveal states for all radio buttons in this $module.
|
|
66
73
|
*/
|
|
67
74
|
Radios.prototype.syncAllConditionalReveals = function () {
|
|
68
75
|
nodeListForEach(this.$inputs, this.syncConditionalRevealWithInputState.bind(this))
|
|
@@ -74,7 +81,7 @@ Radios.prototype.syncAllConditionalReveals = function () {
|
|
|
74
81
|
* Synchronise the visibility of the conditional reveal, and its accessible
|
|
75
82
|
* state, with the input's checked state.
|
|
76
83
|
*
|
|
77
|
-
* @param {HTMLInputElement} $input Radio input
|
|
84
|
+
* @param {HTMLInputElement} $input - Radio input
|
|
78
85
|
*/
|
|
79
86
|
Radios.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
80
87
|
var $target = document.getElementById($input.getAttribute('aria-controls'))
|
|
@@ -95,7 +102,7 @@ Radios.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
|
95
102
|
* with the same name (because checking one radio could have un-checked a radio
|
|
96
103
|
* in another $module)
|
|
97
104
|
*
|
|
98
|
-
* @param {MouseEvent} event Click event
|
|
105
|
+
* @param {MouseEvent} event - Click event
|
|
99
106
|
*/
|
|
100
107
|
Radios.prototype.handleClick = function (event) {
|
|
101
108
|
var $clickedInput = event.target
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable es-x/no-function-prototype-bind -- Polyfill imported */
|
|
2
|
+
|
|
2
3
|
import '../../vendor/polyfills/Element/prototype/classList.mjs'
|
|
3
|
-
import '../../vendor/polyfills/Event.mjs' // addEventListener
|
|
4
|
+
import '../../vendor/polyfills/Event.mjs' // addEventListener, event.target normalization and DOMContentLoaded
|
|
5
|
+
import '../../vendor/polyfills/Function/prototype/bind.mjs'
|
|
4
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Skip link component
|
|
9
|
+
*
|
|
10
|
+
* @class
|
|
11
|
+
* @param {HTMLElement} $module - HTML element to use for skip link
|
|
12
|
+
*/
|
|
5
13
|
function SkipLink ($module) {
|
|
6
14
|
this.$module = $module
|
|
7
15
|
this.$linkedElement = null
|
|
@@ -9,7 +17,7 @@ function SkipLink ($module) {
|
|
|
9
17
|
}
|
|
10
18
|
|
|
11
19
|
/**
|
|
12
|
-
* Initialise
|
|
20
|
+
* Initialise component
|
|
13
21
|
*/
|
|
14
22
|
SkipLink.prototype.init = function () {
|
|
15
23
|
// Check for module
|
|
@@ -27,10 +35,10 @@ SkipLink.prototype.init = function () {
|
|
|
27
35
|
}
|
|
28
36
|
|
|
29
37
|
/**
|
|
30
|
-
* Get linked element
|
|
31
|
-
*
|
|
32
|
-
* @returns {HTMLElement} $linkedElement - DOM element linked to from the skip link
|
|
33
|
-
*/
|
|
38
|
+
* Get linked element
|
|
39
|
+
*
|
|
40
|
+
* @returns {HTMLElement} $linkedElement - DOM element linked to from the skip link
|
|
41
|
+
*/
|
|
34
42
|
SkipLink.prototype.getLinkedElement = function () {
|
|
35
43
|
var linkedElementId = this.getFragmentFromUrl()
|
|
36
44
|
|