-
Notifications
You must be signed in to change notification settings - Fork 1
/
table.cljs
47 lines (42 loc) · 1.51 KB
/
table.cljs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(ns ez-wire.form.table
(:require [ez-wire.form.common :as common]
[ez-wire.form.helpers :as helpers]
[ez-wire.util :as util]
[reagent.core :as r]
[re-frame.core :as rf]))
(defn- table-row [{:keys [active?] :as field} {{label? :label?} :options :as form}]
(when @active?
(if (false? label?)
[:tr {:key (str "tr-" (:id field))}
[:td
(common/render-field field form)
(common/render-error-element field form)
(common/render-text field form)
(common/render-help field form)]]
[:tr {:key (str "tr-" (:id field))}
[:td
(common/render-label field form)]
[:td
(common/render-field (dissoc field :label) form)
(common/render-error-element field form)
(common/render-text field form)
(common/render-help field form)]])))
(defn as-table [params {:keys [id form-key] :as form} & [content]]
(r/create-class
{:display-name "as-table"
:component-will-unmount
(fn [this]
(when (util/select-option :form/automatic-cleanup? form params)
(rf/dispatch [:ez-wire.form/cleanup id])))
:reagent-render
(fn [params form & [content]]
(let [{:keys [style class]
:or {style {}
class ""}} params]
[:table {:key (util/slug "form-table" (str @form-key))
:style style
:class class}
[:tbody
[common/get-body table-row params form]
(if content
[content])]]))}))