fix default 'is searchable' to prevent breaking advanced search #18970
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.
https://lab.civicrm.org/dev/core/-/issues/2188
Overview
Searchable custom fields of type "Integer" with radio buttons can cause Advanced Search to break.
Before
a JS error in Advanced Search that breaks other JS, e.g.:
After
Advanced Search works correctly.
Technical Details
The "Add Custom Field" form has a default for "Search by Range" set to "Yes", which is hidden by JS until someone sets "Is Searchable" to "Yes".
However, there's no widget to search by range on a multiple-choice field (it doesn't really make sense) so "Search by Range" remains hidden. Unfortunately, that means the field takes the default of "Yes". Advanced Search breaks because the widget doesn't exist.
The solution IMO is to change the default for the "Search by Range" field. I think the argument in defaulting to "Yes" is weak in general.
Comments
This issue exists in master, but has existed at least as far back as 5.13.
No test because it's 100% form level. This doesn't happen when adding fields via API.