fix: lint & formatting
This commit is contained in:
parent
d47791b957
commit
c2dd18edaa
@ -1,16 +1,15 @@
|
|||||||
import {computed, ref, watch, type Ref} from 'vue'
|
import {computed, ref, watch, type Ref} from 'vue'
|
||||||
import {useRouter, type RouteLocationNormalized, type RouteLocationRaw} from 'vue-router'
|
import {useRouter, type RouteLocationNormalized, type RouteLocationRaw} from 'vue-router'
|
||||||
import cloneDeep from 'lodash.clonedeep'
|
|
||||||
import equal from 'fast-deep-equal/es6'
|
import equal from 'fast-deep-equal/es6'
|
||||||
|
|
||||||
export type Filters = Record<string, any>
|
export type Filters = Record<string, any>
|
||||||
|
|
||||||
export function useRouteFilters<CurrentFilters extends Filters>(
|
export function useRouteFilters<CurrentFilters extends Filters>(
|
||||||
route: Ref<RouteLocationNormalized>,
|
route: Ref<RouteLocationNormalized>,
|
||||||
getDefaultFilters: (route: RouteLocationNormalized) => CurrentFilters,
|
getDefaultFilters: (route: RouteLocationNormalized) => CurrentFilters,
|
||||||
routeToFilters: (route: RouteLocationNormalized) => CurrentFilters,
|
routeToFilters: (route: RouteLocationNormalized) => CurrentFilters,
|
||||||
filtersToRoute: (filters: CurrentFilters) => RouteLocationRaw,
|
filtersToRoute: (filters: CurrentFilters) => RouteLocationRaw,
|
||||||
) {
|
) {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
const filters = ref<CurrentFilters>(routeToFilters(route.value))
|
const filters = ref<CurrentFilters>(routeToFilters(route.value))
|
||||||
@ -22,22 +21,22 @@ export function useRouteFilters<CurrentFilters extends Filters>(
|
|||||||
(route && oldRoute && typeof route.name !== 'undefined' && typeof oldRoute.name !== 'undefined' && route.name !== oldRoute.name) ||
|
(route && oldRoute && typeof route.name !== 'undefined' && typeof oldRoute.name !== 'undefined' && route.name !== oldRoute.name) ||
|
||||||
routeFromFiltersFullPath.value === route.fullPath
|
routeFromFiltersFullPath.value === route.fullPath
|
||||||
) {
|
) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
filters.value = routeToFilters(route)
|
filters.value = routeToFilters(route)
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
filters,
|
filters,
|
||||||
async () => {
|
async () => {
|
||||||
if (routeFromFiltersFullPath.value !== route.value.fullPath) {
|
if (routeFromFiltersFullPath.value !== route.value.fullPath) {
|
||||||
await router.push(routeFromFiltersFullPath.value)
|
await router.push(routeFromFiltersFullPath.value)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// only apply new route after all filters have changed in component cycle
|
// only apply new route after all filters have changed in component cycle
|
||||||
{flush: 'post'},
|
{flush: 'post'},
|
||||||
)
|
)
|
||||||
|
|
||||||
const hasDefaultFilters = computed(() => {
|
const hasDefaultFilters = computed(() => {
|
||||||
return equal(filters.value, getDefaultFilters(route.value))
|
return equal(filters.value, getDefaultFilters(route.value))
|
||||||
@ -47,9 +46,9 @@ export function useRouteFilters<CurrentFilters extends Filters>(
|
|||||||
filters.value = getDefaultFilters(route.value)
|
filters.value = getDefaultFilters(route.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
filters,
|
filters,
|
||||||
hasDefaultFilters,
|
hasDefaultFilters,
|
||||||
setDefaultFilters,
|
setDefaultFilters,
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user