@@ -4320,17 +4320,23 @@ describe("DatePicker", () => {
4320
4320
} ) ;
4321
4321
4322
4322
describe ( "input reset" , ( ) => {
4323
- const renderDatePickerInput = ( ) => {
4324
- const WrapperComponent = ( ) => {
4323
+ const renderDatePickerInput = ( open : boolean | null = null ) => {
4324
+ const WrapperComponent = ( { open } : { open : boolean | null } ) => {
4325
4325
const [ date , setDate ] = useState < Date | null > ( new Date ( ) ) ;
4326
- return < DatePicker open = { false } selected = { date } onChange = { setDate } /> ;
4326
+ return (
4327
+ < DatePicker
4328
+ { ...( open !== null && { open } ) }
4329
+ selected = { date }
4330
+ onChange = { setDate }
4331
+ />
4332
+ ) ;
4327
4333
} ;
4328
4334
4329
- return render ( < WrapperComponent /> ) ;
4335
+ return render ( < WrapperComponent open = { open } /> ) ;
4330
4336
} ;
4331
4337
4332
4338
it ( "should reset the date input element with the previously entered value element on blur even when the calendar open is false" , ( ) => {
4333
- const { container } = renderDatePickerInput ( ) ;
4339
+ const { container } = renderDatePickerInput ( false ) ;
4334
4340
const input = safeQuerySelector ( container , "input" ) as HTMLInputElement ;
4335
4341
4336
4342
if ( ! input ) {
@@ -4357,6 +4363,36 @@ describe("DatePicker", () => {
4357
4363
fireEvent . blur ( input ) ;
4358
4364
expect ( input . value ) . toBe ( DATE_VALUE ) ;
4359
4365
} ) ;
4366
+
4367
+ it ( "should reset the date input element with the previously entered value on blur even when the calendar is not open" , ( ) => {
4368
+ const { container } = renderDatePickerInput ( ) ;
4369
+ const input = safeQuerySelector ( container , "input" ) as HTMLInputElement ;
4370
+
4371
+ fireEvent . click ( input ) ;
4372
+
4373
+ const VALID_DATE_VALUE = "06/23/2025" ;
4374
+ fireEvent . change ( input , {
4375
+ target : {
4376
+ value : VALID_DATE_VALUE ,
4377
+ } ,
4378
+ } ) ;
4379
+ fireEvent . blur ( input ) ;
4380
+ expect ( input . value ) . toBe ( VALID_DATE_VALUE ) ;
4381
+
4382
+ fireEvent . click ( input ) ;
4383
+ fireEvent . keyDown ( input , getKey ( KeyType . Escape ) ) ;
4384
+ // Make sure the calendar is hidden
4385
+ expect ( container . querySelector ( ".react-datepicker" ) ) . toBeFalsy ( ) ;
4386
+
4387
+ const INVALID_DATE_VALUE = "2025-02-45" ;
4388
+ fireEvent . change ( input , {
4389
+ target : {
4390
+ value : INVALID_DATE_VALUE ,
4391
+ } ,
4392
+ } ) ;
4393
+ fireEvent . blur ( input ) ;
4394
+ expect ( input . value ) . toBe ( VALID_DATE_VALUE ) ;
4395
+ } ) ;
4360
4396
} ) ;
4361
4397
4362
4398
describe ( "Close on ESC Key" , ( ) => {
0 commit comments