diff --git a/api/app/Http/Requests/UserFormRequest.php b/api/app/Http/Requests/UserFormRequest.php index f8b8da295..1ed971c24 100644 --- a/api/app/Http/Requests/UserFormRequest.php +++ b/api/app/Http/Requests/UserFormRequest.php @@ -14,6 +14,22 @@ */ abstract class UserFormRequest extends \Illuminate\Foundation\Http\FormRequest { + protected function prepareForValidation() + { + $data = $this->all(); + + if (isset($data['properties']) && is_array($data['properties'])) { + $data['properties'] = array_map(function ($property) { + if (isset($property['help']) && is_string($property['help']) && strip_tags($property['help']) === '') { + $property['help'] = null; + } + return $property; + }, $data['properties']); + } + + $this->merge($data); + } + /** * Get the validation rules that apply to the request. * diff --git a/client/components/forms/RichTextAreaInput.client.vue b/client/components/forms/RichTextAreaInput.client.vue index bf9f6a432..57aad7ae7 100644 --- a/client/components/forms/RichTextAreaInput.client.vue +++ b/client/components/forms/RichTextAreaInput.client.vue @@ -95,6 +95,14 @@ const emit = defineEmits(['update:modelValue']) const { compVal, inputStyle, hasError, inputWrapperProps } = useFormInput(props, { emit }) const editor = ref(null) const mentionState = ref(null) + +// Add this watch to clean up empty HTML content +watch(compVal, (val) => { + if (val && val.replace(/<[^>]*>/g, '').trim() === '') { + compVal.value = null + } +}, { immediate: true }) + // Move the mention extension registration to onMounted if (props.enableMentions && !Quill.imports['blots/mention']) {