docs: def _set_typeahead(cls, el, value):
          """
          Convert given `el` to typeahead input and set it to `value`.
  
          This method also sets the dropdown icons and descriptors.
  
          Args:
              el (obj): Element reference to the input you want to convert to
                  typeahead.
              value (list): List of dicts with two keys: ``source`` and ``val``.
          """
          PlaceholderHandler.reset_placeholder_dropdown(el)
  
          # if there is no elements, show alert icon in glyph
          if not value and not el.value:
              DropdownHandler.set_dropdown_glyph(el.id, "glyphicon-alert")
              return
  
          # if there is only one element, don't use typeahead, just put the
          # information to the input, set different dropdown glyph and put source
          # to the dropdown
          if len(value) == 1:
              source = value[0]["source"].strip()
              dropdown_el = DropdownHandler.set_dropdown_glyph(
                  el.id,
                  "glyphicon-eye-open"
              )
              dropdown_content = "<span class='gray_text'>&nbsp;(%s)</span>"
  
              # save the source to the dropdown menu
              if source:
                  dropdown_el.html = dropdown_content % source[::-1]
  
              el.value = value[0]["val"]
              return
  
          # get reference to parent element
          parent_id = el.parent.id
          if "typeahead" not in parent_id.lower():
              parent_id = el.parent.parent.id
  
          if parent_id in cls._set_by_typeahead:
              window.destroy_typeahead_tag("#" + parent_id)
  
          # if there are multiple elements, put them to the typeahead and show
          # dropdown glyph
          window.make_typeahead_tag("#" + parent_id, value)
          DropdownHandler.set_dropdown_glyph(el.id, "glyphicon-menu-down")
          PlaceholderHandler.set_placeholder_dropdown(el)
          cls._set_by_typeahead.add(parent_id)