@@ -3,7 +3,7 @@ import React, { useCallback, useContext, useEffect, useRef } from "react";
3
3
4
4
import { BORDER_COLOR , RING_COLOR } from "../constants" ;
5
5
import DatepickerContext from "../contexts/DatepickerContext" ;
6
- import { dateIsValid } from "../helpers" ;
6
+ import { dateIsValid , parseFormattedDate } from "../helpers" ;
7
7
8
8
import ToggleButton from "./ToggleButton" ;
9
9
@@ -66,22 +66,24 @@ const Input: React.FC<Props> = (e: Props) => {
66
66
const handleInputChange = useCallback (
67
67
( e : React . ChangeEvent < HTMLInputElement > ) => {
68
68
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
+
77
79
const input = inputRef ?. current ;
78
80
79
81
if (
80
82
start . length === 10 &&
81
83
end . length === 10 &&
82
84
dateIsValid ( new Date ( start ) ) &&
83
85
dateIsValid ( new Date ( end ) ) &&
84
- dayjs ( start ) . isBefore ( end )
86
+ ( dayjs ( start ) . isBefore ( end ) || asSingle )
85
87
) {
86
88
changeDatepickerValue (
87
89
{
@@ -90,15 +92,23 @@ const Input: React.FC<Props> = (e: Props) => {
90
92
} ,
91
93
e . target
92
94
) ;
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 ) ;
94
97
hideDatepicker ( ) ;
95
98
if ( input ) {
96
99
input . blur ( ) ;
97
100
}
98
101
}
99
102
changeInputText ( e . target . value ) ;
100
103
} ,
101
- [ changeDatepickerValue , changeDayHover , changeInputText , hideDatepicker ]
104
+ [
105
+ changeDatepickerValue ,
106
+ changeDayHover ,
107
+ changeInputText ,
108
+ hideDatepicker ,
109
+ displayFormat ,
110
+ asSingle
111
+ ]
102
112
) ;
103
113
104
114
// UseEffects && UseLayoutEffect
0 commit comments