From c910ace4342b0c337490af8cfd3c431a36b6feae Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 09 Feb 2026 02:13:13 +0000
Subject: [PATCH] =Schema patches

---
 inc/meta/Form.php |   29 ++++++++++++++++++++++++-----
 1 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/inc/meta/Form.php b/inc/meta/Form.php
index f6de609..7ba1458 100644
--- a/inc/meta/Form.php
+++ b/inc/meta/Form.php
@@ -103,6 +103,7 @@
 			$datasets
 		);
 
+		$output .= static::buildCharacterLimit($config);
 		$output .= static::buildLabel($name, $config);
 		if (!array_key_exists('skipInput', $config)) {
 			$output .= static::buildInput($content);
@@ -179,6 +180,21 @@
 				);
 			}
 
+	protected static function buildCharacterLimit(array $config): string
+	{
+		$type = $config['type'] ?? 'text';
+		if (in_array($type, ['upload', 'gallery', 'selector'])) {
+			return '';
+		}
+		if (empty($config['maxlength'])) {
+			return '';
+		}
+		return sprintf(
+			'<span class="char-limit"><span class="current">0</span> / <span class="limit">%s</span></span>',
+			esc_html($config['maxlength'])
+		);
+	}
+
 		protected static function buildLabel(string $name, array $config):string
 		{
 			if (!empty($config['label'])) {
@@ -500,7 +516,7 @@
 			$optionsHtml .= sprintf(
 				'<option value="%s"%s>%s</option>',
 				esc_attr($optValue),
-				selected($value, $optValue),
+				selected($value, $optValue, false),
 				esc_html($optLabel)
 			);
 		}
@@ -574,7 +590,7 @@
 				esc_attr($name),
 				$optValue,
 				esc_attr($optValue),
-				checked($value, $optValue),
+				checked($value, $optValue,false),
 				esc_attr($name),
 				$optValue,
 				esc_html($optLabel)
@@ -651,7 +667,7 @@
 				?? str_replace('_', ' ',$config['content']);
 		}
 		if ($config['limit'] > 0) {
-			$config['data']['limit'] = $config['limit'];
+			$config['data']['max-files'] = $config['limit'];
 		}
 
 		$attachmentIds = static::parseIds($value);
@@ -697,7 +713,8 @@
 
 		$input .= '<div class="file-error"></div>';
 		$input .= jvbRenderProgressBar('', false, true, true);
-		$input .= '</div>';
+
+		$input .= '</div>'; // closes .file-upload-wrapper
 
 		if ($config['destination'] === 'post_group') {
 			$input .= static::renderUploadGroupAreaStart($config, $plural, $singular);
@@ -708,6 +725,7 @@
 			$input .= static::renderUploadGroupAreaEnd($config, $plural, $singular);
 		}
 
+		$input .= '</div>'; // closes .file-upload-container
 		unset($config['description']);
 		unset($config['label']);
 		return static::fieldWrap($name, $input, $config);
@@ -1636,12 +1654,13 @@
 
 		foreach ($fields as $fieldName => $fieldConfig) {
 			$fieldValue = $values[$fieldName] ?? '';
-			$fullName = "{$name}:{$fieldName}";
+			$fullName = array_key_exists('wrap', $config) ? $fieldName : "{$name}:{$fieldName}";
 			$output .= static::render($fullName, $fieldValue, $fieldConfig);
 		}
 
 		$output .= sprintf('</%s>', esc_attr($wrapper));
 
+		unset($config['label']);
 		return static::fieldWrap($name, $output, $config);
 	}
 

--
Gitblit v1.10.0