@@ -72,7 +72,7 @@ describe('Tooltip', () => {
7272 expect ( tooltip . placement ) . to . equal ( 'top' ) ;
7373 expect ( tooltip . anchor ) . to . be . undefined ;
7474 expect ( tooltip . showTriggers ) . to . equal ( 'pointerenter' ) ;
75- expect ( tooltip . hideTriggers ) . to . equal ( 'pointerleave' ) ;
75+ expect ( tooltip . hideTriggers ) . to . equal ( 'pointerleave,click ' ) ;
7676 expect ( tooltip . showDelay ) . to . equal ( 200 ) ;
7777 expect ( tooltip . hideDelay ) . to . equal ( 300 ) ;
7878 expect ( tooltip . message ) . to . equal ( '' ) ;
@@ -168,18 +168,13 @@ describe('Tooltip', () => {
168168 simulatePointerEnter ( third ) ;
169169 await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
170170 await showComplete ( ) ;
171- expect ( tooltip . open ) . to . be . true ;
171+ expect ( tooltip . open ) . to . be . false ;
172172
173173 simulatePointerLeave ( third ) ;
174174 await clock . tickAsync ( endTick ( DEFAULT_HIDE_DELAY ) ) ;
175175 await hideComplete ( ) ;
176176 expect ( tooltip . open ) . to . be . false ;
177177
178- simulatePointerEnter ( first ) ;
179- await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
180- await showComplete ( ) ;
181- expect ( tooltip . open ) . to . be . false ;
182-
183178 // By providing an IDREF
184179 tooltip . anchor = first . id ;
185180 await elementUpdated ( tooltip ) ;
@@ -465,7 +460,7 @@ describe('Tooltip', () => {
465460 describe ( 'Behaviors' , ( ) => {
466461 beforeEach ( async ( ) => {
467462 clock = useFakeTimers ( { toFake : [ 'setTimeout' ] } ) ;
468- const container = await fixture ( createDefaultTooltip ( ) ) ;
463+ const container = await fixture ( createTooltipWithTarget ( ) ) ;
469464 anchor = container . querySelector ( 'button' ) ! ;
470465 tooltip = container . querySelector ( IgcTooltipComponent . tagName ) ! ;
471466 } ) ;
@@ -476,7 +471,7 @@ describe('Tooltip', () => {
476471
477472 it ( 'default triggers' , async ( ) => {
478473 expect ( tooltip . showTriggers ) . to . equal ( 'pointerenter' ) ;
479- expect ( tooltip . hideTriggers ) . to . equal ( 'pointerleave' ) ;
474+ expect ( tooltip . hideTriggers ) . to . equal ( 'pointerleave,click ' ) ;
480475
481476 simulatePointerEnter ( anchor ) ;
482477 await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
@@ -490,8 +485,8 @@ describe('Tooltip', () => {
490485 } ) ;
491486
492487 it ( 'custom triggers via property' , async ( ) => {
493- tooltip . showTriggers = 'focus,click ' ;
494- tooltip . hideTriggers = 'blur' ;
488+ tooltip . showTriggers = 'focus, pointerenter ' ;
489+ tooltip . hideTriggers = 'blur, click ' ;
495490
496491 simulateFocus ( anchor ) ;
497492 await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
@@ -503,12 +498,12 @@ describe('Tooltip', () => {
503498 await hideComplete ( ) ;
504499 expect ( tooltip . open ) . to . be . false ;
505500
506- simulateClick ( anchor ) ;
501+ simulatePointerEnter ( anchor ) ;
507502 await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
508503 await showComplete ( ) ;
509504 expect ( tooltip . open ) . to . be . true ;
510505
511- simulateBlur ( anchor ) ;
506+ simulateClick ( anchor ) ;
512507 await clock . tickAsync ( endTick ( DEFAULT_HIDE_DELAY ) ) ;
513508 await hideComplete ( ) ;
514509 expect ( tooltip . open ) . to . be . false ;
@@ -517,8 +512,11 @@ describe('Tooltip', () => {
517512 it ( 'custom triggers via attribute' , async ( ) => {
518513 const template = html `
519514 < div >
520- < button > Hover over me</ button >
521- < igc-tooltip show-triggers ="focus,click " hide-triggers ="blur "
515+ < button id ="anchor1 "> Hover over me</ button >
516+ < igc-tooltip
517+ anchor ="anchor1 "
518+ show-triggers ="focus,click "
519+ hide-triggers ="blur "
522520 > I am a tooltip</ igc-tooltip
523521 >
524522 </ div >
@@ -594,7 +592,7 @@ describe('Tooltip', () => {
594592
595593 beforeEach ( async ( ) => {
596594 clock = useFakeTimers ( { toFake : [ 'setTimeout' ] } ) ;
597- const container = await fixture ( createDefaultTooltip ( ) ) ;
595+ const container = await fixture ( createTooltipWithTarget ( ) ) ;
598596 tooltip = container . querySelector ( IgcTooltipComponent . tagName ) ! ;
599597 anchor = container . querySelector ( 'button' ) ! ;
600598 eventSpy = spy ( tooltip , 'emitEvent' ) ;
@@ -667,6 +665,32 @@ describe('Tooltip', () => {
667665 detail : anchor ,
668666 } ) ;
669667 } ) ;
668+
669+ it ( 'fires `igcClosed` when tooltip is hidden via Escape key' , async ( ) => {
670+ simulatePointerEnter ( anchor ) ;
671+ await clock . tickAsync ( DEFAULT_SHOW_DELAY ) ;
672+ await showComplete ( tooltip ) ;
673+
674+ eventSpy . resetHistory ( ) ;
675+
676+ document . documentElement . dispatchEvent (
677+ new KeyboardEvent ( 'keydown' , {
678+ key : 'Escape' ,
679+ bubbles : true ,
680+ composed : true ,
681+ } )
682+ ) ;
683+
684+ await clock . tickAsync ( endTick ( DEFAULT_HIDE_DELAY ) ) ;
685+ await hideComplete ( tooltip ) ;
686+
687+ expect ( tooltip . open ) . to . be . false ;
688+ expect ( eventSpy . callCount ) . to . equal ( 1 ) ;
689+ expect ( eventSpy . firstCall ) . calledWith ( 'igcClosed' , {
690+ cancelable : false ,
691+ detail : anchor ,
692+ } ) ;
693+ } ) ;
670694 } ) ;
671695
672696 describe ( 'Keyboard interactions' , ( ) => {
@@ -771,10 +795,10 @@ function createTooltipWithTarget(isOpen = false) {
771795function createTooltips ( ) {
772796 return html `
773797 < div >
774- < button > Target 1</ button >
775- < igc-tooltip > First</ igc-tooltip >
776- < button > Target 2</ button >
777- < igc-tooltip > Second</ igc-tooltip >
798+ < button id =" firstTarget " > Target 1</ button >
799+ < igc-tooltip anchor =" firstTarget " > First</ igc-tooltip >
800+ < button id =" secondTarget " > Target 2</ button >
801+ < igc-tooltip anchor =" secondTarget " > Second</ igc-tooltip >
778802 </ div >
779803 ` ;
780804}
0 commit comments