Fix missing form data when multi-select empty #17074
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When a multiple-select dropdown has no options selected, no form data is sent to GLPI so that field is ignored. This made it impossible to handle removing all selections from a dropdown unless the missing field was treated specially as if it were an empty selection. That special handling is not correct though as partial updates via the API(s) are possible and failing to specify a multiselect field in an API update request should not delete the value.
The fix adds a hidden input with the same name just before the select element in the DOM. If the browser decides to send the data for the select, the hidden input is ignored.
This may cause some breaks besides the one I found immediately for the devices_in_menu config options. On some other dropdowns it seemed to work without issue. Other cases may be found as work on the UI continues, during beta testing, or through added E2E tests.