Add vendor pre-population for bulk code and individual edit forms
- Add vendor-changed HTMX handlers for both bulk code and individual edit - Pre-populate default account at 100% when vendor is selected and no accounts exist - Fix render-accounts-section to render from step-params correctly - Change bulk code vendor-changed from hx-get to hx-post to include form data - Add routes for vendor-changed endpoints - Update e2e tests to cover vendor pre-population - Run lein cljfmt fix across codebase
This commit is contained in:
@@ -5,14 +5,11 @@
|
||||
(path [cursor])
|
||||
(state [cursor]))
|
||||
|
||||
|
||||
(defprotocol ITransact
|
||||
(-transact! [cursor f]))
|
||||
|
||||
|
||||
(declare to-cursor cursor?)
|
||||
|
||||
|
||||
(deftype ValCursor [value state path]
|
||||
IDeref
|
||||
(deref [_]
|
||||
@@ -23,9 +20,8 @@
|
||||
ITransact
|
||||
(-transact! [_ f]
|
||||
(get-in
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path)))
|
||||
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path)))
|
||||
|
||||
(deftype MapCursor [value state path]
|
||||
Counted
|
||||
@@ -53,14 +49,13 @@
|
||||
ITransact
|
||||
(-transact! [cursor f]
|
||||
(get-in
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path))
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path))
|
||||
Seqable
|
||||
(seq [this]
|
||||
(for [[k v] @this]
|
||||
[k (to-cursor v state (conj path k) nil)])))
|
||||
|
||||
|
||||
(deftype VecCursor [value state path]
|
||||
Counted
|
||||
(count [_]
|
||||
@@ -91,29 +86,25 @@
|
||||
ITransact
|
||||
(-transact! [cursor f]
|
||||
(get-in
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path))
|
||||
(swap! state (if (empty? path) f #(update-in % path f)))
|
||||
path))
|
||||
Seqable
|
||||
(seq [this]
|
||||
(for [[v i] (map vector @this (range))]
|
||||
(to-cursor v state (conj path i) nil))))
|
||||
|
||||
|
||||
(defn- to-cursor
|
||||
([v state path value]
|
||||
(cond
|
||||
(cursor? v) v
|
||||
(map? v) (MapCursor. value state path)
|
||||
(vector? v) (VecCursor. value state path)
|
||||
:else (ValCursor. value state path)
|
||||
)))
|
||||
|
||||
:else (ValCursor. value state path))))
|
||||
|
||||
(defn cursor? [c]
|
||||
"Returns true if c is a cursor."
|
||||
(satisfies? ICursor c))
|
||||
|
||||
|
||||
(defn cursor [v]
|
||||
"Creates cursor from supplied value v. If v is an ordinary
|
||||
data structure, it is wrapped into atom. If v is an atom,
|
||||
@@ -123,7 +114,6 @@
|
||||
(if (instance? Atom v) v (atom v))
|
||||
[] nil))
|
||||
|
||||
|
||||
(defn synthetic-cursor [v prefix]
|
||||
(let [internal-cursor (cursor v)]
|
||||
(reify ICursor
|
||||
@@ -132,14 +122,12 @@
|
||||
(state [this]
|
||||
(state internal-cursor)))))
|
||||
|
||||
|
||||
(defn transact! [cursor f]
|
||||
"Changes value beneath cursor by passing it to a single-argument
|
||||
function f. Old value will be passed as function argument. Function
|
||||
result will be the new value."
|
||||
(-transact! cursor f))
|
||||
|
||||
|
||||
(defn update! [cursor v]
|
||||
"Replaces value supplied by cursor with value v."
|
||||
(-transact! cursor (constantly v)))
|
||||
|
||||
Reference in New Issue
Block a user