From 5882f47f5f88f39223cedcf1d786cf7f45c578a5 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 12 May 2025 17:17:32 +0200 Subject: [PATCH] fix: refs #8388 update CrudModel and VnTable to handle async reload and improve event handling --- src/components/CrudModel.vue | 4 ++++ src/components/VnTable/VnTable.vue | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index 21ad0e41a..c5a2a3e17 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -11,10 +11,12 @@ import VnConfirm from 'components/ui/VnConfirm.vue'; import SkeletonTable from 'components/ui/SkeletonTable.vue'; import { tMobile } from 'src/composables/tMobile'; import getDifferences from 'src/filters/getDifferences'; +import { useStateQueryStore } from 'src/stores/useStateQueryStore'; const { push } = useRouter(); const quasar = useQuasar(); const stateStore = useStateStore(); +const stateQuery = useStateQueryStore(); const { t } = useI18n(); const { validate } = useValidator(); const $attrs = useAttrs(); @@ -190,6 +192,8 @@ async function onSubmit() { async function onSubmitAndGo() { await onSubmit(); + while (stateQuery.isLoading().value) + await new Promise((resolve) => setTimeout(resolve, 100)); push({ path: $props.goTo }); } diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 4232dbee9..218926de4 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -335,10 +335,10 @@ function stopEventPropagation(event) { event.stopPropagation(); } -function reload(params) { +async function reload(params) { selected.value = []; selectAll.value = false; - CrudModelRef.value.reload(params); + await CrudModelRef.value.reload(params); } function columnName(col) { @@ -702,6 +702,7 @@ const handleHeaderSelection = (evt, data) => { :search-url="searchUrl" :disable-infinite-scroll="isTableMode" :before-save-fn="removeTextValue" + @save-changes="reload" :has-sub-toolbar="$props.hasSubToolbar ?? isEditable" :auto-load="hasParams || $attrs['auto-load']" >