*/ public function rules(): array { $fieldType = $this->input('field_type'); $type = RegistrationFieldType::tryFrom($fieldType); return [ 'label' => ['required', 'string', 'max:255'], 'field_type' => ['required', Rule::in(array_column(RegistrationFieldType::cases(), 'value'))], 'options' => [ $type?->requiresOptions() ? 'required' : 'nullable', $type?->prohibitsOptions() ? 'prohibited' : 'nullable', 'array', ], 'options.*' => ['string', 'max:255'], 'tag_category' => [ $type === RegistrationFieldType::TAG_PICKER ? 'nullable' : 'prohibited', 'string', 'max:50', ], 'is_required' => ['nullable', 'boolean'], 'is_filterable' => ['nullable', 'boolean'], 'is_portal_visible' => ['nullable', 'boolean'], 'is_admin_only' => ['nullable', 'boolean'], 'section' => ['nullable', 'string', 'max:100'], 'help_text' => ['nullable', 'string', 'max:5000'], 'sort_order' => ['nullable', 'integer', 'min:0'], ]; } }