@@ -330,4 +330,200 @@ describe("calcite-date-picker", () => {
330
330
describe ( "translation support" , ( ) => {
331
331
t9n ( "calcite-date-picker" ) ;
332
332
} ) ;
333
+
334
+ describe ( "ArrowKeys and PageKeys" , ( ) => {
335
+ async function setActiveDate ( page : E2EPage , date : string ) : Promise < void > {
336
+ await page . evaluate ( ( date ) => {
337
+ const datePicker = document . querySelector ( "calcite-date-picker" ) ;
338
+ datePicker . activeDate = new Date ( date ) ;
339
+ } , date ) ;
340
+ await page . waitForChanges ( ) ;
341
+ }
342
+
343
+ it ( "should be able to navigate between months and select date using arrow keys and page keys" , async ( ) => {
344
+ const page = await newE2EPage ( ) ;
345
+ await page . setContent ( html `< calcite-date-picker > </ calcite-date-picker > ` ) ;
346
+ await page . waitForChanges ( ) ;
347
+
348
+ const datePicker = await page . find ( "calcite-date-picker" ) ;
349
+ await setActiveDate ( page , "01-01-2024" ) ;
350
+
351
+ await page . keyboard . press ( "Tab" ) ;
352
+ await page . waitForChanges ( ) ;
353
+ await page . keyboard . press ( "Tab" ) ;
354
+ await page . waitForChanges ( ) ;
355
+ await page . keyboard . press ( "Tab" ) ;
356
+ await page . waitForChanges ( ) ;
357
+ await page . keyboard . press ( "Tab" ) ;
358
+ await page . waitForChanges ( ) ;
359
+
360
+ await page . keyboard . press ( "ArrowUp" ) ;
361
+ await page . waitForChanges ( ) ;
362
+ await page . keyboard . press ( "Enter" ) ;
363
+ await page . waitForChanges ( ) ;
364
+
365
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2023-12-25" ) ;
366
+
367
+ await page . keyboard . press ( "PageUp" ) ;
368
+ await page . waitForChanges ( ) ;
369
+ await page . keyboard . press ( "Enter" ) ;
370
+ await page . waitForChanges ( ) ;
371
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2023-11-25" ) ;
372
+
373
+ await page . keyboard . press ( "PageDown" ) ;
374
+ await page . waitForChanges ( ) ;
375
+ await page . keyboard . press ( "PageDown" ) ;
376
+ await page . waitForChanges ( ) ;
377
+ await page . keyboard . press ( "Enter" ) ;
378
+ await page . waitForChanges ( ) ;
379
+
380
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2024-01-25" ) ;
381
+
382
+ await page . keyboard . press ( "ArrowDown" ) ;
383
+ await page . waitForChanges ( ) ;
384
+ await page . keyboard . press ( "Enter" ) ;
385
+ await page . waitForChanges ( ) ;
386
+
387
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2024-02-01" ) ;
388
+ } ) ;
389
+
390
+ it ( "should be able to navigate between months and select date using arrow keys and page keys when value is parsed" , async ( ) => {
391
+ const page = await newE2EPage ( ) ;
392
+ await page . setContent ( html `< calcite-date-picker value ="2024-01-01 "> </ calcite-date-picker > ` ) ;
393
+ const datePicker = await page . find ( "calcite-date-picker" ) ;
394
+
395
+ await page . keyboard . press ( "Tab" ) ;
396
+ await page . waitForChanges ( ) ;
397
+ await page . keyboard . press ( "Tab" ) ;
398
+ await page . waitForChanges ( ) ;
399
+ await page . keyboard . press ( "Tab" ) ;
400
+ await page . waitForChanges ( ) ;
401
+ await page . keyboard . press ( "Tab" ) ;
402
+ await page . waitForChanges ( ) ;
403
+ await page . keyboard . press ( "ArrowUp" ) ;
404
+ await page . waitForChanges ( ) ;
405
+ await page . keyboard . press ( "Enter" ) ;
406
+ await page . waitForChanges ( ) ;
407
+
408
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2023-12-25" ) ;
409
+
410
+ await page . keyboard . press ( "ArrowDown" ) ;
411
+ await page . waitForChanges ( ) ;
412
+ await page . keyboard . press ( "ArrowDown" ) ;
413
+ await page . waitForChanges ( ) ;
414
+ await page . keyboard . press ( "Enter" ) ;
415
+ await page . waitForChanges ( ) ;
416
+
417
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2024-01-08" ) ;
418
+
419
+ await page . keyboard . press ( "PageUp" ) ;
420
+ await page . waitForChanges ( ) ;
421
+ await page . keyboard . press ( "Enter" ) ;
422
+ await page . waitForChanges ( ) ;
423
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2023-12-08" ) ;
424
+
425
+ await page . keyboard . press ( "PageDown" ) ;
426
+ await page . waitForChanges ( ) ;
427
+ await page . keyboard . press ( "PageDown" ) ;
428
+ await page . waitForChanges ( ) ;
429
+ await page . keyboard . press ( "Enter" ) ;
430
+ await page . waitForChanges ( ) ;
431
+
432
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( "2024-02-08" ) ;
433
+ } ) ;
434
+
435
+ it ( "should be able to navigate between months and select date using arrow keys and page keys in range" , async ( ) => {
436
+ const page = await newE2EPage ( ) ;
437
+ await page . setContent ( html `< calcite-date-picker range > </ calcite-date-picker > ` ) ;
438
+ await page . waitForChanges ( ) ;
439
+
440
+ const datePicker = await page . find ( "calcite-date-picker" ) ;
441
+ await setActiveDate ( page , "01-01-2024" ) ;
442
+
443
+ await page . keyboard . press ( "Tab" ) ;
444
+ await page . waitForChanges ( ) ;
445
+ await page . keyboard . press ( "Tab" ) ;
446
+ await page . waitForChanges ( ) ;
447
+ await page . keyboard . press ( "Tab" ) ;
448
+ await page . waitForChanges ( ) ;
449
+ await page . keyboard . press ( "Tab" ) ;
450
+ await page . waitForChanges ( ) ;
451
+
452
+ await page . keyboard . press ( "ArrowUp" ) ;
453
+ await page . waitForChanges ( ) ;
454
+ await page . keyboard . press ( "Enter" ) ;
455
+ await page . waitForChanges ( ) ;
456
+
457
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-12-25" , "" ] ) ;
458
+
459
+ await page . keyboard . press ( "PageUp" ) ;
460
+ await page . waitForChanges ( ) ;
461
+ await page . keyboard . press ( "Enter" ) ;
462
+ await page . waitForChanges ( ) ;
463
+ await page . waitForTimeout ( 4000 ) ;
464
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-11-25" , "2023-12-25" ] ) ;
465
+
466
+ await page . keyboard . press ( "PageDown" ) ;
467
+ await page . waitForChanges ( ) ;
468
+ await page . keyboard . press ( "PageDown" ) ;
469
+ await page . waitForChanges ( ) ;
470
+ await page . keyboard . press ( "Enter" ) ;
471
+ await page . waitForChanges ( ) ;
472
+ await page . waitForTimeout ( 4000 ) ;
473
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-11-25" , "2024-01-25" ] ) ;
474
+
475
+ await page . keyboard . press ( "ArrowDown" ) ;
476
+ await page . waitForChanges ( ) ;
477
+ await page . keyboard . press ( "Enter" ) ;
478
+ await page . waitForChanges ( ) ;
479
+
480
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-11-25" , "2024-02-01" ] ) ;
481
+ } ) ;
482
+
483
+ it ( "should be able to navigate between months and select date using arrow keys and page keys in range when value is parsed" , async ( ) => {
484
+ const page = await newE2EPage ( ) ;
485
+ await page . setContent ( html `< calcite-date-picker range > </ calcite-date-picker > ` ) ;
486
+ const datePicker = await page . find ( "calcite-date-picker" ) ;
487
+ datePicker . setProperty ( "value" , [ "2024-01-01" , "2024-02-10" ] ) ;
488
+
489
+ await page . keyboard . press ( "Tab" ) ;
490
+ await page . waitForChanges ( ) ;
491
+ await page . keyboard . press ( "Tab" ) ;
492
+ await page . waitForChanges ( ) ;
493
+ await page . keyboard . press ( "Tab" ) ;
494
+ await page . waitForChanges ( ) ;
495
+ await page . keyboard . press ( "Tab" ) ;
496
+ await page . waitForChanges ( ) ;
497
+ await page . keyboard . press ( "ArrowUp" ) ;
498
+ await page . waitForChanges ( ) ;
499
+ await page . keyboard . press ( "Enter" ) ;
500
+ await page . waitForChanges ( ) ;
501
+
502
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-12-25" , "2024-02-10" ] ) ;
503
+
504
+ await page . keyboard . press ( "ArrowDown" ) ;
505
+ await page . waitForChanges ( ) ;
506
+ await page . keyboard . press ( "ArrowDown" ) ;
507
+ await page . waitForChanges ( ) ;
508
+ await page . keyboard . press ( "Enter" ) ;
509
+ await page . waitForChanges ( ) ;
510
+
511
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-12-25" , "2024-01-08" ] ) ;
512
+
513
+ await page . keyboard . press ( "PageUp" ) ;
514
+ await page . waitForChanges ( ) ;
515
+ await page . keyboard . press ( "Enter" ) ;
516
+ await page . waitForChanges ( ) ;
517
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-12-08" , "2024-01-08" ] ) ;
518
+
519
+ await page . keyboard . press ( "PageDown" ) ;
520
+ await page . waitForChanges ( ) ;
521
+ await page . keyboard . press ( "PageDown" ) ;
522
+ await page . waitForChanges ( ) ;
523
+ await page . keyboard . press ( "Enter" ) ;
524
+ await page . waitForChanges ( ) ;
525
+
526
+ expect ( await datePicker . getProperty ( "value" ) ) . toEqual ( [ "2023-12-08" , "2024-02-08" ] ) ;
527
+ } ) ;
528
+ } ) ;
333
529
} ) ;
0 commit comments