From 184349c4a796678dad04e3a22ef9dfe336e288a9 Mon Sep 17 00:00:00 2001 From: Massimiliano Torromeo Date: Thu, 14 Dec 2023 11:05:59 +0100 Subject: [PATCH] fix(Tabs): fixed activation of tabs with keys that are defined but falsy --- packages/core/src/components/Tabs/Tab.vue | 3 ++- packages/core/src/components/Tabs/Tabs.vue | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/core/src/components/Tabs/Tab.vue b/packages/core/src/components/Tabs/Tab.vue index 49a2b8e7..e4e79f2a 100644 --- a/packages/core/src/components/Tabs/Tab.vue +++ b/packages/core/src/components/Tabs/Tab.vue @@ -90,7 +90,8 @@ defineSlots<{ }>(); const instance = getCurrentInstance(); -const key = computed(() => instance?.vnode.key ?? Symbol()); +const fallbackKey = Symbol(); +const key = computed(() => instance?.vnode.key ?? fallbackKey); const tabs = inject(TabsProvideKey); useChildrenTracker(TabsKey, key); diff --git a/packages/core/src/components/Tabs/Tabs.vue b/packages/core/src/components/Tabs/Tabs.vue index 36d57a2c..f1f4cc6c 100644 --- a/packages/core/src/components/Tabs/Tabs.vue +++ b/packages/core/src/components/Tabs/Tabs.vue @@ -111,7 +111,7 @@ import { watchEffect, nextTick, onMounted, provide, computed, type InjectionKey, import { useOUIAProps, type OUIAProps } from '../../helpers/ouia'; import AngleLeftIcon from '@vue-patternfly/icons/angle-left-icon'; import AngleRightIcon from '@vue-patternfly/icons/angle-right-icon'; -import { useEventListener } from '@vueuse/core'; +import { isDefined, useEventListener } from '@vueuse/core'; import { provideChildrenTracker, type ChildrenTrackerInjectionKey } from '../../use'; defineOptions({ @@ -155,7 +155,7 @@ if (!props.vertical) { } watchEffect(() => { - if ((!localActiveKey.value || !tabKeys.find(k => k.value === localActiveKey.value)) && tabKeys.length) { + if ((!isDefined(localActiveKey.value) || !tabKeys.find(k => k.value === localActiveKey.value)) && tabKeys.length) { localActiveKey.value = tabKeys[0].value; } });