@@ -16,69 +16,52 @@ describe('Picker.ManualClear', () => {
1616 } ) ;
1717
1818 describe ( 'Single Picker' , ( ) => {
19- it ( 'should trigger onChange when manually clearing input (select all + delete) ' , async ( ) => {
19+ it ( 'should trigger onChange when manually clearing input' , async ( ) => {
2020 const onChange = jest . fn ( ) ;
2121 const { container } = render (
2222 < Picker
2323 generateConfig = { dayGenerateConfig }
2424 value = { getDay ( '2023-08-01' ) }
2525 onChange = { onChange }
2626 locale = { enUS }
27+ allowClear
2728 /> ,
2829 ) ;
2930
3031 const input = container . querySelector ( 'input' ) as HTMLInputElement ;
3132
3233 openPicker ( container ) ;
33- input . setSelectionRange ( 0 , input . value . length ) ;
34- fireEvent . keyDown ( input , { key : 'Delete' , code : 'Delete' } ) ;
34+ fireEvent . change ( input , { target : { value : '' } } ) ;
3535
3636 await waitFakeTimer ( ) ;
3737
3838 expect ( onChange ) . toHaveBeenCalledWith ( null , null ) ;
3939 } ) ;
4040
41- it ( 'should trigger onChange when manually clearing input (select all + backspace) ' , async ( ) => {
41+ it ( 'should NOT clear when allowClear is disabled - reset to previous value ' , async ( ) => {
4242 const onChange = jest . fn ( ) ;
4343 const { container } = render (
4444 < Picker
4545 generateConfig = { dayGenerateConfig }
4646 value = { getDay ( '2023-08-01' ) }
4747 onChange = { onChange }
4848 locale = { enUS }
49+ allowClear = { false }
4950 /> ,
5051 ) ;
5152
5253 const input = container . querySelector ( 'input' ) as HTMLInputElement ;
5354
54- openPicker ( container ) ;
55- input . setSelectionRange ( 0 , input . value . length ) ;
56- fireEvent . keyDown ( input , { key : 'Backspace' , code : 'Backspace' } ) ;
57-
58- await waitFakeTimer ( ) ;
59-
60- expect ( onChange ) . toHaveBeenCalledWith ( null , null ) ;
61- } ) ;
62-
63- it ( 'should trigger onChange when manually clearing via input change event' , async ( ) => {
64- const onChange = jest . fn ( ) ;
65- const { container } = render (
66- < Picker
67- generateConfig = { dayGenerateConfig }
68- value = { getDay ( '2023-08-01' ) }
69- onChange = { onChange }
70- locale = { enUS }
71- /> ,
72- ) ;
73-
74- const input = container . querySelector ( 'input' ) as HTMLInputElement ;
55+ expect ( input . value ) . toBe ( '2023-08-01' ) ;
7556
7657 openPicker ( container ) ;
7758 fireEvent . change ( input , { target : { value : '' } } ) ;
59+ fireEvent . blur ( input ) ;
7860
7961 await waitFakeTimer ( ) ;
8062
81- expect ( onChange ) . toHaveBeenCalledWith ( null , null ) ;
63+ expect ( onChange ) . not . toHaveBeenCalled ( ) ;
64+ expect ( input . value ) . toBe ( '2023-08-01' ) ;
8265 } ) ;
8366
8467 it ( 'should reset invalid partial input on blur without triggering onChange' , async ( ) => {
@@ -115,14 +98,14 @@ describe('Picker.ManualClear', () => {
11598 onChange = { onChange }
11699 locale = { enUS }
117100 picker = "month"
101+ allowClear
118102 /> ,
119103 ) ;
120104
121105 const input = container . querySelector ( 'input' ) as HTMLInputElement ;
122106
123107 openPicker ( container ) ;
124- input . setSelectionRange ( 0 , input . value . length ) ;
125- fireEvent . keyDown ( input , { key : 'Delete' , code : 'Delete' } ) ;
108+ fireEvent . change ( input , { target : { value : '' } } ) ;
126109
127110 await waitFakeTimer ( ) ;
128111
@@ -137,23 +120,19 @@ describe('Picker.ManualClear', () => {
137120 value = { getDay ( '2023-08-01' ) }
138121 onChange = { onChange }
139122 locale = { enUS }
123+ allowClear
140124 /> ,
141125 ) ;
142126
143127 const input = container . querySelector ( 'input' ) as HTMLInputElement ;
144128
145129 expect ( input . value ) . toBe ( '2023-08-01' ) ;
146130
147- // Open picker
148131 openPicker ( container ) ;
149-
150- // Simulate selecting all text and delete
151- input . setSelectionRange ( 0 , input . value . length ) ;
152- fireEvent . keyDown ( input , { key : 'Delete' , code : 'Delete' } ) ;
132+ fireEvent . change ( input , { target : { value : '' } } ) ;
153133
154134 await waitFakeTimer ( ) ;
155135
156- // Input should be empty
157136 expect ( input . value ) . toBe ( '' ) ;
158137 } ) ;
159138
@@ -166,14 +145,14 @@ describe('Picker.ManualClear', () => {
166145 onChange = { onChange }
167146 locale = { enUS }
168147 format = { { type : 'mask' , format : 'YYYY-MM-DD' } }
148+ allowClear
169149 /> ,
170150 ) ;
171151
172152 const input = container . querySelector ( 'input' ) as HTMLInputElement ;
173153
174154 openPicker ( container ) ;
175- input . setSelectionRange ( 0 , input . value . length ) ;
176- fireEvent . keyDown ( input , { key : 'Delete' , code : 'Delete' } ) ;
155+ fireEvent . change ( input , { target : { value : '' } } ) ;
177156
178157 await waitFakeTimer ( ) ;
179158
@@ -192,14 +171,14 @@ describe('Picker.ManualClear', () => {
192171 onChange = { onChange }
193172 locale = { enUS }
194173 needConfirm = { false }
174+ allowClear
195175 /> ,
196176 ) ;
197177
198178 const startInput = container . querySelectorAll ( 'input' ) [ 0 ] as HTMLInputElement ;
199179
200180 openPicker ( container , 0 ) ;
201- startInput . setSelectionRange ( 0 , startInput . value . length ) ;
202- fireEvent . keyDown ( startInput , { key : 'Delete' , code : 'Delete' } ) ;
181+ fireEvent . change ( startInput , { target : { value : '' } } ) ;
203182 fireEvent . blur ( startInput ) ;
204183
205184 await waitFakeTimer ( ) ;
@@ -216,14 +195,14 @@ describe('Picker.ManualClear', () => {
216195 onChange = { onChange }
217196 locale = { enUS }
218197 needConfirm = { false }
198+ allowClear
219199 /> ,
220200 ) ;
221201
222202 const endInput = container . querySelectorAll ( 'input' ) [ 1 ] as HTMLInputElement ;
223203
224204 openPicker ( container , 1 ) ;
225- endInput . setSelectionRange ( 0 , endInput . value . length ) ;
226- fireEvent . keyDown ( endInput , { key : 'Delete' , code : 'Delete' } ) ;
205+ fireEvent . change ( endInput , { target : { value : '' } } ) ;
227206 fireEvent . blur ( endInput ) ;
228207
229208 await waitFakeTimer ( ) ;
@@ -240,21 +219,20 @@ describe('Picker.ManualClear', () => {
240219 onChange = { onChange }
241220 locale = { enUS }
242221 needConfirm = { false }
222+ allowClear
243223 /> ,
244224 ) ;
245225
246226 const startInput = container . querySelectorAll ( 'input' ) [ 0 ] as HTMLInputElement ;
247227 const endInput = container . querySelectorAll ( 'input' ) [ 1 ] as HTMLInputElement ;
248228
249229 openPicker ( container , 0 ) ;
250- startInput . setSelectionRange ( 0 , startInput . value . length ) ;
251- fireEvent . keyDown ( startInput , { key : 'Delete' , code : 'Delete' } ) ;
230+ fireEvent . change ( startInput , { target : { value : '' } } ) ;
252231 fireEvent . blur ( startInput ) ;
253232 await waitFakeTimer ( ) ;
254233
255234 openPicker ( container , 1 ) ;
256- endInput . setSelectionRange ( 0 , endInput . value . length ) ;
257- fireEvent . keyDown ( endInput , { key : 'Delete' , code : 'Delete' } ) ;
235+ fireEvent . change ( endInput , { target : { value : '' } } ) ;
258236 fireEvent . blur ( endInput ) ;
259237 await waitFakeTimer ( ) ;
260238
@@ -270,6 +248,7 @@ describe('Picker.ManualClear', () => {
270248 value = { [ getDay ( '2023-08-01' ) , getDay ( '2023-08-15' ) ] }
271249 onChange = { onChange }
272250 locale = { enUS }
251+ allowClear
273252 /> ,
274253 ) ;
275254
@@ -278,8 +257,7 @@ describe('Picker.ManualClear', () => {
278257 expect ( startInput . value ) . toBe ( '2023-08-01' ) ;
279258
280259 openPicker ( container , 0 ) ;
281- startInput . setSelectionRange ( 0 , startInput . value . length ) ;
282- fireEvent . keyDown ( startInput , { key : 'Delete' , code : 'Delete' } ) ;
260+ fireEvent . change ( startInput , { target : { value : '' } } ) ;
283261
284262 await waitFakeTimer ( ) ;
285263
@@ -304,8 +282,7 @@ describe('Picker.ManualClear', () => {
304282
305283 const input1 = container1 . querySelector ( 'input' ) as HTMLInputElement ;
306284 openPicker ( container1 ) ;
307- input1 . setSelectionRange ( 0 , input1 . value . length ) ;
308- fireEvent . keyDown ( input1 , { key : 'Delete' , code : 'Delete' } ) ;
285+ fireEvent . change ( input1 , { target : { value : '' } } ) ;
309286 await waitFakeTimer ( ) ;
310287
311288 const { container : container2 } = render (
0 commit comments