improved two major forms.

This commit is contained in:
2022-07-19 15:10:33 -07:00
parent 483e9ad311
commit 0baab4eaf0
14 changed files with 431 additions and 355 deletions

View File

@@ -0,0 +1,43 @@
(ns auto-ap.views.components.number
(:require [react :as react]
[reagent.core :as r]))
(defn number-internal [props]
(let [[text set-text ] (react/useState (some-> props :value str))
[value set-value ] (react/useState (some-> props :value))
coerce-value (fn [new-value]
(let [new-value (js/parseInt new-value)]
(cond
(nil? new-value)
nil
(js/Number.isNaN new-value)
nil
:else
new-value)))]
(react/useEffect (fn []
(let [prop-value (:value props)]
(when (not (= prop-value value))
(set-value prop-value)
(if prop-value
(set-text (str prop-value))
(set-text ""))))))
[:div.field.has-addons
[:div.control
[:input.input (assoc props
:on-change (fn [e]
((:on-change props)
(coerce-value (.. e -target -value))))
:value text
:type "number"
:step "1"
:style {:width "5em"}
:size 3)]]]))
(defn number-input []
[:f> number-internal
(r/props (r/current-component))])