From 82fae97a3e225829af6ba01eb298fc92798dd613 Mon Sep 17 00:00:00 2001 From: Chirag Chhatrala <60499540+chiragchhatrala@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:53:09 +0530 Subject: [PATCH] Clean up empty HTML and help text in form inputs (#700) * Clean up empty HTML and help text in form inputs * Update api/app/Http/Requests/UserFormRequest.php Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Julien Nahum Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- api/app/Http/Requests/UserFormRequest.php | 16 ++++++++++++++++ .../forms/RichTextAreaInput.client.vue | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/api/app/Http/Requests/UserFormRequest.php b/api/app/Http/Requests/UserFormRequest.php index f8b8da29..1ed971c2 100644 --- a/api/app/Http/Requests/UserFormRequest.php +++ b/api/app/Http/Requests/UserFormRequest.php @@ -14,6 +14,22 @@ use Illuminate\Validation\Rule; */ 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 bf9f6a43..57aad7ae 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']) {