From aec8b2d920d868e6f97fb9316d5d32f97fd4fa41 Mon Sep 17 00:00:00 2001 From: Arul1998 Date: Fri, 26 Jun 2026 02:55:58 +0100 Subject: [PATCH] fix(menu): respect ion-app dir attribute for menu animation side Use isRTL with nearest ancestor dir lookup, fix sideChanged call site, and add unit/e2e tests for issue #30226. --- core/src/components/menu/menu.tsx | 4 +- .../components/menu/test/basic/menu.e2e.ts | 24 ++++++++++ ...app-dir-rtl-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 19739 bytes ...pp-dir-rtl-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 32838 bytes ...app-dir-rtl-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 25016 bytes core/src/utils/helpers.spec.ts | 42 +++++++++++++++++- core/src/utils/helpers.ts | 13 +++--- 7 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/menu/menu.tsx b/core/src/components/menu/menu.tsx index 4769f609914..4bf4564c40f 100644 --- a/core/src/components/menu/menu.tsx +++ b/core/src/components/menu/menu.tsx @@ -150,7 +150,7 @@ export class Menu implements ComponentInterface, MenuI { @Watch('side') protected sideChanged() { - this.isEndSide = isEnd(this.side); + this.isEndSide = isEnd(this.side, this.el); /** * Menu direction animation is calculated based on the document direction. * If the document direction changes, we need to create a new animation. @@ -499,7 +499,7 @@ export class Menu implements ComponentInterface, MenuI { * Menu direction animation is calculated based on the document direction. * If the document direction changes, we need to create a new animation. */ - const isEndSide = isEnd(this.side); + const isEndSide = isEnd(this.side, this.el); if (width === this.width && this.animation !== undefined && isEndSide === this.isEndSide) { return; } diff --git a/core/src/components/menu/test/basic/menu.e2e.ts b/core/src/components/menu/test/basic/menu.e2e.ts index e715469f282..5dbe59a7d6f 100644 --- a/core/src/components/menu/test/basic/menu.e2e.ts +++ b/core/src/components/menu/test/basic/menu.e2e.ts @@ -137,6 +137,30 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co }); await ionDidClose.next(); }); + + test('should render on the correct side when ion-app direction is rtl', async ({ page }) => { + test.info().annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30226', + }); + + const ionDidOpen = await page.spyOnEvent('ionDidOpen'); + const ionDidClose = await page.spyOnEvent('ionDidClose'); + + await page.evaluate(() => { + document.dir = 'ltr'; + document.querySelector('ion-app')?.setAttribute('dir', 'rtl'); + }); + await page.click('#open-start'); + await ionDidOpen.next(); + + await expect(page).toHaveScreenshot(screenshot(`menu-basic-ion-app-dir-rtl`)); + + await page.locator('[menu-id="start-menu"]').evaluate(async (el: HTMLIonMenuElement) => { + await el.close(); + }); + await ionDidClose.next(); + }); }); }); diff --git a/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Chrome-linux.png b/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..34d34f9de8563bdeae986d8cbf4af0d85b428c9d GIT binary patch literal 19739 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 literal 0 HcmV?d00001 diff --git a/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Firefox-linux.png b/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5de3cf5bdd3c4de9580fbd6c32489c28d4137b0a GIT binary patch literal 32838 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 Ok7;7D`KGa3#D4&=2Yb%| literal 0 HcmV?d00001 diff --git a/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Safari-linux.png b/core/src/components/menu/test/basic/menu.e2e.ts-snapshots/menu-basic-ion-app-dir-rtl-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e288b014a41ef87e7ba6a427816b9804be35ed22 GIT binary patch literal 25016 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 p={?(>ICslE?6kBpj#tKIh4hZs(OHQOn2X5a?A) { + afterEach(() => { + document.dir = 'ltr'; + }); + + it('should use document direction when no host element is provided', () => { + document.dir = 'rtl'; + expect(isEndSide('start')).toBe(true); + expect(isEndSide('end')).toBe(false); + }); + + it('should use the nearest ancestor dir attribute', () => { + document.dir = 'ltr'; + + const app = document.createElement('ion-app'); + app.setAttribute('dir', 'rtl'); + + const menu = document.createElement('ion-menu'); + app.appendChild(menu); + document.body.appendChild(app); + + expect(isEndSide('start', menu)).toBe(true); + expect(isEndSide('end', menu)).toBe(false); + + document.body.removeChild(app); + }); + + it('should fall back to document direction when no ancestor has dir', () => { + document.dir = 'rtl'; + + const menu = document.createElement('ion-menu'); + document.body.appendChild(menu); + + expect(isEndSide('start', menu)).toBe(true); + expect(isEndSide('end', menu)).toBe(false); + + document.body.removeChild(menu); + }); +}); describe('inheritAriaAttributes', () => { it('should inherit aria attributes', () => { diff --git a/core/src/utils/helpers.ts b/core/src/utils/helpers.ts index e32956c35eb..9d8c0a7b839 100644 --- a/core/src/utils/helpers.ts +++ b/core/src/utils/helpers.ts @@ -1,5 +1,6 @@ import type { EventEmitter } from '@stencil/core'; import { printIonError } from '@utils/logging'; +import { isRTL } from '@utils/rtl'; import type { Side } from '../components/menu/menu-interface'; @@ -319,15 +320,17 @@ export const pointerCoord = (ev: any): { x: number; y: number } => { * Given a side, return if it should be on the end * based on the value of dir * @param side the side - * @param isRTL whether the application dir is rtl + * @param hostElement the host element used to resolve the nearest ancestor `dir` */ -export const isEndSide = (side: Side): boolean => { - const isRTL = document.dir === 'rtl'; +export const isEndSide = (side: Side, hostElement?: Element): boolean => { + const dirHost = hostElement?.closest('[dir]') as HTMLElement | undefined; + const rtl = isRTL(dirHost); + switch (side) { case 'start': - return isRTL; + return rtl; case 'end': - return !isRTL; + return !rtl; default: throw new Error(`"${side}" is not a valid value for [side]. Use "start" or "end" instead.`); }