vendors walkthrough works good

This commit is contained in:
2023-11-03 16:29:46 -07:00
parent eef1cfb919
commit 3f7f0a0aaf
2 changed files with 55 additions and 45 deletions

View File

@@ -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)

View File

@@ -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