Explorar el Código

support Value types outside of unions.

Lucas Stadler %!s(int64=12) %!d(string=hace) años
padre
commit
075fc3c289
Se han modificado 1 ficheros con 17 adiciones y 1 borrados
  1. 17 1
      clj/clarity/cljs/clarity.cljs

+ 17 - 1
clj/clarity/cljs/clarity.cljs

@ -43,6 +43,9 @@
43 43
(defmethod empty-value 'String [{:keys [default]}]
44 44
  (or default ""))
45 45
46
(defmethod empty-value 'Value [[_ v]]
47
  v)
48
46 49
(defmethod empty-value 'U [[_ & [[_ v]]]]
47 50
  v)
48 51
@ -66,11 +69,13 @@
66 69
                    :value (om/value number)
67 70
                    :onChange #(om/update! number (fn [_ n] n) (js/parseFloat (.. % -target -value)))})))
68 71
72
(def keyword-pattern "^:(\\w+|\\w+(\\.\\w+)*\\/\\w+)$")
73
69 74
(defmethod make-typed-input 'Keyword [kw owner]
70 75
  (om/component
71 76
    (dom/input #js {:type "text"
72 77
                    :value (om/value kw)
73
                    :pattern "^:(\\w+|\\w+(\\.\\w+)*\\/\\w+)$"
78
                    :pattern keyword-pattern
74 79
                    :onChange (fn [ev]
75 80
                                (when (valid? (.-target ev))
76 81
                                  (om/update! kw (fn [o n] n) (or (read-keyword (.. ev -target -value))
@ -82,6 +87,17 @@
82 87
                    :value (om/value string)
83 88
                    :onChange #(om/update! string (fn [_ n] n) (.. % -target -value))})))
84 89
90
(defmethod make-typed-input 'Value [value owner]
91
  (om/component
92
   (dom/input (clj->js
93
                (into {:value (str value)
94
                       :readOnly ""}
95
                  (cond
96
                    (instance? js/Boolean value) {:type "checkbox", :checked value}
97
                    (number? value) {:type "number"}
98
                    (keyword? value) {:type "text", :pattern keyword-pattern}
99
                    :else {:type "text"}))))))
100
85 101
(defmethod make-typed-input 'U [value owner {type :type}]
86 102
  (om/component
87 103
    (dom/select nil