useInputContainer@astryxdesign/core v0.5.2 · useInputContainer

Usage

Makes an input container wrapper clickable, delegating focus to the inner input/textarea when the user clicks non-interactive areas (icons, padding, status indicators). Built on top of useClickableContainer, so nested interactive elements (clear buttons, calendar toggles, links) are handled safely; clicking them does NOT steal focus from the input. Automatically detects input type: text-like inputs receive .focus(), while other types (checkbox, radio, file) receive .click().

ts
import {useInputContainer} from '@astryxdesign/core/hooks'

Best practices

GuidancePractices
Do

Use inside input wrapper components (TextInput, NumberInput, TimeInput, TextArea) to make the full container area clickable.

Do

Attach both onClick and onMouseUp to the wrapper div for full interaction handling.

Don't

Use on bare inputs without a wrapper; there is no benefit if the input already fills the full clickable area.

Parameters

ParamTypeDescription
optionsrequired

Configuration object for the input container.

options.containerRefrequired
RefObject<HTMLElement | null>

Ref to the outer container/wrapper element.

options.inputRefrequired
RefObject<HTMLInputElement | HTMLTextAreaElement | HTMLElement | null>

Ref to the inner input or textarea element.

options.disabled
boolean (default: false)

Whether the input is disabled.

Returns

FieldTypeDescription
onClick(event: MouseEvent<HTMLElement>) => void

Click handler to attach to the container wrapper.

onMouseUp(event: MouseEvent<HTMLElement>) => void

Mouse up handler to attach to the container wrapper.

Use with shadcn

Already using the shadcn registry workflow? Install the real Astryx package and a local public re-export. Component implementation source stays in Astryx. How compatibility works.

This install URL expires with the draft preview.
bash
npx shadcn@latest add https://astryx-pxujcw3w9-fbopensource.vercel.app/r/hooks/use-input-container.json