ソースを参照

show required fields before optional ones.

Lucas Stadler 12 年 前
コミット
79f9f2de1c
共有1 個のファイルを変更した9 個の追加7 個の削除を含む
  1. 9 7
      clj/clarity/cljs/clarity.cljs

+ 9 - 7
clj/clarity/cljs/clarity.cljs

128
               (dom/option nil (str v)))
128
               (dom/option nil (str v)))
129
             (rest type))))))
129
             (rest type))))))
130
130
131
(defn make-typed-field [m optional?]
132
  (fn [[k t]]
133
    (dom/div #js {:className "field"}
134
      (dom/label nil (str k (when optional? " (optional)")))
135
      (om/build make-typed-input m {:opts {:type t, :key k, :val (k m)
136
                                           :optional? optional?}}))))
137
131
(defmethod make-typed-input 'HMap [m owner {type :type}]
138
(defmethod make-typed-input 'HMap [m owner {type :type}]
132
  (let [hmap (apply hash-map (rest type))
139
  (let [hmap (apply hash-map (rest type))
133
        required (:mandatory hmap)
140
        required (:mandatory hmap)
135
    (om/component
142
    (om/component
136
      (dom/div nil
143
      (dom/div nil
137
        (dom/span nil "{")
144
        (dom/span nil "{")
138
        (into-array
139
          (map (fn [[k t]]
140
                 (dom/div #js {:className "field"}
141
                   (dom/label nil (str k))
142
                   (om/build make-typed-input m {:opts {:type t, :key k, :val (k m)
143
                                                        :optional? (contains? optional k)}})))
144
               (merge required optional)))
145
        (into-array (map (make-typed-field m false) required))
146
        (into-array (map (make-typed-field m true) optional))
145
        (dom/span nil "}")))))
147
        (dom/span nil "}")))))
146
148
147
(def app-state
149
(def app-state