From 0690fb6c251c66a64b8659b717f24d6a7f5d5722 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 24 Mar 2025 15:08:18 +0100 Subject: [PATCH 01/10] feat: refs #8217 implement onBeforeSave function for form data processing --- src/components/FormModel.vue | 16 ++++------------ src/filters/index.js | 2 ++ src/filters/onBeforeSave.js | 9 +++++++++ 3 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 src/filters/onBeforeSave.js diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index c4d9a4149..56df95a5e 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -12,7 +12,7 @@ import SkeletonForm from 'components/ui/SkeletonForm.vue'; import VnConfirm from './ui/VnConfirm.vue'; import { tMobile } from 'src/composables/tMobile'; import { useArrayData } from 'src/composables/useArrayData'; -import { getDifferences, getUpdatedValues } from 'src/filters'; +import { getDifferences, getUpdatedValues, onBeforeSave } from 'src/filters'; const { push } = useRouter(); const quasar = useQuasar(); @@ -69,7 +69,7 @@ const $props = defineProps({ }, mapper: { type: Function, - default: null, + default: onBeforeSave, }, clearStoreOnUnmount: { type: Boolean, @@ -221,9 +221,7 @@ async function save() { isLoading.value = true; try { formData.value = trimData(formData.value); - const body = $props.mapper - ? $props.mapper(formData.value, originalData.value) - : formData.value; + const body = $props.mapper(formData.value, originalData.value); const method = $props.urlCreate ? 'post' : 'patch'; const url = $props.urlCreate || $props.urlUpdate || $props.url || arrayData.store.url; @@ -289,12 +287,7 @@ function trimData(data) { } return data; } -function onBeforeSave(formData, originalData) { - return getUpdatedValues( - Object.keys(getDifferences(formData, originalData)), - formData, - ); -} + async function onKeyup(evt) { if (evt.key === 'Enter' && !('prevent-submit' in attrs)) { const input = evt.target; @@ -331,7 +324,6 @@ defineExpose({ class="q-pa-md" :style="maxWidth ? 'max-width: ' + maxWidth : ''" id="formModel" - :mapper="onBeforeSave" > Date: Tue, 25 Mar 2025 08:54:05 +0100 Subject: [PATCH 02/10] fix: refs #8217 update formModel template to ensure unique ID and handle null obj2 in getDifferences filter --- src/components/FormModel.vue | 2 +- src/filters/getDifferences.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 56df95a5e..453c12a58 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -316,6 +316,7 @@ defineExpose({