UNPKG

@base-ui/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

22 lines 930 B
import { isElement } from '@floating-ui/utils/dom'; import { createChangeEventDetails } from "../../internals/createBaseUIEventDetails.js"; import { REASONS } from "../../internals/reasons.js"; import { getTarget, isInteractiveElement } from "../../floating-ui-react/utils/element.js"; export function handleInputPress(event, store, disabled, readOnly, shouldIgnoreTarget) { if (event.baseUIHandlerPrevented || readOnly) { return; } const target = getTarget(event.nativeEvent); const targetElement = isElement(target) ? target : null; if (targetElement !== event.currentTarget && (shouldIgnoreTarget?.(targetElement) || isInteractiveElement(targetElement))) { return; } event.preventDefault(); if (disabled) { return; } store.state.inputRef.current?.focus(); if (store.state.openOnInputClick) { store.state.setOpen(true, createChangeEventDetails(REASONS.inputPress, event.nativeEvent)); } }