Fix incorrect option selection logic and improve data binding for Select and Checkable fields #617
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.
This merge request introduces multiple improvements and bugfixes for the Select and Checkable field components:
Select (Former\Form\Fields\Select)
Fixed an edge case where previously selected values could persist due to missing state reset:
Added clearSelected() method to ensure no stale selected attributes remain before rendering.
Improved type-safety when comparing numeric values:
Comparison logic in selectValue() now safely handles both strings and integers using strict coercion.
Enhanced addOption() to support optgroup with nested options that include attributes (not just text).
Preserved backward compatibility by retaining existing behavior unless extra attributes are passed.
Checkable (Former\Traits\Checkable)
Restored and improved the fromQuery() method:
Now supports passing closures for $text and $attributes, consistent with Select::fromQuery().
Refactored internal items() method:
Accepts Eloquent/Fluent collections and converts them using Helpers::queryToArray().
Now matches behavior of Select, including array_flip() fallback for simpler usage.
This change enables developers to build dynamic radio() and checkbox() groups using collection-driven definitions, without requiring external transformation logic.