From 18cce9ddeb2a254b390a734b24508b202de3ee9b Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 4 Feb 2026 10:19:33 -0800 Subject: [PATCH 1/9] 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/9] 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/9] 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 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 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 z(P7MtJK=#%t7$9a!3;N1DO}Jo&RMcE<>Y0g=E)%OQzv?DF+H;)JDP@Gc-`DeWo^&# ziQEKU4Zn4{09R%@R{)DEG-b9qebZCfbHW!zy@IfQui zQjC4he|OdDu_y>H_*V70Gc~ATxilQ zCT`%RevFnNu2`>kpx~MF8WXHAt;}Gif%7>vmUC0AhHWU3AuSS$C6ZP%)C{8w4zs_j zATlJl>qIXrw`(-|9IE$n;Wq^7+A_?!QCgIS$?g)w@mi4EcIr-X*YHcG^O;#{9?E%a z8p_LX98H`)FhSZ=AT6dJiP9Hi$2nj{#T~}m@`*Z%ant_ZzfM0ekSEKmY8M8v$AQ&+ z2`Nr+br~(tL=XD9Ye-J$mwy=J8Z`|Uk&hrl%3u?nvJh{`zxa+&R{OPLDMc}{v|Mg) zB!bh`%iU!2T5o&M@>_)T-di^MP%>VgmBT4akxtDcc_6b|^Vsb4$Lf(%dAJ?@wA!ZK z7udpBx*b$MI{Kx7nXg(@2WobAXoA!esZEyFP0f2w#nc9u%z)GENLS9 zNUq1cBsIqsL6hS1T>q#?DtG7chaY3cw8YN~DRv8CbBSEw7owPwb^EQx7nIzvv+H9Q zZ#Ct7P2_zrU6=ES<{pEQH%nfQ`azLudGigfgVYm$j@ZJhkI-2}2`fo!As7S3g{iSv zlor-4OZm484I+!&vM*mNX?8$*k7iU0Qha@79jlD@p`S**Z))g<@SS4qasgwcqnYTX z1a4R-Qu|fI3db@9Qh?DqXViduh0b(9_))=k;hGZ(zvEHI4aWHb?qJ;l|AsxZJq3^T z>sYz*hHtCroG^u9nx%aQ>V1swYD}e9E@2#FKkuj+B{|ZfU$GnM`xWsY}mJ3qm-ZIItyC%g8l9y}=bsLVS-25XDXa!jsl zuut~CW^R~v>QjC?`rf!gnMjWx&e{_2mdo~2Q~&dW3OnYm{0)v5=3}2$d#&m>j&s^~ zqEZsBaAqyh5Su-Wy*jndYq5PUc}1DCa>d+B)03aJ()(67xgBp2 zVxwi8)sYyU;s;SrlQ(YUM{1~r*ql|h!W*e?&eq#3Aj&kKfZrNLyzrltP2^GCn((EK zWlvNZ5Ysf#>Dn*Ga|weALh`o-^gC@X>q;WV8|#;q?`&GEh+XD;+jG4r5FRZ4Fv3|=B^h?q_k zeI}`|xveDoJW0VM-khq)4DAnc!P8Yq57|M((-6cQ(^~UER`wNLQN)Ihc1Y#bp09Sd zS_hAE-k6k{9}#Sc@=88Tzd5Zd9=^^;NTA2Rnv;jO7AhsHy@zrI%x_JiBet(}r$(?nHlP=LCN8(8ZlM^?accvj z*U+GD_4|m1oOceJQ>7bCN6cXV`wK6(ZM|Y;*sXbzdc%&9n8#^@|y(12zQyaQL9m`FfbS3w@1c5@U#{;hlZ6T$DiJc!M zatNKUbm!K$lj|&;k^Z|CIr_u7{mO{3%d+ckCLMy5$i{Wpa7>bGd+BIXkH(>*MR9~T z^9o(7R#^7pNT&`$TVQVXf51FHvO?}5gsRC-mUPq<}>wXn| znXuZVP?)X1qIW{BO`N`Qo6Gu0z$#`ZmbP(nQ~FAcxVUX*!`;T2@eVu5cYMmp1*+w4 zY3nk%jdo`C!RuQ|{kO5IiMHL18>LTF(xq>$`1VloNJ0vjS^COGL(XO!T>r45%3Zi9 zo0iPldn{CNw&?n;b{$64KZexew=&G_esQMD!FO^p;!DK~Itw~8{)DN(2l7Xl7oNXw zwlxgh;O-t)EjYe@Ft9-pYcO_6tC4KYX^i}l-Mb8vvOBT~vct(W; z%#>X}>4dI~Z6sx2Z3X191^qi(#}zVIV_EDC6c?#MOOdqtnePXIyMlv^Y%+tl5BS&w zt|+TB6)_iU7L7!IT+52~Cy7HFvvVgsD2)i?J&S%nE4LTx)>X!%<^7&X0XEvb`QEYb zd@waC6kScp3Nut^2o`lSfyEkVnZzQ7&>cBt*dQl;&_ z3Qg}UGhKkOXg5N7Y%XUdX#F+sT<2|vj3cun-n?l&4+~Lz6JOn0D`k&@GpyvsqXV}O zq9W&LmJ&WiMu+Eg2GjZ5)>0z-@p;tnq$X866OL*dvX{2lQbre^g>}64*oc0Eg8_eu*nT3DD;@F?rBtHw z0wJrHd)v5`)!8?iM~KV%8O}d6NYW453gS&rm}@r;K8)= z{?-EgdwBj86#QSN9?+@lmq#SxY}wFcCz>`cx&F;vS*q zV-!ruvKN57L@Jp5g}E+oHB@gIR>g@U`$=DXw8ve$CK;qFGQLIdrv|0m5JX(D?eENW zBL#he{?xG`_3*&YezL-1E&I}N!WQuB;@At|XQ%)39w$YO+L*^O8Pz`vEcV!2>DxX( zb0#`jR}XL!_uh92@c9;K=YEdGOanUK=;!3q0smoq5{dS+pJDNYfG&QSc%QM>b%3F| zM;_3G@5K=_sb0NX3+FJg-7o2r{wEAkcIgJfGUb)gmSTSnUMiOC3m41>eZ(sE;}t8s zGo0%1bZ=maSlHN-#>}^Y!T0AAwN_KFWoxmesCL5PTWqkMw)3>@rX5ouyWvZU#- zkDm`F8)|HB`FYk+Ii9!X63N!n)l`qnIX?`8`@vYdLjnfvmy(JY7vb)dqD9IC30i*M zXKP243EB;J9M1bN)(vF8llV+bRtl?_-S+5DnHmSQqSe~ZTl8Y?)pNdkuo=gyzPZ*s z^>q7@Jk{Fe-uNj@>%@@SgYRrc9&^qgW~r~U@X*rIgY8m5`nxEOIS{rXFU~|tA9%Rk zrtK0daD`hqSkR)Q=5SQIDyBhyM4t?~_)c7WFs^6hkHzwD8IX0ecL9&<(IifDv zeK={!C${|I{ubjo%$COZZbxa`83&M_^w)a+YKwl-g?0QC@_IZ|Hq5GjB8i<~9Oya1 zxpyWlPp13D0tV82cb{`APsc+x(|kB40Rd^tneN*NuhyjJLW+H!p-$|<#Qmmey&f(ha z&Hia}&ac(;*AF(?vHZv70x7@u(lIqHhsW6HuOfO*j>cq&feC2E6@{+PTf&DABURe@x zb3i>GC;?V1AFBSaqRj7PMr@MS<|>y``L3#q^Gt0?jX!2CN6lukvwTcd8eOMn2ODh@}cbXoGH(YS!9D_R5aAX?%jb6Jly+0e8aN{ zu<+>)cjJx9H7l8pLF>KC#=1%wEf{O6hcxoQ&Mu9Lc zY|_j1k^IRo?}0nW2!UoperwU(gXNN2`az{Kwje#X^_O{yx2`A!lEV5R zwR7%W(GF2!-6lJqHii~SH>VK+V%yb$#VRh0cQeZTj@QYBLkf;G8e(Q$%>znzlr>UH7nys=^?7V|53lf(Y)v1}cvbnKGCO3U|#3w(^-&;-dTq$27ws>1Ed;Q+QO{Czst!d2LVfr;7v-pul?l_bs z=jYzmQw!BIc&>FFJd-C-i>;s(p?o`kva#YOgpMmv2^zN|fIv5g(aZP(>Bww^wEBbZ zR+yrYC}sYjT#Whc_VKD!O{d>3UlWp%s>wp#5o&x~K4YZFO4eK{up>wVwQ_DPH0C;* z74Z6A3;g^jgFNV9qc{LjX6?D2O9Kxk7AkKi*-2F4l^kjrW?s^IWA1nQtE;;WbA;Ia zuvnG%q;n_W{EFh7+L!&jLz%81b1IgORS*G85m2%!7<3jTRQCEyQ9=W`n9Jwf7fPa& z;!OK2AjSJyRnCFt);3*n;9h*ZPN)W2v<9BtM$_aJT2x5@p}P_29N-g=@1b(`f)x2N zb6Fe~cv1TyWJ56{%6yDNrSq(%bc1TzL!9JoA2X?VAcOmF(|yEOLum*%cLPhEY?L$7*UiF*9nq!bH**`^m?ywnu((Vq2Z>W*(f&9>NnBpLE!2>A2j_D#G4 zCJhDm;q=uWUART;d|qw(rlz&fOQ~R%^2JC7`q5uGB={)88-@_>yXN6xQsPj`y~dY~ zE4s^sI;{v@@fGVaRt3lD3<6(FQ!3roFJ@SvY{Z{p+JY;AjU2^3{9FPPJ<7VRj=Gsw z4aAH3^GIz;fjGD4<@zvw30`F5*M_qlJ)u6*B3<_m#Z1Zy|aCHxvs%wCwj8IF$S zRzABADb^WgFMVeo3w<-jtigrwhXdJXju7(H(6${Nk%*kIH*4yk}to3(kz{5ytco=^2*p*8w6A zVEuA37x4JWu1oqi#}pcO12}lh0PiIblHLrWx_-A)mWee`3&Ne+vMZV2#^^EooYn#L z6g;Pf^t!N93I!*hj$K7he5Xt~o;)>*@M^*j=BW2l5~!ZkdUS+d9GAFb!9v^bA4C{o zKcJiuw!AZW6_2!l8n157-Kg(p#u>k>VNtW^k>$`%$-I|M?DvlS)d~jTm|4pR=s}h=>C=7fzI6p#9D&^4}|+!u=%UIe{3RryaOs8Vv^&n*jAG3 zcbR1GOhUlNao|~ge)BwNxeB)KNF7u|$MV{|1b=Od9PcvJii{_{L2HOx5Bba|%GU4f zXw`kUo3s7KA8&g6md@G%SrJOXbEhv^*kfTtoqEHjEeb_A%LI-QZi~}GDaBCY3qLbz zV|9*p46mSiNFhRjAV7^WSIl5Dpu4ue;6Tr@&qvqi=Nu=wH97yX^9GX3Axeh^kDt5% zz{=@kLgzgsWJ=Zhdq7x7xA;U0MEDtRAWn_z9PusDu-q_0GUPoO-rQTj?+jX)Ky^Yv zxV>9uJ&4)A!J{~Cm!GPa7+ysKf}0w$`d^>v9YUck=8E+nUhlStuD?cGmE(mG{R z{YT6}x)3)#Ff|lW=Ih#ikm64lAD44oO_`I;YFXB~nz;Tp7K=A4<+}%0HFgnWn7cO`d{8&Q)EN0f?Q1!08E} z2xgFBq6RC(^Zxhw!Cxx_5=kBU>vzpxfK2Ao@xi7|e!71n&?FP0xWaF63+jN|t=`N1 zwTe_wy@51w`0i4-UVgceU-|PQ+JQ#a5hwp%UoJ3da<3W6mY)fwcY>9x0xNzQ#ij6?icSKZkjM3jV7@xROEmd?1@u4utdDIWcOL@n-&0?vqch(DV{ea6Hg7 zEH@8?S9DVI2D9@wZP(7&Ti|A;se6xzhS#m#-!M}0%rjZsr?xL$vduhMs+^F;;^kwh z3#f3OFW@Z~Get=YEKnO`#qr5*XFxGO+My{M*rTGFB+xBjycPxxBVjbHisUG8fN4ze zv>Cf}v-64_4#_i8IZ{CNq#q#%p@8#xf0-6Mk4fhWo-PlJJQXCv%WpF)jj$&eKE-kY zkK%+0875eY5b0gvcSCKcRN)5sK^9UZG)RhyDM~iO&}`%x5IN6e$wh3fBs-h3=NZ9k zV&TodK0~QX81Mpdbuk~G-l0bIC`E2Fkw!`hLdWTyo4<#i<*6iEfLX2&emz(N(j%Yyz;pvFi1~vdv-|v&pmsA_W$8KqfkAc z-Do(AxPf!EfPf;Kr@*1tfxpLnoyU=hCvyQfB1)mTQx3Ej$7wcFAP5_5;DbMq- z+5OBxYP*Enu5`Esz^ytt&Ta$D4%qD=U9O6co2-93R;luPQkE1@0Toen2v;Fh+Ino?v=}M2g|q*6>Sl*^y3VjC@m}hb zR{}S{Igq2~{A))(NV&CJ-*la`Gfv=+o@>&7=){@o77a?BOx%a$Xr>~?(6%HG zf4+E2C)nfEv@Iltu3zLbWpsxIj;UTi8P1V?nUehblp}-S-vC5a{Z?rD%i}lKp8!d& zVc)Uj>30%1Q1q7r`%1+VOvN-fh_k(Nlz-b^CYZR-VRd&5=R`*l@NS2PGtNy53jybT z^bek8^d<1OW9PHwNt(Wg(j#??_0X7F_>3XQFtz}yS^)qKqZkg=tpv+Rev=!#t-mdr z4#thP_XZ^EN==%k*M_p;046ZbRRw05p4Szzo*O?6a(a_JuQq?|)=L`G@_1A4*Y1$O z$MU#sxb(Mg!2?wl`G0xOrAh@*w$+AM8$`w3F?z}XfW%zo_~}@EQ@eEk<3eKEdmW8# z>lPH8YDh93>kNEiI;&JsL?up9N4yOO&P^@u_;B07x%DW|#Pj>h@g@&v`uk5+G~qvR zb#DyrlPEA^NqtUgsDKdeK#=`qj-;rd|F}?9*KAY&BWq4ELk^XMZ;$LyL6>Vgsg3Hd z#&xK;=AKsm<2$QCc}Be?W5DSzA)iCXWXS-3@SeuaQdcb@=lO?qjQ{ORi1f-#TT;H+ zCiL^s5$Zg(AI?#9svjgFyT&Nd{518_wFe)GiMW!NXW7bavBn}S%n9oW5Gor1uTC>AmNvlWdmze@9MiNmucLR!}-%e2j(+Sg=4tdpSo=$ zd6GEix%jr45h`Ga8+GPCqb3?hU14;LpuXdhm@{i#TvA*4R(QT18C2u>%L3qHbB+KI zc8@^=-==gDD3uNP06A*!zxK4wYx8wQ31XlGyVrS5^7I)^U2$n+kE+u|^KI**Qx>vm zs~FYUvgIE0I|h{6sDT2cIpxRi#1CQM zU&-|SGax`jTKC2Yxvgn%Y6Aqh>iOd5DFC=S!KbTlN0_gxVsI5*;vgJFtD+mqTqd6; z!}Z7?(osR^F5%|q*547D5=1$$5ftET0pW7Fs_@(>_{c2G6XKf>C!hAG*d2QadH>;m zXCD^2SeHv2El~h`8sPxv_6`_-aq*I^GO4Z3AK&}-ukTg39PvNyd2J&#(OGRre136f zCeHjAGc(^`FHa2GUC)}%5X3|fronQYtLvos*EIhx4=(=o(f`*5YyUkTjjJ0543Yly zoW}w@f`+da_~~hUlADe#J{aD;v|HEk#-xEOTBXULxp097iR%l%qxP3udLJDBTrLYm zI^jXbHzK9_&;FWjkZwC(0?6}g@B!XJE=vl4rP8(^-x)28!6jxm;*#e7n7am*T{M8s z+nEBjoaPRt4Nv=4O&Z-Qfd8Ea5r&FbkW@A+&hESXZTADs0m^A4+EYX=f%RuL7sJw)LqkpjpaR9UVEB^t_nYn!#-%+5TuK9dW$}*IS2heN zX`TW_rntDKU@A2fFE%krz%H7ecV9N7J&dHxVD-hNYtPz)dY&FFnI_(kGaezGNfd>PkQWhi*C_wmEZ{lZ%+; zKVEPpfd#y?v%BZI^rg(ANF%e63HB2DO9aBDo-sNhVC&bXd<=G^Lu(m`OS$gA=m=8; z9rR4idz=n-7TVZQ!?Pt?rbN%b1zu@vFt9@v`|eM&Li9)i0Y8-$8^?`(1CU#azmVHY zf%a6$U=oQ*YIcuKPzAKdCEqfpXEgO0^sk^s4f~Yshlc|4^6PZ9opu#pA7;3zabJW8 zLPw8ty089nx=hR(jHq1$f{O258!SkOCyatptZ543R9CSPZp`!g^ zc7w?|s9N3vU}YAAbjA?b7f`nLlZh5NHh6;+Id&n{L?+`xAV{!p-W+|FxgxOcOn#>? zy=W&|?21EoG&@MuLDH_-vahXg1u`lITx&~7Aes{Z-n*1?3C$5fsRG%iwZ zujQuC7C)z(_s|-yt3lK8M)7vwm7C_*^!$SR4s{i!gxUPjV{{Hk&HLv)5!A9FRM)tJ zbf0|Nx`ro*L$`*Xto5z`*O|TYdF4~Ul&Yckr$a$ypaBTNdgD-9(%vo_&d(<{8Rz{l zCNm(y-wGn){dNZ}SIwtqmw?-DKmG%L0AQX0k6$czu$=iHnZGAW>vK;)ZaN!VuSUDU;&di_h$Jd9~HEne3$l{n4q;u(d;la00?KnQ#|jI*P-|a>=nZvid3>8#kY(8 z6c#gUTnY3I${l0Zv_tJmZtgS$Ez2nfA&%Gc+v)#6rT5!J0K$uOxvV_Aya12&R}DT( zbN((4J8--U)f2y1DFPsGfZ3jzz>e<008d`I>1Y7HGgMJZ`{I6^m_x6*VjL-wu!7TZa%$rj5&av z{nrNCx>K1yNx?6o2qAG6%o^%=M{KW-QBS`LF8h-0tuNOp?@HiKok*FLtnTwhrN6%Id( z-RM4N;mP`5P6%L?1gQ#ja!_05ucl{M+YIxX0&iPjw9tJZguEE2M5dswq^=xCQ(SH9 zRk-U6$0YKkxAbtr#&+MOks+089vof@d@PkgiBcjVSvlz%Am@@~RF*tJoJzjx52F~e zhrE3w`zB5bPMhO~-z#~0ZPjG?8nO4#uu#KZS#=2x#r??fk@SgFJtc9VHz|;#NVqP0 zFdOV<#d2$$QC%~wb_t^#nd0s!x+!g`4gHWPW%y!vub^2#F>9D&#`W^o2wiV@OU;>HsHEE{SWG#U1p2HYtk zZ2kGk6)_%mRZr)8);-c&d>0|b%@2D`ruWxldQI4tbuR|CU)$8YT=S+Z9Izh=cdy`B zNoNgk^y}M?z6EP9mNL~4$$X2Fy+)$tB+Ew$n9C=BFqePd13YMliL^aU$VUJ*)8)*D zn%a&LjBjPiwiV@N@Jx9w+86O6UIO9PV8vo-G2(oy*$K~eq z!q_g!4KoE=2Vs~M`wt8Q9Q_v_cG*JBTw`P}+~ zTxiT6TmU^KF!ShV5_?}$>bVuRgGkqAy#|<;h4y6tBTM!ehg1E=mjhvySjvFJiOwul zj=MB;tM%ljbPs&(B_MoQfv*9D3&i07yz+RE?t@PJ^Es169YfE0C-IqZf` zyZLsF5e`y-1K1>dyRw&8w|ynP?S|7xUdb_Gh#zKdg12d_M>ld2^opniVaUw>`h70% zH&8vf=kirmJVCiaEw)1}O=rhsLpQ>>qGxQ@7Ums+PHsHA>wUMrI`^v4I2Z%Sj{h73 zke8UaPf_8tT-%_{gz_WnaFA?T0`elp5wPsHzI1uid(3;)#oWKs_`ny$5{D6HSNZDw zMDzyF<~B3NGEUGDdCJm8Smwz z4i;GM>~>k{)p5qNpN`UL$ibgbw~cC_?kl?B8qliQftCe#yv}Rj-v%&l>6wVGcWrmN zq3TtI+P#?4x~L#_{?T)F9_#Od#D8#q0(bG2NqG=oPPX<~#m-MNYZv@a#AJY`=FQui zepT2-M(1f@gPnlQPePz)MY>()99SP4o5}v-loa`V)6+Z&Xi)M61AMkBI8|id)x>5} zIX6Gg0ZfL>$!Fp5D)75chP96Cp|^zr0FU#wTP>LRs#N#sZr6;-|K@*}n!-i>3c+kOC)xczi^d-7cjt^(2dDPJEwbLZ0(83GeK-K zEqav$y?kbfV<{76x$rK#)BHIIkZ|MWy#@L5(OU zjDmAM*=^8n&&f+}L=jfSkp@QUToXe!wVdwu zI-UGl+)?4RSl}w81@gJ?_IJ5~T8o<3*jDmnN_{KEwI8v2*QS4K=?2~V6xo8{CcNrX1?}}ea4lK!`{*%s`^rn6f{>)KHQF(r3}J#b$a?W;rsEM6Lix8 z!649r!RrT#s2<4n#u zt$=3+&|BEd2#c7V$3a)_)SdPK$=dXRE;$mjaQ;#4;gc8e+M}n6Q*dQ_OQ@b=J&YEQ zI6_JfHO!Dt-8}?UNwIFGG-I=>rfx$oYkiL@b7GFIiIG(UH?07Q)!OSqb^j5p;3~oR z=}{R6&Fkbji8!94(Ze}Rmpi~tjV4M@8rllm$6h{SiEmPP#byOm0-u!_#dp6fcE5aD z!GO>icyz+x`J@0MMLLE5sQzv)P=dL>yH%@c?iZaZ3{!HUj{0fUk&6Jm(bagz9D9V}ms?IIZ?KakRe^ zW;ZBitjF3v*hO8*=d5%c;2J7|N1x#OlmUWnN z>V2ED&(>pXu*Rx1fpvc)*FI{&6O#&y26~Ax6Sv#FM0^kRdp3|WQqT|HrW@r%#6AOw z_q$%78#%WuSBlcbVT9Spk-R4U0DNHFgvM39J=vRE_yEYybh~uF#>Op|V!aZ=L)xQ$ z%#(Ki_g3%X8+lynoUX75OD)2~te``D?O|q#R~MY$f56`N$QBe4;dH+KJR5sFZnU+> z*ZPcN3qf%>vos5z_w74REmjQ0Etg83V9ExhSUZ0X>4R}R_oYYKGjXzoT@2)bC~bdn zP{!au^={+rT3(=^*R`y z)f3R)E$P*d)$RsQCzq>|?y^5;N^0~}e+E2XULNPAT@gE+TqGwmineNutOL_#*Y5wk zAvvIS#KXfqsOA~S{?oZzY+J{?H)|f3yQs6Lu^`X-U$Pe52-FhWorWm8#tGO+ub+Vi zavgoH3hK}?(nO9NGq<76LxAN>gSf+%8)y`ZmIR3z$C~ppHE5YHD^rZVdsrzS{W8fS z*=f4}vaG9wQ-k#zdKTZ+)PP12tM%heSJe%DeC3!q!FQIsOY61chGsSuIL&ghk=_P~ zwUm%gkY*cR1|Z{?R}{Vo+9Bm%%K5r?@roN_)j;Cg@lm9(|xNq4wKp3D`Pw?;8W1{kliq@15P7ASMxV zs0|fAUSoCQT~!s1tQ9o!P3<(S-M{ZpF+Pp9xd#(jr3f0kD|$UL>mF_|_}O@MQng1P z-Pn$4(BlR@00TH^Z#EC9-kJj}z%~#J`s_l~83AlH64RaC)U&c}u$(hI z>Y^gXVUxMi&ze@FQ^ zOS79;hi@XD8DwMa8wL-O!pU#dunzcfR}G(fs|K!!g3+)CbP$@qz)e-Ep425fNVkwZw<IJp}8R8=K5ad;%;Qp}Sf z6Za$2zJ&#)n})RU%`wU(eaI>`?itPof(@@FO?0Y0lsbq?HD5}u=$%wtWb<)k<*A?^ zwNszqxiG(;`gMEsH~>oZ##2Ey+G!y8vh$g#UeQ|`iVwcRI!CocM_EG_8;MQVVrHu} zEa{;FqGYhQ}V^3uphBj{H9{W@C~Ho=4`b4=Zgzsl{4&0BN11J!F# z(9;*;Pl=DUU+jE@59FCzm&c{cxh^D{2wca#of!Y=i%Zhwcv2-nEFyeWmtQk~a-0pH z2NESZDsCC3#O4-mN*0_(;YP{}-Nojw_%uM~P_kA+ipzA_6Xgii{MdxO2TlgD>!x?Rg`C|ssC4nj2GaRm%qatZvTlE{89Hq q`YH+xU$wgV}ZmgJF2h#0alAi}S|9{}@~}m9Jp(TaQrSFFRbWV6~axA77>iFEE&+ z80qMV=47pv&|3M_#Yh0d-OEnX<e+QddNIqx@;=s?9EzJ?{H47zL3KfwQ~a_qVUb}l?8yf}_*zkYc57=MR>E1ov-8%>z7|c(ZXR#k&M?@Ux zDPv+}3%Tx2Fn;*(VbQbLqF{eqb~ZLwub`LR)b|+Hn@-6*{MG;BbrX|BBVoOuE}U*| z-7B7f8L`Z+?9NWjFh2R}%-|pw?c2AL+uLum@JKIy8m9<(d3m8v(pE;pn;h`F2$z^X zb31-Y8L0`PPURM`x@)x8zneen|L2G3^Z>pst6jzcAAE$B<>t-Kuek-ie@ALs?x+&o zR{q|b?kiT_q8DuCJbn7qe}6tJuT0j{r#nubKE2DW!e{A^hQ9tg{_Kw*HR@mSbp7~f zc9@g%EH*ea^w0Ub=H}+sT^XwMo&x`qA+`5g8GnAVBUkFclS&RcJxLqKXc-#jE-o&z zPA~-CJwN@{_uGs8m1EI{p+s(OZd#9?DWz(8sH@1lX=SPRWml%Uppa0@;`swA@e=l( zCDvUk!x=8dGt1S>vZGrkPoAVtI|k$$I#irYCbhl0sC?0)`KXbxLbR~))Uy8rOUvBy z@*g61OA~it9;ejD-Mn)3s<`Enoqb=?^;*`TI=_LIU(OYgF)^8qjW@4fzkXI+Tt`Dg zqmEkL(5n0E^CKH8tJ@kHZ?4!$q^D&F2n)A5uClPOG&VMBdU;j+aVOM;aa%qufBblx zxR{vLVEMzkbyZbWY3JWBlwKXlURm+PYF@wotf;6++tjq+*wyD&&9S0I2DrKlT-@A; zxw&&k>%(pT{P@Uq;lYjgX*(MmO4wnf4vUmiT|N?){w581A- z%yFH+tDrE@-rrYjsdMK}R)4?2VRm-v=SSP)EfE`! zrm@8E=g%2=F1xE_XJgUDepu z7E?3wy2YaF#r_ka3yKlWE-r_;xN^Qc*+qpXk@lmP2nY(g{rt=@I=IyGHX`B|o_IM& zByHTqtUXz==+3#u)>hbnjx3E-G0(quiSr(A>%Alrb+RKhCqKV8S@FpsF0TF&pA+Jw ziw=0hCyXqeAI<8u_4G3D)jYReob2#laC3WA_MR8M6Sjfw_J+|Q$*puNecVM%Q1Dhy zPfy)P%0O#tZ&wj3R#nx$crd^9<%bW)RpZ34urgYZbiYPNVNH6+IWEU+oWeeP_6)7F zm6cUc4TD;uOg6-dSz>VT9(|l{*b%AD*i3>OH(g{v-q>qw%cq*Tp{-5N-X7Q4*}0y$ z>|I5NnjrS@*EPta?3^M^zC5FBC{2CS?qg%)@S|$Yn>T|$q^6$4=IY`!O&s#o*w_S) z%NR*XNzvCbRJks@=fO{VICxNSp^HI^=-S!kLByB%Z+M6CT-Fs86@?djQ4R8180RG0 zudc4rhqpFN{U$CCYuvdL3p+sj$}Do`!Uav;TpemJPD@oaY=2{!{XhoJ5N`u7z`k*b zS-n1R@Zd&S+n6(@MRHhMP3_gMU%w)gk_z_8ueZ^=64s12B!P*j!CG(oz==HF-(Da zKpl%Q)rH(eUjo%ZU4BEGlasTq+HY+d@3y}3aGFfeGbzwBtAC|qWtAnj@^d??moHzw z6gYFH-7?89V{y@S)GfjOsx4H*#)bybx-WNdy6I_YXT-!xn*997n>l5-))(eIWgz*w zhpK!^T_)7bA3Q)|Tr%H3dv%f@3%SPulgouR0~v0;JVQn$NbUWl6iD7(GU|G>_RvI3{8!BnA3ltpI5;@C z^ZT0AzqD2D$vu^ zjDQ%W^%^>!J$CF1hee_Lv;lnH`uF!Y=ss`Wys2$$jGLUaI(h1pz^PMpvGpECZaStb ztzlokUV$#94xOW-qJln|8ZPEF|G+FU|J5)&DvCEqM_nVM_Ygy+9`0|(_`3A57P0%wig4_GmA&;ZEQMyW~(fH6$M2^NT!?f>@0k8 zgG?_Tbz46Avjy$7YO(WHPF`Ll*?|P5w#2NS6?O-0UJVU3Gsh}gG~+(ryqp|?DtNM+ zYHBF?x5=G0@ur-F`+(^HQFIoE}?0zIemJ(kR zEZcai{(fclUwB|{-f;gTY7q=P+zCDQPxC%MTlyIC+1s_SZEm#wB=$)}1V1)j!ckYn zF3+KSgz?$arzqA(>%t814hfrcYr`?LfyT>FIY~w?VR;hqgTt(t;cEMM2l|Z1No~%A3F-Q$Yr863R30j)h9y% zTYknq)1{SvikkSbP;z_B!euj{#d97u)X|CJ_5G`OlAphX;0K%3PYfVNi^K`f{+ek<>@r`Ae+B`arW$4@1;IVamOJU7LM}@x1!H=o zlF}dcT?jj+_C5=06joDV&39{agGtDmWx$qcx$oGDpNW?0 zx7n&?E^64zmmPqM#8Ils8uy@lYHn5u^Ra(cGS#-2BR$1;owDGRNWkXUyzn z1O#$ChP;%CfEh#ClJ=iavg*mv;gWQC|Fx!OyWDt&T7r$87W5($-?{5TCZEd5$Ici} z<0~traR#L~@nrXSjilyyNp+D=e;B{sh8(kh}FQS z1YDSwU`bC;?=OF7wqRDnShcme*4W(K4J)7d?a_7}z@~m{OV;!fYo+Vfr3T{mQ`%!= zW0dB;;<_Tpc)O=UhBsbhsJ#2|B#1RTrP>5~c7LT?t}x-xg;d&Co6@PyTOv9DaMY6I zaD|2EjlC)9((Zp^)5aYytSwDzDJeZq8@Koal}$BXqQx-*0zvcMy_C5@*nrDo0D2w9K8he3I|xm;Xa+VH+_->wn&xo5A|l$h(aK_wFRS+X1DPN==F z0m1A3=f^Sp0D0QpO6av8FI)&3!DM%~7WCdd`}UDU0#=(?<-1!X{MT1lYjglXxX%n` z>la&a&c1B1SfCzfdXVVi<><%fEC;#geCY@(o%}4^5-M#n3o7yXY)LLsr+f#<31)4X z<{tgAqGpkaiTQw4uq~!#7cN{_ubhV3kh8ilL4`z)?v}|rDlKgQPyqn=YyOt^Qd%ge zFHbX0sT`#}Q-?)_&<*v9c>7kz#6t3Myt^S&ZZu2 zuU_%W8tjw#8whwkE-nuBn%Gzlzl9b_X9Bs-xiY7%vVRL2V}G$_xJ7g9Jy$=-Vj=ya zYbTUKC!J)`d;?R*dg~K_q)rMrgC#(eNVdi&7{@N-fDK^@n59Lc$JF zT;1u_&6z)&>eYL4%ko=SoUCO}H7(<3ugVJvsftuBMzD#PS7fX?~flp zlKY?cZtI&UwrtY{Op@rgqz_}KHmYS1Dq+E5vA*@01%xcZg6l*TZFR?>{8Z<#{i*Y@!{vx&$h6}g9KNYbpdafv6d*j4y zOB~43stM9M6bc2V2TlAg+%5xC*Keb9D?*vYqszY=-l9rZsnZ&LjxEH-*7oF1|5yGS zG*W+w^;@WTQ7{qE>2wzpN4+&->L?*KaCX#Hx-?+Re`7II9@Zcyr;*8a!n=9()$U=R zZq1`>xS}FW7|3}N<*VnRV|aMK(KRg?Xm?Rzz5_4E4PnRbuPyQ0*x1bbRKtpRd7mD> z?Y96kGRMMd;=&x6`kf>#asL|=%aKdBA$|qUo$H3M42|Z7x(5(vV?Ksxr}Z$YDcL%t z_5&mkCE}K_Xx+z8n{=u{iPf9@@?U#^Dwu>RxW}VN*!V4k@eONm)|Vs^`1Y)QwrlsUz;VG zTDHDNco6~AC%g7d?UG;lB2{3j`I&ZIZ=00==&xV>-HsE2uU*7MMARLtS2F-bW^{LJ z!_Z>(X{ch)gDw2BoO>PV{*NNVO7m5}V}qe)t*2jau(7daz#!@+lgLUs2!93?i2f{} zO7|u|PwcYwaOV4mJ(FQOBPw0~ZEKqjeQAH@yf?-HZgjv*e2C|8IwCRn`B&V=uopI$ z{7w`a;NqlQGEjOz*+1ziol=U5in4Dc(c{b2-QCMNySg?Q^WEK_ zs3w(^h@pWOSC1EtZ|Q}4YkY5KQJbXWP#)my>q<&Cfd48-o^y-&(Opw>@l|6>Yy@(? z;uFSfATnlGqxrHPHFqT}>)JRl3>Dsc0>By(2{3Jt{nw@;+O!oF6$u5DR*wSx{!D;ct@2HAU6=<7Blk-V!GtP;FY+M|4aI=3%Wc5>Alu>g2e3 zue1+_?VQ>Wc3XhiXc90sPI&0{9m?RuvZ_B!G0@^uWq8AfIUWK1WxMpJkN*3u`fsO8 zp@vu1De3_>TKhff06>p5M%C>K0$KuwN+_cz8#pl4fXa2WwX+HfZzuWFv(w6iyo6xX zrXc(VV9O2YvmO$uiQ;MlA6D|T6@vBKwU0NlX5=;yL(oi9U|rqyJ51dB%uy*Sv+Mg1 z7srJ%8wR%S#wfuyTkiY!@59YNYd(P=;AxjD$jZ8HVUYp2K`5r_Bp@P~`-%DKy-iVZ zyQc8@m==rTzLL9Nw&6^PCVhQ;)PXpviX`j zpqlKmGF|u{L{0^f^WVIAgQ5%OOTx&U(Nsw54(Ih&=*#hvjxaY8v~_ggmhY`g*Q`!X z9SI8$C&38l3WG90A;b}(FH37}>*$4EJ2En2@X7O|+}64aOdGj?MS--W|E<{<_VC?w z!}ss6p((*I0D!Wmy*>Ga@~g>;i9{`9W3m^I%S7=og19i(3SPVjqez0Ln_DTuk-&m+ zG;v&b@WP@k5!aKe2fSZ7*{eBg01d460}`pW92-{)hA#Lvc4xQfIs4MH;n@%I@Zg$+ z2`a@Ft&8!FK+p7-+QzW*O7my0UVA6)mLuv1j|dRR8)_+#RvCaB(12N|!z+iyV&i1I ziU88uD8F!}SnX=zcIfo_J9@G2bK-14Ps1*-xoOMHe9UtiL?o2}R~6 zVZqd`M+c#PG(QlX|Bwmzu2X-ZddjZ+d}2^+5jNyAD~s*S(=T?NE+r+BBw*lIE~uvG zpddtyuBNZAZ_L{I<>A#=)hoZ4Wfz(+=HPHTuC66)LI%GjJxgfLetNfBlH`eGQ8|k^ zS)a1^YMF@vn_j8sfY$8-h}mYH=;G&?KK|EzBEiE3Mlz*kJ7?!2sN%gN>R(;mR9w?8 zkG+knnT5s3hTDfBi#kJ?m6&D06jB66Czz>6D~!4w2Sw=LBTH8BUz|%*!Je3 zXEtkgX_H-c{Sg%dpuv8ijMAaZ*Q4$~|JI%GWE)OI`rwU(HxUsZ2s4$pP<{^iE~tia ziQfcZ(hI4+-9+7|Qd;@6YFrvr2X4JG)kGP6J)?)uhWyv;qhexq`I_t~+A4rn3!vxU zK|d#_^YyW-C7yHliMfXjiwCCB_*i1m!nH9Gu$jqk4J0ip%At3A$!7T%ji)8Cm2-96 zG`K6uTs>b5@QKi{?TvQ-@J>9P=y~Pdy?dyc4=*t~+qvrC;VW&?JR^Gl>9F6i4!pjc z&y18KsrX&fw0kaO89-)xdMV83`mmI@U^uM+$R4`(d_^12qyU66N_AIPSA2j;1|$m< z^oi2F_yOG1lnpeDG9UGW!#y4y9UT+C;*qmC$yr%hfip3`))-y$PiK>;z(hn{xpJl7 z&)%afrMh~k{J=-rLc+95Oq2Pba!wTm7ejR?5d5O_J-T~)8}ENaMBFTKs~ULd#kWc8 zzu!+tk(SHGipUQ5KkhyXPlyB`l^q7q3zsM#>v_9Ox9EBR05}RLlfLuDe-H5RkR4X5 zObT*xbIptUwh6dsX}yIMgiIq_vlnsFo*nuzX9#>Kq>>h)gdnZ#H=(Mc((FZUkbAu` z{Nsn!j%O}?F)-o)Kf%LGAj_VX?&|S>8@DSb==pQ^{sVeCI_W?fKYRXs3dIC0I}XOl zM#sd3>;Z2AFE!*3t8!t8liK6?R1b-GT$doux01_=_rQV9aXFO*-Bo=~G!AY@tW7HFbBdP3+!q`S5Q%@u&eEYf#~wE?n{Zz-aJiAkoiUzD#Ig zKSf!8#qw2Wt7|zxhhy?2wBvTfbpY*o8+bA0aNeHI^jjMahd92=VCakhDmzk@sieh1F6gFzcS(voq3W|k#hV`GmI!8*7S`?22Z(goY)!LGCG%4UVaC{>ZXc{-Lj$Y z(S^m+h>0%Gy=y$SdyyX^#fV47sy$haaG=A5ZoodWlfAI=%I9sEpTD|D+t^GcL8DVq zg1=+Vb22bvFrOdnI0xe0+x>;`-~ai+|18P>1jGMJ8n7Ms1DS(y`Bqm42KR_y5 ztmAehbo6omFE7B22;e1 z%21i}k*hB0j-)NKAw$4OdIVvoXnmT_+X{{8j_Hvb*@J*IaBM(&H9xH)v7xLlxmRis_EAqz zFTZ;lKb#Le4;Bn25BggeE5&TO&mb8IhR1)gMPMnwRQL&=v zd0Qf06+x0juW?SI7vikq9V)TlTmY4p1QJT-^$<2h&^uQc0Z!?7ypvh_Tob?pG-nYJ ztb5kb0ED2l=ig++VS=^@!T?UcxGuJ!iegL37ti1WCIW&&lI;2x?h;l$S$=(F-_2XM zs7@+(JWvxU{|@6cMUuE0mNuR&Zr*rE$goTW?aa8W*L)iAhoSjZfB!lGe?@P3`~Lm8 zklN$e;IJ^%sUZyrFF!}Oy;%j~$Io~_)-n~=Gvc^?cSCfC5X8_z3JaM9C z3!v*x)6&z=iis_LY8vE1LBRpyYl+u_#Wbuph%ELO zWsektCjx)<e{e4(% zClL>DJq-x9tjfyD7VuNJ+7Erwhmk0PACa4Nho3!SVqwvN6wH(qvA45>_)HkCnRd4Y z-3^U$Fg${u2UAdFLW2FL{3?o2lLUAMP!>THM#LGGAdw2L9oWQo2C9&eQ}fDeOuL_1 zU1$ePbfv%<0!y0K0?#r|fz`RKtsQC65|<9THshy1kaX0AHhEG(z=rL{a=?}c!T3!< z)sjK{#Aed0zaET5y&l9hV<75tz(mr}&;TQl#Q4kL;Q4qtU@CwE?>fGxeuNu_(cFC{(xd;z!T^Gt(Cj+`JNX5Wk zFnj*=vsKG1?xMKv-^L_RTq%xO1ljq16;vc-6#xo;5#-Y|!ovAANp;rhR#uZ zW$raPW@f2q4nqSjloUiF15LM)eKw4^7)>g&mMBxffnzX*;&yidi2>%n*t1noVuwro5skq z$Tf21N>)bT=7;R;hVs?S*$G>qZ0G)NkmpVLeDw9>Cxjn#8^MAUJBi!(i=}5~?ke`g zcq`nv@d6V3L8$>^ZQ%)tBKN9^Ynrd8nB=3jC)e+A*11b{8k_SJ18KrU@I>GcBL9iU z7;w~W!!9^ly6|nd9TU>f>^}Ne5DL=`|CyYCd1$?LHJaWu`}RN~X0ft&*uZd;D6gG| zsq8gjcDKY^Qf$%Eswzii)Q^ffH2riZ_!Qs3JpSg9kC)jpq&6vr1nx{$c4f=(?J^8_ zVqZYOC~WW$Ca{t@%5nBQ@?dQfCe2peieH%s4h)M=xF6{4a% zc`v(Q=-0Pa0_@|^wqWihjn9Ur1&B4ThPlD&xQjT^or;5;`bBbR^UqV z26XUPlND11!T0mSZFncJ1zLb@6!o{}$C_xUVL=rI$=gQv~_Pt7gq z5D7Q4Na+IQGnBQd(3PUO@r#{!``Wdq{`9V-rS|A;<+s}(?@S&B_mVC!to#6n^pLVF zIt|z95GNU(09x<;`y(x}qE``bA?mj}KjytM5=8r97LFWJ236jrsD_eEd{mJ@3r39+ zpdyg~25pBY`W|@9z{4_G5w^ogF=Z#S0@0&ORni)$P48bXPrELYJ#2xog4&&r79wAz$5jybKE91iZ%@-x>!Bd-lU zY*1$RE}yvRjnxFd3bGP`2?Y6dfXi2xrA6`vtUm;&!qM+18QWw2L*NuLKNQXhVqpgV z>WP)r)`JHR3PW}#??QQJ+7F6||K>sxcYvOr9&olpnn11HZY+k* zA#|ruAz*!!&uy~(*hYQ8dQd)q5kSrYXT})Xi{bf%_W(ApTxh)vZpR-~ssk8=KugU7 zo5&PMpzX-=0$A%i2>f8=n4!&MCcR)CCYS&JFD>q*S*J^p@$tFwj@9}AWFih7JeX=* zP^Ig$JTsl$!uZd%5@^`VNZyQ!I*Dy;Y3YIS%uK~+EK1L{MV$0~#OciG)5r<** z#Fbi+ND#A!*T*H5aybGwgHU&BHxbkUYlVsD$WFkPoTE7YhB4=}=gu{E(+FgTe}fQ& z#zkQI1!ZIgyT`Vd7oKN?68Oade=7o{oHSt0v7KR(LubI{tIX?lZRgIN;A+$b>YVM| z9b_NVA`$P`?(qX76*60=!wy2DYV!m!=3S*Q=8N*@ZB805UcKrKJ}g)Q`(qriL5lzr z06)&CLKD0RfHE~yR6-NIr_Rc5u8e}?H_)1z4?3+G z84NFgiv|?Gn>TJ);VacxRr-eyACe;{z*12;m6N-OatgWch+At!>Z{8$x82;_ZZ~dEwuI+1Is{}r zqFr*puXKjG1!m9e0SAKW?5BlSygq+Kk(mng^#4FFUW{yr@D^pXLa0%+pl8p{ii&>J>)p9{xVkb~ zWJjh#$8{!{DfM0&oQw9?uh=$epgdYgznY)`!{i~Hpqi;&-@Wbo;tdg$1yZB+ZOn=>+OaH4$X_GD=>^V zHf2xQCv@lYv&>Wx6`?25$PanNZo?bMY1a=`5ARIxgh7Qs_CK6ku&wOQIryUz=_mtp zd0{E*o$7`1F>=4(Lg^8%f4)z1(KY`bN3(jgV$-r}FO|k+mhY>WV-AwysAz`Ap?oG| zh1uN?j#i31D0L{cS@j55AF+hp;O)^6)NKkl$;r^f{=tCNCg#D@g6JoMeoQ(Ff8AWK z-)(~1OkR$b=`O=eia>%0;A8QIL;8~dpKiO%9Q<40S)Xo-^xFduT8M-b$s$#=$A1Cx*fVRlnk6?u;tyoy|vkwanZ$5i@2Lb?pI)Xra4o=?O1FC8 za0ql1uz?>7syUXu>am2%HJo*Tx9LLdMVtn(=_jF0j9lPHCrTiyftNsM<)9vci3-_V z2M3K{q(Ub{kh45!;2#j-twY|yMDgyTW#~UY`W69-g648YT)fAT4wfE}Y&IHMcRT@> z1?Y4*h<6OEZy;kldny+2jUA32!7L820W!N29BBOSd_wVg7okAA)*jZg0y-TT`OdN3 zikTqPk7~eLA7KpwVghMdaInE_6-Zry)+Vj1epO&Z6SHbRiq$mNi302+o_F2&C%BD% zbf*Ec5RnE)prpW82WG((i0&o(+&SPm4%y>#!5a!obV51w(lGwZKKm|=G?Z*NILk9y zZ;j3_f+N9tcBl$yiT)}dJTmt{JprRwZeCuqXTt0(co&fX1VoRq@KqaDOXPL|q6YAK zI`qG((Qx@*a3F#44CXKAs@3s$aJ9|!N}$%~NZcrcfQ*8%khrxm%cIuT(9kiwxg-gU z@t0W8TipFNS0~Vb1?M8x8(9}6fZ+yz=N*t>UV|YRkQur?&idZ~+!oP|!ZD$`eTSA8 zMR~zV37&ayQU96)947&nZCOPDJ6|^$g_kgXn;nJ;&fDBpZ;s1ZEVRi)bH;qorVr7fyhuvSi5|UnJrKP9qa-C z0{99Z=hpDn=CU{(M#Of)4FWx%2GAAFbSM!Ke~!))B8$A8T^>4~1cy$nKL;{^R-g+6 zI|x_emaRv?Km0sF2znr!FWHTR1RYsfV|BUJGza2_yO}r8b4A6);tqr5?)VgNxy^3B zidn~FAcK*#y`vEWEV$H4frVHRvz1naXkDc?9E4QL=FM9R}U!ViIV1fN3m z7^o^rO_=t0B%i?GhfZO^U4yaCd;FcHHt-Vw4{k(2A|UD>D;p3Bz7^}XL|J4LwUaPZ zn1BXCLZcnng5jaiEUpFiLy%ZALEAzP;6gNBhBE;)5`I{>@%x)#u+;s%SK~UhXq_H< zBs;F(09A>`)deK=fgp*%M{wwi*8`&(FdqVM7}}dN($Ek`zDkaTo@@_26{Qc<8W6Vn z%k1O9JAW8>1@Pd*B*@va2Dfi*Z4E@-d4Z<<9YuTL2KO>9xv8Eyb&9L$#mko(CMG69 z)WU&ju8y3BVW6leu4ozoR#hy~u`lY5iOG;fWdTjiX2t<~^QPv*kfdoedO}+7zQYs@ zu3KaO)iG(esYuv%w9ya)kQv+yE7eD_vM!-SFhB!u83~9cLp>=Ux$-pcPWZrh`tXY~ zY#~@^5$yvuH>8^(5A>pa(_2`?m4~C+ng%&=*fxwuQVq)2O-?CI2v=(gC75ZS9xN(k zJM4%}V0_f}rgIg#%ipzuryv319GFqw|*?svK}Et*4i(tLE!hZBxC|SY!^X?k~FT zV$r4x?e$bB-|(jd;TSGsVPZ1J!GkA!FznRWM{vit0Oi+(9{>ko&Zkd(lj_(!g|Z@T=bUeZ|{{STBlx=TYE>asdSws%satJ49jwnR+7vwh^6lOptO> z>fDkyF@rW3@xZ78v`PDOA^`B9?$qHs@}uuDhS#Tpy_={Ed5*+#ur44II+R}^t)>0f z%jYVWGVq^vTie*=K(xCqPHMo^3FQ{)m!OnO;QlE1^k2>ZZ5}!j*rda9N2)jJws4pV z{LW>B_d{}Z+od3r6>hfZiOdXEbaC*xQ_^E>K&s1ew0aH3IS8G`1T}On&~qaTGO;IG zDDM2d$5)8BC(rls<-<`7Do|rB10!=*TQG_(OxH@th5<0K|FrTeBqENm6N%-(9}2)o z5+P>y}X3XqDuPy}+}cp3CV9YefBkCwV@deY`% zrm^tomhJ3}+kux~&%ctdxo637_gERf1vewJYTij*i7U$2zm$6JHhD(68}zJiN7jp% zJHygnMs?(gQkCC-yYKcDf5Jzhd#ixwl4bD4hKrU%UiHt_GB0-8l^6-;fcj$CT}K6n2kN7x&+Oq~Lfo2zRYfHQ1A2;<*pxU2CGZ7Vyh&MSp?*`1k%HCZiAYmwn|5Mn}zzjf^J8$CXMAgaovH3=VcrPvclw zStFPHHk!w@vvtRor>hU|*?BUwqoBI-f_#)_seulGteZ=Y=HIDUSXjT>I$KpWx8DQ1 z;YaafxGQZI>Rd56SQk*WK$CH_6RIbZ6O2eduQq& zei*GXQMa_T%;~Y&P9zYCF`^d9rfoi-W-k5oX|O21Sn$r8myd7kl3LzJ_R_kbi6b6W zAW<8enAmuDcue_@uN&RtXmlZac+>=VdfxsTYvs}OTwVls^whmw%%4?4MGx8vrv*4t z7jK<<+c8>GZq}@I{7vj74**Rmx7(+tVC>BArnuJm-=DzUzkl})-08+Z_#L!3)(aaq zPFb?vNStU{ByNE?8+gpn&`?@Rs)ItwF6zrG!{bZK%9c7Zcit&hv6YFsSxetbvb>7k zx9XdS-!Ydi)WsD(AU|6?B6J0V!88Ge#9*TTHQSy0_xEMofuRV4Dg4iG&ET}>3KS98 zd)3&~G+@yh!*PLfP$E`%Luq2syoMG1LJf0h5C7#=`Yw7Kcuj{39|?u`VzAfMuH|33 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/9] 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/9] 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/9] 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/9] 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'); From 74efd7ff53869e1bc9f2fa9a4f3ae733c6f716a9 Mon Sep 17 00:00:00 2001 From: ShaneK Date: Wed, 11 Feb 2026 14:15:54 -0800 Subject: [PATCH 8/9] test(modal): reverting to for loop search for shallow nested objects because stencil's test mock doesn't support :scope --- core/src/components/modal/modal.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 6e319e7b3c2..dddd7bac808 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -1464,10 +1464,18 @@ 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., // ...). - // 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; + // Note: uses a manual loop instead of querySelector(':scope > ...') because + // Stencil's mock-doc (used in spec tests) does not support :scope. + 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; + } + } // Only apply wrapper padding for standard Ionic layouts (has ion-content // but no ion-footer). Custom modals with raw HTML are fully From 89d177b32377e25daf26d442f9c3076f0f6e70d7 Mon Sep 17 00:00:00 2001 From: ShaneK Date: Fri, 13 Feb 2026 11:18:54 -0800 Subject: [PATCH 9/9] chore(test): adding lorem ipsum to better test bottom safearea --- core/src/components/modal/test/safe-area/index.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/src/components/modal/test/safe-area/index.html b/core/src/components/modal/test/safe-area/index.html index dadf47ff25b..14681f3820f 100644 --- a/core/src/components/modal/test/safe-area/index.html +++ b/core/src/components/modal/test/safe-area/index.html @@ -111,6 +111,19 @@

Modal Content

  • Bottom: 34px (simulates home indicator)
  • +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse scelerisque dui vitae massa tincidunt, id volutpat sapien dapibus. Nunc libero ante, tristique vel imperdiet vitae, aliquet a arcu. Proin vestibulum augue neque, posuere posuere nisl mattis vel. Ut interdum quam ut nulla ultrices tristique vitae in arcu. Nulla ac magna tincidunt mauris tincidunt porttitor. Integer tincidunt imperdiet ante. Mauris quam arcu, dictum quis commodo a, tempus at nulla. Curabitur non tellus a leo tempor lobortis. +

    +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse scelerisque dui vitae massa tincidunt, id volutpat sapien dapibus. Nunc libero ante, tristique vel imperdiet vitae, aliquet a arcu. Proin vestibulum augue neque, posuere posuere nisl mattis vel. Ut interdum quam ut nulla ultrices tristique vitae in arcu. Nulla ac magna tincidunt mauris tincidunt porttitor. Integer tincidunt imperdiet ante. Mauris quam arcu, dictum quis commodo a, tempus at nulla. Curabitur non tellus a leo tempor lobortis. +

    +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse scelerisque dui vitae massa tincidunt, id volutpat sapien dapibus. Nunc libero ante, tristique vel imperdiet vitae, aliquet a arcu. Proin vestibulum augue neque, posuere posuere nisl mattis vel. Ut interdum quam ut nulla ultrices tristique vitae in arcu. Nulla ac magna tincidunt mauris tincidunt porttitor. Integer tincidunt imperdiet ante. Mauris quam arcu, dictum quis commodo a, tempus at nulla. Curabitur non tellus a leo tempor lobortis. +

    +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse scelerisque dui vitae massa tincidunt, id volutpat sapien dapibus. Nunc libero ante, tristique vel imperdiet vitae, aliquet a arcu. Proin vestibulum augue neque, posuere posuere nisl mattis vel. Ut interdum quam ut nulla ultrices tristique vitae in arcu. Nulla ac magna tincidunt mauris tincidunt porttitor. Integer tincidunt imperdiet ante. Mauris quam arcu, dictum quis commodo a, tempus at nulla. Curabitur non tellus a leo tempor lobortis. +

    +

    This text should help demonstrate appropriate usage of safe area in modals on the bottom.

    ${ showFooter