getPopupOffset()

in src/query-assist/query-assist.tsx [750:785]


  getPopupOffset(suggestions: readonly QueryAssistSuggestion[]) {
    const ICON_SPACING = 12;
    const minOffset = this.isRenderingGlassOrLoader() ? ICON_SPACING : 0;

    if (!this.input) {
      return minOffset;
    }

    // First suggestion should be enough?
    const suggestion = suggestions && suggestions[0];

    // Check if suggestion begins not from the end
    const completionStart =
      suggestion && suggestion.completionStart !== suggestion.completionEnd && suggestion.completionStart;

    const inputChildren = this.input.firstChild instanceof Element && this.input.firstChild.children;
    const completionStartNode =
      inputChildren &&
      typeof completionStart === 'number' &&
      inputChildren[Math.min(completionStart, inputChildren.length - 1)];

    let offset = completionStartNode && getRect(completionStartNode).right - getRect(this.input).left;

    if (!offset) {
      const caret = this.caret?.getOffset() ?? 0;

      // Do not compensate caret in the beginning of field
      if (caret === 0) {
        return minOffset;
      }
      offset = caret;
    }

    const result = offset - POPUP_COMPENSATION;
    return result < minOffset ? minOffset : result;
  }