onChangeInput()

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;
  }