From ae2704fdc8f060fa0deba6b8c9e62c7e6ffa4c28 Mon Sep 17 00:00:00 2001 From: Tanner Reits Date: Sat, 28 Sep 2024 20:33:48 -0400 Subject: [PATCH] fix(segment): only handle events for correct instance --- core/src/components/segment/segment.tsx | 28 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/core/src/components/segment/segment.tsx b/core/src/components/segment/segment.tsx index 534395bd61..071bdb09eb 100644 --- a/core/src/components/segment/segment.tsx +++ b/core/src/components/segment/segment.tsx @@ -406,20 +406,32 @@ export class Segment implements ComponentInterface { } @Listen('ionSegmentViewScrollStart', { target: 'body' }) - onScrollStart() { - this.isScrolling = true; + onScrollStart(ev: CustomEvent) { + const dispatchedFrom = ev.target as HTMLElement; + const segmentViewEl = this.segmentViewEl as EventTarget; + const segmentEl = this.el; + + if (ev.composedPath().includes(segmentViewEl) || dispatchedFrom?.contains(segmentEl)) { + this.isScrolling = true; + } } @Listen('ionSegmentViewScrollEnd', { target: 'body' }) onScrollEnd(ev: CustomEvent<{ activeContentId: string }>) { - this.value = ev.detail.activeContentId; + const dispatchedFrom = ev.target as HTMLElement; + const segmentViewEl = this.segmentViewEl as EventTarget; + const segmentEl = this.el; - if (this.scrolledIndicator) { - this.scrolledIndicator.style.transition = ''; - this.scrolledIndicator.style.transform = ''; + if (ev.composedPath().includes(segmentViewEl) || dispatchedFrom?.contains(segmentEl)) { + this.value = ev.detail.activeContentId; + + if (this.scrolledIndicator) { + this.scrolledIndicator.style.transition = ''; + this.scrolledIndicator.style.transform = ''; + } + + this.isScrolling = false; } - - this.isScrolling = false; } /**