diff --git a/packages/calcite-components/src/components/input-date-picker/input-date-picker.e2e.ts b/packages/calcite-components/src/components/input-date-picker/input-date-picker.e2e.ts index fb24d506249..5c721ab68ee 100644 --- a/packages/calcite-components/src/components/input-date-picker/input-date-picker.e2e.ts +++ b/packages/calcite-components/src/components/input-date-picker/input-date-picker.e2e.ts @@ -805,4 +805,24 @@ describe("calcite-input-date-picker", () => { expect(await getFocusedElementProp(page, "id")).toBe("next-sibling"); }); }); + + it("should reset input value", async () => { + const page = await newE2EPage(); + const expectedValue = "2022-10-01"; + const expectedInputValue = "10/1/2022"; + + await page.setContent(html` `); + + const inputDatePickerEl = await page.find("calcite-input-date-picker"); + const input = await page.find("calcite-input-date-picker >>> calcite-input"); + + expect(await inputDatePickerEl.getProperty("value")).toEqual(expectedValue); + expect(await input.getProperty("value")).toEqual(expectedInputValue); + + inputDatePickerEl.setProperty("value", ""); + await page.waitForChanges(); + + expect(await inputDatePickerEl.getProperty("value")).toEqual(""); + expect(await input.getProperty("value")).toEqual(""); + }); }); diff --git a/packages/calcite-components/src/components/input-date-picker/input-date-picker.tsx b/packages/calcite-components/src/components/input-date-picker/input-date-picker.tsx index 1aa60bb23fd..63bc29aa81d 100644 --- a/packages/calcite-components/src/components/input-date-picker/input-date-picker.tsx +++ b/packages/calcite-components/src/components/input-date-picker/input-date-picker.tsx @@ -158,7 +158,8 @@ export class InputDatePicker @Watch("value") valueWatcher(newValue: string | string[]): void { if (!this.userChangedValue) { - let newValueAsDate; + let newValueAsDate: Date | Date[]; + if (Array.isArray(newValue)) { newValueAsDate = getValueAsDateRange(newValue); } else if (newValue) { @@ -996,8 +997,8 @@ export class InputDatePicker const localizedEndDate = endDate && this.formatNumerals(endDate.toLocaleDateString(this.effectiveLocale)); - localizedDate && this.setInputValue(localizedDate, "start"); - this.range && localizedEndDate && this.setInputValue(localizedEndDate, "end"); + this.setInputValue(localizedDate ?? "", "start"); + this.setInputValue((this.range && localizedEndDate) ?? "", "end"); } private setInputValue = (newValue: string, input: "start" | "end" = "start"): void => {