Editing works.

This commit is contained in:
2024-04-03 12:55:37 -07:00
parent 179e3b219b
commit d2ed08f6f9
4 changed files with 255 additions and 205 deletions

View File

@@ -33,6 +33,9 @@
(defprotocol Initializable
(init-step-params [this multi-form-state request]))
(defprotocol CustomNext
(custom-next-handler [this request]))
(defprotocol Discardable
(can-discard? [this step-params])
(discard-changes [this request]))
@@ -70,6 +73,11 @@
:edit-path []
:step-params @cursor)))
(defn get-mfs-field [mfs k]
(or (get (:step-params mfs) k)
(get-in (:snapshot mfs) (conj (or (:edit-path mfs) [])
k))))
(def step-key-schema (mc/schema [:orn {:decode/arbitrary clojure.edn/read-string
:encode/arbitrary pr-str}
[:sub-step [:cat :keyword [:or :int :string]]]
@@ -228,7 +236,7 @@
:else
"forward")))
(defn render-navigate [{ {:keys [wizard] :as request } :request to-step :to-step oob :oob}]
(defn navigate-handler [{{:keys [wizard] :as request} :request to-step :to-step oob :oob}]
(let [current-step (get-current-step wizard)
wizard (navigate wizard to-step)
new-step (get-current-step wizard)
@@ -249,12 +257,15 @@
(def next-handler
(-> (fn [{:keys [wizard] :as request}]
(render-navigate {:request request
:to-step (:to (:query-params request))}))
(let [current-step (get-current-step wizard)]
(if (satisfies? CustomNext current-step)
(custom-next-handler current-step request)
(navigate-handler {:request request
:to-step (:to (:query-params request))}))))
(wrap-ensure-step)
(wrap-schema-enforce :query-schema
[:map
[:to step-key-schema]])))
[:to {:optional true} [:maybe step-key-schema]]])))
(def discard-handler
(->
@@ -326,7 +337,7 @@
(assoc request :wizard (hydrate-from-request linear-wizard request))))))
(defn open-wizard-handler [{:keys [wizard current-step query-params] :as request}]
(cond->
(cond->
(modal-response
[:div#transitioner.flex-1 {:x-data (hx/json {"transitionType" "none"})
:x-ref "transitioner"