From 3997f29021fb92c8844bd8bf852a4b5b19b8c546 Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Tue, 19 Jul 2022 03:20:26 +0200
Subject: [PATCH] feat: add possibility to manipulate field type

---
 src/Field/BasicField.php      | 9 ++++++++-
 src/Field/SelectField.php     | 4 ++++
 src/Field/TextAreaField.php   | 4 ++++
 src/Field/TimepickerField.php | 4 ++++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/Field/BasicField.php b/src/Field/BasicField.php
index 67aa662..3e34ff9 100644
--- a/src/Field/BasicField.php
+++ b/src/Field/BasicField.php
@@ -29,6 +29,7 @@ abstract class BasicField implements Field {
 		'description'     => '',
 		'description_tip' => '',
 		'data'            => [],
+		'type'            => 'text',
 	];
 
 	public function should_override_form_template(): bool {
@@ -36,7 +37,13 @@ abstract class BasicField implements Field {
 	}
 
 	public function get_type(): string {
-		return 'text';
+		return $this->meta['type'];
+	}
+
+	public function set_type( string $type ): Field {
+		$this->meta['type'] = $type;
+
+		return $this;
 	}
 
 	public function get_validator(): Validator {
diff --git a/src/Field/SelectField.php b/src/Field/SelectField.php
index 2162753..04d290c 100644
--- a/src/Field/SelectField.php
+++ b/src/Field/SelectField.php
@@ -6,6 +6,10 @@ use WPDesk\Forms\Field;
 
 class SelectField extends BasicField {
 
+	public function get_type(): string {
+		return 'select';
+	}
+
 	public function get_template_name(): string {
 		return 'select';
 	}
diff --git a/src/Field/TextAreaField.php b/src/Field/TextAreaField.php
index f22b2bb..81ed137 100644
--- a/src/Field/TextAreaField.php
+++ b/src/Field/TextAreaField.php
@@ -4,6 +4,10 @@ namespace WPDesk\Forms\Field;
 
 class TextAreaField extends BasicField {
 
+	public function get_type(): string {
+		return 'textarea';
+	}
+
 	public function get_template_name(): string {
 		return 'textarea';
 	}
diff --git a/src/Field/TimepickerField.php b/src/Field/TimepickerField.php
index 0d5f0e3..f1bf91a 100644
--- a/src/Field/TimepickerField.php
+++ b/src/Field/TimepickerField.php
@@ -7,6 +7,10 @@ use WPDesk\Forms\Serializer\JsonSerializer;
 
 class TimepickerField extends BasicField {
 
+	public function get_type(): string {
+		return 'time';
+	}
+
 	public function has_serializer(): bool {
 		return true;
 	}
-- 
GitLab