@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
JavaScript
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));
}
}