@@ -1998,6 +1998,56 @@ describe("DatePicker", () => {
19981998 } ) ;
19991999 } ) ;
20002000
2001+ describe ( "when minDate is before 1800" , ( ) => {
2002+ it ( "should allow manually typing dates before 1800 when minDate allows it" , ( ) => {
2003+ const onChange = jest . fn ( ) ;
2004+ const { container } = render (
2005+ < DatePicker
2006+ selected = { new Date ( "1500-06-15" ) }
2007+ minDate = { new Date ( "1000-01-01" ) }
2008+ dateFormat = "yyyy-MM-dd"
2009+ onChange = { onChange }
2010+ open
2011+ /> ,
2012+ ) ;
2013+
2014+ const input = safeQuerySelector < HTMLInputElement > ( container , "input" ) ;
2015+ fireEvent . change ( input , {
2016+ target : {
2017+ value : "1350-03-20" ,
2018+ } ,
2019+ } ) ;
2020+
2021+ expect ( onChange ) . toHaveBeenCalled ( ) ;
2022+ const calledWith = onChange . mock . calls [ 0 ] [ 0 ] ;
2023+ expect ( calledWith . getFullYear ( ) ) . toBe ( 1350 ) ;
2024+ expect ( calledWith . getMonth ( ) ) . toBe ( 2 ) ; // March is 0-indexed as 2
2025+ expect ( calledWith . getDate ( ) ) . toBe ( 20 ) ;
2026+ } ) ;
2027+
2028+ it ( "should update calendar view when typing a date before 1800 with appropriate minDate" , ( ) => {
2029+ const { container } = render (
2030+ < DatePicker
2031+ selected = { new Date ( "1500-06-15" ) }
2032+ minDate = { new Date ( "1000-01-01" ) }
2033+ dateFormat = "yyyy-MM-dd"
2034+ open
2035+ /> ,
2036+ ) ;
2037+
2038+ const input = safeQuerySelector < HTMLInputElement > ( container , "input" ) ;
2039+ fireEvent . change ( input , {
2040+ target : {
2041+ value : "1350-03-20" ,
2042+ } ,
2043+ } ) ;
2044+
2045+ expect (
2046+ container . querySelector ( ".react-datepicker__current-month" ) ?. innerHTML ,
2047+ ) . toBe ( "March 1350" ) ;
2048+ } ) ;
2049+ } ) ;
2050+
20012051 it ( "should not manual select date if before minDate" , ( ) => {
20022052 const minDate = subDays ( newDate ( ) , 1 ) ;
20032053 const data = getOnInputKeyDownStuff ( {
0 commit comments