diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 3245cdc0c7c..c5289278fdd 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -1220,6 +1220,13 @@ export class Datetime implements ComponentInterface { ampm, }; } + } else { + /** + * Reset the active parts if the value is not set. + * This will clear the selected calendar day when + * performing a clear action or using the reset() method. + */ + this.activeParts = []; } }; diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts index 5548980f679..6925a04b69b 100644 --- a/core/src/components/datetime/test/basic/datetime.e2e.ts +++ b/core/src/components/datetime/test/basic/datetime.e2e.ts @@ -327,3 +327,31 @@ test.describe('datetime: RTL set on component', () => { await expect(nextPrevIcons.last()).toHaveClass(/flip-rtl/); }); }); + +test.describe('datetime: clear button', () => { + test('should clear the active calendar day', async ({ page, skip }, testInfo) => { + skip.rtl(); + skip.mode('md'); + + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/26258', + }); + + await page.setContent(` + + `); + + await page.waitForSelector('.datetime-ready'); + + const selectedDay = page.locator('ion-datetime .calendar-day-active'); + + await expect(selectedDay).toHaveText('10'); + + await page.click('ion-datetime #clear-button'); + + await page.waitForChanges(); + + await expect(selectedDay).toHaveCount(0); + }); +});