From 0f58f6fa22fe7b1c2484956ce3a423d6c380eea1 Mon Sep 17 00:00:00 2001 From: J-Sek Date: Sat, 30 Aug 2025 21:32:27 +0200 Subject: [PATCH] fix(nested): avoid console warnings when updating items order fixes #20934 --- .../__tests__/VTreeview.spec.browser.tsx | 1 + packages/vuetify/src/composables/nested/nested.ts | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/vuetify/src/components/VTreeview/__tests__/VTreeview.spec.browser.tsx b/packages/vuetify/src/components/VTreeview/__tests__/VTreeview.spec.browser.tsx index bb7ca1e6fa5..42b4ed2c500 100644 --- a/packages/vuetify/src/components/VTreeview/__tests__/VTreeview.spec.browser.tsx +++ b/packages/vuetify/src/components/VTreeview/__tests__/VTreeview.spec.browser.tsx @@ -648,6 +648,7 @@ describe.each([ /> )) + await nextTick() search.value = 'j' await nextTick() expect(screen.getByText(/Vuetify/)).toBeVisible() diff --git a/packages/vuetify/src/composables/nested/nested.ts b/packages/vuetify/src/composables/nested/nested.ts index 0e84581f01c..80762f0d1b3 100644 --- a/packages/vuetify/src/composables/nested/nested.ts +++ b/packages/vuetify/src/composables/nested/nested.ts @@ -5,6 +5,7 @@ import { useProxiedModel } from '@/composables/proxiedModel' import { computed, inject, + nextTick, onBeforeMount, onBeforeUnmount, provide, @@ -13,6 +14,7 @@ import { toRaw, toRef, toValue, + watch, } from 'vue' import { independentActiveStrategy, @@ -381,7 +383,9 @@ export const useNestedItem = (id: MaybeRefOrGetter, isDisabled: MaybeRe onBeforeMount(() => { if (!parent.isGroupActivator) { - parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup) + nextTick(() => { + parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup) + }) } }) @@ -391,6 +395,15 @@ export const useNestedItem = (id: MaybeRefOrGetter, isDisabled: MaybeRe } }) + watch(computedId, (val, oldVal) => { + if (!parent.isGroupActivator) { + parent.root.unregister(oldVal) + nextTick(() => { + parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup) + }) + } + }) + isGroup && provide(VNestedSymbol, item) return item