in app/assets/javascripts/issues/create_merge_request_dropdown.js [381:444]
onChangeInput(event) {
// If the user was holding a meta key, released a meta key, or released or pressed esc, do nothing.
if (
event.altKey ||
event.ctrlKey ||
event.metaKey ||
event.shiftKey ||
NON_INPUT_KEYS.includes(event.keyCode)
) {
return undefined;
}
this.disable();
let target;
let value;
// User changed input, cancel to prevent previous request from interfering
if (this.refCancelToken !== null) {
this.refCancelToken.cancel();
}
if (event.target === this.branchInput) {
target = INPUT_TARGET_BRANCH;
({ value } = this.branchInput);
} else if (event.target === this.refInput) {
target = INPUT_TARGET_REF;
if (event.target === document.activeElement) {
value =
event.target.value.slice(0, event.target.selectionStart) +
event.target.value.slice(event.target.selectionEnd);
} else {
value = event.target.value;
}
} else {
return false;
}
if (this.isGettingRef) return false;
// `ENTER` key submits the data.
if (event.keyCode === 13 && this.inputsAreValid()) {
event.preventDefault();
return this.createMergeRequestButton.click();
}
// If the input is empty, use the original value generated by the backend.
if (!value) {
if (target === INPUT_TARGET_BRANCH) {
this.branchIsValid = true;
} else {
this.refIsValid = true;
}
this.enable();
this.showAvailableMessage(target);
this.refDebounce(value, target);
return true;
}
this.showCheckingMessage(target);
this.refDebounce(value, target);
return true;
}