From f305a47c7065d1f60e3f1fb5010ec3052c7dd1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Louren=C3=A7o?= Date: Tue, 5 May 2026 18:57:44 +0100 Subject: [PATCH] fix(segment): segment drag would set disabled segment button checked --- .../segment-view/test/basic/index.html | 16 +++++++++ .../test/basic/segment-view.e2e.ts | 33 +++++++++++++++++++ core/src/components/segment/segment.tsx | 4 +++ 3 files changed, 53 insertions(+) diff --git a/core/src/components/segment-view/test/basic/index.html b/core/src/components/segment-view/test/basic/index.html index 78dec1d9ff9..631a6a69a57 100644 --- a/core/src/components/segment-view/test/basic/index.html +++ b/core/src/components/segment-view/test/basic/index.html @@ -79,6 +79,22 @@ Top + + + First + + + Second + + + Third + + + + Second Content + Third Content + + Orange diff --git a/core/src/components/segment-view/test/basic/segment-view.e2e.ts b/core/src/components/segment-view/test/basic/segment-view.e2e.ts index f3f35626eaa..4bd434d18f2 100644 --- a/core/src/components/segment-view/test/basic/segment-view.e2e.ts +++ b/core/src/components/segment-view/test/basic/segment-view.e2e.ts @@ -169,5 +169,38 @@ configs({ modes: ['md'] }).forEach(({ title, config }) => { const segmentContent = page.locator('ion-segment-content[id="top"]'); await expect(segmentContent).toBeInViewport(); }); + test('should not select a disabled first segment button when dragging segment-view from last content', async ({ + page, + }) => { + await page.setContent( + ` + + + First + + + Second + + + Third + + + + Second Content + Third Content + + `, + config + ); + await page.waitForChanges(); + + await page.locator('ion-segment-view').evaluate((el: HTMLElement) => { + const max = el.scrollWidth - el.clientWidth; + el.scrollLeft = max; + }); + await page.waitForChanges(); + + await expect(page.locator('ion-segment-button[value="first"]')).not.toHaveClass(/segment-button-checked/); + }); }); }); diff --git a/core/src/components/segment/segment.tsx b/core/src/components/segment/segment.tsx index 6a56f8fdddf..e680f22413b 100644 --- a/core/src/components/segment/segment.tsx +++ b/core/src/components/segment/segment.tsx @@ -400,6 +400,10 @@ export class Segment implements ComponentInterface { const nextIndex = Math.round(scrollRatio * (buttons.length - 1)); + if (buttons[nextIndex]?.disabled) { + return; + } + if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) { this.lastNextIndex = nextIndex; this.triggerScrollOnValueChange = false;