more migrating onto v2

This commit is contained in:
2022-07-21 12:55:55 -07:00
parent 22a5f2a707
commit 1d0cdcaf88
6 changed files with 122 additions and 85 deletions

View File

@@ -41,27 +41,29 @@
(apply f (for [field fields]
(aget consumed field)))))])
(re-frame/reg-event-fx
::blurred
(fn [_ [_ schema id field]]
{:dispatch-n [[::forms/check-problems id schema]
[::forms/visited id]]}))
(defn builder [{:keys [value on-change can-submit data-sub error-messages change-event submit-event id fullwidth? schema validation-error-string]}]
(when (and change-event on-change)
(throw "Either the form is to be managed by ::forms, or it should have value and on-change passed in"))
(let [data-sub (or data-sub [::forms/form id])
change-event (when-not on-change
(or change-event [::forms/change id]))
{:keys [data visited attempted-submit?] form-key :id} @(re-frame/subscribe data-sub)
{:keys [data visited attempted-submit? problems] form-key :id} @(re-frame/subscribe data-sub)
data (or value data)
status @(re-frame/subscribe [::status/single id])
can-submit (if can-submit @(re-frame/subscribe can-submit)
true)
;; TODO ONLY validate on blur
problems (when schema
(m/explain schema data))]
true)]
(r/create-element Provider #js {:value #js {:can-submit can-submit
:error-messages (or error-messages
nil)
:on-change on-change
:change-event change-event
:blur-event [::forms/visited id]
:blur-event [::blurred schema id]
:visited visited
:submit-event submit-event
:problems problems
@@ -92,17 +94,14 @@
(let [key (r/atom (random-uuid))]
(fn [{:keys [value on-change can-submit error-messages fullwidth? schema]}]
(let [data-sub [::forms/form @key]
{:keys [data error visited]} @(re-frame/subscribe data-sub)
data (or value data)
problems (when schema
(m/explain schema data))]
{:keys [data error problems visited]} @(re-frame/subscribe data-sub)
data (or value data)]
(r/create-element Provider #js {:value #js {:can-submit can-submit
:error-messages (or error-messages
nil)
:on-change on-change
:blur-event [::forms/visited @key]
:blur-event [::blurred schema @key]
:visited visited
:problems problems
:error error
:id @key
:data data
@@ -148,7 +147,10 @@
event-or-value))
data))
(defn blur-handler [path re-frame-blur-event _]
(defn blur-handler [path re-frame-blur-event original-on-blur e]
(when original-on-blur
(original-on-blur e))
(re-frame/dispatch (-> re-frame-blur-event
(conj path))))
@@ -159,7 +161,8 @@
(consume FormScopeConsumer
["scope"]
(fn [scope]
(let [full-field-path (cond
(let [scope (or scope [])
full-field-path (cond
(sequential? field)
(into scope field)
@@ -186,7 +189,7 @@
["scope"]
(fn [scope]
(update child 1 (fn [child-props]
(let [
(let [scope (or scope [])
full-field-path (cond
(sequential? field)
(into scope field)
@@ -203,7 +206,7 @@
(if on-change
(partial form-change-handler data full-field-path on-change)
(partial change-handler full-field-path change-event))
:on-blur (partial blur-handler full-field-path blur-event)
:on-blur (partial blur-handler full-field-path blur-event (:on-blur child-props))
:value value)
(update :class (fn [class]
(str class