|
|
@ -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
|