File tree Expand file tree Collapse file tree
private/behaviors/event-manager Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,6 +26,14 @@ export function isFakeClick(event: PointerEvent): boolean {
2626 return event . detail === 0 || ! event . pointerType ;
2727}
2828
29+ /**
30+ * Gets whether an event is a programmatic click (e.g. triggered by .click() or .dispatchEvent()).
31+ * Programmatic events are untrusted.
32+ */
33+ export function isProgrammaticClick ( event : Event ) : boolean {
34+ return ! event . isTrusted ;
35+ }
36+
2937/**
3038 * An event manager that is specialized for handling click events.
3139 *
@@ -78,6 +86,7 @@ export class ClickEventManager<T extends PointerEvent> extends EventManager<T> {
7886 }
7987
8088 _isMatch ( event : T , modifiers : ModifierInputs ) {
81- return ! isFakeClick ( event ) && hasModifiers ( event , modifiers ) ;
89+ const isAllowed = isProgrammaticClick ( event ) || ! isFakeClick ( event ) ;
90+ return isAllowed && hasModifiers ( event , modifiers ) ;
8291 }
8392}
Original file line number Diff line number Diff line change @@ -53,10 +53,6 @@ describe('Tabs', () => {
5353 target . dispatchEvent (
5454 new PointerEvent ( 'click' , {
5555 bubbles : true ,
56- detail : 1 ,
57- pointerType : 'mouse' ,
58- clientX : 1 ,
59- clientY : 1 ,
6056 ...eventInit ,
6157 } ) ,
6258 ) ;
You can’t perform that action at this time.
0 commit comments