diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index be39570ee..dca30516f 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -154,7 +154,7 @@ watch( const isTableMode = computed(() => mode.value == TABLE_MODE); -function setUserParams(watchedParams) { +function setUserParams(watchedParams, watchedOrder) { if (!watchedParams) return; if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams); @@ -163,7 +163,7 @@ function setUserParams(watchedParams) { ? JSON.parse(watchedParams?.filter) : watchedParams?.filter; const where = filter?.where; - const order = filter?.order; + const order = watchedOrder ?? filter?.order; watchedParams = { ...watchedParams, ...where }; delete watchedParams.filter; diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue index 430383e40..4fd511631 100644 --- a/src/components/ui/VnFilterPanel.vue +++ b/src/components/ui/VnFilterPanel.vue @@ -82,23 +82,26 @@ onMounted(() => { }); function setUserParams(watchedParams) { - if (!watchedParams) return; + if (!watchedParams || Object.keys(watchedParams).length == 0) return; if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams); + if (typeof watchedParams?.filter == 'string') + watchedParams.filter = JSON.parse(watchedParams.filter); + watchedParams = { ...watchedParams, ...watchedParams.filter?.where }; + const order = watchedParams.filter?.order; + delete watchedParams.filter; - userParams.value = { ...userParams.value, ...watchedParams }; - emit('setUserParams', userParams.value); + userParams.value = { ...userParams.value, ...sanitizer(watchedParams) }; + emit('setUserParams', userParams.value, order); } watch( - () => route.query[$props.searchUrl], - (val) => setUserParams(val) -); - -watch( - () => arrayData.store.userParams, - (val) => setUserParams(val) + () => [route.query[$props.searchUrl], arrayData.store.userParams], + ([newSearchUrl, newUserParams], [oldSearchUrl, oldUserParams]) => { + if (newSearchUrl || oldSearchUrl) setUserParams(newSearchUrl); + if (newUserParams || oldUserParams) setUserParams(newUserParams); + } ); watch(