Skip to content

Commit b40b4fa

Browse files
committed
šŸ› Auto refresh the input value with the previously entered valid value if any invalid value is entered (when the open state is closed)
Closes #5274
1 parent d087c31 commit b40b4fa

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

ā€Žsrc/index.tsxā€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,10 @@ export default class DatePicker extends Component<
564564
this.props.onBlur?.(event);
565565
}
566566

567+
if (this.state.open && this.props.open === false) {
568+
this.setOpen(false);
569+
}
570+
567571
this.setState({ focused: false });
568572
};
569573

ā€Žsrc/test/datepicker_test.test.tsxā€Ž

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { render, act, waitFor, fireEvent } from "@testing-library/react";
22
import { userEvent } from "@testing-library/user-event";
33
import { enUS, enGB } from "date-fns/locale";
4-
import React from "react";
4+
import React, { useState } from "react";
55

66
import {
77
KeyType,
@@ -4243,4 +4243,44 @@ describe("DatePicker", () => {
42434243
});
42444244
});
42454245
});
4246+
4247+
describe("input reset", () => {
4248+
const renderDatePickerInput = () => {
4249+
const WrapperComponent = () => {
4250+
const [date, setDate] = useState<Date | null>(new Date());
4251+
return <DatePicker open={false} selected={date} onChange={setDate} />;
4252+
};
4253+
4254+
return render(<WrapperComponent />);
4255+
};
4256+
4257+
it("should reset the date input element with the previously entered value element on blur even when the calendar open is false", () => {
4258+
const { container } = renderDatePickerInput();
4259+
const input = safeQuerySelector(container, "input") as HTMLInputElement;
4260+
4261+
if (!input) {
4262+
throw new Error("Input element not found");
4263+
}
4264+
4265+
fireEvent.click(input);
4266+
const DATE_VALUE = "02/22/2025";
4267+
fireEvent.change(input, {
4268+
target: {
4269+
value: DATE_VALUE,
4270+
},
4271+
});
4272+
fireEvent.blur(input);
4273+
expect(input.value).toBe(DATE_VALUE);
4274+
4275+
fireEvent.click(input);
4276+
const INVALID_DATE_VALUE = "2025-02-45";
4277+
fireEvent.change(input, {
4278+
target: {
4279+
value: INVALID_DATE_VALUE,
4280+
},
4281+
});
4282+
fireEvent.blur(input);
4283+
expect(input.value).toBe(DATE_VALUE);
4284+
});
4285+
});
42464286
});

0 commit comments

Comments
Ā (0)