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) ||
|
isCheckboxOrRadioInputElement(target) ||
|
||||||
(!this.saveOnInput && isTextInputElement(target))
|
(!this.saveOnInput && isTextInputElement(target))
|
||||||
) {
|
) {
|
||||||
this.enqueueAutosaveRequest();
|
// Wait next tick so champs having JS can interact
|
||||||
|
// with form elements before extracting form data.
|
||||||
this.showConditionnalSpinner(target);
|
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
|
find('.radios').find('label:last-child').find('input').select_option
|
||||||
expect(page).to have_selector('.drop_down_other', visible: true)
|
expect(page).to have_selector('.drop_down_other', visible: true)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context 'with select' do
|
context 'with select' do
|
||||||
|
|
Loading…
Reference in a new issue