form definitions
							parent
							
								
									d67290b4af
								
							
						
					
					
						commit
						2fdce3b2e7
					
				| @ -0,0 +1,30 @@ | ||||
| (ns wanijo.forms | ||||
|   (:require [hiccup.form :as hform] | ||||
|             [clojure.spec.alpha :as spec] | ||||
|             [wanijo.view :as view])) | ||||
| 
 | ||||
| (defn spec-to-errmsg [label spec-data] | ||||
|   (view/flash-error | ||||
|    (map | ||||
|     (fn [prob] | ||||
|       [:p | ||||
|        "Field " | ||||
|        [:span.flash__field label] | ||||
|        " must comply to " | ||||
|        [:span.flash__pred (:pred prob)]]) | ||||
|     (:clojure.spec.alpha/problems spec-data)))) | ||||
| 
 | ||||
| (defn field [req form-def field] | ||||
|   (let [field-value (get-in req [:params field]) | ||||
|         field-def (get-in form-def [:fields field]) | ||||
|         {:keys [label required] spec-key :spec} field-def | ||||
|         spec-valid? (or (empty? (:params req)) | ||||
|                         (spec/valid? spec-key field-value))] | ||||
|     (list | ||||
|      (when-not spec-valid? | ||||
|        (spec-to-errmsg label | ||||
|                        (spec/explain-data spec-key field-value))) | ||||
|      (hform/label field label) | ||||
|      (hform/text-field {:required (when required "required")} | ||||
|                        field | ||||
|                        (get-in req [:params field]))))) | ||||
					Loading…
					
					
				
		Reference in New Issue
	
	 Josha von Gizycki
						Josha von Gizycki