feat: HEADING field type for registration forms — replace section property with structural field

Replace the per-field `section` text property with a dedicated HEADING field type that
organizers add as a separate block for visual grouping. Also fixes duplicate heading bug
on portal radio fields, replaces cramped VBtnToggle with VSelect for field width, and
adds grouped field type dropdown with structure/input categories.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-16 16:40:41 +02:00
parent 9718e27029
commit d57dcdb616
27 changed files with 667 additions and 480 deletions

View File

@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('registration_field_templates', function (Blueprint $table) {
$table->dropColumn('section');
});
Schema::table('registration_form_fields', function (Blueprint $table) {
$table->dropColumn('section');
});
}
public function down(): void
{
Schema::table('registration_field_templates', function (Blueprint $table) {
$table->string('section', 100)->nullable()->after('is_admin_only');
});
Schema::table('registration_form_fields', function (Blueprint $table) {
$table->string('section', 100)->nullable()->after('is_filterable');
});
}
};