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;