_setActiveResult (index, focus) {
    // de-activate current active result
    if (this.activeResult) {
      const prevNode = this.activeResult.node
      const prevElem = this.activeResult.elem
      if (prevElem === 'field') {
        delete prevNode.searchFieldActive
      } else {
        delete prevNode.searchValueActive
      }
      prevNode.updateDom()
    }

    if (!this.results || !this.results[index]) {
      // out of range, set to undefined
      this.resultIndex = undefined
      this.activeResult = undefined
      return
    }

    this.resultIndex = index

    // set new node active
    const node = this.results[this.resultIndex].node
    const elem = this.results[this.resultIndex].elem
    if (elem === 'field') {
      node.searchFieldActive = true
    } else {
      node.searchValueActive = true
    }
    this.activeResult = this.results[this.resultIndex]
    node.updateDom()

    // TODO: not so nice that the focus is only set after the animation is finished
    node.scrollTo(() => {
      if (focus) {
        node.focus(elem)
      }
    })
  }
Set new value for the current active result
@param {Number} index
@param {boolean} [focus]   If true, focus will be set to the next result.
                           focus is false by default.
@private