                               40 (when-let [next-sibl (.-nextSibling s)]
                                    (upd next-sibl :down))
                               13 (do (.click (:selected @state))
-                                     (swap! state dissoc :selected)
-                                     #_(.blur (:node @state)))
+                                     (swap! state dissoc :selected))
                               (swap! state dissoc :selected)))
-                          (when-let [first-opt (cmn/f-child (:root-node @state) "option")]
-                            (.. first-opt -classList (add "active"))
-                            (swap! state assoc :selected first-opt
-                                   :suggestions-container
-                                   (cmn/f-child (:root-node @state) "options")))))
+                          (cond
+                            (and search-by-enter on-search (= 13 (.-keyCode e)))
+                            (on-search (.. e -target -value))
+                            :else (when-let [first-opt (cmn/f-child (:root-node @state) "option")]
+                              (.. first-opt -classList (add "active"))
+                              (swap! state assoc :selected first-opt
+                                     :suggestions-container
+                                     (cmn/f-child (:root-node @state) "options"))))))
         reset-input (fn [e]
                       (on-change nil)
                       (when search-fn

        label-fn (or label-fn identity)]

    (r/create-class
     {
      :component-did-mount
      (fn [this]
        (let [root (r/dom-node this)]
          (swap! state assoc :root-node root)

                                                     "cross")))
                               (on-blur e)
                               (swap! state assoc :active false)))
        search-fn (cond
                    search-by-enter (fn [_] (swap! state dissoc :selected))
                    debounce-interval (debounce on-search debounce-interval)
                    :else on-search)
        arrow-handler (fn [e]
                        (if-let [s (:selected @state)]
                          (let [upd (fn [x direction]
