( elementRef: ElementRef<HTMLElement>, event: KeyboardEvent, )
| 11 | |
| 12 | /** Checks whether a keyboard event will trigger a native `click` event on an element. */ |
| 13 | export function eventDispatchesNativeClick( |
| 14 | elementRef: ElementRef<HTMLElement>, |
| 15 | event: KeyboardEvent, |
| 16 | ): boolean { |
| 17 | // Synthetic events won't trigger clicks. |
| 18 | if (!event.isTrusted) { |
| 19 | return false; |
| 20 | } |
| 21 | |
| 22 | const el = elementRef.nativeElement; |
| 23 | const keyCode = event.keyCode; |
| 24 | |
| 25 | // Buttons trigger clicks both on space and enter events. |
| 26 | if (el.nodeName === 'BUTTON' && !(el as HTMLButtonElement).disabled) { |
| 27 | return keyCode === ENTER || keyCode === SPACE; |
| 28 | } |
| 29 | |
| 30 | // Links only trigger clicks on enter. |
| 31 | if (el.nodeName === 'A') { |
| 32 | return keyCode === ENTER; |
| 33 | } |
| 34 | |
| 35 | // Any other elements won't dispatch clicks from keyboard events. |
| 36 | return false; |
| 37 | } |
no outgoing calls
no test coverage detected
searching dependent graphs…