From 18cce9ddeb2a254b390a734b24508b202de3ee9b Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 4 Feb 2026 10:19:33 -0800 Subject: [PATCH 1/7] fix(modals): respect safe areas --- core/src/components/modal/modal.scss | 4 - core/src/components/modal/modal.tsx | 93 +++++++ core/src/components/modal/safe-area-utils.ts | 134 ++++++++++ .../modal/test/safe-area/index.html | 253 ++++++++++++++++++ .../modal/test/safe-area/modal.e2e.ts | 194 ++++++++++++++ 5 files changed, 674 insertions(+), 4 deletions(-) create mode 100644 core/src/components/modal/safe-area-utils.ts create mode 100644 core/src/components/modal/test/safe-area/index.html create mode 100644 core/src/components/modal/test/safe-area/modal.e2e.ts diff --git a/core/src/components/modal/modal.scss b/core/src/components/modal/modal.scss index 7c5ec7916fe..ac4cb533b48 100644 --- a/core/src/components/modal/modal.scss +++ b/core/src/components/modal/modal.scss @@ -94,10 +94,6 @@ ion-backdrop { :host { --width: #{$modal-inset-width}; --height: #{$modal-inset-height-small}; - --ion-safe-area-top: 0px; - --ion-safe-area-bottom: 0px; - --ion-safe-area-right: 0px; - --ion-safe-area-left: 0px; } } diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index a96d59c8e9f..5c9d62e78d0 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -44,6 +44,13 @@ import type { MoveSheetToBreakpointOptions } from './gestures/sheet'; import { createSheetGesture } from './gestures/sheet'; import { createSwipeToCloseGesture, SwipeToCloseDefaults } from './gestures/swipe-to-close'; import type { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from './modal-interface'; +import { + getInitialSafeAreaConfig, + getPositionBasedSafeAreaConfig, + applySafeAreaOverrides, + clearSafeAreaOverrides, + type ModalSafeAreaContext, +} from './safe-area-utils'; import { setCardStatusBarDark, setCardStatusBarDefault } from './utils'; // TODO(FW-2832): types @@ -594,6 +601,9 @@ export class Modal implements ComponentInterface, OverlayInterface { writeTask(() => this.el.classList.add('show-modal')); + // Set initial safe-area overrides before animation + this.setInitialSafeAreaOverrides(); + const hasCardModal = presentingElement !== undefined; /** @@ -614,6 +624,12 @@ export class Modal implements ComponentInterface, OverlayInterface { expandToScroll: this.expandToScroll, }); + // Update safe-area based on actual position after animation + this.updateSafeAreaOverrides(); + + // Apply fullscreen safe-area padding if needed + this.applyFullscreenSafeArea(); + /* tslint:disable-next-line */ if (typeof window !== 'undefined') { /** @@ -754,6 +770,8 @@ export class Modal implements ComponentInterface, OverlayInterface { if (this.currentBreakpoint !== breakpoint) { this.currentBreakpoint = breakpoint; this.ionBreakpointDidChange.emit({ breakpoint }); + // Update safe-area overrides based on new position + this.updateSafeAreaOverrides(); } } ); @@ -956,6 +974,7 @@ export class Modal implements ComponentInterface, OverlayInterface { } this.cleanupViewTransitionListener(); this.cleanupParentRemovalObserver(); + this.cleanupSafeAreaOverrides(); this.cleanupChildRoutePassthrough(); } @@ -1166,6 +1185,9 @@ export class Modal implements ComponentInterface, OverlayInterface { transitionAnimation.play().then(() => { this.viewTransitionAnimation = undefined; + // Update safe-area overrides for new orientation + this.updateSafeAreaOverrides(); + // After orientation transition, recreate the swipe-to-close gesture // with updated animation that reflects the new presenting element state this.reinitSwipeToClose(); @@ -1335,6 +1357,77 @@ export class Modal implements ComponentInterface, OverlayInterface { this.parentRemovalObserver = undefined; } + /** + * Creates the context object for safe-area utilities. + */ + private getSafeAreaContext(): ModalSafeAreaContext { + const mode = getIonMode(this); + return { + isSheetModal: this.isSheetModal, + isCardModal: this.presentingElement !== undefined && mode === 'ios', + mode, + presentingElement: this.presentingElement, + breakpoints: this.breakpoints, + currentBreakpoint: this.currentBreakpoint, + }; + } + + /** + * Sets initial safe-area overrides before modal animation. + * Called in present() before animation starts. + */ + private setInitialSafeAreaOverrides(): void { + const context = this.getSafeAreaContext(); + const config = getInitialSafeAreaConfig(context); + applySafeAreaOverrides(this.el, config); + } + + /** + * Updates safe-area overrides during dynamic state changes. + * Called after animations, during gestures, and on orientation changes. + */ + private updateSafeAreaOverrides(): void { + const { wrapperEl, el } = this; + if (!wrapperEl) return; + + // Always use position-based detection to correctly handle both + // fullscreen modals and centered dialogs with custom dimensions + const config = getPositionBasedSafeAreaConfig(wrapperEl); + applySafeAreaOverrides(el, config); + } + + /** + * Applies padding-bottom to fullscreen modal wrapper to prevent + * content from overlapping system navigation bar. + */ + private applyFullscreenSafeArea(): void { + const { wrapperEl, el } = this; + if (!wrapperEl) return; + + const context = this.getSafeAreaContext(); + if (context.isSheetModal || context.isCardModal) return; + + // Check if footer exists + const footer = el.querySelector('ion-footer'); + if (footer) return; + + // Add padding to wrapper to prevent content overlap + wrapperEl.style.setProperty('box-sizing', 'border-box'); + wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)'); + } + + /** + * Clears all safe-area overrides and padding from wrapper. + */ + private cleanupSafeAreaOverrides(): void { + clearSafeAreaOverrides(this.el); + + if (this.wrapperEl) { + this.wrapperEl.style.removeProperty('box-sizing'); + this.wrapperEl.style.removeProperty('padding-bottom'); + } + } + render() { const { handle, diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts new file mode 100644 index 00000000000..edb7e948c3f --- /dev/null +++ b/core/src/components/modal/safe-area-utils.ts @@ -0,0 +1,134 @@ +import { win } from '@utils/browser'; + +/** + * Configuration for safe-area CSS custom properties. + * Values can be 'inherit' (use root value) or '0px' (no safe-area). + */ +export interface SafeAreaConfig { + top: string; + bottom: string; + left: string; + right: string; +} + +/** + * Context information about the modal used to determine safe-area behavior. + */ +export interface ModalSafeAreaContext { + isSheetModal: boolean; + isCardModal: boolean; + mode: 'ios' | 'md'; + presentingElement?: HTMLElement; + breakpoints?: number[]; + currentBreakpoint?: number; +} + +const TABLET_WIDTH = 768; +const EDGE_THRESHOLD = 5; + +/** + * Determines if the current viewport is tablet-sized (>= 768px width). + */ +export const isTabletViewport = (): boolean => { + return win ? win.innerWidth >= TABLET_WIDTH : false; +}; + +/** + * Returns the initial safe-area configuration based on modal type. + * This is called before animation starts and uses configuration-based prediction. + * + * @param context - Modal context information + * @returns SafeAreaConfig with initial safe-area values + */ +export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAreaConfig => { + const { isSheetModal, isCardModal, mode } = context; + + // Sheet modals always use bottom safe-area only + if (isSheetModal) { + return { + top: '0px', + bottom: 'inherit', + left: '0px', + right: '0px', + }; + } + + // Card modals (iOS only) need safe-area for height calculation + if (isCardModal && mode === 'ios') { + return { + top: 'inherit', + bottom: 'inherit', + left: '0px', + right: '0px', + }; + } + + // Fullscreen and centered dialogs - inherit all, let position detection decide + return { + top: 'inherit', + bottom: 'inherit', + left: 'inherit', + right: 'inherit', + }; +}; + +/** + * Returns safe-area configuration based on actual modal position. + * Detects which edges the modal overlaps with and only applies safe-area to those edges. + * + * @param wrapperEl - The modal wrapper element to measure + * @param skipCoordinateDetection - If true, skips coordinate detection and returns inherit for all + * @returns SafeAreaConfig based on position + */ +export const getPositionBasedSafeAreaConfig = ( + wrapperEl: HTMLElement, + skipCoordinateDetection = false +): SafeAreaConfig => { + // Skip coordinate detection for Android edge-to-edge compatibility + // or when explicitly requested + if (skipCoordinateDetection) { + return { + top: 'inherit', + bottom: 'inherit', + left: 'inherit', + right: 'inherit', + }; + } + + const rect = wrapperEl.getBoundingClientRect(); + const vh = win?.innerHeight ?? 0; + const vw = win?.innerWidth ?? 0; + + // Only apply safe-area to sides where modal overlaps with screen edge + return { + top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px', + bottom: rect.bottom >= vh - EDGE_THRESHOLD ? 'inherit' : '0px', + left: rect.left <= EDGE_THRESHOLD ? 'inherit' : '0px', + right: rect.right >= vw - EDGE_THRESHOLD ? 'inherit' : '0px', + }; +}; + +/** + * Applies safe-area CSS custom property overrides to the modal host element. + * + * @param hostEl - The modal host element (ion-modal) + * @param config - Safe-area configuration to apply + */ +export const applySafeAreaOverrides = (hostEl: HTMLElement, config: SafeAreaConfig): void => { + hostEl.style.setProperty('--ion-safe-area-top', config.top); + hostEl.style.setProperty('--ion-safe-area-bottom', config.bottom); + hostEl.style.setProperty('--ion-safe-area-left', config.left); + hostEl.style.setProperty('--ion-safe-area-right', config.right); +}; + +/** + * Clears safe-area CSS custom property overrides from the modal host element. + * + * @param hostEl - The modal host element (ion-modal) + */ +export const clearSafeAreaOverrides = (hostEl: HTMLElement): void => { + hostEl.style.removeProperty('--ion-safe-area-top'); + hostEl.style.removeProperty('--ion-safe-area-bottom'); + hostEl.style.removeProperty('--ion-safe-area-left'); + hostEl.style.removeProperty('--ion-safe-area-right'); +}; diff --git a/core/src/components/modal/test/safe-area/index.html b/core/src/components/modal/test/safe-area/index.html new file mode 100644 index 00000000000..87795ee7f6e --- /dev/null +++ b/core/src/components/modal/test/safe-area/index.html @@ -0,0 +1,253 @@ + + + + + Modal - Safe Area + + + + + + + + + + + +
+
+ + +
+ + + Modal - Safe Area + + + + +

Fullscreen Modals

+ + + +

Sheet Modals

+ + +

Card Modals (iOS)

+ + +

Centered Dialog (Tablet)

+ + +

Diagnostic Info

+
+

Window Width:

+

Window Height:

+

Is Tablet:

+
+
+
+
+ + + + diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts new file mode 100644 index 00000000000..5917e2b5623 --- /dev/null +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -0,0 +1,194 @@ +import { expect } from '@playwright/test'; +import { configs, test, Viewports } from '@utils/test/playwright'; + +/** + * These tests verify that safe-area CSS custom properties are correctly + * applied to modals based on their type and position. + * + * FW-6830: Dynamic Modal Safe-Area Handling + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: safe-area handling'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/modal/test/safe-area', config); + }); + + test('fullscreen modal should inherit all safe-area values on phone', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On phone viewport, fullscreen modal should inherit safe-area values + const safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop.trim()).toBe('inherit'); + expect(safeAreaBottom.trim()).toBe('inherit'); + }); + + test('fullscreen modal should inherit all safe-area values on tablet', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On tablet viewport, fullscreen modal should still inherit safe-area values + // This is the key fix for FW-6830 - previously these were zeroed out + const safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop.trim()).toBe('inherit'); + expect(safeAreaBottom.trim()).toBe('inherit'); + }); + + test('sheet modal should only use bottom safe-area', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Sheet modals should have top safe-area zeroed (doesn't touch top edge) + // but bottom safe-area inherited (touches bottom edge) + const safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop.trim()).toBe('0px'); + expect(safeAreaBottom.trim()).toBe('inherit'); + }); + + test('centered dialog should have all safe-area values zeroed on tablet', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#centered-dialog'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Centered dialogs don't touch any edge, so all safe-areas should be zeroed + const safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop.trim()).toBe('0px'); + expect(safeAreaBottom.trim()).toBe('0px'); + }); + + test('safe-area overrides should be cleared on dismiss', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Verify overrides are set + let safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).not.toBe(''); + + // Dismiss the modal + await modal.evaluate((el: HTMLIonModalElement) => el.dismiss()); + await ionModalDidDismiss.next(); + + // Verify overrides are cleared + safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe(''); + }); + }); +}); + +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('modal: card modal safe-area (iOS only)'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/modal/test/safe-area', config); + }); + + test('card modal should inherit top and bottom safe-area', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#card-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Card modals need top safe-area for height calculation + const safeAreaTop = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + }); + const safeAreaLeft = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-left'); + }); + const safeAreaRight = await modal.evaluate((el: HTMLElement) => { + return getComputedStyle(el).getPropertyValue('--ion-safe-area-right'); + }); + + expect(safeAreaTop.trim()).toBe('inherit'); + expect(safeAreaBottom.trim()).toBe('inherit'); + expect(safeAreaLeft.trim()).toBe('0px'); + expect(safeAreaRight.trim()).toBe('0px'); + }); + }); +}); From 534ad4b89d0a6173a03147763c4ec82c80604f73 Mon Sep 17 00:00:00 2001 From: ShaneK Date: Mon, 9 Feb 2026 06:28:15 -0800 Subject: [PATCH 2/7] fix(overlays): refine safe-area handling for modals and popovers --- core/src/components/modal/modal.tsx | 88 +++++-- core/src/components/modal/safe-area-utils.ts | 70 +++--- .../modal/test/safe-area/modal.e2e.ts | 221 +++++++++++++----- .../popover/animations/ios.enter.ts | 46 +++- .../components/popover/animations/md.enter.ts | 51 +++- .../popover/test/safe-area/index.html | 158 +++++++++++++ .../popover/test/safe-area/popover.e2e.ts | 85 +++++++ core/src/components/popover/utils.ts | 134 +++++++++-- 8 files changed, 711 insertions(+), 142 deletions(-) create mode 100644 core/src/components/popover/test/safe-area/index.html create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 5c9d62e78d0..87da5a407a5 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -413,6 +413,9 @@ export class Modal implements ComponentInterface, OverlayInterface { this.triggerController.removeClickListener(); this.cleanupViewTransitionListener(); this.cleanupParentRemovalObserver(); + // Also called in dismiss() — intentional dual cleanup covers both + // dismiss-then-remove and direct DOM removal without dismiss. + this.cleanupSafeAreaOverrides(); } componentWillLoad() { @@ -601,6 +604,10 @@ export class Modal implements ComponentInterface, OverlayInterface { writeTask(() => this.el.classList.add('show-modal')); + // Recalculate isSheetModal before safe-area setup because framework + // bindings (e.g., Angular) may not have been applied when componentWillLoad ran. + this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined; + // Set initial safe-area overrides before animation this.setInitialSafeAreaOverrides(); @@ -662,14 +669,7 @@ export class Modal implements ComponentInterface, OverlayInterface { window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback); } - /** - * Recalculate isSheetModal because framework bindings (e.g., Angular) - * may not have been applied when componentWillLoad ran. - */ - const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined; - this.isSheetModal = isSheetModal; - - if (isSheetModal) { + if (this.isSheetModal) { this.initSheetGesture(); } else if (hasCardModal) { this.initSwipeToClose(); @@ -1185,8 +1185,9 @@ export class Modal implements ComponentInterface, OverlayInterface { transitionAnimation.play().then(() => { this.viewTransitionAnimation = undefined; - // Update safe-area overrides for new orientation - this.updateSafeAreaOverrides(); + // Wait for a layout pass after the transition so getBoundingClientRect() + // in getPositionBasedSafeAreaConfig() reflects the new dimensions. + raf(() => this.updateSafeAreaOverrides()); // After orientation transition, recreate the swipe-to-close gesture // with updated animation that reflects the new presenting element state @@ -1361,11 +1362,9 @@ export class Modal implements ComponentInterface, OverlayInterface { * Creates the context object for safe-area utilities. */ private getSafeAreaContext(): ModalSafeAreaContext { - const mode = getIonMode(this); return { isSheetModal: this.isSheetModal, - isCardModal: this.presentingElement !== undefined && mode === 'ios', - mode, + isCardModal: this.presentingElement !== undefined && getIonMode(this) === 'ios', presentingElement: this.presentingElement, breakpoints: this.breakpoints, currentBreakpoint: this.currentBreakpoint, @@ -1378,8 +1377,8 @@ export class Modal implements ComponentInterface, OverlayInterface { */ private setInitialSafeAreaOverrides(): void { const context = this.getSafeAreaContext(); - const config = getInitialSafeAreaConfig(context); - applySafeAreaOverrides(this.el, config); + const safeAreaConfig = getInitialSafeAreaConfig(context); + applySafeAreaOverrides(this.el, safeAreaConfig); } /** @@ -1388,12 +1387,32 @@ export class Modal implements ComponentInterface, OverlayInterface { */ private updateSafeAreaOverrides(): void { const { wrapperEl, el } = this; + const context = this.getSafeAreaContext(); + + // Sheet modals: the wrapper extends beyond the viewport and is translated + // via breakpoint gestures, making getBoundingClientRect unreliable for + // edge detection. Instead, use breakpoint value to determine top safe-area. + if (context.isSheetModal) { + const needsTopSafeArea = context.currentBreakpoint === 1; + applySafeAreaOverrides(el, { + top: needsTopSafeArea ? 'inherit' : '0px', + bottom: 'inherit', + left: '0px', + right: '0px', + }); + return; + } + + // Card modals have fixed safe-area requirements set by initial prediction. + if (context.isCardModal) return; + + // wrapperEl is required for position-based detection below if (!wrapperEl) return; - // Always use position-based detection to correctly handle both - // fullscreen modals and centered dialogs with custom dimensions - const config = getPositionBasedSafeAreaConfig(wrapperEl); - applySafeAreaOverrides(el, config); + // Regular modals: use position-based detection to correctly handle both + // fullscreen modals and centered dialogs with custom dimensions. + const safeAreaConfig = getPositionBasedSafeAreaConfig(wrapperEl); + applySafeAreaOverrides(el, safeAreaConfig); } /** @@ -1407,12 +1426,31 @@ export class Modal implements ComponentInterface, OverlayInterface { const context = this.getSafeAreaContext(); if (context.isSheetModal || context.isCardModal) return; - // Check if footer exists - const footer = el.querySelector('ion-footer'); - if (footer) return; + // Check for standard Ionic layout children (ion-content, ion-footer), + // searching one level deep for wrapped components (e.g., + // ...). + let hasContent = false; + let hasFooter = false; + for (const child of Array.from(el.children)) { + if (child.tagName === 'ION-CONTENT') hasContent = true; + if (child.tagName === 'ION-FOOTER') hasFooter = true; + for (const grandchild of Array.from(child.children)) { + if (grandchild.tagName === 'ION-CONTENT') hasContent = true; + if (grandchild.tagName === 'ION-FOOTER') hasFooter = true; + } + } - // Add padding to wrapper to prevent content overlap - wrapperEl.style.setProperty('box-sizing', 'border-box'); + // Only apply wrapper padding for standard Ionic layouts (has ion-content + // but no ion-footer). Custom modals with raw HTML are fully + // developer-controlled and should not be modified. + if (!hasContent || hasFooter) return; + + // Reduce wrapper height by safe-area and add equivalent padding so the + // total visual size stays the same but the flex content area shrinks. + // Using height + padding instead of box-sizing: border-box avoids + // breaking custom modals that set --border-width (border-box would + // include the border inside the height, changing the layout). + wrapperEl.style.setProperty('height', 'calc(var(--height) - var(--ion-safe-area-bottom, 0px))'); wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)'); } @@ -1423,7 +1461,7 @@ export class Modal implements ComponentInterface, OverlayInterface { clearSafeAreaOverrides(this.el); if (this.wrapperEl) { - this.wrapperEl.style.removeProperty('box-sizing'); + this.wrapperEl.style.removeProperty('height'); this.wrapperEl.style.removeProperty('padding-bottom'); } } diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts index edb7e948c3f..0b40f4fda79 100644 --- a/core/src/components/modal/safe-area-utils.ts +++ b/core/src/components/modal/safe-area-utils.ts @@ -17,20 +17,32 @@ export interface SafeAreaConfig { export interface ModalSafeAreaContext { isSheetModal: boolean; isCardModal: boolean; - mode: 'ios' | 'md'; presentingElement?: HTMLElement; breakpoints?: number[]; currentBreakpoint?: number; } -const TABLET_WIDTH = 768; +/** + * These thresholds match the SCSS media query breakpoints in modal.vars.scss + * that trigger the centered dialog layout (non-fullscreen modal). + * + * SCSS defines two height breakpoints: $modal-inset-min-height-small (600px) + * and $modal-inset-min-height-large (768px). We use the smaller one because + * that's the threshold where the modal transitions from fullscreen to centered + * dialog — the larger breakpoint only increases the dialog's height. + */ +const MODAL_INSET_MIN_WIDTH = 768; +const MODAL_INSET_MIN_HEIGHT = 600; const EDGE_THRESHOLD = 5; /** - * Determines if the current viewport is tablet-sized (>= 768px width). + * Determines if the current viewport meets the CSS media query conditions + * that cause regular modals to render as centered dialogs instead of fullscreen. + * Matches: @media (min-width: 768px) and (min-height: 600px) */ -export const isTabletViewport = (): boolean => { - return win ? win.innerWidth >= TABLET_WIDTH : false; +const isCenteredDialogViewport = (): boolean => { + if (!win) return false; + return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`).matches; }; /** @@ -41,20 +53,21 @@ export const isTabletViewport = (): boolean => { * @returns SafeAreaConfig with initial safe-area values */ export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAreaConfig => { - const { isSheetModal, isCardModal, mode } = context; + const { isSheetModal, isCardModal } = context; - // Sheet modals always use bottom safe-area only + // Sheet modals use bottom safe-area, and top safe-area only when fully expanded if (isSheetModal) { return { - top: '0px', + top: context.currentBreakpoint === 1 ? 'inherit' : '0px', bottom: 'inherit', left: '0px', right: '0px', }; } - // Card modals (iOS only) need safe-area for height calculation - if (isCardModal && mode === 'ios') { + // Card modals need safe-area for height calculation. + // Note: isCardModal is already gated on mode === 'ios' by the caller. + if (isCardModal) { return { top: 'inherit', bottom: 'inherit', @@ -63,7 +76,19 @@ export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAre }; } - // Fullscreen and centered dialogs - inherit all, let position detection decide + // On viewports that meet the centered dialog media query breakpoints, + // regular modals render as centered dialogs (not fullscreen), so they + // don't touch any screen edges and don't need safe-area insets. + if (isCenteredDialogViewport()) { + return { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', + }; + } + + // Fullscreen modals on phone - inherit all safe areas return { top: 'inherit', bottom: 'inherit', @@ -76,25 +101,16 @@ export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAre * Returns safe-area configuration based on actual modal position. * Detects which edges the modal overlaps with and only applies safe-area to those edges. * + * Note: On Android edge-to-edge (API 36+), getBoundingClientRect() may report + * inconsistent values. Sheet and card modals avoid this by using configuration-based + * prediction instead. Regular modals use coordinate detection which works reliably + * on web and iOS; Android edge-to-edge may need a configuration-based fallback + * once a reliable detection mechanism is available. + * * @param wrapperEl - The modal wrapper element to measure - * @param skipCoordinateDetection - If true, skips coordinate detection and returns inherit for all * @returns SafeAreaConfig based on position */ -export const getPositionBasedSafeAreaConfig = ( - wrapperEl: HTMLElement, - skipCoordinateDetection = false -): SafeAreaConfig => { - // Skip coordinate detection for Android edge-to-edge compatibility - // or when explicitly requested - if (skipCoordinateDetection) { - return { - top: 'inherit', - bottom: 'inherit', - left: 'inherit', - right: 'inherit', - }; - } - +export const getPositionBasedSafeAreaConfig = (wrapperEl: HTMLElement): SafeAreaConfig => { const rect = wrapperEl.getBoundingClientRect(); const vh = win?.innerHeight ?? 0; const vw = win?.innerWidth ?? 0; diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts index 5917e2b5623..c4a61e0e755 100644 --- a/core/src/components/modal/test/safe-area/modal.e2e.ts +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -7,6 +7,8 @@ import { configs, test, Viewports } from '@utils/test/playwright'; * * FW-6830: Dynamic Modal Safe-Area Handling */ +// Safe-area handling is position-based and not affected by text direction. +// Testing only LTR to avoid redundant test runs. configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('modal: safe-area handling'), () => { test.beforeEach(async ({ page }) => { @@ -16,7 +18,7 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config test('fullscreen modal should inherit all safe-area values on phone', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); @@ -27,21 +29,21 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config const modal = page.locator('ion-modal'); // On phone viewport, fullscreen modal should inherit safe-area values - const safeAreaTop = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); }); - const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); }); - expect(safeAreaTop.trim()).toBe('inherit'); - expect(safeAreaBottom.trim()).toBe('inherit'); + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); }); - test('fullscreen modal should inherit all safe-area values on tablet', async ({ page }, testInfo) => { + test('regular modal should have safe-area zeroed on tablet (centered dialog)', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); await page.setViewportSize(Viewports.tablet.portrait); @@ -53,23 +55,24 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config const modal = page.locator('ion-modal'); - // On tablet viewport, fullscreen modal should still inherit safe-area values - // This is the key fix for FW-6830 - previously these were zeroed out - const safeAreaTop = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + // On tablet viewport, the CSS media query renders regular modals as + // centered dialogs (600x500). Since they don't touch screen edges, + // safe-area values should be zeroed out. + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); }); - const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); }); - expect(safeAreaTop.trim()).toBe('inherit'); - expect(safeAreaBottom.trim()).toBe('inherit'); + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('0px'); }); test('sheet modal should only use bottom safe-area', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); @@ -81,21 +84,83 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config // Sheet modals should have top safe-area zeroed (doesn't touch top edge) // but bottom safe-area inherited (touches bottom edge) - const safeAreaTop = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('inherit'); + }); + + test('fullscreen modal without footer should have wrapper padding-bottom', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal-no-footer'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // When no footer is present, the wrapper should have reduced height + // and padding-bottom to prevent content from overlapping the system + // navigation bar, without changing box-sizing (which would break + // custom modals with --border-width). + const wrapper = modal.locator('.modal-wrapper'); + const paddingBottom = await wrapper.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('padding-bottom'); + }); + const height = await wrapper.evaluate((el: HTMLElement) => { + return el.style.getPropertyValue('height'); + }); + + expect(paddingBottom).toBe('var(--ion-safe-area-bottom, 0px)'); + expect(height).toBe('calc(var(--height) - var(--ion-safe-area-bottom, 0px))'); + }); + + test('sheet modal at breakpoint 1 should inherit top safe-area', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Initially at breakpoint 0.5 — top safe-area should be zeroed + let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); }); - const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + expect(safeAreaTop).toBe('0px'); + + // Move to breakpoint 1 (fully expanded) via the public method + const ionBreakpointDidChange = await page.spyOnEvent('ionBreakpointDidChange'); + await modal.evaluate((el: HTMLIonModalElement) => { + el.setCurrentBreakpoint(1); }); + await ionBreakpointDidChange.next(); - expect(safeAreaTop.trim()).toBe('0px'); - expect(safeAreaBottom.trim()).toBe('inherit'); + // At breakpoint 1, top safe-area should be inherited + safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + expect(safeAreaTop).toBe('inherit'); }); test('centered dialog should have all safe-area values zeroed on tablet', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); await page.setViewportSize(Viewports.tablet.portrait); @@ -108,46 +173,54 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config const modal = page.locator('ion-modal'); // Centered dialogs don't touch any edge, so all safe-areas should be zeroed - const safeAreaTop = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); }); - const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); }); - expect(safeAreaTop.trim()).toBe('0px'); - expect(safeAreaBottom.trim()).toBe('0px'); + expect(safeAreaTop).toBe('0px'); + expect(safeAreaBottom).toBe('0px'); }); test('safe-area overrides should be cleared on dismiss', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); - const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); - const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss'); - - await page.click('#fullscreen-modal'); - await ionModalDidPresent.next(); + // Present modal programmatically so we control the lifecycle + // (the HTML page's presenters call modal.remove() after dismiss, + // which races with our post-dismiss evaluation) + await page.evaluate(async () => { + const modal = document.createElement('ion-modal'); + modal.component = document.createElement('div'); + document.body.appendChild(modal); + await modal.present(); + }); const modal = page.locator('ion-modal'); // Verify overrides are set - let safeAreaTop = await modal.evaluate((el: HTMLElement) => { + let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { return el.style.getPropertyValue('--ion-safe-area-top'); }); expect(safeAreaTop).not.toBe(''); - // Dismiss the modal - await modal.evaluate((el: HTMLIonModalElement) => el.dismiss()); - await ionModalDidDismiss.next(); + // Dismiss the modal but don't remove the element + await modal.evaluate(async (el: HTMLIonModalElement) => { + await el.dismiss(); + }); - // Verify overrides are cleared - safeAreaTop = await modal.evaluate((el: HTMLElement) => { + // Verify overrides are cleared after dismiss + safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { return el.style.getPropertyValue('--ion-safe-area-top'); }); expect(safeAreaTop).toBe(''); + + // Clean up + await modal.evaluate((el: HTMLIonModalElement) => el.remove()); }); }); }); @@ -161,7 +234,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => test('card modal should inherit top and bottom safe-area', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', - description: 'https://github.com/ionic-team/ionic-framework/issues/FW-6830', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', }); const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); @@ -172,23 +245,59 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const modal = page.locator('ion-modal'); // Card modals need top safe-area for height calculation - const safeAreaTop = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-top'); + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + const safeAreaLeft = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-left'); + }); + const safeAreaRight = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-right'); + }); + + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); + expect(safeAreaLeft).toBe('0px'); + expect(safeAreaRight).toBe('0px'); + }); + + test('card modal on tablet should still inherit safe-area values', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + await page.setViewportSize(Viewports.tablet.portrait); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#card-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // Card modals use safe-area values in CSS calculations regardless of viewport, + // so they should inherit even on tablet where regular modals become centered dialogs. + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); }); - const safeAreaBottom = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-bottom'); + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); }); - const safeAreaLeft = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-left'); + const safeAreaLeft = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-left'); }); - const safeAreaRight = await modal.evaluate((el: HTMLElement) => { - return getComputedStyle(el).getPropertyValue('--ion-safe-area-right'); + const safeAreaRight = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-right'); }); - expect(safeAreaTop.trim()).toBe('inherit'); - expect(safeAreaBottom.trim()).toBe('inherit'); - expect(safeAreaLeft.trim()).toBe('0px'); - expect(safeAreaRight.trim()).toBe('0px'); + expect(safeAreaTop).toBe('inherit'); + expect(safeAreaBottom).toBe('inherit'); + expect(safeAreaLeft).toBe('0px'); + expect(safeAreaRight).toBe('0px'); }); }); }); diff --git a/core/src/components/popover/animations/ios.enter.ts b/core/src/components/popover/animations/ios.enter.ts index aa4e0568143..02a078a2f71 100644 --- a/core/src/components/popover/animations/ios.enter.ts +++ b/core/src/components/popover/animations/ios.enter.ts @@ -7,11 +7,22 @@ import { getArrowDimensions, getPopoverDimensions, getPopoverPosition, + getSafeAreaInsets, shouldShowArrow, } from '../utils'; const POPOVER_IOS_BODY_PADDING = 5; +/** + * Minimum edge margin for iOS popovers ensures visual spacing from screen + * edges on devices without safe areas (e.g., older iPhones without notches). + * Previously this was a hardcoded `safeAreaMargin = 25` that served dual + * purpose: safe-area avoidance AND visual spacing. Now that actual safe-area + * insets are read dynamically, this floor preserves the visual spacing when + * safe-area values are 0. + */ +const POPOVER_IOS_MIN_EDGE_MARGIN = 25; + /** * iOS Popover Enter Animation */ @@ -53,7 +64,16 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => ); const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING; - const margin = size === 'cover' ? 0 : 25; + const rawSafeArea = getSafeAreaInsets(doc as Document); + const safeArea = + size === 'cover' + ? { top: 0, bottom: 0, left: 0, right: 0 } + : { + top: Math.max(rawSafeArea.top, POPOVER_IOS_MIN_EDGE_MARGIN), + bottom: Math.max(rawSafeArea.bottom, POPOVER_IOS_MIN_EDGE_MARGIN), + left: Math.max(rawSafeArea.left, POPOVER_IOS_MIN_EDGE_MARGIN), + right: Math.max(rawSafeArea.right, POPOVER_IOS_MIN_EDGE_MARGIN), + }; const { originX, @@ -63,9 +83,12 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bottom, checkSafeAreaLeft, checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, arrowTop, arrowLeft, addPopoverBottomClass, + hideArrow, } = calculateWindowAdjustment( side, results.top, @@ -75,7 +98,7 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bodyHeight, contentWidth, contentHeight, - margin, + safeArea, results.originX, results.originY, results.referenceCoordinates, @@ -119,11 +142,15 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => } if (bottom !== undefined) { - contentEl.style.setProperty('bottom', `${bottom}px`); + let bottomValue = `${bottom}px`; + if (checkSafeAreaBottom) { + bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`; + } + contentEl.style.setProperty('bottom', `calc(${bottomValue})`); } - const safeAreaLeft = ' + var(--ion-safe-area-left, 0)'; - const safeAreaRight = ' - var(--ion-safe-area-right, 0)'; + const safeAreaLeft = ' + var(--ion-safe-area-left, 0px)'; + const safeAreaRight = ' - var(--ion-safe-area-right, 0px)'; let leftValue = `${left}px`; @@ -134,13 +161,18 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => leftValue = `${left}px${safeAreaRight}`; } - contentEl.style.setProperty('top', `calc(${top}px + var(--offset-y, 0))`); + let topValue = `${top}px`; + if (checkSafeAreaTop) { + topValue = `${top}px + var(--ion-safe-area-top, 0px)`; + } + + contentEl.style.setProperty('top', `calc(${topValue} + var(--offset-y, 0))`); contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`); contentEl.style.setProperty('transform-origin', `${originY} ${originX}`); if (arrowEl !== null) { const didAdjustBounds = results.top !== top || results.left !== left; - const showArrow = shouldShowArrow(side, didAdjustBounds, ev, trigger); + const showArrow = !hideArrow && shouldShowArrow(side, didAdjustBounds, ev, trigger); if (showArrow) { arrowEl.style.setProperty('top', `calc(${arrowTop}px + var(--offset-y, 0))`); diff --git a/core/src/components/popover/animations/md.enter.ts b/core/src/components/popover/animations/md.enter.ts index e25f745cec4..574228ad31c 100644 --- a/core/src/components/popover/animations/md.enter.ts +++ b/core/src/components/popover/animations/md.enter.ts @@ -2,7 +2,7 @@ import { createAnimation } from '@utils/animation/animation'; import { getElementRoot } from '@utils/helpers'; import type { Animation } from '../../../interface'; -import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition } from '../utils'; +import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition, getSafeAreaInsets } from '../utils'; const POPOVER_MD_BODY_PADDING = 12; @@ -46,8 +46,23 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => ); const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING; - - const { originX, originY, top, left, bottom } = calculateWindowAdjustment( + // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas). + // This is needed for Android edge-to-edge (API 36+) where system bars overlap content. + const safeArea = + size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc as Document); + + const { + originX, + originY, + top, + left, + bottom, + checkSafeAreaLeft, + checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, + addPopoverBottomClass, + } = calculateWindowAdjustment( side, results.top, results.left, @@ -56,12 +71,28 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => bodyHeight, contentWidth, contentHeight, - 0, + safeArea, results.originX, results.originY, results.referenceCoordinates ); + const safeAreaLeftCalc = ' + var(--ion-safe-area-left, 0px)'; + const safeAreaRightCalc = ' - var(--ion-safe-area-right, 0px)'; + + let leftValue = `${left}px`; + if (checkSafeAreaLeft) { + leftValue = `${left}px${safeAreaLeftCalc}`; + } + if (checkSafeAreaRight) { + leftValue = `${left}px${safeAreaRightCalc}`; + } + + let topValue = `${top}px`; + if (checkSafeAreaTop) { + topValue = `${top}px + var(--ion-safe-area-top, 0px)`; + } + const baseAnimation = createAnimation(); const backdropAnimation = createAnimation(); const wrapperAnimation = createAnimation(); @@ -81,13 +112,17 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => contentAnimation .addElement(contentEl) .beforeStyles({ - top: `calc(${top}px + var(--offset-y, 0px))`, - left: `calc(${left}px + var(--offset-x, 0px))`, + top: `calc(${topValue} + var(--offset-y, 0px))`, + left: `calc(${leftValue} + var(--offset-x, 0px))`, 'transform-origin': `${originY} ${originX}`, }) .beforeAddWrite(() => { if (bottom !== undefined) { - contentEl.style.setProperty('bottom', `${bottom}px`); + let bottomValue = `${bottom}px`; + if (checkSafeAreaBottom) { + bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`; + } + contentEl.style.setProperty('bottom', `calc(${bottomValue})`); } }) .fromTo('transform', 'scale(0.8)', 'scale(1)'); @@ -101,7 +136,7 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => if (size === 'cover') { baseEl.style.setProperty('--width', `${contentWidth}px`); } - if (originY === 'bottom') { + if (addPopoverBottomClass) { baseEl.classList.add('popover-bottom'); } }) diff --git a/core/src/components/popover/test/safe-area/index.html b/core/src/components/popover/test/safe-area/index.html new file mode 100644 index 00000000000..50cf6fe3bbf --- /dev/null +++ b/core/src/components/popover/test/safe-area/index.html @@ -0,0 +1,158 @@ + + + + + Popover - Safe Area + + + + + + + + + + + +
+
+
+
+ + + +

Popover safe area test. Triggers are positioned near screen edges.

+
+
+ + + + + + + + + diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts b/core/src/components/popover/test/safe-area/popover.e2e.ts new file mode 100644 index 00000000000..4d422e54873 --- /dev/null +++ b/core/src/components/popover/test/safe-area/popover.e2e.ts @@ -0,0 +1,85 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * Safe-area behavior applies to both iOS and MD modes. + * Left/right safe areas are tested in landscape viewport. + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('popover: safe-area'), () => { + test.beforeEach(async ({ page }) => { + await page.goto('/src/components/popover/test/safe-area', config); + }); + + test('should not overlap the bottom safe area when trigger is near the bottom edge', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + /** + * Use a landscape-style viewport with bottom safe area. + * The bottom trigger is positioned at the very bottom of the screen. + */ + await page.setViewportSize({ + width: 414, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#bottom-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-bottom')); + }); + + test('should not overlap the right safe area when trigger is near the right edge', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + /** + * Use a landscape viewport with left/right safe areas + * to simulate a device rotated to landscape with notch on left. + */ + await page.setViewportSize({ + width: 600, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#right-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-right')); + }); + + test('should handle a large popover near the bottom-right corner without overlapping safe areas', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/28411', + }); + + await page.setViewportSize({ + width: 600, + height: 400, + }); + + const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent'); + + await page.locator('#large-popover-trigger').click(); + await ionPopoverDidPresent.next(); + + await expect(page).toHaveScreenshot(screenshot('popover-safe-area-large')); + }); + }); +}); diff --git a/core/src/components/popover/utils.ts b/core/src/components/popover/utils.ts index 794ebb20884..1f6fe7afb73 100644 --- a/core/src/components/popover/utils.ts +++ b/core/src/components/popover/utils.ts @@ -32,11 +32,79 @@ export interface PopoverStyles { originY: string; checkSafeAreaLeft: boolean; checkSafeAreaRight: boolean; + checkSafeAreaTop: boolean; + checkSafeAreaBottom: boolean; arrowTop: number; arrowLeft: number; addPopoverBottomClass: boolean; + hideArrow: boolean; } +export interface SafeAreaInsets { + top: number; + bottom: number; + left: number; + right: number; +} + +/** + * Shared per-frame cache for safe-area insets. Avoids creating a temporary + * DOM element and forcing a synchronous reflow on every call within the same + * frame (e.g., multiple popovers presenting simultaneously). Invalidated + * after the next animation frame so values stay fresh across orientation + * changes and viewport resizes. + */ +let cachedInsets: SafeAreaInsets | null = null; +let cacheInvalidationScheduled = false; + +/** + * Resolves the current --ion-safe-area-* CSS custom property values + * to actual pixel numbers. A temporary element is needed because + * getComputedStyle on :root returns the declared value of custom + * properties (e.g. "env(safe-area-inset-top)") rather than a + * resolved number. By assigning them to standard padding properties, + * the browser resolves the value. + * + * Results are cached for the current frame to avoid repeated reflows. + */ +export const getSafeAreaInsets = (doc: Document): SafeAreaInsets => { + if (cachedInsets !== null) { + return cachedInsets; + } + + if (!doc.body) { + return { top: 0, bottom: 0, left: 0, right: 0 }; + } + + const el = doc.createElement('div'); + el.style.cssText = + 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + + 'padding-top:var(--ion-safe-area-top,0px);' + + 'padding-bottom:var(--ion-safe-area-bottom,0px);' + + 'padding-left:var(--ion-safe-area-left,0px);' + + 'padding-right:var(--ion-safe-area-right,0px);'; + doc.body.appendChild(el); + const style = getComputedStyle(el); + const insets = { + top: parseFloat(style.paddingTop) || 0, + bottom: parseFloat(style.paddingBottom) || 0, + left: parseFloat(style.paddingLeft) || 0, + right: parseFloat(style.paddingRight) || 0, + }; + el.remove(); + + cachedInsets = insets; + if (!cacheInvalidationScheduled) { + cacheInvalidationScheduled = true; + raf(() => { + cachedInsets = null; + cacheInvalidationScheduled = false; + }); + } + + return insets; +}; + /** * Returns the dimensions of the popover * arrow on `ios` mode. If arrow is disabled @@ -804,6 +872,8 @@ const calculatePopoverCenterAlign = ( * Adjusts popover positioning coordinates * such that popover does not appear offscreen * or overlapping safe area bounds. + * + * @internal - This is not part of the public API. */ export const calculateWindowAdjustment = ( side: PositionSide, @@ -814,7 +884,7 @@ export const calculateWindowAdjustment = ( bodyHeight: number, contentWidth: number, contentHeight: number, - safeAreaMargin: number, + safeArea: SafeAreaInsets, contentOriginX: string, contentOriginY: string, triggerCoordinates?: ReferenceCoordinates, @@ -831,17 +901,20 @@ export const calculateWindowAdjustment = ( let originY = contentOriginY; let checkSafeAreaLeft = false; let checkSafeAreaRight = false; + let checkSafeAreaTop = false; + let checkSafeAreaBottom = false; const triggerTop = triggerCoordinates ? triggerCoordinates.top + triggerCoordinates.height : bodyHeight / 2 - contentHeight / 2; const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0; let addPopoverBottomClass = false; + let hideArrow = false; /** * Adjust popover so it does not * go off the left of the screen. */ - if (left < bodyPadding + safeAreaMargin) { + if (left < bodyPadding + safeArea.left) { left = bodyPadding; checkSafeAreaLeft = true; originX = 'left'; @@ -849,7 +922,7 @@ export const calculateWindowAdjustment = ( * Adjust popover so it does not * go off the right of the screen. */ - } else if (contentWidth + bodyPadding + left + safeAreaMargin > bodyWidth) { + } else if (contentWidth + bodyPadding + left + safeArea.right > bodyWidth) { checkSafeAreaRight = true; left = bodyWidth - contentWidth - bodyPadding; originX = 'right'; @@ -857,34 +930,54 @@ export const calculateWindowAdjustment = ( /** * Adjust popover so it does not - * go off the top of the screen. + * go off the bottom of the screen + * or overlap the bottom safe area. * If popover is on the left or the right of * the trigger, then we should not adjust top * margins. */ - if (triggerTop + triggerHeight + contentHeight > bodyHeight && (side === 'top' || side === 'bottom')) { - if (triggerTop - contentHeight > 0) { + if ( + triggerTop + triggerHeight + contentHeight > bodyHeight - safeArea.bottom && + (side === 'top' || side === 'bottom') + ) { + /** + * Calculate where the popover top would be if flipped + * above the trigger. Check whether that position clears + * the top safe area with room for bodyPadding. + */ + const idealFlipTop = triggerTop - contentHeight - triggerHeight - (arrowHeight - 1); + + if (idealFlipTop >= safeArea.top + bodyPadding) { /** - * While we strive to align the popover with the trigger - * on smaller screens this is not always possible. As a result, - * we adjust the popover up so that it does not hang - * off the bottom of the screen. However, we do not want to move - * the popover up so much that it goes off the top of the screen. - * - * We chose 12 here so that the popover position looks a bit nicer as - * it is not right up against the edge of the screen. + * Popover fits above the trigger without overlapping + * the top safe area. Use the ideal position directly — + * no safe-area CSS vars needed since it clears both edges. */ - top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1)); + top = idealFlipTop; arrowTop = top + contentHeight; originY = 'bottom'; addPopoverBottomClass = true; - + } else { /** - * If not enough room for popover to appear - * above trigger, then cut it off. + * Can't flip above the trigger. Constrain the bottom + * edge while keeping the top near the trigger. This + * creates a scrollable area anchored to the trigger. */ - } else { bottom = bodyPadding; + checkSafeAreaBottom = true; + + /** + * When the trigger is near the bottom of the screen, + * the calculated top may be at or past the bottom + * constraint, leaving zero visible height. In that + * case, pull top up to the top safe area so the + * popover fills the available space between safe areas. + */ + const bottomEdge = bodyHeight - safeArea.bottom - bodyPadding; + if (top >= bottomEdge) { + top = safeArea.top + bodyPadding; + checkSafeAreaTop = true; + } } } @@ -896,9 +989,12 @@ export const calculateWindowAdjustment = ( originY, checkSafeAreaLeft, checkSafeAreaRight, + checkSafeAreaTop, + checkSafeAreaBottom, arrowTop, arrowLeft, addPopoverBottomClass, + hideArrow, }; }; From 2cd35b82623c736890124ad49b5512b8ef17dfb7 Mon Sep 17 00:00:00 2001 From: ionitron Date: Mon, 9 Feb 2026 20:30:24 +0000 Subject: [PATCH 3/7] chore(): add updated snapshots --- ...ton-active-ios-ltr-Mobile-Safari-linux.png | Bin 1444 -> 1546 bytes ...ime-picker-ios-ltr-Mobile-Safari-linux.png | Bin 6941 -> 6952 bytes ...rea-bottom-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14448 bytes ...ea-bottom-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 23407 bytes ...rea-bottom-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 19440 bytes ...area-bottom-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14108 bytes ...rea-bottom-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 21370 bytes ...area-bottom-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 17780 bytes ...area-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 16419 bytes ...rea-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 28264 bytes ...area-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 21938 bytes ...-area-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 15343 bytes ...area-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 25389 bytes ...-area-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 19563 bytes ...area-right-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13644 bytes ...rea-right-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24694 bytes ...area-right-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 18768 bytes ...-area-right-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13637 bytes ...area-right-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 22525 bytes ...-area-right-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 17537 bytes 20 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/datetime/test/custom/datetime.e2e.ts-snapshots/datetime-custom-time-button-active-ios-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/custom/datetime.e2e.ts-snapshots/datetime-custom-time-button-active-ios-ltr-Mobile-Safari-linux.png index 7c7e296086a3849d98f379209a71b9ed20cec521..f4bc6529a2b693292bdd7485911cf194ce0b3762 100644 GIT binary patch delta 1499 zcmV<11tj{U3yKVoL4UMKL_t(&f$f@GOk716$A2?tFYGR`6xyZW+Om`au~MupSd^%E ziLJN9+Qi2AU^LNZwfdmZ2OspMUgDD)jqz?$ebB^)M6EP!qrF%wR4KIu3n;fz78W?{ z?m1_CSY244>@IB5OZNA)nVJ8bnQyo7wTY?F(#eXRfx(zvHo83j0*;vFJ&HxeCuv`YpWyGsv7BmHN+>S8i#Tw>ijnr+Z zh{Vc`f~JrFBBEstx}nEk3D0$^F1MkdqS8| zlV$!qiq{k@*l&0|N^oEzq0E)%Ah*zkw23+GygoNMd5#PAckb*Mnv^WNIydQ@X0s@x zPL70We)A~$c!ZLwLIyj7L?#XH-C0lJs=TG?6dc;!!GE!DPE)bD6iX?-f9E*snpSh` zV>JkE{_SeGH^i4O9l)7uM_iwyuob%PT>oTYrzO1vvQ zDeJmh2Y+e%?k^tRb!%L=@xBVaczz#&>x(JdSiIoa9)0T$oVhX2pEy6oFJGT#&+A9n z@#@V9o_V~vlk4wWGw&)nbEt1IW{H!2=vQ#Adz5SMSdGmQlWPu1WkV^wZ9_!$Sh_aS zH_rZ#ey68xC@r03C>kGG7dI%t^0ItND+&qrCx0&QWOxd5XxLFr=-ecIr$!R$e5<^4 z9UGXVF(VeO&0YAbi_&`5Ow#vM0oz}0oKrkDG>NCciDr)_623qIkL+riHcpDV`8-h{ z4Kvt1O8xfAw1;bV*~nkvK@UzPl-Fzt(AwNZRimGo$MoLc&tY?Dti7p}-am%ZejY3# zP=C!NG7+WiyR&S1pmI7W2o~I5FR1&E@$))^ouh<95!w&@P1ED+@z<jQnYfGHT0vZ72)&ymn+x-S(FoDXlIfrzY delta 1396 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 bfhTBiJ!;K?3*pK~3z~wAs&u*Jmv8?GW=Jq& literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fa56c8b3d614a6c6feb7d0912ba24766aec95273 GIT binary patch literal 23407 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

-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 u61f35`s<9UVw$|sgZ~Aop=@~o literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..574cc7307a17fbb65f6cff9f3c2fbb29d067fc94 GIT binary patch literal 14108 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-bottom-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..26d2d861dc4226a50924ffc1f2993cdcbf09c384 GIT binary patch literal 17780 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 T7=^z%1-X7zO*v1|DDb}kHDloy literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ee77f057b4edca01dbd58439ecb8b0df40e694 GIT binary patch literal 16419 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f2721a2c6e87f4359ceee24f1d1e4ab78e568d01 GIT binary patch literal 21938 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 B*h2sS literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..900782be5d907d3bd445afdc99385dc0e4942475 GIT binary patch literal 25389 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a04545790e40191454c2861e158186f1a4b8d057 GIT binary patch literal 13644 zcmeHuXH-*dv?gLhq^figQ32`FI|v9!SE|$qNDC08ccMsweHNCxj*iY`SY%m_s7XT``!E5&$G`y;cv85$VnMViHL~ERbRi- zAtEAvM?`e(8woLC2WJ>QN<>6Or20x;&pUl@@vf*y4lKmKz6az4<3?{c0 z67WiC+iJGQ|K7XkK|fg(T_`Jdy1yt0oDUXt;!z*)WWJ~$Kx^h{M&^5l8CVazMBl9w z-&lf?DibreUzZeuo=XW`C;j~~Lw*hAyJ3|qlqHenc9HIrHM*Jp*`i(yK}9#WU1fEX z=%uV8B?~Rx+>2{OpSnpDh(1mJcVB$(2W!^d=B?ATh2dJmGA`;j z+KnYn&9$OFy~o_r;18kBN&I<{=|vk8BeSgK9v(B#5lFjxN7itkBh>a}7XXX#IoX)` z^(bT{RR;wdjC0ORjLWCKo(U;@hS#4sIZJ52VG+x9N89`;(>`RgubDaaO1j~k4s5#F z!k-(V8fa%${gS12F>Ifb){lNGG`q~inMTI#IBlHL3m%I_U^@2OM#vaNHsln_TM+oA z?2>7))B-9Fg06|{I5^*mAHRND#2@~(x!X@>&i&(NjLd0{VW^0HK&@3Dw6qH^c5+;N zNG-pj@%pvf;y~l-Qaw$ZVJiwySEP_vLFSP)gbt9Zr)4IY(h|RrSh%9GhITrccs;=H ze&T(89`XBo*GT(r-drVj(2$Zzq#Bd5T^+OkH>q9pKG#C~emoeSNtO5Xi3l&3j z`^}~L{pSw)1vSlU6-)>&zIj`ZraeHQk=#ne%%7d;7@!VFuVXsEI06SorJRVM_U8@kKj? zng9E4;lXmovyWrn}))$*19D6EUvi=8)u?|l=GQ`nwkEg}_$b6icWj)rME1a<1 zbMJXCwz`99puIv!)i%XyPPAZlxr&*z|z{*wDr?kH@-s0xT0p`X#hHs zCAFTxTuh%uPUMNpd2J1O_n`eO+I^#X8ciAgl}ZJ38GE%J8&p{MOt~~2E|uAiLcr&_ zOPOLHab4^xcg5`75h`*J;Ts$g!#CGdpW{1h5WI3=rSUDVcc&l90bHb;*>XFi%8G0r%Mb}DLUX-Kwx#nG}(%s?W)mBszJaHqndr`SO` zM&~@J#T?e*$8+>~6WJE1Q7LG2wP~Aagdb=W=*SRL_E|kTA2;ixldJ9xkb=qNpWnuv zpGwuLcZf`7$Tr1Z74TvEFZ*n`746jyc6(GF^$%x=YjwOyljcU(MJr{&3-W`xJthMT z^p+#c63R}~+2>ue{0B2Hw|WauE5ZZhai_5|$EL{MaEGL4jf!({cRjahh|=9vNygsV zw1y43$fk4Kq-S;uOc6`JKL|IKR>ZIR`rX-N z>RDZ+kmiJ88ER;9o3z%Xu%_3rE|Ye~Q(tNxItbZ{+U_4&py4jvw-*$7tl`a_atq(i#gP@Z!|LZYw_KS*f|?^(->LgUT2_gX~1UQm2;E488e0`0lT{^BJbV4b)e0 z2d>EBCxOfS#*Cjt*P%+&(Ts?U@kgRxkWM8XF@`Eq7Ly6J8x36K0q6YVg>BZK==E8rS>m?Z6WN25%{eP;)ayp<4$Bt_8m?B2 zW~r+C6rS#w`PLrorL44cRfK1C*deb@oy*^y^hUfj)Kb;DLM&iWGB}M<5e;Ig?tLEa&BU9$%_yKrIgk$S>38Z|S)Z{-jz9KzwRh?{y*0DtM*gyZL5xqb zv7M=8VBLMKO$YOEIKbZFOT{Qc-l}P8mJ9h*d5ni67f zQSb5T^=M=yKAxfj8_2wUj{6nNrfXvCQmNL|dR0N=#TE;yqaYBb0h$kaTR|5qT_UnODaE#z>Wed(6Nr99+6@ zB(n%L_!@&zR%_g1$-KTe(|pZ4P0>ruZ;DKBaqh2YC>l-o>$}@@%rbAv8u&GD)sJWi zz#=sv6rP4K8{J@t*eLpTah+FdUy?HCMGg*#u~{s=I9{G8KbM+sYml*f z`9reb_$^c$y(cH?G*^&mm`Z`fUZyRtawtc+79sk5QBeLE&6fItz4$hdr+wNn2E9+M zEIG_QYa1Kam9zbVI~vQ_#rb6C+|s*>M%3;(L~5|VWsOVH0Lj{9Hoa1{`sk=L*uby{ zzu-atLHaul7&VNV=8d!4#p@)1QJaO*KATTBB2t@SYy~23-Lj0Df16mF^7^D6*_Pwr$x_LdNt-Wr9a!+n${&r~GDxm1cXxDsyp$~;xUd5O3fGel{&9fOR z%hKw`-j&?y=7d=U+yI#b;)k+`IZR;z;XD2)Km77U+qu;2U$-?+Us+EK`UT5IN5F?O zz5S;{qvz3&E}PMR5X`r_S^$7RTp1_zuygSes@cK>E9*SVt>m#hVdG<|d0);e(BBFM z#BIa{B<%#SnPmAP`NMK;7t<+wAa#7Pm{W%%gE&pJPKW*>5#Jq&GIN?kgilDF6-Rvr z853PmlLW{EK|L?Nz(H(;{PbQNZow@+*yEOX?an9b$bjUAOr+ zKzwK@+AUTVyW*){sRr*FKIjV5ZrC|+|C^nMv)_o_%mL3XuW;Z09Mv2I9Ij>IO)Fiu z9R}9EZsi+cuJ(%JRebn$!@}5>QW=|V_pK^$S%Ng4@K~f4e$@NmWeFGP%1XP*-1n&N zHeLB!b`>-1Vj4>e2H`esw|rC+$ItDpIFw4Ww9`B+GaYfhIo08fksh`4Uh|Oi18y&7 z_T@AiPaLk@Hk5vDKG%AMAhw=TuV@8Ljms^hm6_5Gx9mcz(+#Jk&tgR^&k~o~c9DQ^ zx`5c;GxN{r1C(x^Oo<8&uB`=G>VH&66Bz;ZJL$+up<8V+*6j1k%Ts&xzIcUJ_B85u zz;S_y`cm7;4od;Au>eFE1FHrld3G=aUo4E*JKX`~BL&qOoEnl6Q?B?JtIQp8`h=&j>2Nam4lO-x;lK3)%5B^qN?aCv{Xt(s zE0Z&%4~d~?8n0=RW{i30864%*&>GrB6P7`Jzomn5(c~Ife}2`s*|7YuN{sL8(*uNz zZU6E~!&2a5`NhTYOyMs`$C9PA&sH7F9f7SI19c$|&R^X-3}3mo-Xc7=+{4GEx|J27wnRR?rV zTzjb%M;=W~^x}{zn24x^`u{Kg-v|G#;^4(=GA7TXfP6}F(tEh|$r4@Wb}cGmqI~85 z{UWMIM3nvUA);wpo8Qa}rZCVrl_(iwIPSr6S6A{cut3cbX+CtX=Y? zT?l-%GH(;3-{SVB!_h}^qfW@`{$%?GsCedZEMsH70f()x+E;t1GDK6ydgspfosr}% zT0yt%$XNXI>fx4j5hX|xlLxmR%RAN&!q^p zEw-mjhwf#0Y=%-&jJ7?UD*5=_DjrGPw=6T?a8OpJuYI|^&~%?Uj7fpLH*Vwb={6s=&x2cf#``WJP6*an#&ofO0x-X4m=?tD zj7lEo1b)G)@YA+=r}@38vDmzSm-ceov|@1iqlW2aU-AZ5!`Z`)@VlUe+J67OfgbQ> z9`ILCxf?(ZY&Y5RBV#wyJGUUqyT6+W)Ut1UloMzcg3d9_1kgkD%p3gld%I{X5Mq;w z^z{$Zt2z(QqLCLN=gJ@P* zZ>NJUphV?F#0#nM4m-XQY=GHgL>~xC-2?rYO}ArRN&zeGT6(0;a-^Hi{0NYHhQ&@GVSGmo0fgpDQ!nkAHEoz3F_kl*~iVc$3H{IwQ^J zVn+M)oHDl7_pOY}#zJ_Qn9TQ@?JpTpax?A7JGk2bPpou=aXE#{qbql?7)yc+|9Y5P z-y=jTu)Jz+yVlUr2sZ$7aQhB4jngv0jm#M$X3dP7=NoEQslfF#ceEnT?g;; zm(GNYf_zyu^=k#6u71`psJctn9ai_ie$(1|6lB`*exq)BX_fl!!$T5z)zTrNveAJp5y0=ib-Xc2_I!yE3g&$OZ64TE!Bqtip`|l4D7E z7O__&>tVKh!|8Gc53fFc2~>32+exv)Wd@n29@1;JBq!wPbREM*R69(CrHm&N97P;U zSUPw(n?1HlgargT<+iAae?DIBc$Cwk-MIOMmr1mvr9-}0;ogQVUz?N7hsQy0wy8Z$ z-&a6q+N=iAD~g`fW#JiZTSy<(035ksyKgW73(4+Xk#%0J2$5X>l=GH|Nb==>QUrcJ zJ~{y7O-vnw{QV1ZoDq^~;ioK$D2Ba&DNnJUD4yi&MYlN_+3`-QMJC-H`?qT$i|e zM}g=iz=Pn5>!SZ$XOXeUwhlfx(Lofp8j-yqSe}guC1;|&cW)er;dZ7VCB1k3jyws` zR@?WdDiMzuMSuzPug@N_enJvV8EBju%Q1bK=TM}bCF^sXzX+nc{z#rA+hG$dLAI6d z`YZpK{tQseL2}KVRajWBiSpSe^S69ClRyte#V_>5^eaST3_4T+MN!4v$Pgg?(p zaN*UV3d|9HRv;06E&TC~Kld>=msPIUOAx#wIThKr@_B@ONLh)Bcx&bp^Y6|chxejf z%J^&Uj@h_#N;2Z>HE;iOVt6E@Kon?I^CN1VHf+mFRK2NR&$^9BJxRsN%1TpnI7P^| zJ6n;8_>j)TN6Q!JYu+?0vs}qY?)ydHaQTDKdI5V(R-80P%@`Ne3xNNTlDcRN z;IEsBJ1saTZFlcppO>pmIVlNmc63;YT|E;Kzb0xw{;bZp+?`Yoe~FS$3R!r10W}ZtS5F$@#m#rf`F)h9hNMW1aYOe*T{XPThfl0ic6JVn3v! z-S_u5R?9b!Nv@q`l@HkQQ~;^S_1Bdx?l+$ZV<1zVLzA^4ERinLufj_gtk2V?Xy^qK zg5BR~`bbE0+ExBY2!4>XU>a~W&f{d^*{%uEH*s^TImJA9urVACY#r%Z|!aQVoUVlzrxB`YPLkH9C2vq<2eO z#i-%mOH#HcWR#4}fR-QDPV^R^Y5!JY8&QpNedk1xd54)^Ip*Q^aOe5CZ_O+ZUm#gD z@fIaTS`Sd__-F;9%mc!?=EJ8J*z`gdQvtdycusuA?ygVZliRlwEV@E7ql zWuBv%Q9L2Sk)zpUXs7EIdywn8(tXF7G&C#>RY^wVuFPCYPNT1^XwlSTseAmw-Pcz+ z7yd0J#kP8`Z2jiByIC%uP}b5dH)_`zqkdSjvUU?z-bzn7Fc5w6=5u6_*v$;BqPUp)tSXvx zR~KSMw|brnz4-my3h?CdLxV_t<^po-Hz&C|=H`KWGgVt#TaAs4?fLJ`%*=NCv#;Oo z4(TQ27f$1jeEH8F8^U8J0|I?CG=|>q-1Q~ov*qQ@ft1}ZN!!(XgK@|TvDqW9;$Hij4k8VS|=-vEX8 z8o5FmC&yEW|9L1lqtYNT+0f|f>ZP8AXHpK=&u#7k)p+(2_)cnS>Zlyv|C=?dJju_4 zhqPAaF$g>RO8V1TBMIz!y#d>;00RSq7}+IvXpJ5B==3Iyv7^yh9qACa5ZUFU^GF0kgsmd$Z51PX#73Z2uKZ%5vUz#-%|<0jUMN zLn96LbwCFYsQxN5sIyh#?LJ*zW`cdKb-nK|i<+5-z=F*uR740K9&T>k>VJnTCxwLi zd?@8%sT`QYx|;gUL6A&YHwVFNK@rLNRAyAvw#z)SpjC~b$Fx+$#%8T{VXTH(&`1{r z;Ta$*vhUJd!7V&=DD2-pU)(OTyd)t`o@h;*Ob(r*ZB@iIztKpAff5X=!CPHZW6CP(&!8x#%@ST{9{w zJ+l-=;jR3y=n}&Rx-_~gIN>%}#~@)OnaM<+PpG86HI?n{2uIP#NEXFBqVq3;cJ_75 zSnnhKr?d@$65~Jz;v(Bcldq812Rg= zO$!F1ttd%7Ca%(`&`#ILo{dBQI@YH!;P0U!AtR@$W8#2jzPHIKOAY)BQao6O5{8f* z`xG|?UUsV**SmlcN|Layoc!#;^#}q?#m2HcGxdCqLYyn=6qQ7$74P9GFQaAqj(9>Z{l*GW4|;CnP7cNO|%| zN=owaLHRk~85&Oe3U2+p=8{7YJ7c2>RFkBpj=ixgVC;HwUw1cIJD^#Uz~P!{S6FX7 z{jb0lu)iZ0%}Yaee}{DX_k{4ea#=iicFnzDk!6FKNfRrti~n)wP-|yrXX{XwY2uGkvDq7!$VmS7;?mN&2Ir-}-06=36*0lh1#hy- z`D0-U5+cj7qv+FvvMpm+FbRTfU=;3y9aD{l7)6(t%@4fw7g1veqC@ znm~p`L^{;&RC7&)rgdL5Nla4Yx$Z_ zNUneA{z|PzOF>}uP$;yzS|?obAG&dJ7gF-`nS08teK;~q68^S%sBE&hv@>X9-e>3c z=96+h5dlG0-_j8#+qdCv_wpVZq;+9F7L6AOGe#G3rF|XOiXdgXc^$a+`#XZC ztfE3JZFps+Z|wP}t3Q=SW%W;4_}hWqD^vU`#!ka#3f42_SdqGmtmCC7Y1HLpzf(uC z#CfMgCgvTfAfZG`Dnv7r=Xb^uw1(<7P!-<9{)el5JZ-N05Bh%@{naO~A1mNlWd> z>?tmRVv#i_jVXzeXBO`t$_4r#AllSOLqkF|f4q?Y2c56E*E1DOv2%SVkSLBF_hD5# zT_nxiWB@~7ZA!I!^JO=2{IVl{G>1xBi17u7R{CM#dv9-X%0Z%+wv#z?Z{Au9KS(m+ z5oJqJC@QjjW=x)v;=>LZHa5@Jo@Uz-L|vSOT#R*}kY(gO7UHg`99V?tDJ$31kR_?w zGe|anxt4AE;W_7)Ytxe_PgYh}Z>x}!64>CU;<}RAS^J%!5Z!x1qzf)ZT0<}B1vwIJ z*;D|GGV2?+qu(-Mv9l8wCl_Or@q%R7*>L^y69^x(;D_H|kHnZ>`3B0z#4J^Bcp)CR zOJ=B%ng^W1ziiW$lS=>v!|(1-X46~Wy2W623s_Z}S9=xEIAKxF)gYeB&IauN z`SUqHzntgZJ9l??Q&UrbP9-5GPCtx&zP_TcO3-kDg~8bdXK9kaaraQg>-PVPul>0w znExvU9atY(zIZ~=lsbQf<^S=rN|2>nGusnIH~$#^iz1Ws+?nLOb_W0HNKkp7VrKU} z|K$fk35^L@KY)~!*iRO}UG&HI73y3&d-37-w>wMYnG!-&Vaf!>Dw`qhqJUij*(`fZ z#NYVy#r5sFlh$=Ag3=Tk2%9G0P6E$Ee{c*9PSIX2IyzdbNcXRp{KO~zkRo}o0A?3T z$-?(3Q=FhsT>&3I$$i!!$j8)U`Khrnss|5*TYJWGq=8{EoaO5uA|qF3tq3RQm2vz= z@+&d@D-s1V8%3EL=Nq+QFW-|fv7c@pj%7cF0sK9*35NaqdCE|78UJ@gUlLrud~@zN zUHm3w8~QQ!#rty<`z(?0$rvjPFmh(sOKAB02S2X1^!|MOr%cH3$L=j8zsRjyg1*6@ zaz`3>`lAzh!Ggl#lJhxFhMWM zCt;MF4{rpNl)aeWM+eXp&_HKqwt7Y55ujzP8)t=nnnSmBo`afa!ozzoUE9$#Y6C!X zmy7^tCu%J}<~+XKpp1Nd_4hly<_>caJ~j!c*;|j0su|sc^jxORQu~K8TJt(Jgpq_s;Pa z*sC^wJYYPt+kwHLq+a3UQyw+8b|U45%|1zIczUnJHG#a~k8op(N0bZ|ZNf7b6o&iq zgZ*#z=?~oFtq(@pvI3qyVb^N%R73ft0(qCde*0dx-ZIqJr;#SIAMqY0C2!O~m}{&R zVr3;J`NaCjtm7b|{J70&<2RE|QHT$eT>IhK{Cw7p(eqK3Ky{%Zdmq~#GfGB^VrUe} z`LrnRuJg3k4+-9~Lc9IuAky9Gx}*vU=Gc@6XnsXVe?G(9pO}qtpjHC34ZOX}hF<{4 zIo7uAbpU);!IYP%wu~^n9QlievH*`!HX$31VDjA$JtP10si9@OfS6Xn&Z|)|#93d? z`FVCQ6F81aa!5BJvu@pPE777J44OSdk1#v$>22HiMerPaSgdQ!_Wbancu=PnnHcw7 zNC!%>KeB#ENWvS$c_tln2wU}HA)BR)ChXYn-@kR?g~MR~1MeU{0UfqIWD>fF*}0>t zYeD=O`*Mq+2xwmsBJR8`j~;NE9}-x?t18TJW@+M<`w)EGKF&o>AAY!je>Kz9!_7~> z9GFY!q_hl6oF1K%vrNX~MjHCkB@dUHcGaF1asUJrd}4PYlv&_&-uVXGKq={&Q}|LA zZhwbz2X2v^e(5{CAvU0*ks`Vrmt8n&4&Ip+^9ndajC|=+dbQ^Tjo9KM2@tU&DZaH^E$LQSNV<@PPWxD6NVTT7>Xf%z>AXx`yA+2h3{_^nHP;@j9JAD_7cR$2o z_Qz!ArD^9pt4C&Frm7t=9{jJL@nCUrH=>KxN7``~ZYOv7@x~1At9OGAj6gi)DJ=7W zc6B~IsQ_jfK5Inuo!st9`>cOD^;_)<74vOetIH8D4ww>X5UwA4NxN1NO59mt7-lkA zlUi6@<=%P`_+g%gzP4E)-j^`shmMkWgQzH=mA_XWZUaWrmhH=W_oC|Nxj?EvmiOZ& z>S8;Z2wsg_zjCDUNbD&%wK%GRm5!t~FE)=Rf_|gOiuh971XsgP=RvA!vHEo~MOyxw z1?h0`tf<>DbCujzmaAhZt`C~#S@JOeHOm1|(zuxQE`WHKU6wbr$FywrhuJ7UAB1MK zo_jevmbaqYOOWJtuF*!vodYSspu<)=|w&7O4MPgCFT3@o19i&9qw zYH?^fR`d0OM5o=aKG_txh4l5R_{kOtFE1}!ELXuY-NeOt44RHT=2~iEkmtNlEX>tV z-uB*|j%Mi_rf+wZ`bM?v^*_`*SiaIM2~!HT-`l88Me^Re9s*QrsEvn%jXf zL#w5&z$KJzNGsx~_Byzh^x)>~oIZE*Qq6n$UiQsBw#Ws#j~T)q`jb&u&bcH}Nq&hk zs4JkY2FH_E8$PWh%v|fg%2)u`WbpX7Y1qh_~l)Fjd3USq@WvO(?mo!7XN-DAgmIJO7aSHTjDnH z95pX=X?j(;v5-Rhu#8L!?sckk({^-|6gd^)Gdt|GOF0#M^LB%IZ7Do=6u0Nj=_RnV z)L4JwXlCq0FLs9?s5N*2$$Hl^54}Sf8BXD*KOcg2G=doX=`hF{?;dHtNCI$l_x9S2 zOf9(R8q(e?lWgdIkvO=pwevn{x$BG4gh0WE$+MIR1;AN;wda60+wDG6xpmjkG*gbW zREn$B@@ekT5kVUbJJjf}t`HWg;Fq`cECg1Cp^DK^A(y!qRb8%=oUK;zP)7BPuPJaP z{~LX0se^Kh6@L!vPv?1Q;Al4`sFxb$tOsJ#e+QGn9Rcg@el`?%jx{-p>v^9OB?w() zMh_;VKv73zKG0T~mOS>2SOeIvn<-nZB`rI^1n4qZbVIa($zJN#7OWIyBY_>B?t8U% znrRoA;<;ELh4HrmovqDyo4FY}dw0`NQ&$PG_@4Ax&6)Fx-T_>I4g|0&U@?UZ!_Yah40o^S>AkJwgf)QtD}{iK9)IiXvJJpMcOM z`-++B^Tfre8YNXpr&B2hfRC-0{WfTIqmIeTBrU7St0J-9H}Y4TPN$I}uo2%oZ-9i} zZ~Wa9T$H8X;I}%5p=^>o4^{eOtYoXXIICy#t}f8ajmga6fojca*J#?hGx&UBNvoHu zWHXcP?6`aPDFw)H6=yZK+g9Oio+eR<#+7GHazXYa4X{(Xn9K9^YOBszf_OGZm#>`tdZ2LY*SeWP`~e7yRSZ4Qz%WkVhM9r;gLBZ&F*92+h4jaHvIbcT)wGR zL)xA<6yZ)XU-m=LKcUrf0wo6Alxr_L57+N#;slh)`oQ8&)}q-EuKIhOwqiX8h~_|R z9rI;_k3oJ>#rddZ7#aGRU6#-5t}rp+mYS$z1)pWC*!2__7A>BIv zTOOYpwnFjvBAo4I0dFM9BNPsRm_8X8#4Hx#8}1nk2qE7c*OVlm*QkhhqkEYMua{&z z%ZP}7W`SeJ%+2=6BDc3ONMA8S45R|$S!&rS;zVa(-^dr~bQSTV%@Qs%NV$02$zmMs zFR>3NjO{2-EY?Z7Z4B98J+kq>dNm(?_?n6(pkeSvR z_ZBNUX|5*ickf8BfOpZ_bm25G##PGBPxurHkDq2e4<}sQ`U`Z|iLxP!k?&_%sR%nn Ns!Cd~pbGDU{s*&+kIn!9 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9bcc9aa4203ff5837139074b04ede26df308d7 GIT binary patch literal 24694 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..14c84c9b58ba782a041270a90e09c1921b882175 GIT binary patch literal 18768 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 literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6e082daf219756069dfd79c00df4d106cb51103f GIT binary patch literal 13637 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 U^o^f#ggr#>71ZUyvgV=x4ZON<+yDRo literal 0 HcmV?d00001 diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png b/core/src/components/popover/test/safe-area/popover.e2e.ts-snapshots/popover-safe-area-right-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..abbd6c1406f613c7231f5abe01bd9cff0bc3c669 GIT binary patch literal 22525 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%0D*2 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 H`}qF?32&>F literal 0 HcmV?d00001 From 8396f546bf2baa444e0830fbcf9616953cdd5dd9 Mon Sep 17 00:00:00 2001 From: ShaneK Date: Mon, 9 Feb 2026 12:39:22 -0800 Subject: [PATCH 4/7] chore: fixing lint issues --- core/src/components/modal/safe-area-utils.ts | 3 ++- .../modal/test/safe-area/index.html | 24 ++++++++----------- .../modal/test/safe-area/modal.e2e.ts | 5 ++-- .../components/popover/animations/md.enter.ts | 3 +-- .../popover/test/safe-area/index.html | 8 ++----- .../popover/test/safe-area/popover.e2e.ts | 8 ++----- core/src/components/popover/utils.ts | 4 ++-- 7 files changed, 21 insertions(+), 34 deletions(-) diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts index 0b40f4fda79..9ff49b1cfa6 100644 --- a/core/src/components/modal/safe-area-utils.ts +++ b/core/src/components/modal/safe-area-utils.ts @@ -42,7 +42,8 @@ const EDGE_THRESHOLD = 5; */ const isCenteredDialogViewport = (): boolean => { if (!win) return false; - return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`).matches; + return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`) + .matches; }; /** diff --git a/core/src/components/modal/test/safe-area/index.html b/core/src/components/modal/test/safe-area/index.html index 87795ee7f6e..dadf47ff25b 100644 --- a/core/src/components/modal/test/safe-area/index.html +++ b/core/src/components/modal/test/safe-area/index.html @@ -57,27 +57,19 @@

Fullscreen Modals

- +

Sheet Modals

- +

Card Modals (iOS)

- +

Centered Dialog (Tablet)

- +

Diagnostic Info

@@ -120,13 +112,17 @@

Modal Content

- ${showFooter ? ` + ${ + showFooter + ? ` Footer - ` : ''} + ` + : '' + } `; return element; } diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts index c4a61e0e755..4b6cec3c218 100644 --- a/core/src/components/modal/test/safe-area/modal.e2e.ts +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -5,10 +5,9 @@ import { configs, test, Viewports } from '@utils/test/playwright'; * These tests verify that safe-area CSS custom properties are correctly * applied to modals based on their type and position. * - * FW-6830: Dynamic Modal Safe-Area Handling + * Safe-area handling is position-based and not affected by text direction. + * Testing only LTR to avoid redundant test runs. */ -// Safe-area handling is position-based and not affected by text direction. -// Testing only LTR to avoid redundant test runs. configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('modal: safe-area handling'), () => { test.beforeEach(async ({ page }) => { diff --git a/core/src/components/popover/animations/md.enter.ts b/core/src/components/popover/animations/md.enter.ts index 574228ad31c..8de9976e86c 100644 --- a/core/src/components/popover/animations/md.enter.ts +++ b/core/src/components/popover/animations/md.enter.ts @@ -48,8 +48,7 @@ export const mdEnterAnimation = (baseEl: HTMLElement, opts?: any): Animation => const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING; // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas). // This is needed for Android edge-to-edge (API 36+) where system bars overlap content. - const safeArea = - size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc as Document); + const safeArea = size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc as Document); const { originX, diff --git a/core/src/components/popover/test/safe-area/index.html b/core/src/components/popover/test/safe-area/index.html index 50cf6fe3bbf..c9ee522b986 100644 --- a/core/src/components/popover/test/safe-area/index.html +++ b/core/src/components/popover/test/safe-area/index.html @@ -95,12 +95,8 @@ - - + + diff --git a/core/src/components/popover/test/safe-area/popover.e2e.ts b/core/src/components/popover/test/safe-area/popover.e2e.ts index 4d422e54873..58cca8baa7c 100644 --- a/core/src/components/popover/test/safe-area/popover.e2e.ts +++ b/core/src/components/popover/test/safe-area/popover.e2e.ts @@ -11,9 +11,7 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screens await page.goto('/src/components/popover/test/safe-area', config); }); - test('should not overlap the bottom safe area when trigger is near the bottom edge', async ({ - page, - }, testInfo) => { + test('should not overlap the bottom safe area when trigger is near the bottom edge', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', description: 'https://github.com/ionic-team/ionic-framework/issues/28411', @@ -36,9 +34,7 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screens await expect(page).toHaveScreenshot(screenshot('popover-safe-area-bottom')); }); - test('should not overlap the right safe area when trigger is near the right edge', async ({ - page, - }, testInfo) => { + test('should not overlap the right safe area when trigger is near the right edge', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', description: 'https://github.com/ionic-team/ionic-framework/issues/28411', diff --git a/core/src/components/popover/utils.ts b/core/src/components/popover/utils.ts index 1f6fe7afb73..0d11a4dfeef 100644 --- a/core/src/components/popover/utils.ts +++ b/core/src/components/popover/utils.ts @@ -72,7 +72,7 @@ export const getSafeAreaInsets = (doc: Document): SafeAreaInsets => { return cachedInsets; } - if (!doc.body) { + if (doc.body === null) { return { top: 0, bottom: 0, left: 0, right: 0 }; } @@ -908,7 +908,7 @@ export const calculateWindowAdjustment = ( : bodyHeight / 2 - contentHeight / 2; const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0; let addPopoverBottomClass = false; - let hideArrow = false; + const hideArrow = false; /** * Adjust popover so it does not From 6f216f0e92bf61f04bbf1f767f487c27b1d5886e Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 11 Feb 2026 11:39:47 -0800 Subject: [PATCH 5/7] refactor(modal): use union type for safe-area config and simplify child detection --- core/src/components/modal/modal.tsx | 14 ++++---------- core/src/components/modal/safe-area-utils.ts | 12 +++++++----- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 87da5a407a5..8523626ee99 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -1429,16 +1429,10 @@ export class Modal implements ComponentInterface, OverlayInterface { // Check for standard Ionic layout children (ion-content, ion-footer), // searching one level deep for wrapped components (e.g., // ...). - let hasContent = false; - let hasFooter = false; - for (const child of Array.from(el.children)) { - if (child.tagName === 'ION-CONTENT') hasContent = true; - if (child.tagName === 'ION-FOOTER') hasFooter = true; - for (const grandchild of Array.from(child.children)) { - if (grandchild.tagName === 'ION-CONTENT') hasContent = true; - if (grandchild.tagName === 'ION-FOOTER') hasFooter = true; - } - } + // Uses :scope to limit the search depth rather than matching deeply + // nested elements inside inner modals or other overlays. + const hasContent = el.querySelector(':scope > ion-content, :scope > * > ion-content') !== null; + const hasFooter = el.querySelector(':scope > ion-footer, :scope > * > ion-footer') !== null; // Only apply wrapper padding for standard Ionic layouts (has ion-content // but no ion-footer). Custom modals with raw HTML are fully diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts index 9ff49b1cfa6..6e24d2f3916 100644 --- a/core/src/components/modal/safe-area-utils.ts +++ b/core/src/components/modal/safe-area-utils.ts @@ -1,14 +1,16 @@ import { win } from '@utils/browser'; +type SafeAreaValue = '0px' | 'inherit'; + /** * Configuration for safe-area CSS custom properties. - * Values can be 'inherit' (use root value) or '0px' (no safe-area). + * Each direction can inherit the root safe-area value or be zeroed out. */ export interface SafeAreaConfig { - top: string; - bottom: string; - left: string; - right: string; + top: SafeAreaValue; + bottom: SafeAreaValue; + left: SafeAreaValue; + right: SafeAreaValue; } /** From 31f9f5843e0035a77882d95c7ad912c95915018a Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 11 Feb 2026 13:53:43 -0800 Subject: [PATCH 6/7] fix(modal): decouple sheet height from safe-area and update on resize --- core/src/components/modal/modal.scss | 7 +- core/src/components/modal/modal.tsx | 78 ++++++++++++++----- core/src/components/modal/safe-area-utils.ts | 53 ++++++++++++- .../modal/test/safe-area/modal.e2e.ts | 70 ++++++++++++++++- 4 files changed, 183 insertions(+), 25 deletions(-) diff --git a/core/src/components/modal/modal.scss b/core/src/components/modal/modal.scss index ac4cb533b48..160468f5792 100644 --- a/core/src/components/modal/modal.scss +++ b/core/src/components/modal/modal.scss @@ -152,9 +152,14 @@ ion-backdrop { /** * Ensure that the sheet modal does not * completely cover the content. + * + * --ion-modal-offset-top is an internal property set by modal.tsx + * with the resolved root safe-area-top pixel value. This decouples + * the height calculation from --ion-safe-area-top (which is zeroed + * for sheet modals to prevent header double-padding). */ :host(.modal-sheet) { - --height: calc(100% - (var(--ion-safe-area-top) + 10px)); + --height: calc(100% - (var(--ion-modal-offset-top, 0px) + 10px)); } :host(.modal-sheet) .modal-wrapper, diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 8523626ee99..6e319e7b3c2 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -49,6 +49,7 @@ import { getPositionBasedSafeAreaConfig, applySafeAreaOverrides, clearSafeAreaOverrides, + getRootSafeAreaTop, type ModalSafeAreaContext, } from './safe-area-utils'; import { setCardStatusBarDark, setCardStatusBarDefault } from './utils'; @@ -283,14 +284,35 @@ export class Modal implements ComponentInterface, OverlayInterface { @Listen('resize', { target: 'window' }) onWindowResize() { - // Only handle resize for iOS card modals when no custom animations are provided - if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) { - return; - } + if (!this.presented) return; clearTimeout(this.resizeTimeout); this.resizeTimeout = setTimeout(() => { - this.handleViewTransition(); + const context = this.getSafeAreaContext(); + + // iOS card modals: handle portrait/landscape view transitions + if (context.isCardModal && !this.enterAnimation && !this.leaveAnimation) { + this.handleViewTransition(); + } + + // Sheet modals: re-compute the internal offset property since safe-area + // values may change on device rotation (e.g., portrait notch vs landscape). + if (context.isSheetModal) { + this.updateSheetOffsetTop(); + } + + // Regular (non-sheet, non-card) modals: update safe-area overrides + // since the viewport may have crossed the centered-dialog breakpoint. + if (!context.isSheetModal && !context.isCardModal) { + this.updateSafeAreaOverrides(); + + // Re-evaluate fullscreen safe-area padding: clear first, then re-apply + if (this.wrapperEl) { + this.wrapperEl.style.removeProperty('height'); + this.wrapperEl.style.removeProperty('padding-bottom'); + } + this.applyFullscreenSafeArea(); + } }, 50); // Debounce to avoid excessive calls during active resizing } @@ -770,8 +792,6 @@ export class Modal implements ComponentInterface, OverlayInterface { if (this.currentBreakpoint !== breakpoint) { this.currentBreakpoint = breakpoint; this.ionBreakpointDidChange.emit({ breakpoint }); - // Update safe-area overrides based on new position - this.updateSafeAreaOverrides(); } } ); @@ -903,6 +923,10 @@ export class Modal implements ComponentInterface, OverlayInterface { return false; } + // Cancel any pending resize timeout to prevent stale updates during dismiss + clearTimeout(this.resizeTimeout); + this.resizeTimeout = undefined; + /** * Because the canDismiss check below is async, * we need to claim a lock before the check happens, @@ -1374,11 +1398,32 @@ export class Modal implements ComponentInterface, OverlayInterface { /** * Sets initial safe-area overrides before modal animation. * Called in present() before animation starts. + * + * For sheet modals, the SCSS --height formula uses --ion-modal-offset-top + * (an internal property) instead of --ion-safe-area-top. We resolve the + * root safe-area-top to pixels and set --ion-modal-offset-top, decoupling + * the height calculation from --ion-safe-area-top (which is zeroed for + * sheets to prevent header content from getting double-offset padding). */ private setInitialSafeAreaOverrides(): void { const context = this.getSafeAreaContext(); const safeAreaConfig = getInitialSafeAreaConfig(context); applySafeAreaOverrides(this.el, safeAreaConfig); + + // Set the internal offset property with the resolved root safe-area-top value + if (context.isSheetModal) { + this.updateSheetOffsetTop(); + } + } + + /** + * Resolves the current root --ion-safe-area-top value and sets the + * internal --ion-modal-offset-top property on the host element. + * Called on present and on resize (e.g., device rotation changes safe-area). + */ + private updateSheetOffsetTop(): void { + const safeAreaTop = getRootSafeAreaTop(); + this.el.style.setProperty('--ion-modal-offset-top', `${safeAreaTop}px`); } /** @@ -1389,19 +1434,9 @@ export class Modal implements ComponentInterface, OverlayInterface { const { wrapperEl, el } = this; const context = this.getSafeAreaContext(); - // Sheet modals: the wrapper extends beyond the viewport and is translated - // via breakpoint gestures, making getBoundingClientRect unreliable for - // edge detection. Instead, use breakpoint value to determine top safe-area. - if (context.isSheetModal) { - const needsTopSafeArea = context.currentBreakpoint === 1; - applySafeAreaOverrides(el, { - top: needsTopSafeArea ? 'inherit' : '0px', - bottom: 'inherit', - left: '0px', - right: '0px', - }); - return; - } + // Sheet modals: safe-area is fully determined at presentation time + // (top is always 0px, height is frozen). Nothing to update. + if (context.isSheetModal) return; // Card modals have fixed safe-area requirements set by initial prediction. if (context.isCardModal) return; @@ -1454,6 +1489,9 @@ export class Modal implements ComponentInterface, OverlayInterface { private cleanupSafeAreaOverrides(): void { clearSafeAreaOverrides(this.el); + // Remove internal sheet offset property + this.el.style.removeProperty('--ion-modal-offset-top'); + if (this.wrapperEl) { this.wrapperEl.style.removeProperty('height'); this.wrapperEl.style.removeProperty('padding-bottom'); diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts index 6e24d2f3916..0a491fa970a 100644 --- a/core/src/components/modal/safe-area-utils.ts +++ b/core/src/components/modal/safe-area-utils.ts @@ -1,4 +1,5 @@ import { win } from '@utils/browser'; +import { raf } from '@utils/helpers'; type SafeAreaValue = '0px' | 'inherit'; @@ -37,6 +38,12 @@ const MODAL_INSET_MIN_WIDTH = 768; const MODAL_INSET_MIN_HEIGHT = 600; const EDGE_THRESHOLD = 5; +/** + * Cache for resolved root safe-area-top value, invalidated once per frame. + */ +let cachedRootSafeAreaTop: number | null = null; +let cacheInvalidationScheduled = false; + /** * Determines if the current viewport meets the CSS media query conditions * that cause regular modals to render as centered dialogs instead of fullscreen. @@ -48,6 +55,44 @@ const isCenteredDialogViewport = (): boolean => { .matches; }; +/** + * Resolves the current root --ion-safe-area-top value to pixels. + * Uses a temporary element because getComputedStyle on :root returns + * the declared value of custom properties (e.g. "env(safe-area-inset-top)") + * rather than a resolved number. + * + * Results are cached for the current frame to avoid repeated reflows. + */ +export const getRootSafeAreaTop = (): number => { + if (cachedRootSafeAreaTop !== null) { + return cachedRootSafeAreaTop; + } + + const doc = win?.document; + if (!doc?.body) { + return 0; + } + + const el = doc.createElement('div'); + el.style.cssText = + 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + + 'padding-top:var(--ion-safe-area-top,0px);'; + doc.body.appendChild(el); + const value = parseFloat(getComputedStyle(el).paddingTop) || 0; + el.remove(); + + cachedRootSafeAreaTop = value; + if (!cacheInvalidationScheduled) { + cacheInvalidationScheduled = true; + raf(() => { + cachedRootSafeAreaTop = null; + cacheInvalidationScheduled = false; + }); + } + + return value; +}; + /** * Returns the initial safe-area configuration based on modal type. * This is called before animation starts and uses configuration-based prediction. @@ -58,10 +103,14 @@ const isCenteredDialogViewport = (): boolean => { export const getInitialSafeAreaConfig = (context: ModalSafeAreaContext): SafeAreaConfig => { const { isSheetModal, isCardModal } = context; - // Sheet modals use bottom safe-area, and top safe-area only when fully expanded + // Sheet modals always zero top safe-area. The sheet height offset from the + // top edge is handled by --ion-modal-offset-top (set in modal.tsx) using + // the resolved root value, so --ion-safe-area-top is never needed for + // height calculation. Keeping it at 0px prevents header content from + // getting double-offset padding. if (isSheetModal) { return { - top: context.currentBreakpoint === 1 ? 'inherit' : '0px', + top: '0px', bottom: 'inherit', left: '0px', right: '0px', diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts index 4b6cec3c218..3326c95d800 100644 --- a/core/src/components/modal/test/safe-area/modal.e2e.ts +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -8,6 +8,12 @@ import { configs, test, Viewports } from '@utils/test/playwright'; * Safe-area handling is position-based and not affected by text direction. * Testing only LTR to avoid redundant test runs. */ + +/** + * The test page (index.html) sets these root safe-area values. + * Keep in sync with the :root block in test/safe-area/index.html. + */ +const TEST_SAFE_AREA_TOP = '47px'; configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('modal: safe-area handling'), () => { test.beforeEach(async ({ page }) => { @@ -123,7 +129,7 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config expect(height).toBe('calc(var(--height) - var(--ion-safe-area-bottom, 0px))'); }); - test('sheet modal at breakpoint 1 should inherit top safe-area', async ({ page }, testInfo) => { + test('sheet modal at breakpoint 1 should keep top safe-area zeroed', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'issue', description: 'https://github.com/ionic-team/ionic-framework/issues/30900', @@ -149,11 +155,71 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config }); await ionBreakpointDidChange.next(); - // At breakpoint 1, top safe-area should be inherited + // At breakpoint 1, top safe-area should still be 0px because the + // sheet height is frozen with the resolved root value. This prevents + // header content from getting double-offset padding. safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { return el.style.getPropertyValue('--ion-safe-area-top'); }); + expect(safeAreaTop).toBe('0px'); + }); + + test('sheet modal should have --ion-modal-offset-top set with resolved safe-area value', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#sheet-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // The internal --ion-modal-offset-top property should be set to the + // resolved root --ion-safe-area-top value. The SCSS --height formula + // uses this instead of --ion-safe-area-top directly. + const offsetTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-modal-offset-top'); + }); + expect(offsetTop).toBe(TEST_SAFE_AREA_TOP); + }); + + test('fullscreen modal safe-area should update on resize from phone to tablet', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/30900', + }); + + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + + await page.click('#fullscreen-modal'); + await ionModalDidPresent.next(); + + const modal = page.locator('ion-modal'); + + // On phone viewport, modal should inherit safe-area + let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-top'); + }); expect(safeAreaTop).toBe('inherit'); + + // Resize to tablet viewport (centered dialog breakpoint) + await page.setViewportSize(Viewports.tablet.portrait); + + // Poll until the debounced resize handler updates safe-area overrides + await expect.poll(async () => { + return modal.evaluate((el: HTMLIonModalElement) => + el.style.getPropertyValue('--ion-safe-area-top') + ); + }).toBe('0px'); + + const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { + return el.style.getPropertyValue('--ion-safe-area-bottom'); + }); + + expect(safeAreaBottom).toBe('0px'); }); test('centered dialog should have all safe-area values zeroed on tablet', async ({ page }, testInfo) => { From 4278133be030c40ae4aa8184ddc5a217e8e12d3e Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 11 Feb 2026 13:55:53 -0800 Subject: [PATCH 7/7] chore(lint): fix lint --- core/src/components/modal/safe-area-utils.ts | 3 +-- .../components/modal/test/safe-area/modal.e2e.ts | 16 +++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/src/components/modal/safe-area-utils.ts b/core/src/components/modal/safe-area-utils.ts index 0a491fa970a..a13bf1770a0 100644 --- a/core/src/components/modal/safe-area-utils.ts +++ b/core/src/components/modal/safe-area-utils.ts @@ -75,8 +75,7 @@ export const getRootSafeAreaTop = (): number => { const el = doc.createElement('div'); el.style.cssText = - 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + - 'padding-top:var(--ion-safe-area-top,0px);'; + 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + 'padding-top:var(--ion-safe-area-top,0px);'; doc.body.appendChild(el); const value = parseFloat(getComputedStyle(el).paddingTop) || 0; el.remove(); diff --git a/core/src/components/modal/test/safe-area/modal.e2e.ts b/core/src/components/modal/test/safe-area/modal.e2e.ts index 3326c95d800..af2a58c7699 100644 --- a/core/src/components/modal/test/safe-area/modal.e2e.ts +++ b/core/src/components/modal/test/safe-area/modal.e2e.ts @@ -164,7 +164,9 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config expect(safeAreaTop).toBe('0px'); }); - test('sheet modal should have --ion-modal-offset-top set with resolved safe-area value', async ({ page }, testInfo) => { + test('sheet modal should have --ion-modal-offset-top set with resolved safe-area value', async ({ + page, + }, testInfo) => { testInfo.annotations.push({ type: 'issue', description: 'https://github.com/ionic-team/ionic-framework/issues/30900', @@ -200,7 +202,7 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config const modal = page.locator('ion-modal'); // On phone viewport, modal should inherit safe-area - let safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { + const safeAreaTop = await modal.evaluate((el: HTMLIonModalElement) => { return el.style.getPropertyValue('--ion-safe-area-top'); }); expect(safeAreaTop).toBe('inherit'); @@ -209,11 +211,11 @@ configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, config await page.setViewportSize(Viewports.tablet.portrait); // Poll until the debounced resize handler updates safe-area overrides - await expect.poll(async () => { - return modal.evaluate((el: HTMLIonModalElement) => - el.style.getPropertyValue('--ion-safe-area-top') - ); - }).toBe('0px'); + await expect + .poll(async () => { + return modal.evaluate((el: HTMLIonModalElement) => el.style.getPropertyValue('--ion-safe-area-top')); + }) + .toBe('0px'); const safeAreaBottom = await modal.evaluate((el: HTMLIonModalElement) => { return el.style.getPropertyValue('--ion-safe-area-bottom');