UNPKG

rsuite

Version:

A suite of react components

39 lines 929 B
'use client'; import { useRef, useCallback, useMemo } from 'react'; import useMaxWidth from "./useMaxWidth.js"; import InputAutosize from "../InputAutosize.js"; const INPUT_MARGIN_RIGHT = 60; function useInput(props) { const { multi, triggerRef } = props; const inputRef = useRef(null); const maxWidth = useMaxWidth(triggerRef); const getInput = useCallback(() => { return multi ? inputRef.current?.input : inputRef.current; }, [multi]); const focus = useCallback(() => { getInput()?.focus(); }, [getInput]); const blur = useCallback(() => { getInput()?.blur(); }, [getInput]); const inputProps = useMemo(() => { return multi ? { inputStyle: { maxWidth: maxWidth - INPUT_MARGIN_RIGHT }, as: InputAutosize } : { as: 'input' }; }, [maxWidth, multi]); return { inputProps, inputRef, focus, blur }; } export default useInput;