Open tylernathanreed opened 5 months ago
Please provide full reproducing repository based on fresh installation as suggested in the bug report template (or you can refer to https://github.com/nova-issues for example)
@crynobone
I've created a repository for you, and I've linked a pull request (to my own repository) that shows you the files I added on top of the default Nova installation.
I've also attached a video demonstrating the bug.
Description:
Opening the Filter Menu can cause a refresh when the backing value changes from a string to an integer, even if the value is effectively the same (e.g.
2
vs"2"
).Detailed steps to reproduce the issue on a fresh Nova installation:
Follow these steps:
Repository: https://github.com/tylernathanreed/nova-issues/pull/1/files
Video:
https://github.com/laravel/nova-issues/assets/6486381/5124c5c7-541c-49c0-af35-f4a56f1f0485
Root Cause
It took me awhile to figure this one out, but the root cause was the filter value changing from a string to an integer (e.g.
"2"
to2
). When a value is initially selected, the value ends up being a string. However, when the value is initialized from a string, theFilter/SelectField
component finds the option matching the string-based value, and assignsoption.value
tothis.value
, whereoption.value
was actually an integer.I was able to hack in a fix by modifying the source code for
Filter/SelectField
'swatch:selectedOption
function, and changingthis.value = option.value
tothis.value = String(option.value)
. There may be edge cases that need to be explored, but that solution definitely solved my problem.