@@ -3,7 +3,7 @@ import React, { useCallback, useContext, useEffect, useRef } from "react";
33
44import { BORDER_COLOR , RING_COLOR } from "../constants" ;
55import DatepickerContext from "../contexts/DatepickerContext" ;
6- import { dateIsValid } from "../helpers" ;
6+ import { dateIsValid , parseFormattedDate } from "../helpers" ;
77
88import ToggleButton from "./ToggleButton" ;
99
@@ -66,22 +66,24 @@ const Input: React.FC<Props> = (e: Props) => {
6666 const handleInputChange = useCallback (
6767 ( e : React . ChangeEvent < HTMLInputElement > ) => {
6868 const inputValue = e . target . value ;
69- const start = `${ inputValue . slice ( 0 , 4 ) } -${ inputValue . slice ( 5 , 7 ) } -${ inputValue . slice (
70- 8 ,
71- 10
72- ) } `;
73- const end = `${ inputValue . slice ( 13 , 17 ) } -${ inputValue . slice ( 18 , 20 ) } -${ inputValue . slice (
74- 21 ,
75- inputValue . length
76- ) } `;
69+
70+ const start = parseFormattedDate ( inputValue . slice ( 0 , 10 ) , displayFormat ) . format (
71+ "YYYY-MM-DD"
72+ ) ;
73+ const end = asSingle
74+ ? start
75+ : parseFormattedDate ( inputValue . slice ( 11 , inputValue . length ) , displayFormat ) . format (
76+ "YYYY-MM-DD"
77+ ) ;
78+
7779 const input = inputRef ?. current ;
7880
7981 if (
8082 start . length === 10 &&
8183 end . length === 10 &&
8284 dateIsValid ( new Date ( start ) ) &&
8385 dateIsValid ( new Date ( end ) ) &&
84- dayjs ( start ) . isBefore ( end )
86+ ( dayjs ( start ) . isBefore ( end ) || asSingle )
8587 ) {
8688 changeDatepickerValue (
8789 {
@@ -90,15 +92,23 @@ const Input: React.FC<Props> = (e: Props) => {
9092 } ,
9193 e . target
9294 ) ;
93- changeDayHover ( dayjs ( end ) . add ( - 1 , "day" ) . format ( "YYYY-MM-DD" ) ) ;
95+ if ( ! asSingle ) changeDayHover ( dayjs ( end ) . add ( - 1 , "day" ) . format ( "YYYY-MM-DD" ) ) ;
96+ else changeDayHover ( start ) ;
9497 hideDatepicker ( ) ;
9598 if ( input ) {
9699 input . blur ( ) ;
97100 }
98101 }
99102 changeInputText ( e . target . value ) ;
100103 } ,
101- [ changeDatepickerValue , changeDayHover , changeInputText , hideDatepicker ]
104+ [
105+ changeDatepickerValue ,
106+ changeDayHover ,
107+ changeInputText ,
108+ hideDatepicker ,
109+ displayFormat ,
110+ asSingle
111+ ]
102112 ) ;
103113
104114 // UseEffects && UseLayoutEffect
0 commit comments