vendors walkthrough works good
This commit is contained in:
@@ -42,10 +42,11 @@
|
||||
[bidi.bidi :as bidi]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as dc]
|
||||
[hiccup.util :as hu]
|
||||
[malli.core :as mc]
|
||||
[malli.util :as mut]
|
||||
[com.brunobonacci.mulog :as mu]
|
||||
[hiccup.util :as hu]))
|
||||
[slingshot.slingshot :refer [try+]]
|
||||
[malli.error :as me]))
|
||||
|
||||
(defn filters [request]
|
||||
[:form {"hx-trigger" "change delay:500ms, keyup changed from:.hot-filter delay:1000ms"
|
||||
@@ -265,9 +266,11 @@
|
||||
n)))))
|
||||
|
||||
(defn info-modal [{:keys [form-params form-errors entity]}]
|
||||
(println "FORM ERRORS" form-errors)
|
||||
(com/stacked-modal-card-2
|
||||
0
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"}
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"
|
||||
"hx-target" "this"}
|
||||
(com/modal-header {}
|
||||
[:div.flex [:div.p-2 "Basic Info"] [:p.ml-2.rounded.bg-gray-200.p-2.dark:bg-gray-600
|
||||
[:span {:x-text "vendorName"}]]])
|
||||
@@ -317,6 +320,7 @@
|
||||
[:div.flex.justify-end
|
||||
(com/form-errors {:errors (:errors fc/*form-errors*)})
|
||||
[:div.flex.items-baseline.gap-x-4
|
||||
(println "HERE" form-errors)
|
||||
(com/validated-save-button {:errors (seq form-errors)
|
||||
:x-ref "next"
|
||||
:class "w-48"
|
||||
@@ -398,7 +402,8 @@
|
||||
(defn terms-modal [{:keys [form-errors entity form-params]}]
|
||||
(com/stacked-modal-card-2
|
||||
1
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"}
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"
|
||||
"hx-target" "this"}
|
||||
(com/modal-header {}
|
||||
[:div.flex
|
||||
[:div.p-2 "Vendor Terms"]
|
||||
@@ -441,6 +446,7 @@
|
||||
:hx-get (bidi/path-for ssr-routes/only-routes ::route/new-automatic-payment)
|
||||
:index (count (fc/field-value))}
|
||||
"New automatic payment for client"))))])
|
||||
(println "errors" (seq form-errors))
|
||||
(com/modal-footer
|
||||
{}
|
||||
[:div.flex.justify-end
|
||||
@@ -517,7 +523,8 @@
|
||||
(defn account-modal [{:keys [form-errors entity form-params]}]
|
||||
(com/stacked-modal-card-2
|
||||
2
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"}
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"
|
||||
"hx-target" "this"}
|
||||
(com/modal-header
|
||||
{}
|
||||
[:div.flex
|
||||
@@ -568,7 +575,8 @@
|
||||
(defn address-modal [{:keys [form-errors entity form-params]}]
|
||||
(com/stacked-modal-card-2
|
||||
3
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"}
|
||||
{"@keydown.enter.prevent.stop" "$refs.next.click()"
|
||||
"hx-target" "this"}
|
||||
(com/modal-header
|
||||
{}
|
||||
[:div.flex ;; TODO standardize how these headers are built
|
||||
@@ -728,7 +736,7 @@
|
||||
"printAs" (:vendor/print-as form-params)})
|
||||
:class "w-full h-full"}
|
||||
[:form#my-form (-> {:hx-ext "response-targets"
|
||||
:hx-swap "outerHTML swap:300ms"
|
||||
:hx-swap "outerHTML"
|
||||
:hx-target-400 "#form-errors .error-content"
|
||||
:hx-trigger "submit"
|
||||
:class "h-full w-full"}
|
||||
@@ -822,43 +830,28 @@
|
||||
[]
|
||||
(account-override-row fc/*current*))))
|
||||
|
||||
(defn validate [request]
|
||||
(cond (= (:step (:query-params request))
|
||||
"Info")
|
||||
(schema-enforce-request request
|
||||
:form-schema (mut/select-keys form-schema #{:vendor/name :vendor/print-as}))
|
||||
|
||||
(= (:step (:query-params request))
|
||||
"Terms")
|
||||
(schema-enforce-request request
|
||||
:form-schema (mut/select-keys form-schema #{:vendor/terms :vendor/terms-overrides :vendor/automatically-paid-when-due}))
|
||||
|
||||
(= (:step (:query-params request))
|
||||
"Account")
|
||||
(schema-enforce-request request
|
||||
:form-schema (mut/select-keys form-schema #{:vendor/default-account :vendor/account-overrides}))
|
||||
|
||||
(= (:step (:query-params request))
|
||||
"Address")
|
||||
(schema-enforce-request request
|
||||
:form-schema (mut/select-keys form-schema #{:vendor/address}))
|
||||
|
||||
(= (:step (:query-params request))
|
||||
"Legal")
|
||||
(schema-enforce-request request
|
||||
:form-schema form-schema)
|
||||
|
||||
:else nil)
|
||||
(defn modal-next [{:keys [form-params form-errors] :as request}]
|
||||
(html-response [:div]
|
||||
:headers {"hx-trigger-after-settle" "modalnext"
|
||||
"hx-reswap" "none"}))
|
||||
|
||||
#_(defn validate-failed [request]
|
||||
(d)
|
||||
(html-response ()
|
||||
:headers {"hx-trigger-after-settle" "modalnext"
|
||||
"hx-reswap" "none"}))
|
||||
|
||||
(defn single-modal [which {:keys [form-params form-errors] :as request}]
|
||||
(println "ERRORS ARE" form-errors)
|
||||
(fc/start-form form-params form-errors
|
||||
(html-response (which request))))
|
||||
|
||||
(defn branch-handler [f & {:as matches}]
|
||||
(fn branch-handler* [request]
|
||||
(let [c (f request)]
|
||||
(println matches)
|
||||
(some->> matches
|
||||
(filter (fn [[matching-key matching-handler]]
|
||||
(= c matching-key)))
|
||||
first
|
||||
seq
|
||||
((fn [[_ matching-handler]]
|
||||
(matching-handler request)))))))
|
||||
|
||||
(defn account-typeahead [{{:keys [name value client-id] :as qp} :query-params}]
|
||||
(html-response (account-typeahead* {:name name
|
||||
:value value
|
||||
@@ -871,12 +864,29 @@
|
||||
{::route/page (helper/page-route grid-page)
|
||||
::route/table (helper/table-route grid-page)
|
||||
::route/new dialog
|
||||
::route/validate (-> validate
|
||||
::route/validate (-> (branch-handler (comp :step :query-params)
|
||||
"Info" (-> modal-next
|
||||
(wrap-schema-enforce :form-schema (mut/select-keys form-schema #{:vendor/name :vendor/print-as}))
|
||||
(wrap-form-4xx-2 (partial single-modal info-modal)))
|
||||
"Terms" (-> modal-next
|
||||
(wrap-schema-enforce :form-schema
|
||||
(mut/select-keys form-schema #{:vendor/terms :vendor/terms-overrides :vendor/automatically-paid-when-due}))
|
||||
(wrap-form-4xx-2 (partial single-modal terms-modal)))
|
||||
"Account" (-> modal-next
|
||||
(wrap-schema-enforce :form-schema
|
||||
(mut/select-keys form-schema #{:vendor/default-account :vendor/account-overrides}))
|
||||
(wrap-form-4xx-2 (partial single-modal account-modal)))
|
||||
"Address"
|
||||
(-> modal-next
|
||||
(wrap-schema-enforce :form-schema
|
||||
(mut/select-keys form-schema #{:vendor/address}))
|
||||
(wrap-form-4xx-2 (partial single-modal address-modal))))
|
||||
(wrap-schema-enforce :query-schema [:map [:step :string]])
|
||||
(wrap-schema-decode :form-schema form-schema)
|
||||
(wrap-nested-form-params)
|
||||
(wrap-form-4xx-2 (-> dialog
|
||||
(wrap-schema-decode :form-schema form-schema)
|
||||
(wrap-entity [:form-params :db/id] default-read))))
|
||||
#_(wrap-form-4xx-2 (-> dialog
|
||||
(wrap-entity [:form-params :db/id] default-read)))
|
||||
)
|
||||
::route/save (-> save
|
||||
(wrap-entity [:form-params :db/id] default-read)
|
||||
(wrap-schema-enforce :form-schema form-schema)
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
:type "submit" :class (cond-> (or class "")
|
||||
true (hh/add-class "w-32")
|
||||
(seq errors) (hh/add-class "animate-shake"))}
|
||||
(merge params)
|
||||
(merge (dissoc params :class))
|
||||
(dissoc :errors))
|
||||
(if (seq children)
|
||||
children
|
||||
|
||||
Reference in New Issue
Block a user