@@ -133,8 +133,11 @@ describe("calcite-input-date-picker", () => {
133
133
await input . click ( ) ;
134
134
await page . waitForChanges ( ) ;
135
135
await page . waitForTimeout ( animationDurationInMs ) ;
136
- const wrapper = await page . waitForFunction ( ( ) =>
137
- document . querySelector ( "calcite-input-date-picker" ) . shadowRoot . querySelector ( ".calendar-picker-wrapper" )
136
+ const wrapper = await page . waitForFunction (
137
+ ( calendarWrapperClass : string ) =>
138
+ document . querySelector ( "calcite-input-date-picker" ) . shadowRoot . querySelector ( `.${ calendarWrapperClass } ` ) ,
139
+ { } ,
140
+ CSS . calendarWrapper
138
141
) ;
139
142
expect ( await wrapper . isIntersectingViewport ( ) ) . toBe ( true ) ;
140
143
@@ -202,9 +205,13 @@ describe("calcite-input-date-picker", () => {
202
205
await page . waitForChanges ( ) ;
203
206
await page . waitForTimeout ( animationDurationInMs ) ;
204
207
205
- const wrapper = await page . waitForFunction ( ( ) =>
206
- document . querySelector ( "calcite-input-date-picker" ) . shadowRoot . querySelector ( ".calendar-picker-wrapper" )
208
+ const wrapper = await page . waitForFunction (
209
+ ( calendarWrapperClass : string ) =>
210
+ document . querySelector ( "calcite-input-date-picker" ) . shadowRoot . querySelector ( `.${ calendarWrapperClass } ` ) ,
211
+ { } ,
212
+ CSS . calendarWrapper
207
213
) ;
214
+
208
215
expect ( await wrapper . isIntersectingViewport ( ) ) . toBe ( true ) ;
209
216
210
217
const inputtedStartDate = "1/1/2020" ;
@@ -318,50 +325,267 @@ describe("calcite-input-date-picker", () => {
318
325
let page : E2EPage ;
319
326
let inputDatePicker : E2EElement ;
320
327
321
- beforeEach ( async ( ) => {
322
- page = await newE2EPage ( ) ;
323
- await page . setContent ( html ` < calcite-input-date-picker value ="2000-11-27 "> </ calcite-input-date-picker > ` ) ;
324
- await skipAnimations ( page ) ;
325
- await page . waitForChanges ( ) ;
326
- inputDatePicker = await page . find ( "calcite-input-date-picker" ) ;
327
- } ) ;
328
+ describe ( "single value" , ( ) => {
329
+ beforeEach ( async ( ) => {
330
+ page = await newE2EPage ( ) ;
331
+ await page . setContent ( html ` < calcite-input-date-picker value ="2000-11-27 "> </ calcite-input-date-picker > ` ) ;
332
+ await skipAnimations ( page ) ;
333
+ await page . waitForChanges ( ) ;
334
+ inputDatePicker = await page . find ( "calcite-input-date-picker" ) ;
335
+ } ) ;
328
336
329
- it ( "toggles the date picker when clicked" , async ( ) => {
330
- let calendar = await page . find ( " calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
337
+ it ( "toggles the date picker when clicked" , async ( ) => {
338
+ let calendar = await page . find ( ` calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
331
339
332
- expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
340
+ expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
333
341
334
- await inputDatePicker . click ( ) ;
335
- await page . waitForChanges ( ) ;
336
- calendar = await page . find ( " calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
342
+ await inputDatePicker . click ( ) ;
343
+ await page . waitForChanges ( ) ;
344
+ calendar = await page . find ( ` calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
337
345
338
- expect ( await calendar . isVisible ( ) ) . toBe ( true ) ;
346
+ expect ( await calendar . isVisible ( ) ) . toBe ( true ) ;
339
347
340
- await inputDatePicker . click ( ) ;
341
- await page . waitForChanges ( ) ;
342
- calendar = await page . find ( "calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
348
+ await inputDatePicker . click ( ) ;
349
+ await page . waitForChanges ( ) ;
350
+ calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
351
+
352
+ expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
353
+ } ) ;
354
+
355
+ it ( "toggles the date picker when using arrow down/escape key" , async ( ) => {
356
+ let calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
357
+
358
+ expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
343
359
344
- expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
360
+ await inputDatePicker . callMethod ( "setFocus" ) ;
361
+ await page . waitForChanges ( ) ;
362
+ await page . keyboard . press ( "ArrowDown" ) ;
363
+ await page . waitForChanges ( ) ;
364
+ calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
365
+
366
+ expect ( await calendar . isVisible ( ) ) . toBe ( true ) ;
367
+
368
+ await page . keyboard . press ( "Escape" ) ;
369
+ await page . waitForChanges ( ) ;
370
+ calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
371
+
372
+ expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
373
+ } ) ;
345
374
} ) ;
346
375
347
- it ( "toggles the date picker when using arrow down/escape key" , async ( ) => {
348
- let calendar = await page . find ( "calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
376
+ describe ( "range" , ( ) => {
377
+ beforeEach ( async ( ) => {
378
+ page = await newE2EPage ( ) ;
379
+ await page . setContent ( html ` < calcite-input-date-picker range > </ calcite-input-date-picker > ` ) ;
380
+ await skipAnimations ( page ) ;
381
+ await page . waitForChanges ( ) ;
382
+ inputDatePicker = await page . find ( "calcite-input-date-picker" ) ;
383
+ } ) ;
349
384
350
- expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
385
+ async function isCalendarVisible ( calendar : E2EElement , type : "start" | "end" ) : Promise < boolean > {
386
+ const calendarPosition = calendar . classList . contains ( CSS . calendarWrapperEnd ) ? "end" : "start" ;
387
+ return ( await calendar . isVisible ( ) ) && calendarPosition === type ;
388
+ }
351
389
352
- await inputDatePicker . callMethod ( "setFocus" ) ;
353
- await page . waitForChanges ( ) ;
354
- await page . keyboard . press ( "ArrowDown" ) ;
355
- await page . waitForChanges ( ) ;
356
- calendar = await page . find ( "calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
390
+ it ( "toggles the date picker when clicked" , async ( ) => {
391
+ const calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
357
392
358
- expect ( await calendar . isVisible ( ) ) . toBe ( true ) ;
393
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
394
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
359
395
360
- await page . keyboard . press ( "Escape" ) ;
361
- await page . waitForChanges ( ) ;
362
- calendar = await page . find ( "calcite-input-date-picker >>> .calendar-picker-wrapper" ) ;
396
+ const startInput = await page . find (
397
+ `calcite-input-date-picker >>> .${ CSS . inputWrapper } [data-position="start"] calcite-input-text`
398
+ ) ;
399
+ const startInputToggle = await page . find (
400
+ `calcite-input-date-picker >>> .${ CSS . inputWrapper } [data-position="start"] .${ CSS . toggleIcon } `
401
+ ) ;
402
+
403
+ const endInput = await page . find (
404
+ `calcite-input-date-picker >>> .${ CSS . inputWrapper } [data-position="end"] calcite-input-text`
405
+ ) ;
406
+ const endInputToggle = await page . find (
407
+ `calcite-input-date-picker >>> .${ CSS . inputWrapper } [data-position="end"] .${ CSS . toggleIcon } `
408
+ ) ;
409
+
410
+ // toggling via start date input
411
+
412
+ await startInput . click ( ) ;
413
+ await page . waitForChanges ( ) ;
414
+
415
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
416
+
417
+ await startInput . click ( ) ;
418
+ await page . waitForChanges ( ) ;
419
+
420
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
421
+
422
+ // toggling via start date toggle icon
423
+
424
+ await startInputToggle . click ( ) ;
425
+ await page . waitForChanges ( ) ;
426
+
427
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
428
+
429
+ await startInputToggle . click ( ) ;
430
+ await page . waitForChanges ( ) ;
431
+
432
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
433
+
434
+ // toggling via end date input
435
+
436
+ await endInput . click ( ) ;
437
+ await page . waitForChanges ( ) ;
438
+
439
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
440
+
441
+ await endInput . click ( ) ;
442
+ await page . waitForChanges ( ) ;
443
+
444
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
445
+
446
+ // toggling via end date toggle icon
447
+
448
+ await endInputToggle . click ( ) ;
449
+ await page . waitForChanges ( ) ;
450
+
451
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
452
+
453
+ await endInputToggle . click ( ) ;
454
+ await page . waitForChanges ( ) ;
455
+
456
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
457
+
458
+ // toggling via start date input and toggle icon
459
+
460
+ await startInput . click ( ) ;
461
+ await page . waitForChanges ( ) ;
462
+
463
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
464
+
465
+ await startInputToggle . click ( ) ;
466
+ await page . waitForChanges ( ) ;
467
+
468
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
363
469
364
- expect ( await calendar . isVisible ( ) ) . toBe ( false ) ;
470
+ // toggling via start toggle icon and date input
471
+
472
+ await startInputToggle . click ( ) ;
473
+ await page . waitForChanges ( ) ;
474
+
475
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
476
+
477
+ await startInput . click ( ) ;
478
+ await page . waitForChanges ( ) ;
479
+
480
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
481
+
482
+ // toggling via end date input and toggle icon
483
+
484
+ await endInput . click ( ) ;
485
+ await page . waitForChanges ( ) ;
486
+
487
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
488
+
489
+ await endInputToggle . click ( ) ;
490
+ await page . waitForChanges ( ) ;
491
+
492
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
493
+
494
+ // toggling via end toggle icon and date input
495
+
496
+ await endInputToggle . click ( ) ;
497
+ await page . waitForChanges ( ) ;
498
+
499
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
500
+
501
+ await endInput . click ( ) ;
502
+ await page . waitForChanges ( ) ;
503
+
504
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
505
+
506
+ // toggling via start date input and end toggle icon
507
+
508
+ await startInput . click ( ) ;
509
+ await page . waitForChanges ( ) ;
510
+
511
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
512
+
513
+ await endInputToggle . click ( ) ;
514
+ await page . waitForChanges ( ) ;
515
+
516
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
517
+
518
+ // toggling via start toggle icon and date input
519
+
520
+ await startInputToggle . click ( ) ;
521
+ await page . waitForChanges ( ) ;
522
+
523
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
524
+
525
+ await endInput . click ( ) ;
526
+ await page . waitForChanges ( ) ;
527
+
528
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
529
+
530
+ // close
531
+ await endInput . click ( ) ;
532
+ await page . waitForChanges ( ) ;
533
+
534
+ // toggling via end date input and start toggle icon
535
+
536
+ await endInput . click ( ) ;
537
+ await page . waitForChanges ( ) ;
538
+
539
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
540
+
541
+ await startInputToggle . click ( ) ;
542
+ await page . waitForChanges ( ) ;
543
+
544
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
545
+
546
+ // toggling via end toggle icon and start date input
547
+
548
+ await endInputToggle . click ( ) ;
549
+ await page . waitForChanges ( ) ;
550
+
551
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
552
+
553
+ await startInput . click ( ) ;
554
+ await page . waitForChanges ( ) ;
555
+
556
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
557
+ } ) ;
558
+
559
+ it ( "toggles the date picker when using arrow down/escape key" , async ( ) => {
560
+ const calendar = await page . find ( `calcite-input-date-picker >>> .${ CSS . calendarWrapper } ` ) ;
561
+
562
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
563
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
564
+
565
+ await inputDatePicker . callMethod ( "setFocus" ) ;
566
+ await page . waitForChanges ( ) ;
567
+ await page . keyboard . press ( "ArrowDown" ) ;
568
+ await page . waitForChanges ( ) ;
569
+
570
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( true ) ;
571
+
572
+ await page . keyboard . press ( "Escape" ) ;
573
+ await page . waitForChanges ( ) ;
574
+
575
+ expect ( await isCalendarVisible ( calendar , "start" ) ) . toBe ( false ) ;
576
+
577
+ await page . keyboard . press ( "Tab" ) ;
578
+
579
+ await page . keyboard . press ( "ArrowDown" ) ;
580
+ await page . waitForChanges ( ) ;
581
+
582
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( true ) ;
583
+
584
+ await page . keyboard . press ( "Escape" ) ;
585
+ await page . waitForChanges ( ) ;
586
+
587
+ expect ( await isCalendarVisible ( calendar , "end" ) ) . toBe ( false ) ;
588
+ } ) ;
365
589
} ) ;
366
590
} ) ;
367
591
0 commit comments