A way better approach for form validation. Feels good now.
This commit is contained in:
@@ -150,12 +150,40 @@
|
||||
(first children)
|
||||
[:span])])))
|
||||
|
||||
(defn appearing-group []
|
||||
(let [children (r/children (r/current-component))]
|
||||
(into [transition-group {:exit true
|
||||
:enter true}
|
||||
(for [child children]
|
||||
^{:key (:key (meta child))}
|
||||
[transition
|
||||
{:timeout 300
|
||||
:exit true
|
||||
:in true #_ (= current-stack- (:key (meta child)))}
|
||||
(clj->js (fn [state]
|
||||
(r/as-element
|
||||
[:div {:style {
|
||||
:transition "opacity 300ms ease-in-out"
|
||||
:opacity (cond
|
||||
(= "entered" state)
|
||||
1.0
|
||||
|
||||
(= "entering" state)
|
||||
0.0
|
||||
|
||||
(= "exiting" state)
|
||||
0.0
|
||||
|
||||
(= "exited" state)
|
||||
0.0)}}
|
||||
child])))])])))
|
||||
|
||||
|
||||
(defn multi-field [{:keys [value]} ]
|
||||
(let [value-repr (reagent/atom (mapv
|
||||
(fn [x]
|
||||
(assoc x :key (random-uuid) :new? false))
|
||||
value))]
|
||||
(fn [x]
|
||||
(assoc x :key (random-uuid) :new? false))
|
||||
value))]
|
||||
(fn [{:keys [template on-change allow-change? disable-new? disable-remove?]} ]
|
||||
(let [value @value-repr
|
||||
already-has-new-row? (= [:key :new?] (keys (last value)))
|
||||
@@ -489,7 +517,9 @@
|
||||
(swap-external-value (some-> (.. e -target -value) coerce-date))))
|
||||
|
||||
:on-blur (fn []
|
||||
(swap-external-value (some-> text coerce-date)))
|
||||
(swap-external-value (some-> text coerce-date))
|
||||
(when (:on-blur params)
|
||||
((:on-blur params))))
|
||||
:type "date" :placeholder "12/1/2021")]
|
||||
]]))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user