diff --git a/core/src/components/content/content.tsx b/core/src/components/content/content.tsx index 361939f7c27..72b156fafe0 100644 --- a/core/src/components/content/content.tsx +++ b/core/src/components/content/content.tsx @@ -462,6 +462,7 @@ export class Content implements ComponentInterface { role={isMainContent ? 'main' : undefined} class={createColorClasses(this.color, { [mode]: true, + 'content-fullscreen': this.fullscreen, 'content-sizing': hostContext('ion-popover', this.el), overscroll: forceOverscroll, [`content-${rtl}`]: true, diff --git a/core/src/components/content/test/fullscreen/content.e2e.ts b/core/src/components/content/test/fullscreen/content.e2e.ts index d0d0d1f4e5d..8fb7e9a9f22 100644 --- a/core/src/components/content/test/fullscreen/content.e2e.ts +++ b/core/src/components/content/test/fullscreen/content.e2e.ts @@ -13,5 +13,38 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co await expect(page).toHaveScreenshot(screenshot(`content-fullscreen`)); }); + + /** + * The content-fullscreen class is added when fullscreen is true. The + * fullscreen attribute is not reflected in Angular, Vue, or React, so + * the class is needed for users to create custom themes. + */ + test('should have content-fullscreen class when fullscreen is true', async ({ page }) => { + await page.setContent( + ` + +

Hello

+
+ `, + config + ); + + const content = page.locator('ion-content'); + await expect(content).toHaveClass(/content-fullscreen/); + }); + + test('should not have content-fullscreen class when fullscreen is false', async ({ page }) => { + await page.setContent( + ` + +

Hello

+
+ `, + config + ); + + const content = page.locator('ion-content'); + await expect(content).not.toHaveClass(/content-fullscreen/); + }); }); });