fix(filters): persist filters in url
Some checks failed
continuous-integration/drone/push Build is failing

This allows us to keep the filters when navigating back from a task or other url.
This commit is contained in:
kolaente 2024-03-13 19:03:23 +01:00
parent ccb708a56f
commit 7bf2664e55
Signed by: konrad
GPG Key ID: F40E70337AB24C9B

View File

@ -30,21 +30,39 @@ import {computed, ref, watch} from 'vue'
import Filters from '@/components/project/partials/filters.vue' import Filters from '@/components/project/partials/filters.vue'
import {type TaskFilterParams} from '@/services/taskCollection' import {getDefaultTaskFilterParams, type TaskFilterParams} from '@/services/taskCollection'
import {useRouteQuery} from '@vueuse/router'
const modelValue = defineModel<TaskFilterParams>({}) const modelValue = defineModel<TaskFilterParams>({})
const value = ref<TaskFilterParams>({}) const value = ref<TaskFilterParams>({})
const filter = useRouteQuery('filter')
watch( watch(
() => modelValue.value, () => modelValue.value,
(modelValue: TaskFilterParams) => { (modelValue: TaskFilterParams) => {
value.value = modelValue value.value = modelValue
if (value.value.filter !== '' && value.value.filter !== getDefaultTaskFilterParams().filter) {
filter.value = value.value.filter
}
},
{immediate: true},
)
watch(
() => filter.value,
val => {
if (modelValue.value?.filter === val || typeof val === 'undefined') {
return
}
modelValue.value.filter = val
}, },
{immediate: true}, {immediate: true},
) )
function emitChanges(newValue: TaskFilterParams) { function emitChanges(newValue: TaskFilterParams) {
filter.value = newValue.filter
if (modelValue.value?.filter === newValue.filter && modelValue.value?.s === newValue.s) { if (modelValue.value?.filter === newValue.filter && modelValue.value?.s === newValue.s) {
return return
} }