Set selected on paper-tabs always after render.
We only set it when viewState changes, but it can keep it state, when
navigating from other pages after viewState has been reset.
Google-Bug-Id: b/278254859
Release-Notes: skip
Change-Id: Idc859b697b9f06cbb5bb496430ba85a16779b5c0
(cherry picked from commit 9600e01e6579c4a02995b6733f2eba390be5f834)
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index 9acc910..5ceeeaf 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -1639,6 +1639,16 @@
`;
}
+ override updated() {
+ const tabs = [...queryAll<HTMLElement>(this.tabs!, 'paper-tab')];
+ const tabIndex = tabs.findIndex(t => t.dataset['name'] === this.activeTab);
+ assert(tabIndex !== -1, `tab ${this.activeTab} not found`);
+
+ if (this.tabs!.selected !== tabIndex) {
+ this.tabs!.selected = tabIndex;
+ }
+ }
+
private readonly handleScroll = () => {
if (!this.isViewCurrent) return;
this.scrollTask = debounce(
@@ -1680,22 +1690,10 @@
}
setActiveTab(e: SwitchTabEvent) {
- if (!this.tabs) return;
- const tabs = [...queryAll<HTMLElement>(this.tabs, 'paper-tab')];
- if (!tabs) return;
-
const tab = e.detail.tab;
- const tabIndex = tabs.findIndex(t => t.dataset['name'] === tab);
- assert(tabIndex !== -1, `tab ${tab} not found`);
-
- if (this.tabs.selected !== tabIndex) {
- this.tabs.selected = tabIndex;
- }
-
this.getViewModel().updateState({tab});
-
if (e.detail.tabState) this.tabState = e.detail.tabState;
- if (e.detail.scrollIntoView) this.tabs.scrollIntoView({block: 'center'});
+ if (e.detail.scrollIntoView) this.tabs!.scrollIntoView({block: 'center'});
}
/**