MCPcopy
hub / github.com/adobe/react-spectrum / onClick

Function onClick

packages/react-aria/src/interactions/usePress.ts:450–500  ·  view source on GitHub ↗
(e)

Source from the content-addressed store, hash-verified

448 }
449 },
450 onClick(e) {
451 if (e && !nodeContains(e.currentTarget, getEventTarget(e))) {
452 return;
453 }
454
455 if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {
456 let shouldStopPropagation = true;
457 if (isDisabled) {
458 e.preventDefault();
459 }
460
461 // If triggered from a screen reader or by using element.click(),
462 // trigger as if it were a keyboard click.
463 if (
464 !state.ignoreEmulatedMouseEvents &&
465 !state.isPressed &&
466 (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))
467 ) {
468 let stopPressStart = triggerPressStart(e, 'virtual');
469 // eslint-disable-next-line react-hooks/rules-of-hooks
470 let stopPressUp = triggerPressUpEvent(e, 'virtual');
471 // eslint-disable-next-line react-hooks/rules-of-hooks
472 let stopPressEnd = triggerPressEndEvent(e, 'virtual');
473 triggerClick(e);
474 shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;
475 } else if (state.isPressed && state.pointerType !== 'keyboard') {
476 let pointerType =
477 state.pointerType ||
478 ((e.nativeEvent as PointerEvent).pointerType as PointerType) ||
479 'virtual';
480 // eslint-disable-next-line react-hooks/rules-of-hooks
481 let stopPressUp = triggerPressUpEvent(createEvent(e.currentTarget, e), pointerType);
482 // eslint-disable-next-line react-hooks/rules-of-hooks
483 let stopPressEnd = triggerPressEndEvent(
484 createEvent(e.currentTarget, e),
485 pointerType,
486 true
487 );
488 shouldStopPropagation = stopPressUp && stopPressEnd;
489 state.isOverTarget = false;
490 triggerClick(e);
491 // eslint-disable-next-line react-hooks/rules-of-hooks
492 cancelEvent(e);
493 }
494
495 state.ignoreEmulatedMouseEvents = false;
496 if (shouldStopPropagation) {
497 e.stopPropagation();
498 }
499 }
500 }
501 };
502
503 let onKeyUp = (e: KeyboardEvent) => {

Callers 1

usePressFunction · 0.70

Calls 4

nodeContainsFunction · 0.90
getEventTargetFunction · 0.90
isVirtualClickFunction · 0.90
createEventFunction · 0.85

Tested by

no test coverage detected