diff --git a/app/webpacker/controllers/accessible_autocomplete_controller.js b/app/webpacker/controllers/accessible_autocomplete_controller.js index db34213ee..3cff0f4d1 100644 --- a/app/webpacker/controllers/accessible_autocomplete_controller.js +++ b/app/webpacker/controllers/accessible_autocomplete_controller.js @@ -3,10 +3,15 @@ import accessibleAutocomplete from "accessible-autocomplete" import 'accessible-autocomplete/dist/accessible-autocomplete.min.css' export default class extends Controller { + static values = { enhanced: Boolean, default: false } + connect() { - accessibleAutocomplete.enhanceSelectElement({ - defaultValue: '', - selectElement: this.element - }) + if(!this.enhancedValue){ + accessibleAutocomplete.enhanceSelectElement({ + defaultValue: '', + selectElement: this.element + }) + this.enhancedValue = true + } } } diff --git a/spec/features/form/accessible_autocomplete_spec.rb b/spec/features/form/accessible_autocomplete_spec.rb index dc56c2994..f6595a7c1 100644 --- a/spec/features/form/accessible_autocomplete_spec.rb +++ b/spec/features/form/accessible_autocomplete_spec.rb @@ -24,4 +24,12 @@ RSpec.describe "Accessible Automcomplete" do find("#case-log-la-field").click.native.send_keys("T", "h", "a", "n", :down, :enter) expect(find("#case-log-la-field").value).to eq("Thanet") end + + it "maintains enhancement state across back navigation", js: true do + visit("/logs/#{case_log.id}/accessible-select") + find("#case-log-la-field").click.native.send_keys("T", "h", "a", "n", :down, :enter) + click_button("Save and continue") + click_link(text: "Back") + expect(page).to have_selector("input", class: "autocomplete__input", count: 1) + end end diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json index c19c2d955..1b4455e96 100644 --- a/spec/fixtures/forms/2021_2022.json +++ b/spec/fixtures/forms/2021_2022.json @@ -193,11 +193,12 @@ "type": "select", "check_answer_label": "Accessible Select", "answer_options": { - "0": "Adur", - "1": "Lewisham", - "2": "Oxford", - "3": "Thanet", - "4": "York" + "" : "Select an option", + "E07000223": "Adur", + "E09000023": "Lewisham", + "E07000178": "Oxford", + "E07000114": "Thanet", + "E06000014": "York" } } }