now you can create and edit invoices from one form.
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
valid-matches))
|
||||
|
||||
(defn typeahead [{:keys [matches on-change field text-field value class not-found-description
|
||||
not-found-value auto-focus]}]
|
||||
disabled not-found-value auto-focus]}]
|
||||
(let [text (r/atom (or (second (first (filter #(= (first %) value) matches))) ""))
|
||||
highlighted (r/atom nil)
|
||||
selected (r/atom (first (first (filter #(= (first %) value) matches))))
|
||||
@@ -25,68 +25,75 @@
|
||||
(on-change nil text-description text-value)
|
||||
(on-change id text-description (or text-value text-description)))))]
|
||||
(r/create-class
|
||||
{:reagent-render (fn [{:keys [matches on-change field text-field value class not-found-description]}]
|
||||
{:reagent-render (fn [{:keys [matches on-change disabled field text-field value class not-found-description]}]
|
||||
|
||||
(let [text @text
|
||||
valid-matches (get-valid-matches matches not-found-description not-found-value text)]
|
||||
[:div.typeahead
|
||||
(if @selected
|
||||
^{:key "typeahead"} [:div.input {:class class
|
||||
:tab-index "0"
|
||||
:on-key-up (fn [e]
|
||||
(if (= 8 (.-keyCode e))
|
||||
(do
|
||||
(select [nil "" nil])
|
||||
true)
|
||||
false))}
|
||||
[:div.control
|
||||
[:div.tags.has-addons
|
||||
[:span.tag text]
|
||||
[:a.tag.is-delete {:on-click (fn [] (select [nil "" nil]))}]]]]
|
||||
^{:key "typeahead"} [:input.input {:type "text"
|
||||
:class class
|
||||
:value text
|
||||
:auto-focus auto-focus
|
||||
:on-blur (fn [e]
|
||||
(cond @selected
|
||||
nil
|
||||
(if disabled
|
||||
|
||||
(#{"" nil} text)
|
||||
nil
|
||||
^{:key (str "typeahead" text) } [:input.input {:disabled "disabled" :value text} ]
|
||||
|
||||
@highlighted
|
||||
(do (select @highlighted)
|
||||
true)
|
||||
(if @selected
|
||||
^{:key "typeahead"} [:div.input {:class class
|
||||
:tab-index "0"
|
||||
:on-key-up (fn [e]
|
||||
(if (= 8 (.-keyCode e))
|
||||
(do
|
||||
(select [nil "" nil])
|
||||
true)
|
||||
false))}
|
||||
[:div.control
|
||||
[:div.tags.has-addons
|
||||
[:span.tag text]
|
||||
[:a.tag.is-delete {:on-click (fn [] (select [nil "" nil]))}]]]]
|
||||
^{:key "typeahead"} [:input.input {:type "text"
|
||||
:class class
|
||||
|
||||
:else
|
||||
(do (select [nil ""])
|
||||
true)))
|
||||
:on-key-down (fn [e]
|
||||
(condp = (.-keyCode e)
|
||||
; up
|
||||
38 (do
|
||||
(when-let [new-match (->> valid-matches
|
||||
(take-while #(not= % @highlighted))
|
||||
(last))]
|
||||
(reset! highlighted new-match))
|
||||
true)
|
||||
;; dwon
|
||||
40 (do
|
||||
(when-let [new-match (->> valid-matches
|
||||
(drop-while #(not= % @highlighted))
|
||||
(drop 1)
|
||||
(first))]
|
||||
(reset! highlighted new-match))
|
||||
true)
|
||||
13 (do (.preventDefault e)
|
||||
(when @highlighted
|
||||
|
||||
(select @highlighted)
|
||||
false))
|
||||
true))
|
||||
:on-change (fn [e]
|
||||
(let [new-matches (get-valid-matches matches not-found-description not-found-value (.. e -target -value))]
|
||||
(reset! highlighted (first new-matches)))
|
||||
(select [nil (.. e -target -value)]))}])
|
||||
:value text
|
||||
:auto-focus auto-focus
|
||||
:on-blur (fn [e]
|
||||
(cond @selected
|
||||
nil
|
||||
|
||||
(#{"" nil} text)
|
||||
nil
|
||||
|
||||
@highlighted
|
||||
(do (select @highlighted)
|
||||
true)
|
||||
|
||||
:else
|
||||
(do (select [nil ""])
|
||||
true)))
|
||||
:on-key-down (fn [e]
|
||||
(condp = (.-keyCode e)
|
||||
; up
|
||||
38 (do
|
||||
(when-let [new-match (->> valid-matches
|
||||
(take-while #(not= % @highlighted))
|
||||
(last))]
|
||||
(reset! highlighted new-match))
|
||||
true)
|
||||
;; dwon
|
||||
40 (do
|
||||
(when-let [new-match (->> valid-matches
|
||||
(drop-while #(not= % @highlighted))
|
||||
(drop 1)
|
||||
(first))]
|
||||
(reset! highlighted new-match))
|
||||
true)
|
||||
13 (do (.preventDefault e)
|
||||
(when @highlighted
|
||||
|
||||
(select @highlighted)
|
||||
false))
|
||||
true))
|
||||
:on-change (fn [e]
|
||||
(let [new-matches (get-valid-matches matches not-found-description not-found-value (.. e -target -value))]
|
||||
(reset! highlighted (first new-matches)))
|
||||
(select [nil (.. e -target -value)]))}]))
|
||||
|
||||
(cond
|
||||
(and (seq text)
|
||||
(not @selected)
|
||||
|
||||
Reference in New Issue
Block a user