From 4961036719d851989ea693f6536986b747bef706 Mon Sep 17 00:00:00 2001
From: Andrea Zagli <azagli@libero.it>
Date: Tue, 7 Feb 2023 17:14:41 +0100
Subject: [PATCH] Added function Field::set_template.

---
 examples/form.rs | 10 ++++++++++
 src/lib.rs       |  4 ++++
 2 files changed, 14 insertions(+)

diff --git a/examples/form.rs b/examples/form.rs
index 8392fcd..2e560cd 100644
--- a/examples/form.rs
+++ b/examples/form.rs
@@ -72,6 +72,11 @@ async fn index_post(
 	fi.set_value(map.get(fi.name().as_str()).unwrap().as_str());
 	fi.add_filter(filters::filter_uppercase);
 	fi.filter();
+	fi.set_template(r#"{% if label %}<div class="mb-3" style="background-color: #FF0000;">
+ <label for="{{ name }}" class="form-label">{{ label }}</label>{% endif %}
+ <input type="text" class="form-control{% if help %} is-invalid{% endif %}" name="{{ name }}" id="{{ name }}" {% if value %} value="{{ value }}" {% endif %} {% if disabled %} readonly {% endif %} {% if maxlen > 0 %}maxlength="{{ maxlen }}"{% endif %} {% if invisible %}style="display: none;"{% endif %}/>
+ {% if help %}<div id="helpBox_{{ name }}_" class="invalid-feedback">{{ help }}</div>{% endif %}
+ {% if label %}</div>{% endif %}"#);
 	f.add_field(fi);
 
 	let mut fi = zakform::Field::new(zakform::FType::TextArea, "notes");
@@ -122,6 +127,11 @@ async fn index(
 
 	let mut fi = zakform::Field::new(zakform::FType::Text, "name");
 	fi.set_label("Name");
+	fi.set_template(r#"{% if label %}<div class="mb-3" style="background-color: #FF0000;">
+ <label for="{{ name }}" class="form-label">{{ label }}</label>{% endif %}
+ <input type="text" class="form-control{% if help %} is-invalid{% endif %}" name="{{ name }}" id="{{ name }}" {% if value %} value="{{ value }}" {% endif %} {% if disabled %} readonly {% endif %} {% if maxlen > 0 %}maxlength="{{ maxlen }}"{% endif %} {% if invisible %}style="display: none;"{% endif %}/>
+ {% if help %}<div id="helpBox_{{ name }}_" class="invalid-feedback">{{ help }}</div>{% endif %}
+ {% if label %}</div>{% endif %}"#);
 	f.add_field(fi);
 
 	let mut fi = zakform::Field::new(zakform::FType::TextArea, "notes");
diff --git a/src/lib.rs b/src/lib.rs
index 43b0f31..05474f4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -145,6 +145,10 @@ impl Field {
 		self.options.push(option);
 	}
 
+	pub fn set_template(&mut self, template: &str) {
+		self.tmpl.add_raw_template("field", template);
+	}
+
 	pub fn add_filter(&mut self, filter: filters::Filter) {
 		self.filters.push(filter);
 	}
-- 
2.49.0