summaryrefslogtreecommitdiff
path: root/forms.fnl
diff options
context:
space:
mode:
authorunwox <me@unwox.com>2025-09-07 20:22:47 +0600
committerunwox <me@unwox.com>2025-09-07 22:16:39 +0600
commit88d1725520afde9fe10a3daa1ad5c1c0a552f041 (patch)
tree04069377658ac0b6c2fa903e0d2b42e8f2221031 /forms.fnl
parent4b0373bb42e21153f63d33f3546be9095d495f27 (diff)
small fixes
Diffstat (limited to 'forms.fnl')
-rw-r--r--forms.fnl60
1 files changed, 30 insertions, 30 deletions
diff --git a/forms.fnl b/forms.fnl
index 0d75afb..ee5d08b 100644
--- a/forms.fnl
+++ b/forms.fnl
@@ -1,8 +1,8 @@
-(import-macros {:compile-html <>} :macros)
+(import-macros {:compile-html HTML} :macros)
(local lib (require :lib))
(local required-marker
- (<> [:span {:class "form-required-marker"} " (обяз.)"]))
+ (HTML [:span {:class "form-required-marker"} " (обяз.)"]))
(fn textarea-input [name label required? minlength maxlength help]
(local minlength (or minlength 0))
@@ -16,7 +16,7 @@
"Некорректная длина текста."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name}
label (if required? required-marker "")]
@@ -25,8 +25,8 @@
:maxlength (tostring maxlength)
:required required?})
(or value "")]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn text-input [name label required? minlength maxlength help]
(local minlength (or minlength 0))
@@ -40,7 +40,7 @@
"Некорректная длина текста."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name}
label (if required? required-marker "")]
@@ -49,8 +49,8 @@
:maxlength (tostring maxlength)
:required required?
:value value})]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn password-input [name label required? minlength maxlength help]
(local minlength (or minlength 0))
@@ -64,7 +64,7 @@
"Некорректная длина текста."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name}
label (if required? required-marker "")]
@@ -73,8 +73,8 @@
:maxlength (tostring maxlength)
:required required?
:value value})]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn url-input [name label required? help]
{: name : label : required? : help
@@ -85,14 +85,14 @@
"Некорректная длина ссылки."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name}
label (if required? required-marker "")]
[:input (fn [] {:type "url" :name name :id name :class "form-input"
:required required? :value value})]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn number-input [name label required? min max help]
(local min (or min 0))
@@ -106,15 +106,15 @@
"Некорректное число."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name} label (if required? required-marker "")]
[:input (fn [] {:type "number" :name name :id name :class "form-input"
:required required?
:min (tostring min) :max (tostring max)
:value (tostring value)})]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn checkbox-input [name label required? help]
{: name : label : required? : help
@@ -122,14 +122,14 @@
(fn [value] (= value "on"))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:input (fn [] {:type "checkbox" :name name :id name :class "form-input"
:required required?
:checked (or (= value "on") (= value true))})]
[:label {:class "form-label" :for name} label (if required? required-marker "")]
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn file-input [name label required? accept thumbnail-width help]
{:type "file" : name : label : required? : help
@@ -145,21 +145,21 @@
(local empty-value? (lib.empty? value))
(local required? (and empty-value? required?))
- (<>
+ (HTML
[:div {:class "form-row"}
[:div {:class "d-flex gap-1"}
(if (and value (lib.ends-with? value ".jpg"))
- (<> [:img {:class "form-file-img" :src (.. "/static/files/" value)}])
+ (HTML [:img {:class "form-file-img" :src (.. "/static/files/" value)}])
"")
[:div {}
[:label {:class "form-label" :for name} label (if required? required-marker "")]
[:input (fn [] {:type "file" :name name :id name :class "form-input"
:required required? :accept accept})]]]
(if (not empty-value?)
- (<> [:input {:type "hidden" :name (.. name "_previous") :value value}])
+ (HTML [:input {:type "hidden" :name (.. name "_previous") :value value}])
"")
- (if error (<> [:div {:class "form-error"} error]) "")
- (if help (<> [:div {:class "form-help"} help]) "")]))})
+ (if error (HTML [:div {:class "form-error"} error]) "")
+ (if help (HTML [:div {:class "form-help"} help]) "")]))})
(fn select-input [name label required? options help]
{: name : label : required? : options : help
@@ -172,7 +172,7 @@
(if exists? nil "Некорректное значение."))
:html
(fn [value error]
- (<>
+ (HTML
[:div {:class "form-row"}
[:label {:class "form-label" :for name} label (if required? required-marker "")]
[:select (fn [] {:name name :id name
@@ -180,7 +180,7 @@
[:option [:selected "selected"] ""]
(table.concat
(icollect [_ option (ipairs options)]
- (<>
+ (HTML
[:option
(fn [] {:value option.value :selected (= value option.value)})
option.label])))]
@@ -188,18 +188,18 @@
(if help [:div {:class "form-help"} help] "")]))})
(fn render-form [form data errors]
- (<>
+ (HTML
[:form {:class "form" :enctype "multipart/form-data" :method "POST"}
(table.concat
(lib.append
(icollect [_ group (ipairs form)]
- (<>
+ (HTML
[:div {:class "form-group"}
[:h3 {:class "form-subheader"} group.title]
(table.concat
(icollect [_ field (ipairs group.fields)]
(field.html (. data field.name) (. errors field.name))))]))
- (<> [:button {:type "submit"} "Сохранить"])))]))
+ (HTML [:button {:type "submit"} "Сохранить"])))]))
(fn convert-values-from-html [form data db]
(each [_ group (ipairs form)]