Skip to content

Commit 49acffd

Browse files
committed
Adding fallback for edge case
1 parent fb63784 commit 49acffd

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

core/src/components/tab-button/tab-button.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,23 @@ export class TabButton implements ComponentInterface, AnchorInterface {
106106

107107
// Check if this tab button should be initially selected based on parent tab-bar's selectedTab prop
108108
// This handles the case where selected-tab is set via HTML attribute before events fire
109+
this.syncWithTabBar();
110+
}
111+
112+
componentDidLoad() {
113+
// Double-check selection state after load to handle any timing issues
114+
// This ensures the button reflects the correct state even if the initial check was too early
115+
this.syncWithTabBar();
116+
}
117+
118+
private syncWithTabBar() {
109119
const tabBar = this.el.parentElement as HTMLIonTabBarElement | null;
110-
if (tabBar && tabBar.tagName === 'ION-TAB-BAR' && tabBar.selectedTab !== undefined) {
111-
this.selected = this.tab === tabBar.selectedTab;
120+
if (tabBar && tabBar.tagName === 'ION-TAB-BAR') {
121+
// Check both the property and attribute to handle all initialization scenarios
122+
const selectedTab = tabBar.selectedTab ?? tabBar.getAttribute('selected-tab');
123+
if (selectedTab !== null && selectedTab !== undefined) {
124+
this.selected = this.tab === selectedTab;
125+
}
112126
}
113127
}
114128

core/src/components/tabs/tabs.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,17 @@ export class Tabs implements NavOutlet {
7575

7676
private updateTabBar() {
7777
const tabBar = this.el.querySelector('ion-tab-bar');
78-
if (tabBar) {
79-
const tab = this.selectedTab ? this.selectedTab.tab : undefined;
80-
tabBar.selectedTab = tab;
78+
if (!tabBar) {
79+
return;
80+
}
81+
82+
const tab = this.selectedTab ? this.selectedTab.tab : undefined;
83+
84+
if (tab === undefined || tabBar.selectedTab === tab) {
85+
return;
8186
}
87+
88+
tabBar.selectedTab = tab;
8289
}
8390

8491
/**

0 commit comments

Comments
 (0)