fix(dropdown): wait "other" input to be disabled before autosave
Fix le workflow suivant pour un champ drop down avec option "autre" : - on choisit la valeur "autre" avec une valeur => ça autosave la bonne valeur - on choisit finalement une autre valeur proposée => l'autosave envoyait la nouvelle valeur, et toujours la valeur "other" car l'input n'était pas encore `disabled`. Par conséquent la valeur other overridait la valeur choisie et ça provoquait des erreurs en cascade, notamment dans le conditionnel.
This commit is contained in:
parent
c15ad573bc
commit
3265fff30e
2 changed files with 21 additions and 3 deletions
|
@ -89,9 +89,12 @@ export class AutosaveController extends ApplicationController {
|
|||
isCheckboxOrRadioInputElement(target) ||
|
||||
(!this.saveOnInput && isTextInputElement(target))
|
||||
) {
|
||||
// Wait next tick so champs having JS can interact
|
||||
// with form elements before extracting form data.
|
||||
setTimeout(() => {
|
||||
this.enqueueAutosaveRequest();
|
||||
|
||||
this.showConditionnalSpinner(target);
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,21 @@ describe 'dropdown list with other option activated', js: true do
|
|||
find('.radios').find('label:last-child').find('input').select_option
|
||||
expect(page).to have_selector('.drop_down_other', visible: true)
|
||||
end
|
||||
|
||||
scenario "Getting back from other save the new option", js: true do
|
||||
fill_individual
|
||||
|
||||
choose "Autre"
|
||||
fill_in("Veuillez saisir votre autre choix", with: "My choice")
|
||||
|
||||
wait_until { user_dossier.champs_public.first.value == "My choice" }
|
||||
expect(user_dossier.champs_public.first.value).to eq("My choice")
|
||||
|
||||
choose "Secondary 1.1"
|
||||
|
||||
wait_until { user_dossier.champs_public.first.value == "Secondary 1.1" }
|
||||
expect(user_dossier.champs_public.first.value).to eq("Secondary 1.1")
|
||||
end
|
||||
end
|
||||
|
||||
context 'with select' do
|
||||
|
|
Loading…
Reference in a new issue