govuk_publishing_components 17.21.0 → 18.0.0
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/all_components.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/components/accordion.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/components/character-count.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/components/error-summary.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/components/radio.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/lib/header-navigation.js +1 -1
- data/app/assets/stylesheets/component_guide/application.scss +5 -7
- data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_attachment.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_back-link.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +5 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_button.scss +3 -15
- data/app/assets/stylesheets/govuk_publishing_components/components/_character-count.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_checkboxes.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +28 -9
- data/app/assets/stylesheets/govuk_publishing_components/components/_date-input.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_details.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/_error-message.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_error-summary.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_feedback.scss +1 -13
- data/app/assets/stylesheets/govuk_publishing_components/components/_fieldset.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_file-upload.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak-html-publication.scss +3 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_highlight-boxes.scss +3 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_hint.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +18 -7
- data/app/assets/stylesheets/govuk_publishing_components/components/_input.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_inset-text.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_label.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-footer.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-for-admin.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-header.scss +6 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_modal-dialogue.scss +8 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_panel.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_phase-banner.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_previous-and-next-navigation.scss +6 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_radio.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_related-navigation.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +10 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_select.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_skip-link.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-header.scss +3 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav.scss +17 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_subscription-links.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_table.scss +8 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_textarea.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_title.scss +5 -5
- data/app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_advisory.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_attachment.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_button.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_call-to-action.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_charts.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_contact.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_example.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_footnotes.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_fraction.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_highlight-answer.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_information-callout.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_legislative-list.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_media-player.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_place.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_stat-headline.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_tables.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_typography.scss +4 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_warning-callout.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_govuk-frontend-settings.scss +0 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss +4 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_variables.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_govspeak.scss +1 -1
- data/app/views/govuk_publishing_components/component_guide/index.html.erb +14 -12
- data/app/views/govuk_publishing_components/components/_accordion.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_button.html.erb +16 -2
- data/app/views/govuk_publishing_components/components/_character_count.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_checkboxes.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_contents_list.html.erb +5 -1
- data/app/views/govuk_publishing_components/components/_details.html.erb +3 -1
- data/app/views/govuk_publishing_components/components/_error_summary.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_layout_header.html.erb +2 -2
- data/app/views/govuk_publishing_components/components/_radio.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_subscription-links.html.erb +2 -2
- data/app/views/govuk_publishing_components/components/_tabs.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_textarea.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_title.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/docs/button.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/contents_list.yml +12 -0
- data/app/views/govuk_publishing_components/components/docs/contextual_breadcrumbs.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/fieldset.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/label.yml +4 -1
- data/app/views/govuk_publishing_components/components/docs/table.yml +1 -0
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +2 -2
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +2 -2
- data/config/initializers/assets.rb +3 -3
- data/config/locales/en.yml +0 -2
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/govuk-frontend/README.md +4 -9
- data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +4 -5
- data/node_modules/govuk-frontend/{all-ie8.scss → govuk/all-ie8.scss} +0 -0
- data/node_modules/govuk-frontend/{all.js → govuk/all.js} +116 -63
- data/node_modules/govuk-frontend/{all.scss → govuk/all.scss} +0 -0
- data/node_modules/govuk-frontend/govuk/assets/fonts/bold-affa96571d-v2.woff +0 -0
- data/node_modules/govuk-frontend/govuk/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
- data/node_modules/govuk-frontend/govuk/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
- data/node_modules/govuk-frontend/govuk/assets/fonts/light-f591b13f7d-v2.woff +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/favicon.ico +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-apple-touch-icon-152x152.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-apple-touch-icon-167x167.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-apple-touch-icon-180x180.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-apple-touch-icon.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-crest-2x.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-crest.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-logotype-crown.png +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-mask-icon.svg +0 -0
- data/node_modules/govuk-frontend/{assets → govuk/assets}/images/govuk-opengraph-image.png +0 -0
- data/node_modules/govuk-frontend/{common.js → govuk/common.js} +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/_accordion.scss +48 -28
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/accordion.js +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/macro-options.json +8 -2
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/accordion/template.njk +1 -3
- data/node_modules/govuk-frontend/{components → govuk/components}/back-link/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/back-link/_back-link.scss +17 -9
- data/node_modules/govuk-frontend/{components → govuk/components}/back-link/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/back-link/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/back-link/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/breadcrumbs/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/breadcrumbs/_breadcrumbs.scss +10 -11
- data/node_modules/govuk-frontend/{components → govuk/components}/breadcrumbs/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/breadcrumbs/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/breadcrumbs/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/button/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/button/_button.scss +76 -46
- data/node_modules/govuk-frontend/{components → govuk/components}/button/button.js +168 -17
- data/node_modules/govuk-frontend/{components → govuk/components}/button/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/button/macro.njk +0 -0
- data/node_modules/govuk-frontend/govuk/components/button/template.njk +60 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/_character-count.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/character-count.js +5 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/character-count/template.njk +2 -2
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/_checkboxes.scss +4 -6
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/checkboxes.js +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/macro-options.json +6 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/checkboxes/template.njk +18 -5
- data/node_modules/govuk-frontend/{components → govuk/components}/date-input/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/date-input/_date-input.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/date-input/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/date-input/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/date-input/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/details/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/details/_details.scss +12 -13
- data/node_modules/govuk-frontend/{components → govuk/components}/details/details.js +3 -4
- data/node_modules/govuk-frontend/{components → govuk/components}/details/implementation.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/details/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/details/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/details/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/error-message/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-message/_error-message.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-message/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-message/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-message/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/_error-summary.scss +4 -17
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/error-summary.js +0 -10
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/error-summary/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/fieldset/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/fieldset/_fieldset.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/fieldset/macro-options.json +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/fieldset/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/fieldset/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/file-upload/README.md +0 -0
- data/node_modules/govuk-frontend/govuk/components/file-upload/_file-upload.scss +81 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/file-upload/macro-options.json +6 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/file-upload/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/file-upload/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/footer/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/footer/_footer.scss +47 -16
- data/node_modules/govuk-frontend/{components → govuk/components}/footer/macro-options.json +5 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/footer/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/footer/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/header/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/header/_header.scss +34 -21
- data/node_modules/govuk-frontend/{components → govuk/components}/header/header.js +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/header/macro-options.json +2 -2
- data/node_modules/govuk-frontend/{components → govuk/components}/header/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/header/template.njk +6 -9
- data/node_modules/govuk-frontend/{components → govuk/components}/hint/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/hint/_hint.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/hint/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/hint/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/hint/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/input/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/input/_input.scss +24 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/input/macro-options.json +6 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/input/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/input/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/inset-text/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/inset-text/_inset-text.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/inset-text/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/inset-text/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/inset-text/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/label/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/label/_label.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/label/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/label/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/label/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/panel/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/panel/_panel.scss +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/panel/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/panel/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/panel/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/phase-banner/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/phase-banner/_phase-banner.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/phase-banner/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/phase-banner/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/phase-banner/template.njk +5 -7
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/_radios.scss +7 -9
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/radios.js +24 -11
- data/node_modules/govuk-frontend/{components → govuk/components}/radios/template.njk +15 -5
- data/node_modules/govuk-frontend/{components → govuk/components}/select/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/select/_select.scss +23 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/select/macro-options.json +6 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/select/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/select/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/skip-link/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/skip-link/_skip-link.scss +6 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/skip-link/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/skip-link/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/skip-link/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/summary-list/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/summary-list/_summary-list.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/summary-list/macro-options.json +7 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/summary-list/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/summary-list/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/table/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/table/_table.scss +1 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/table/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/table/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/table/template.njk +14 -14
- data/node_modules/govuk-frontend/{components → govuk/components}/tabs/README.md +0 -0
- data/node_modules/govuk-frontend/govuk/components/tabs/_tabs.scss +142 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tabs/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tabs/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tabs/tabs.js +59 -5
- data/node_modules/govuk-frontend/{components → govuk/components}/tabs/template.njk +4 -6
- data/node_modules/govuk-frontend/{components → govuk/components}/tag/README.md +0 -0
- data/node_modules/govuk-frontend/govuk/components/tag/_tag.scss +44 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tag/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tag/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/tag/template.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/textarea/README.md +0 -0
- data/node_modules/govuk-frontend/govuk/components/textarea/_textarea.scss +55 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/textarea/macro-options.json +6 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/textarea/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/textarea/template.njk +1 -1
- data/node_modules/govuk-frontend/{components → govuk/components}/warning-text/README.md +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/warning-text/_warning-text.scss +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/warning-text/macro-options.json +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/warning-text/macro.njk +0 -0
- data/node_modules/govuk-frontend/{components → govuk/components}/warning-text/template.njk +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_global-styles.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_links.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_lists.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_section-break.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_template.scss +0 -0
- data/node_modules/govuk-frontend/{core → govuk/core}/_typography.scss +0 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_all.scss +1 -1
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_clearfix.scss +0 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_colour.scss +23 -1
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_device-pixels.scss +0 -0
- data/node_modules/govuk-frontend/govuk/helpers/_focused.scss +28 -0
- data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +41 -0
- data/node_modules/govuk-frontend/govuk/helpers/_grid.scss +60 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_links.scss +15 -1
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_media-queries.scss +0 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_shape-arrow.scss +0 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_spacing.scss +0 -0
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_typography.scss +23 -5
- data/node_modules/govuk-frontend/{helpers → govuk/helpers}/_visually-hidden.scss +4 -2
- data/node_modules/govuk-frontend/{objects → govuk/objects}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{objects → govuk/objects}/_form-group.scss +0 -0
- data/node_modules/govuk-frontend/{objects → govuk/objects}/_grid.scss +2 -2
- data/node_modules/govuk-frontend/{objects → govuk/objects}/_main-wrapper.scss +15 -1
- data/node_modules/govuk-frontend/{objects → govuk/objects}/_width-container.scss +0 -0
- data/node_modules/govuk-frontend/{overrides → govuk/overrides}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{overrides → govuk/overrides}/_display.scss +0 -0
- data/node_modules/govuk-frontend/{overrides → govuk/overrides}/_spacing.scss +0 -0
- data/node_modules/govuk-frontend/{overrides → govuk/overrides}/_typography.scss +0 -0
- data/node_modules/govuk-frontend/{overrides → govuk/overrides}/_width.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_assets.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_colours-applied.scss +9 -8
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_colours-organisations.scss +1 -1
- data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +101 -0
- data/node_modules/govuk-frontend/govuk/settings/_compatibility.scss +75 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_global-styles.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_ie8.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_measurements.scss +2 -2
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_media-queries.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_spacing.scss +0 -0
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_typography-font-families.scss +11 -1
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_typography-font.scss +27 -7
- data/node_modules/govuk-frontend/{settings → govuk/settings}/_typography-responsive.scss +9 -10
- data/node_modules/govuk-frontend/{template.njk → govuk/template.njk} +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_compatibility.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_exports.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_font-url.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_ie8.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_iff.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_image-url.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_px-to-em.scss +0 -0
- data/node_modules/govuk-frontend/{tools → govuk/tools}/_px-to-rem.scss +0 -0
- data/node_modules/govuk-frontend/{utilities → govuk/utilities}/_all.scss +0 -0
- data/node_modules/govuk-frontend/{utilities → govuk/utilities}/_clearfix.scss +0 -0
- data/node_modules/govuk-frontend/{utilities → govuk/utilities}/_visually-hidden.scss +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/_sass-mq.scss +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/DOMTokenList.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Document.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Element.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Element/prototype/classList.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Element/prototype/closest.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Element/prototype/matches.js +0 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +259 -0
- data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +257 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Event.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Function/prototype/bind.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Object/defineProperty.js +0 -0
- data/node_modules/govuk-frontend/{vendor → govuk/vendor}/polyfills/Window.js +0 -0
- data/node_modules/govuk-frontend/package.json +21 -21
- data/node_modules/react-is/README.md +2 -12
- data/node_modules/react-is/build-info.json +5 -5
- data/node_modules/react-is/cjs/react-is.development.js +7 -2
- data/node_modules/react-is/cjs/react-is.production.min.js +6 -6
- data/node_modules/react-is/package.json +13 -13
- data/node_modules/react-is/umd/react-is.development.js +7 -2
- data/node_modules/react-is/umd/react-is.production.min.js +5 -5
- data/node_modules/type/CHANGELOG.md +62 -50
- data/node_modules/type/LICENSE +15 -0
- data/node_modules/type/README.md +19 -19
- data/node_modules/type/error/is.js +28 -7
- data/node_modules/type/package.json +36 -22
- data/node_modules/type/test/error/is.js +13 -5
- metadata +247 -344
- data/app/assets/javascripts/govuk_publishing_components/components/accessible-autocomplete.js +0 -79
- data/app/assets/stylesheets/govuk_publishing_components/components/_accessible-autocomplete.scss +0 -41
- data/app/views/govuk_publishing_components/components/_accessible_autocomplete.html.erb +0 -35
- data/app/views/govuk_publishing_components/components/docs/accessible_autocomplete.yml +0 -49
- data/node_modules/accessible-autocomplete/CHANGELOG.md +0 -269
- data/node_modules/accessible-autocomplete/CONTRIBUTING.md +0 -150
- data/node_modules/accessible-autocomplete/LICENSE.txt +0 -20
- data/node_modules/accessible-autocomplete/Procfile +0 -1
- data/node_modules/accessible-autocomplete/README.md +0 -416
- data/node_modules/accessible-autocomplete/accessibility-criteria.md +0 -42
- data/node_modules/accessible-autocomplete/app.json +0 -15
- data/node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.css +0 -1
- data/node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.js +0 -2
- data/node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.js.map +0 -1
- data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.preact.min.js +0 -2
- data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.preact.min.js.map +0 -1
- data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.react.min.js +0 -2
- data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.react.min.js.map +0 -1
- data/node_modules/accessible-autocomplete/examples/form.html +0 -671
- data/node_modules/accessible-autocomplete/examples/index.html +0 -665
- data/node_modules/accessible-autocomplete/examples/multiselect.html +0 -134
- data/node_modules/accessible-autocomplete/examples/preact/index.html +0 -346
- data/node_modules/accessible-autocomplete/examples/react/index.html +0 -347
- data/node_modules/accessible-autocomplete/package-lock.json +0 -14491
- data/node_modules/accessible-autocomplete/package.json +0 -173
- data/node_modules/accessible-autocomplete/preact.js +0 -1
- data/node_modules/accessible-autocomplete/react.js +0 -1
- data/node_modules/accessible-autocomplete/scripts/check-staged.js +0 -14
- data/node_modules/accessible-autocomplete/src/autocomplete.css +0 -192
- data/node_modules/accessible-autocomplete/src/autocomplete.js +0 -618
- data/node_modules/accessible-autocomplete/src/dropdown-arrow-down.js +0 -11
- data/node_modules/accessible-autocomplete/src/status.js +0 -80
- data/node_modules/accessible-autocomplete/src/wrapper.js +0 -76
- data/node_modules/accessible-autocomplete/test/functional/dropdown-arrow-down.js +0 -44
- data/node_modules/accessible-autocomplete/test/functional/index.js +0 -485
- data/node_modules/accessible-autocomplete/test/functional/wrapper.js +0 -318
- data/node_modules/accessible-autocomplete/test/integration/index.js +0 -188
- data/node_modules/accessible-autocomplete/test/karma.config.js +0 -42
- data/node_modules/accessible-autocomplete/test/wdio.config.js +0 -80
- data/node_modules/accessible-autocomplete/webpack.config.babel.js +0 -193
- data/node_modules/govuk-frontend/assets/fonts/bold-a2452cb66f-v1.woff2 +0 -0
- data/node_modules/govuk-frontend/assets/fonts/bold-f38c792ac2-v1.woff +0 -0
- data/node_modules/govuk-frontend/assets/fonts/bold-fb2676462a-v1.eot +0 -0
- data/node_modules/govuk-frontend/assets/fonts/bold-tabular-357fdfbcc3-v1.eot +0 -0
- data/node_modules/govuk-frontend/assets/fonts/bold-tabular-784c21afb8-v1.woff +0 -0
- data/node_modules/govuk-frontend/assets/fonts/bold-tabular-b89238d840-v1.woff2 +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-2c037cf7e1-v1.eot +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-458f8ea81c-v1.woff +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-f38ad40456-v1.woff2 +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-tabular-498ea8ffe2-v1.eot +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-tabular-62cc6f0a28-v1.woff +0 -0
- data/node_modules/govuk-frontend/assets/fonts/light-tabular-851b10ccdd-v1.woff2 +0 -0
- data/node_modules/govuk-frontend/assets/images/icon-arrow-left.png +0 -0
- data/node_modules/govuk-frontend/assets/images/icon-important.png +0 -0
- data/node_modules/govuk-frontend/assets/images/icon-pointer-2x.png +0 -0
- data/node_modules/govuk-frontend/assets/images/icon-pointer.png +0 -0
- data/node_modules/govuk-frontend/components/button/template.njk +0 -35
- data/node_modules/govuk-frontend/components/file-upload/_file-upload.scss +0 -19
- data/node_modules/govuk-frontend/components/tabs/_tabs.scss +0 -130
- data/node_modules/govuk-frontend/components/tag/_tag.scss +0 -33
- data/node_modules/govuk-frontend/components/textarea/_textarea.scss +0 -32
- data/node_modules/govuk-frontend/helpers/_focusable.scss +0 -34
- data/node_modules/govuk-frontend/helpers/_font-faces.scss +0 -67
- data/node_modules/govuk-frontend/helpers/_grid.scss +0 -107
- data/node_modules/govuk-frontend/settings/_colours-palette.scss +0 -37
- data/node_modules/govuk-frontend/settings/_compatibility.scss +0 -51
- data/node_modules/preact/LICENSE +0 -21
- data/node_modules/preact/README.md +0 -592
- data/node_modules/preact/debug.js +0 -740
- data/node_modules/preact/debug.js.map +0 -1
- data/node_modules/preact/debug/dist/debug.js +0 -2
- data/node_modules/preact/debug/dist/debug.js.map +0 -1
- data/node_modules/preact/debug/dist/debug.mjs +0 -681
- data/node_modules/preact/debug/dist/debug.mjs.map +0 -1
- data/node_modules/preact/debug/dist/debug.module.js +0 -2
- data/node_modules/preact/debug/dist/debug.module.js.map +0 -1
- data/node_modules/preact/debug/dist/debug.umd.js +0 -2
- data/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
- data/node_modules/preact/debug/index.js +0 -122
- data/node_modules/preact/devtools.js +0 -403
- data/node_modules/preact/devtools.js.map +0 -1
- data/node_modules/preact/devtools/devtools.js +0 -395
- data/node_modules/preact/devtools/index.js +0 -4
- data/node_modules/preact/dist/preact.d.ts +0 -1712
- data/node_modules/preact/dist/preact.dev.js +0 -727
- data/node_modules/preact/dist/preact.dev.js.map +0 -1
- data/node_modules/preact/dist/preact.js +0 -414
- data/node_modules/preact/dist/preact.js.flow +0 -25
- data/node_modules/preact/dist/preact.js.map +0 -1
- data/node_modules/preact/dist/preact.min.js +0 -2
- data/node_modules/preact/dist/preact.min.js.map +0 -1
- data/node_modules/preact/dist/preact.mjs +0 -724
- data/node_modules/preact/dist/preact.mjs.map +0 -1
- data/node_modules/preact/dist/preact.umd.js +0 -751
- data/node_modules/preact/dist/preact.umd.js.map +0 -1
- data/node_modules/preact/package.json +0 -226
- data/node_modules/preact/src/clone-element.js +0 -18
- data/node_modules/preact/src/component.js +0 -90
- data/node_modules/preact/src/constants.js +0 -17
- data/node_modules/preact/src/dom/index.js +0 -139
- data/node_modules/preact/src/h.js +0 -86
- data/node_modules/preact/src/options.js +0 -22
- data/node_modules/preact/src/preact.d.ts +0 -1712
- data/node_modules/preact/src/preact.js +0 -32
- data/node_modules/preact/src/preact.js.flow +0 -25
- data/node_modules/preact/src/render-queue.js +0 -27
- data/node_modules/preact/src/render.js +0 -22
- data/node_modules/preact/src/util.js +0 -30
- data/node_modules/preact/src/vdom/component-recycler.js +0 -48
- data/node_modules/preact/src/vdom/component.js +0 -296
- data/node_modules/preact/src/vdom/diff.js +0 -337
- data/node_modules/preact/src/vdom/index.js +0 -54
- data/node_modules/preact/src/vnode.js +0 -9
- data/node_modules/preact/typings.json +0 -5
@@ -1,11 +0,0 @@
|
|
1
|
-
import { createElement } from 'preact' /** @jsx createElement */
|
2
|
-
|
3
|
-
const DropdownArrowDown = ({ className }) => (
|
4
|
-
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' className={className} focusable='false'>
|
5
|
-
<g stroke='none' fill='none' fill-rule='evenodd'>
|
6
|
-
<polygon fill='#000000' points='0 0 22 0 11 17' />
|
7
|
-
</g>
|
8
|
-
</svg>
|
9
|
-
)
|
10
|
-
|
11
|
-
export default DropdownArrowDown
|
@@ -1,80 +0,0 @@
|
|
1
|
-
import { createElement, Component } from 'preact' /** @jsx createElement */
|
2
|
-
|
3
|
-
export default class Status extends Component {
|
4
|
-
static defaultProps = {
|
5
|
-
tQueryTooShort: (minQueryLength) => `Type in ${minQueryLength} or more characters for results.`,
|
6
|
-
tNoResults: () => 'No search results.',
|
7
|
-
tSelectedOption: (selectedOption, length, index) => `${selectedOption} (${index + 1} of ${length}) is selected.`,
|
8
|
-
tResults: (length, contentSelectedOption) => {
|
9
|
-
const words = {
|
10
|
-
result: (length === 1) ? 'result' : 'results',
|
11
|
-
is: (length === 1) ? 'is' : 'are'
|
12
|
-
}
|
13
|
-
|
14
|
-
return `${length} ${words.result} ${words.is} available. ${contentSelectedOption}`
|
15
|
-
}
|
16
|
-
};
|
17
|
-
|
18
|
-
state = {
|
19
|
-
bump: false
|
20
|
-
}
|
21
|
-
|
22
|
-
componentWillReceiveProps ({ queryLength }) {
|
23
|
-
const hasChanged = queryLength !== this.props.queryLength
|
24
|
-
if (hasChanged) {
|
25
|
-
this.setState(({ bump }) => ({ bump: !bump }))
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
render () {
|
30
|
-
const {
|
31
|
-
length,
|
32
|
-
queryLength,
|
33
|
-
minQueryLength,
|
34
|
-
selectedOption,
|
35
|
-
selectedOptionIndex,
|
36
|
-
tQueryTooShort,
|
37
|
-
tNoResults,
|
38
|
-
tSelectedOption,
|
39
|
-
tResults
|
40
|
-
} = this.props
|
41
|
-
const { bump } = this.state
|
42
|
-
|
43
|
-
const queryTooShort = queryLength < minQueryLength
|
44
|
-
const noResults = length === 0
|
45
|
-
|
46
|
-
const contentSelectedOption = selectedOption
|
47
|
-
? tSelectedOption(selectedOption, length, selectedOptionIndex)
|
48
|
-
: ''
|
49
|
-
|
50
|
-
let content = null
|
51
|
-
if (queryTooShort) {
|
52
|
-
content = tQueryTooShort(minQueryLength)
|
53
|
-
} else if (noResults) {
|
54
|
-
content = tNoResults()
|
55
|
-
} else {
|
56
|
-
content = tResults(length, contentSelectedOption)
|
57
|
-
}
|
58
|
-
|
59
|
-
return <div
|
60
|
-
aria-atomic='true'
|
61
|
-
aria-live='polite'
|
62
|
-
role='status'
|
63
|
-
style={{
|
64
|
-
border: '0',
|
65
|
-
clip: 'rect(0 0 0 0)',
|
66
|
-
height: '1px',
|
67
|
-
marginBottom: '-1px',
|
68
|
-
marginRight: '-1px',
|
69
|
-
overflow: 'hidden',
|
70
|
-
padding: '0',
|
71
|
-
position: 'absolute',
|
72
|
-
whiteSpace: 'nowrap',
|
73
|
-
width: '1px'
|
74
|
-
}}
|
75
|
-
>
|
76
|
-
{content}
|
77
|
-
<span>{bump ? ',' : ',,'}</span>
|
78
|
-
</div>
|
79
|
-
}
|
80
|
-
}
|
@@ -1,76 +0,0 @@
|
|
1
|
-
import { createElement, render } from 'preact' /** @jsx createElement */
|
2
|
-
import Autocomplete from './autocomplete'
|
3
|
-
|
4
|
-
function accessibleAutocomplete (options) {
|
5
|
-
if (!options.element) { throw new Error('element is not defined') }
|
6
|
-
if (!options.id) { throw new Error('id is not defined') }
|
7
|
-
if (!options.source) { throw new Error('source is not defined') }
|
8
|
-
if (Array.isArray(options.source)) {
|
9
|
-
options.source = createSimpleEngine(options.source)
|
10
|
-
}
|
11
|
-
render(<Autocomplete {...options} />, options.element)
|
12
|
-
}
|
13
|
-
|
14
|
-
const createSimpleEngine = (values) => (query, syncResults) => {
|
15
|
-
var matches = values.filter(r => r.toLowerCase().indexOf(query.toLowerCase()) !== -1)
|
16
|
-
syncResults(matches)
|
17
|
-
}
|
18
|
-
|
19
|
-
accessibleAutocomplete.enhanceSelectElement = (configurationOptions) => {
|
20
|
-
if (!configurationOptions.selectElement) { throw new Error('selectElement is not defined') }
|
21
|
-
|
22
|
-
// Set defaults.
|
23
|
-
if (!configurationOptions.source) {
|
24
|
-
let availableOptions = [].filter.call(configurationOptions.selectElement.options, option => (option.value || configurationOptions.preserveNullOptions))
|
25
|
-
configurationOptions.source = availableOptions.map(option => option.textContent || option.innerText)
|
26
|
-
|
27
|
-
// Store selected options
|
28
|
-
if (configurationOptions.selectElement.multiple) {
|
29
|
-
configurationOptions.multiple = true
|
30
|
-
configurationOptions.confirmOnBlur = false
|
31
|
-
configurationOptions.showNoOptionsFound = false
|
32
|
-
configurationOptions.selectedOptions = availableOptions.filter(option => option.selected)
|
33
|
-
}
|
34
|
-
}
|
35
|
-
configurationOptions.onConfirm = configurationOptions.onConfirm || (query => {
|
36
|
-
const requestedOption = [].filter.call(configurationOptions.selectElement.options, option => (option.textContent || option.innerText) === query)[0]
|
37
|
-
if (requestedOption) {
|
38
|
-
requestedOption.selected = true
|
39
|
-
} else {
|
40
|
-
configurationOptions.selectElement.options[0].selected = true
|
41
|
-
}
|
42
|
-
})
|
43
|
-
|
44
|
-
if (configurationOptions.selectElement.value || configurationOptions.defaultValue === undefined) {
|
45
|
-
const option = configurationOptions.selectElement.options[configurationOptions.selectElement.options.selectedIndex]
|
46
|
-
if (configurationOptions.selectElement.multiple) {
|
47
|
-
configurationOptions.defaultValue = ''
|
48
|
-
} else if (option.textContent || option.innerText) {
|
49
|
-
configurationOptions.defaultValue = option.textContent || option.innerText
|
50
|
-
}
|
51
|
-
}
|
52
|
-
|
53
|
-
if (configurationOptions.name === undefined) configurationOptions.name = ''
|
54
|
-
if (configurationOptions.id === undefined) {
|
55
|
-
if (configurationOptions.selectElement.id === undefined) {
|
56
|
-
configurationOptions.id = ''
|
57
|
-
} else {
|
58
|
-
configurationOptions.id = configurationOptions.selectElement.id
|
59
|
-
}
|
60
|
-
}
|
61
|
-
if (configurationOptions.autoselect === undefined) configurationOptions.autoselect = true
|
62
|
-
|
63
|
-
const element = document.createElement('span')
|
64
|
-
|
65
|
-
configurationOptions.selectElement.parentNode.insertBefore(element, configurationOptions.selectElement)
|
66
|
-
|
67
|
-
accessibleAutocomplete({
|
68
|
-
...configurationOptions,
|
69
|
-
element: element
|
70
|
-
})
|
71
|
-
|
72
|
-
configurationOptions.selectElement.style.display = 'none'
|
73
|
-
configurationOptions.selectElement.id = configurationOptions.selectElement.id + '-select'
|
74
|
-
}
|
75
|
-
|
76
|
-
export default accessibleAutocomplete
|
@@ -1,44 +0,0 @@
|
|
1
|
-
/* global before, beforeEach, after, describe, expect, it */
|
2
|
-
import { createElement, render } from 'preact' /** @jsx createElement */
|
3
|
-
import DropdownArrowDown from '../../src/dropdown-arrow-down'
|
4
|
-
|
5
|
-
describe('DropdownArrowDown', () => {
|
6
|
-
describe('rendering', () => {
|
7
|
-
let scratch
|
8
|
-
|
9
|
-
before(() => {
|
10
|
-
scratch = document.createElement('div');
|
11
|
-
(document.body || document.documentElement).appendChild(scratch)
|
12
|
-
})
|
13
|
-
|
14
|
-
beforeEach(() => {
|
15
|
-
scratch.innerHTML = ''
|
16
|
-
})
|
17
|
-
|
18
|
-
after(() => {
|
19
|
-
scratch.parentNode.removeChild(scratch)
|
20
|
-
scratch = null
|
21
|
-
})
|
22
|
-
|
23
|
-
describe('basic usage', () => {
|
24
|
-
it('renders an svg', () => {
|
25
|
-
render(<DropdownArrowDown />, scratch)
|
26
|
-
|
27
|
-
expect(scratch.innerHTML).to.contain('svg')
|
28
|
-
})
|
29
|
-
|
30
|
-
it('renders with a given custom class', () => {
|
31
|
-
render(<DropdownArrowDown className='foo' />, scratch)
|
32
|
-
|
33
|
-
expect(scratch.innerHTML).to.contain('class="foo"')
|
34
|
-
})
|
35
|
-
|
36
|
-
// IE issue so the dropdown svg is not focusable (tabindex won't work for this)
|
37
|
-
it('renders an svg where focusable attribute is false', () => {
|
38
|
-
render(<DropdownArrowDown />, scratch)
|
39
|
-
|
40
|
-
expect(scratch.innerHTML).to.contain('focusable="false"')
|
41
|
-
})
|
42
|
-
})
|
43
|
-
})
|
44
|
-
})
|
@@ -1,485 +0,0 @@
|
|
1
|
-
/* global after, describe, before, beforeEach, expect, it */
|
2
|
-
import { createElement, render } from 'preact' /** @jsx createElement */
|
3
|
-
import Autocomplete from '../../src/autocomplete'
|
4
|
-
|
5
|
-
function suggest (query, syncResults) {
|
6
|
-
var results = [
|
7
|
-
'France',
|
8
|
-
'Germany',
|
9
|
-
'United Kingdom'
|
10
|
-
]
|
11
|
-
syncResults(query
|
12
|
-
? results.filter(function (result) {
|
13
|
-
return result.toLowerCase().indexOf(query.toLowerCase()) !== -1
|
14
|
-
})
|
15
|
-
: []
|
16
|
-
)
|
17
|
-
}
|
18
|
-
|
19
|
-
describe('Autocomplete', () => {
|
20
|
-
describe('rendering', () => {
|
21
|
-
let scratch
|
22
|
-
|
23
|
-
before(() => {
|
24
|
-
scratch = document.createElement('div');
|
25
|
-
(document.body || document.documentElement).appendChild(scratch)
|
26
|
-
})
|
27
|
-
|
28
|
-
beforeEach(() => {
|
29
|
-
scratch.innerHTML = ''
|
30
|
-
})
|
31
|
-
|
32
|
-
after(() => {
|
33
|
-
scratch.parentNode.removeChild(scratch)
|
34
|
-
scratch = null
|
35
|
-
})
|
36
|
-
|
37
|
-
describe('basic usage', () => {
|
38
|
-
it('renders an input', () => {
|
39
|
-
render(<Autocomplete />, scratch)
|
40
|
-
|
41
|
-
expect(scratch.innerHTML).to.contain('input')
|
42
|
-
expect(scratch.innerHTML).to.contain('class="autocomplete__input')
|
43
|
-
expect(scratch.innerHTML).to.contain('class="autocomplete__menu')
|
44
|
-
expect(scratch.innerHTML).to.contain('name="input-autocomplete"')
|
45
|
-
})
|
46
|
-
|
47
|
-
it('renders an input with a required attribute', () => {
|
48
|
-
render(<Autocomplete required />, scratch)
|
49
|
-
|
50
|
-
expect(scratch.innerHTML).to.contain('required')
|
51
|
-
})
|
52
|
-
|
53
|
-
it('renders an input without a required attribute', () => {
|
54
|
-
render(<Autocomplete required={false} />, scratch)
|
55
|
-
|
56
|
-
expect(scratch.innerHTML).to.not.contain('required')
|
57
|
-
})
|
58
|
-
|
59
|
-
it('renders an input with a name attribute', () => {
|
60
|
-
render(<Autocomplete name='bob' />, scratch)
|
61
|
-
|
62
|
-
expect(scratch.innerHTML).to.contain('name="bob"')
|
63
|
-
})
|
64
|
-
|
65
|
-
it('renders an input with a custom CSS namespace', () => {
|
66
|
-
render(<Autocomplete cssNamespace='bob' />, scratch)
|
67
|
-
|
68
|
-
expect(scratch.innerHTML).to.contain('class="bob__input')
|
69
|
-
expect(scratch.innerHTML).to.contain('class="bob__menu')
|
70
|
-
})
|
71
|
-
|
72
|
-
it('renders with the correct aria attributes', () => {
|
73
|
-
render(<Autocomplete required />, scratch)
|
74
|
-
|
75
|
-
let wrapperElement = scratch.getElementsByClassName('autocomplete__wrapper')[0]
|
76
|
-
|
77
|
-
expect(wrapperElement.getAttribute('aria-expanded')).to.equal('false')
|
78
|
-
})
|
79
|
-
|
80
|
-
it('renders with the correct roles', () => {
|
81
|
-
render(<Autocomplete required />, scratch)
|
82
|
-
|
83
|
-
let wrapperElement = scratch.getElementsByClassName('autocomplete__wrapper')[0]
|
84
|
-
let inputElement = wrapperElement.getElementsByTagName('input')[0]
|
85
|
-
let dropdownElement = wrapperElement.getElementsByTagName('ul')[0]
|
86
|
-
|
87
|
-
expect(inputElement.getAttribute('role')).to.equal('textbox', 'input should have textbox role')
|
88
|
-
expect(dropdownElement.getAttribute('role')).to.equal('listbox', 'menu should have listbox role')
|
89
|
-
})
|
90
|
-
})
|
91
|
-
})
|
92
|
-
|
93
|
-
describe('behaviour', () => {
|
94
|
-
let autocomplete, autoselectAutocomplete, onConfirmAutocomplete, onConfirmTriggered,
|
95
|
-
autoselectOnSelectAutocomplete, confirmOnBlurAutocomplete
|
96
|
-
|
97
|
-
beforeEach(() => {
|
98
|
-
autocomplete = new Autocomplete({
|
99
|
-
...Autocomplete.defaultProps,
|
100
|
-
id: 'test',
|
101
|
-
source: suggest
|
102
|
-
})
|
103
|
-
|
104
|
-
autoselectAutocomplete = new Autocomplete({
|
105
|
-
...Autocomplete.defaultProps,
|
106
|
-
autoselect: true,
|
107
|
-
id: 'test2',
|
108
|
-
source: suggest
|
109
|
-
})
|
110
|
-
|
111
|
-
onConfirmTriggered = false
|
112
|
-
onConfirmAutocomplete = new Autocomplete({
|
113
|
-
...Autocomplete.defaultProps,
|
114
|
-
id: 'test3',
|
115
|
-
onConfirm: () => { onConfirmTriggered = true },
|
116
|
-
source: suggest
|
117
|
-
})
|
118
|
-
|
119
|
-
autoselectOnSelectAutocomplete = new Autocomplete({
|
120
|
-
...Autocomplete.defaultProps,
|
121
|
-
autoselect: true,
|
122
|
-
id: 'test4',
|
123
|
-
onConfirm: () => { onConfirmTriggered = true },
|
124
|
-
source: suggest
|
125
|
-
})
|
126
|
-
|
127
|
-
confirmOnBlurAutocomplete = new Autocomplete({
|
128
|
-
...Autocomplete.defaultProps,
|
129
|
-
id: 'test5',
|
130
|
-
onConfirm: () => { onConfirmTriggered = true },
|
131
|
-
confirmOnBlur: false,
|
132
|
-
source: suggest
|
133
|
-
})
|
134
|
-
})
|
135
|
-
|
136
|
-
describe('typing', () => {
|
137
|
-
it('searches for options', () => {
|
138
|
-
autocomplete.handleInputChange({ target: { value: 'f' } })
|
139
|
-
expect(autocomplete.state.menuOpen).to.equal(true)
|
140
|
-
expect(autocomplete.state.options).to.contain('France')
|
141
|
-
})
|
142
|
-
|
143
|
-
it('hides menu when no options are available', () => {
|
144
|
-
autocomplete.handleInputChange({ target: { value: 'aa' } })
|
145
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
146
|
-
expect(autocomplete.state.options.length).to.equal(0)
|
147
|
-
})
|
148
|
-
|
149
|
-
it('hides menu when query becomes empty', () => {
|
150
|
-
autocomplete.setState({ query: 'f', options: ['France'], menuOpen: true })
|
151
|
-
autocomplete.handleInputChange({ target: { value: '' } })
|
152
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
153
|
-
})
|
154
|
-
|
155
|
-
describe('with minLength', () => {
|
156
|
-
beforeEach(() => {
|
157
|
-
autocomplete = new Autocomplete({
|
158
|
-
...Autocomplete.defaultProps,
|
159
|
-
id: 'test',
|
160
|
-
source: suggest,
|
161
|
-
minLength: 2
|
162
|
-
})
|
163
|
-
})
|
164
|
-
|
165
|
-
it('doesn\'t search when under limit', () => {
|
166
|
-
autocomplete.handleInputChange({ target: { value: 'f' } })
|
167
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
168
|
-
expect(autocomplete.state.options.length).to.equal(0)
|
169
|
-
})
|
170
|
-
|
171
|
-
it('does search when over limit', () => {
|
172
|
-
autocomplete.handleInputChange({ target: { value: 'fra' } })
|
173
|
-
expect(autocomplete.state.menuOpen).to.equal(true)
|
174
|
-
expect(autocomplete.state.options).to.contain('France')
|
175
|
-
})
|
176
|
-
|
177
|
-
it('hides results when going under limit', () => {
|
178
|
-
autocomplete.setState({ menuOpen: true, query: 'fr', options: ['France'] })
|
179
|
-
autocomplete.handleInputChange({ target: { value: 'f' } })
|
180
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
181
|
-
expect(autocomplete.state.options.length).to.equal(0)
|
182
|
-
})
|
183
|
-
})
|
184
|
-
})
|
185
|
-
|
186
|
-
describe('focusing input', () => {
|
187
|
-
it('does not display menu when something is typed in', () => {
|
188
|
-
autocomplete.setState({ query: 'f' })
|
189
|
-
autocomplete.handleInputFocus()
|
190
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
191
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
192
|
-
})
|
193
|
-
|
194
|
-
it('hides menu when query is empty', () => {
|
195
|
-
autocomplete.setState({ query: '' })
|
196
|
-
autocomplete.handleInputFocus()
|
197
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
198
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
199
|
-
})
|
200
|
-
|
201
|
-
describe('with option selected', () => {
|
202
|
-
it('leaves menu open, does not change query', () => {
|
203
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: 0, selected: 0 })
|
204
|
-
autocomplete.handleInputFocus()
|
205
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
206
|
-
expect(autocomplete.state.menuOpen).to.equal(true)
|
207
|
-
expect(autocomplete.state.query).to.equal('fr')
|
208
|
-
})
|
209
|
-
})
|
210
|
-
|
211
|
-
describe('with defaultValue', () => {
|
212
|
-
beforeEach(() => {
|
213
|
-
autocomplete = new Autocomplete({
|
214
|
-
...Autocomplete.defaultProps,
|
215
|
-
defaultValue: 'France',
|
216
|
-
id: 'test',
|
217
|
-
source: suggest
|
218
|
-
})
|
219
|
-
})
|
220
|
-
|
221
|
-
it('is prefilled', () => {
|
222
|
-
expect(autocomplete.state.options.length).to.equal(1)
|
223
|
-
expect(autocomplete.state.options[0]).to.equal('France')
|
224
|
-
expect(autocomplete.state.query).to.equal('France')
|
225
|
-
})
|
226
|
-
})
|
227
|
-
})
|
228
|
-
|
229
|
-
describe('blurring input', () => {
|
230
|
-
it('unfocuses component', (done) => {
|
231
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: -1, selected: -1 })
|
232
|
-
autocomplete.handleInputBlur({ relatedTarget: null })
|
233
|
-
// Using setTimeouts here since changes in values take a while to reflect in lists
|
234
|
-
setTimeout(() => {
|
235
|
-
expect(autocomplete.state.focused).to.equal(null)
|
236
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
237
|
-
expect(autocomplete.state.query).to.equal('fr')
|
238
|
-
done()
|
239
|
-
}, 250)
|
240
|
-
})
|
241
|
-
|
242
|
-
describe('with autoselect and onConfirm', () => {
|
243
|
-
it('unfocuses component, updates query, triggers onConfirm', (done) => {
|
244
|
-
autoselectOnSelectAutocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: -1, selected: 0 })
|
245
|
-
autoselectOnSelectAutocomplete.handleInputBlur({ target: 'mock', relatedTarget: 'relatedMock' }, 0)
|
246
|
-
// Using setTimeouts here since changes in values take a while to reflect in lists
|
247
|
-
setTimeout(() => {
|
248
|
-
expect(autoselectOnSelectAutocomplete.state.focused).to.equal(null)
|
249
|
-
expect(autoselectOnSelectAutocomplete.state.menuOpen).to.equal(false)
|
250
|
-
expect(autoselectOnSelectAutocomplete.state.query).to.equal('France')
|
251
|
-
expect(onConfirmTriggered).to.equal(true)
|
252
|
-
done()
|
253
|
-
}, 250)
|
254
|
-
})
|
255
|
-
})
|
256
|
-
|
257
|
-
describe('with confirmOnBlur false', () => {
|
258
|
-
it('unfocuses component, does not touch query, does not trigger onConfirm', (done) => {
|
259
|
-
confirmOnBlurAutocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: -1, selected: 0 })
|
260
|
-
confirmOnBlurAutocomplete.handleInputBlur({ target: 'mock', relatedTarget: 'relatedMock' }, 0)
|
261
|
-
setTimeout(() => {
|
262
|
-
expect(confirmOnBlurAutocomplete.state.focused).to.equal(null)
|
263
|
-
expect(confirmOnBlurAutocomplete.state.menuOpen).to.equal(false)
|
264
|
-
expect(confirmOnBlurAutocomplete.state.query).to.equal('fr')
|
265
|
-
expect(onConfirmTriggered).to.equal(false)
|
266
|
-
done()
|
267
|
-
}, 250)
|
268
|
-
})
|
269
|
-
})
|
270
|
-
})
|
271
|
-
|
272
|
-
describe('focusing option', () => {
|
273
|
-
it('sets the option as focused', () => {
|
274
|
-
autocomplete.setState({ options: ['France'] })
|
275
|
-
autocomplete.handleOptionFocus(0)
|
276
|
-
expect(autocomplete.state.focused).to.equal(0)
|
277
|
-
})
|
278
|
-
})
|
279
|
-
|
280
|
-
describe('focusing out option', () => {
|
281
|
-
describe('with input selected', () => {
|
282
|
-
it('unfocuses component, does not change query', () => {
|
283
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: 0, selected: -1 })
|
284
|
-
autocomplete.handleOptionBlur({ target: 'mock', relatedTarget: 'relatedMock' }, 0)
|
285
|
-
expect(autocomplete.state.focused).to.equal(null)
|
286
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
287
|
-
expect(autocomplete.state.query).to.equal('fr')
|
288
|
-
})
|
289
|
-
})
|
290
|
-
|
291
|
-
describe('with option selected', () => {
|
292
|
-
describe('with confirmOnBlur true', () => {
|
293
|
-
it('unfocuses component, updates query', () => {
|
294
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: 0, selected: 0 })
|
295
|
-
autocomplete.handleOptionBlur({ target: 'mock', relatedTarget: 'relatedMock' }, 0)
|
296
|
-
expect(autocomplete.state.focused).to.equal(null)
|
297
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
298
|
-
expect(autocomplete.state.query).to.equal('France')
|
299
|
-
})
|
300
|
-
})
|
301
|
-
describe('with confirmOnBlur false', () => {
|
302
|
-
it('unfocuses component, does not update query', () => {
|
303
|
-
confirmOnBlurAutocomplete.setState({ menuOpen: true, options: ['France'], query: 'fr', focused: 0, selected: 0 })
|
304
|
-
confirmOnBlurAutocomplete.handleOptionBlur({ target: 'mock', relatedTarget: 'relatedMock' }, 0)
|
305
|
-
expect(confirmOnBlurAutocomplete.state.focused).to.equal(null)
|
306
|
-
expect(confirmOnBlurAutocomplete.state.menuOpen).to.equal(false)
|
307
|
-
expect(confirmOnBlurAutocomplete.state.query).to.equal('fr')
|
308
|
-
})
|
309
|
-
})
|
310
|
-
})
|
311
|
-
})
|
312
|
-
|
313
|
-
describe('hovering option', () => {
|
314
|
-
it('sets the option as hovered, does not change focused, does not change selected', () => {
|
315
|
-
autocomplete.setState({ options: ['France'], hovered: null, focused: -1, selected: -1 })
|
316
|
-
autocomplete.handleOptionMouseEnter({}, 0)
|
317
|
-
expect(autocomplete.state.hovered).to.equal(0)
|
318
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
319
|
-
expect(autocomplete.state.selected).to.equal(-1)
|
320
|
-
})
|
321
|
-
})
|
322
|
-
|
323
|
-
describe('hovering out option', () => {
|
324
|
-
it('sets focus back on selected, sets hovered to null', () => {
|
325
|
-
autocomplete.setState({ options: ['France'], hovered: 0, focused: -1, selected: -1 })
|
326
|
-
autocomplete.handleListMouseLeave({ toElement: 'mock' }, 0)
|
327
|
-
expect(autocomplete.state.hovered).to.equal(null)
|
328
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
329
|
-
expect(autocomplete.state.selected).to.equal(-1)
|
330
|
-
})
|
331
|
-
})
|
332
|
-
|
333
|
-
describe('up key', () => {
|
334
|
-
it('focuses previous element', () => {
|
335
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], focused: 0 })
|
336
|
-
autocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 38 })
|
337
|
-
expect(autocomplete.state.focused).to.equal(-1)
|
338
|
-
})
|
339
|
-
})
|
340
|
-
|
341
|
-
describe('down key', () => {
|
342
|
-
describe('0 options available', () => {
|
343
|
-
it('does nothing', () => {
|
344
|
-
autocomplete.setState({ menuOpen: false, options: [], focused: -1 })
|
345
|
-
const stateBefore = autocomplete.state
|
346
|
-
autocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
347
|
-
expect(autocomplete.state).to.equal(stateBefore)
|
348
|
-
})
|
349
|
-
})
|
350
|
-
|
351
|
-
describe('1 option available', () => {
|
352
|
-
it('focuses next element', () => {
|
353
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], focused: -1, selected: -1 })
|
354
|
-
autocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
355
|
-
expect(autocomplete.state.focused).to.equal(0)
|
356
|
-
expect(autocomplete.state.selected).to.equal(0)
|
357
|
-
})
|
358
|
-
})
|
359
|
-
|
360
|
-
describe('2 or more option available', () => {
|
361
|
-
it('focuses next element', () => {
|
362
|
-
autocomplete.setState({ menuOpen: true, options: ['France', 'Germany'], focused: 0, selected: 0 })
|
363
|
-
autocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
364
|
-
expect(autocomplete.state.focused).to.equal(1)
|
365
|
-
expect(autocomplete.state.selected).to.equal(1)
|
366
|
-
})
|
367
|
-
})
|
368
|
-
|
369
|
-
describe('autoselect', () => {
|
370
|
-
describe('0 options available', () => {
|
371
|
-
it('does nothing', () => {
|
372
|
-
autoselectAutocomplete.setState({ menuOpen: false, options: [], focused: -1, selected: -1 })
|
373
|
-
const stateBefore = autoselectAutocomplete.state
|
374
|
-
autoselectAutocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
375
|
-
expect(autoselectAutocomplete.state).to.equal(stateBefore)
|
376
|
-
})
|
377
|
-
})
|
378
|
-
|
379
|
-
describe('1 option available', () => {
|
380
|
-
it('does nothing', () => {
|
381
|
-
autoselectAutocomplete.setState({ menuOpen: true, options: ['France'], focused: -1, selected: 0 })
|
382
|
-
const stateBefore = autoselectAutocomplete.state
|
383
|
-
autoselectAutocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
384
|
-
expect(autoselectAutocomplete.state).to.equal(stateBefore)
|
385
|
-
})
|
386
|
-
})
|
387
|
-
|
388
|
-
describe('2 or more option available', () => {
|
389
|
-
it('on input, focuses second element', () => {
|
390
|
-
autoselectAutocomplete.setState({ menuOpen: true, options: ['France', 'Germany'], focused: -1, selected: 0 })
|
391
|
-
autoselectAutocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 40 })
|
392
|
-
expect(autoselectAutocomplete.state.focused).to.equal(1)
|
393
|
-
expect(autoselectAutocomplete.state.selected).to.equal(1)
|
394
|
-
})
|
395
|
-
})
|
396
|
-
})
|
397
|
-
})
|
398
|
-
|
399
|
-
describe('escape key', () => {
|
400
|
-
it('unfocuses component', () => {
|
401
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], focused: -1 })
|
402
|
-
autocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 27 })
|
403
|
-
expect(autocomplete.state.menuOpen).to.equal(false)
|
404
|
-
expect(autocomplete.state.focused).to.equal(null)
|
405
|
-
})
|
406
|
-
})
|
407
|
-
|
408
|
-
describe('enter key', () => {
|
409
|
-
describe('on an option', () => {
|
410
|
-
it('prevents default, closes the menu, sets the query, focuses the input, triggers onConfirm', () => {
|
411
|
-
let preventedDefault = false
|
412
|
-
onConfirmAutocomplete.setState({ menuOpen: true, options: ['France'], focused: 0, selected: 0 })
|
413
|
-
onConfirmAutocomplete.handleKeyDown({ preventDefault: () => { preventedDefault = true }, keyCode: 13 })
|
414
|
-
expect(onConfirmAutocomplete.state.menuOpen).to.equal(false)
|
415
|
-
expect(onConfirmAutocomplete.state.query).to.equal('France')
|
416
|
-
expect(onConfirmAutocomplete.state.focused).to.equal(-1)
|
417
|
-
expect(onConfirmAutocomplete.state.selected).to.equal(-1)
|
418
|
-
expect(preventedDefault).to.equal(true)
|
419
|
-
expect(onConfirmTriggered).to.equal(true)
|
420
|
-
})
|
421
|
-
})
|
422
|
-
|
423
|
-
describe('on the input', () => {
|
424
|
-
describe('with menu opened', () => {
|
425
|
-
it('prevents default, does nothing', () => {
|
426
|
-
let preventedDefault = false
|
427
|
-
autocomplete.setState({ menuOpen: true, options: [], query: 'asd', focused: -1, selected: -1 })
|
428
|
-
const stateBefore = autocomplete.state
|
429
|
-
autocomplete.handleKeyDown({ preventDefault: () => { preventedDefault = true }, keyCode: 13 })
|
430
|
-
expect(autocomplete.state).to.equal(stateBefore)
|
431
|
-
expect(preventedDefault).to.equal(true)
|
432
|
-
})
|
433
|
-
})
|
434
|
-
|
435
|
-
describe('with menu closed', () => {
|
436
|
-
it('bubbles, does not prevent default', () => {
|
437
|
-
let preventedDefault = false
|
438
|
-
autocomplete.setState({ menuOpen: false, options: ['France'], focused: -1, selected: -1 })
|
439
|
-
const stateBefore = autocomplete.state
|
440
|
-
autocomplete.handleKeyDown({ preventDefault: () => { preventedDefault = true }, keyCode: 13 })
|
441
|
-
expect(autocomplete.state).to.equal(stateBefore)
|
442
|
-
expect(preventedDefault).to.equal(false)
|
443
|
-
})
|
444
|
-
})
|
445
|
-
|
446
|
-
describe('autoselect', () => {
|
447
|
-
it('closes the menu, selects the first option, keeps input focused', () => {
|
448
|
-
autoselectAutocomplete.setState({ menuOpen: true, options: ['France'], focused: -1, selected: 0 })
|
449
|
-
autoselectAutocomplete.handleKeyDown({ preventDefault: () => {}, keyCode: 13 })
|
450
|
-
expect(autoselectAutocomplete.state.menuOpen).to.equal(false)
|
451
|
-
expect(autoselectAutocomplete.state.query).to.equal('France')
|
452
|
-
expect(autoselectAutocomplete.state.focused).to.equal(-1)
|
453
|
-
expect(autoselectAutocomplete.state.selected).to.equal(-1)
|
454
|
-
})
|
455
|
-
})
|
456
|
-
})
|
457
|
-
})
|
458
|
-
|
459
|
-
describe('space key', () => {
|
460
|
-
describe('on an option', () => {
|
461
|
-
it('prevents default, closes the menu, sets the query, focuses the input, triggers onConfirm', () => {
|
462
|
-
let preventedDefault = false
|
463
|
-
onConfirmAutocomplete.setState({ menuOpen: true, options: ['France'], focused: 0, selected: 0 })
|
464
|
-
onConfirmAutocomplete.handleKeyDown({ preventDefault: () => { preventedDefault = true }, keyCode: 32 })
|
465
|
-
expect(onConfirmAutocomplete.state.menuOpen).to.equal(false)
|
466
|
-
expect(onConfirmAutocomplete.state.query).to.equal('France')
|
467
|
-
expect(onConfirmAutocomplete.state.focused).to.equal(-1)
|
468
|
-
expect(onConfirmAutocomplete.state.selected).to.equal(-1)
|
469
|
-
expect(preventedDefault).to.equal(true)
|
470
|
-
expect(onConfirmTriggered).to.equal(true)
|
471
|
-
})
|
472
|
-
})
|
473
|
-
})
|
474
|
-
|
475
|
-
describe('an unrecognised key', () => {
|
476
|
-
it('does nothing', () => {
|
477
|
-
autocomplete.setState({ menuOpen: true, options: ['France'], focused: 0, selected: 0 })
|
478
|
-
autocomplete.elementReferences[-1] = 'input element'
|
479
|
-
autocomplete.handleKeyDown({ target: 'not the input element', keyCode: 4242 })
|
480
|
-
expect(autocomplete.state.focused).to.equal(0)
|
481
|
-
expect(autocomplete.state.selected).to.equal(0)
|
482
|
-
})
|
483
|
-
})
|
484
|
-
})
|
485
|
-
})
|