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;