When the allowClear option is enabled and that same component has a onChange callback, clicking the clear icon will cause an infinite loop. The root cause seems to be thatthis.el.val() returns null when previously set to an empty string, which is what happens when the input is cleared. As expected shallowEqualFuzzy returns false when comparing null to '' which causes an infinite onChange callback loop.
The new fuzzyValuesEqual method returns true when currentValue is null and newValue is equal to an empty string, otherwise it calls shallowEqualFuzzy which was the previous behavior.
I've also updated the examples with a select2 component set to allowClear which can be used to manually test the new behavior. Let me know if there is anything you'd like me to change. Thanks! 😄
When the
allowClear
option is enabled and that same component has aonChange
callback, clicking the clear icon will cause an infinite loop. The root cause seems to be thatthis.el.val()
returnsnull
when previously set to an empty string, which is what happens when the input is cleared. As expectedshallowEqualFuzzy
returnsfalse
when comparingnull
to''
which causes an infiniteonChange
callback loop.The new
fuzzyValuesEqual
method returnstrue
whencurrentValue
isnull
andnewValue
is equal to an empty string, otherwise it callsshallowEqualFuzzy
which was the previous behavior.I've also updated the examples with a select2 component set to
allowClear
which can be used to manually test the new behavior. Let me know if there is anything you'd like me to change. Thanks! 😄