Skip to content

Commit 9d51239

Browse files
- add activeParts time to selected adjacentDay;
- add test to check ionChange value and component value returned from normal day and adjacent day;
1 parent cd071ec commit 9d51239

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

core/src/components/datetime/datetime.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2383,7 +2383,7 @@ export class Datetime implements ComponentInterface {
23832383
if (isAdjacentDay) {
23842384
// The user selected a day outside the current month. Ignore this button, as the month will be re-rendered.
23852385
this.el.blur();
2386-
this.activeParts = referenceParts;
2386+
this.activeParts = {...activePart, ...referenceParts};
23872387
this.animateToDate(referenceParts);
23882388
this.confirm();
23892389
} else {

core/src/components/datetime/test/show-adjacent-days/datetime.e2e.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,42 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
4747
const datetime = page.locator('#display');
4848
await expect(datetime).toHaveScreenshot(screenshot(`datetime-show-adjacent-days-display`));
4949
});
50+
51+
test('should return the same date format on current month days and on adjacent days', async ({ page }) => {
52+
await page.goto('/src/components/datetime/test/show-adjacent-days', config);
53+
await page.setContent(
54+
`
55+
<ion-datetime show-adjacent-days="true" locale="en-US" value="2022-10-14T16:22:00.000Z" presentation="date"></ion-datetime>
56+
<script>
57+
const mockToday = '2022-10-10T16:22';
58+
Date = class extends Date {
59+
constructor(...args) {
60+
if (args.length === 0) {
61+
super(mockToday)
62+
} else {
63+
super(...args);
64+
}
65+
}
66+
}
67+
</script>
68+
`,
69+
config
70+
);
71+
await page.locator('.datetime-ready').waitFor();
72+
const datetime = page.locator('ion-datetime');
73+
const ionChange = await page.spyOnEvent('ionChange');
74+
// Oct 20, 2022
75+
await page.click('.calendar-day[data-month="10"][data-year="2022"][data-day="20"]');
76+
await expect(ionChange).toHaveReceivedEventDetail({ value: '2022-10-20T16:22:00' });
77+
await expect(datetime).toHaveJSProperty('value', '2022-10-20T16:22:00');
78+
// Nov 1, 2022
79+
await page.click('.calendar-day[data-month="11"][data-year="2022"][data-day="1"]');
80+
await expect(ionChange).toHaveReceivedEventDetail({ value: '2022-11-01T16:22:00' });
81+
await expect(datetime).toHaveJSProperty('value', '2022-11-01T16:22:00');
82+
// Nov 22, 2022
83+
await page.click('.calendar-day[data-month="11"][data-year="2022"][data-day="22"]');
84+
await expect(ionChange).toHaveReceivedEventDetail({ value: '2022-11-22T16:22:00' });
85+
await expect(datetime).toHaveJSProperty('value', '2022-11-22T16:22:00');
86+
});
5087
});
5188
});

0 commit comments

Comments
 (0)