Our Select and Combobox components have diverged enough in behavior from their FAST counterparts that it's becoming problematic to implement certain behaviors we require. Many of the required changes are from methods that are either protected in the FAST Listbox class or considered internal, and ultimately result in working around designed behavior, which can easily lead to overly complex/obtuse implementation.
We should bring over any shared core implementation from the FAST Listbox that makes sense into a new base class in Nimble, that we can then derive the FormAssociated(<X>) classes from for both the Select and Combobox.
Things to consider for the new class:
Transition the select<>Option methods to be abstract, and force the Select and Combobox to implement them
Most of the rest of the rest of the implementation can likely stay intact (though we can transition away from usages of ListboxOption to always use ListOption).
🧹 Tech Debt
Our
Select
andCombobox
components have diverged enough in behavior from their FAST counterparts that it's becoming problematic to implement certain behaviors we require. Many of the required changes are from methods that are either protected in the FASTListbox
class or consideredinternal
, and ultimately result in working around designed behavior, which can easily lead to overly complex/obtuse implementation.We should bring over any shared core implementation from the FAST
Listbox
that makes sense into a new base class in Nimble, that we can then derive theFormAssociated(<X>)
classes from for both theSelect
andCombobox
.Things to consider for the new class:
select<>Option
methods to be abstract, and force theSelect
andCombobox
to implement themListboxOption
to always useListOption
).