@datagouv/components-next 1.0.2-dev.63 → 1.0.2-dev.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { c as Ke } from "./main-BcqenM8i.js";
1
+ import { c as Ke } from "./main-BoFCVekJ.js";
2
2
  import We from "vue";
3
3
  function Fe(I, K) {
4
4
  for (var V = 0; V < K.length; V++) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datagouv/components-next",
3
- "version": "1.0.2-dev.63",
3
+ "version": "1.0.2-dev.64",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -1,4 +1,5 @@
1
1
  import { type InjectionKey, type Ref, inject, onMounted, onScopeDispose } from 'vue'
2
+ import { useRoute, useRouter } from 'vue-router'
2
3
  import { useRouteQuery } from '@vueuse/router'
3
4
 
4
5
  export interface CustomFilterEntry {
@@ -69,6 +70,8 @@ export function useSearchFilter(
69
70
 
70
71
  const { apiParam = urlParam, defaultValue = undefined } = options
71
72
 
73
+ const route = useRoute()
74
+ const router = useRouter()
72
75
  const value = useRouteQuery<string | undefined>(urlParam, defaultValue)
73
76
 
74
77
  // Register in onMounted to avoid SSR/hydration mismatch: the registry must be
@@ -82,7 +85,19 @@ export function useSearchFilter(
82
85
  // own `watch(currentType)` logic that drops built-in filters which don't
83
86
  // apply to the new type: a custom filter's applicability is signalled
84
87
  // by the consumer via `v-if`, so its unmount is the equivalent signal.
85
- value.value = defaultValue
88
+ //
89
+ // We cannot use `value.value = defaultValue` here because VueUse's
90
+ // useRouteQuery registers its own tryOnScopeDispose cleanup that zeroes
91
+ // the internal `query` variable to undefined (FIFO order, it runs first).
92
+ // The setter then sees `query === v` and early-returns without ever
93
+ // calling router.replace(). Instead we read the live route.query directly
94
+ // (which is router state, not affected by that cleanup) and push the update.
95
+ if (route.query[urlParam] !== undefined) {
96
+ const { [urlParam]: _removed, ...restQuery } = route.query
97
+ router.replace({
98
+ query: defaultValue === undefined ? restQuery : { ...restQuery, [urlParam]: String(defaultValue) },
99
+ })
100
+ }
86
101
  context.unregister(urlParam)
87
102
  })
88
103