Hi Team,
According to the documentation:
The
newOptionAllowedattribute is used to enable adding new options.
As it is a boolean variable, so when it set to “false”, it should disable adding new options, but there is an issue when set it to “false”.
case 1:
set newOptionAllowed=false in xml to not allow new option, but set newOptionHandler to one of the method in controller. If user enters new value and press enter or lookupField loses focus, the handler will be called.
case 2:
set newOptionAllowed=false in xml to not allow new option, but in controller’s onInit() method, call setNewOptionHandler() of the lookupField to set a new option handler. The result is the same as case 1.
The problem here is, in both cases, newOptionAllowed is processed before newOptionHandler, but looking at the setNewOptionHandler method of lookupField, it does not care about how newOptionAllowed is set, but only check if handler is null:
@Override
public void setNewOptionHandler(Consumer<String> newOptionHandler) {
this.newOptionHandler = newOptionHandler;
if (newOptionHandler != null
&& component.getNewItemHandler() == null) {
component.setNewItemHandler(this::onNewItemEntered);
}
if (newOptionHandler == null
&& component.getNewItemHandler() != null) {
component.setNewItemHandler(null);
}
}
I think we should consider newOptionAllowed settings in setNewOptionHandler(), please suggest.