Sha256: adaf69d1e57b4a54ea3ded9dca17ed752833b707c0a658e7082c6b08d7c39b16

Contents?: true

Size: 953 Bytes

Versions: 5

Compression:

Stored size: 953 Bytes

Contents

import { forwardRef, useEffect, useImperativeHandle, useRef, InputHTMLAttributes } from 'react';

export default forwardRef(function TextInput(
    { type = 'text', className = '', isFocused = false, ...props }: InputHTMLAttributes<HTMLInputElement> & { isFocused?: boolean },
    ref
) {
    const localRef = useRef<HTMLInputElement>(null);

    useImperativeHandle(ref, () => ({
        focus: () => localRef.current?.focus(),
    }));

    useEffect(() => {
        if (isFocused) {
            localRef.current?.focus();
        }
    }, []);

    return (
        <input
            {...props}
            type={type}
            className={
                'border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm ' +
                className
            }
            ref={localRef}
        />
    );
});

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kaze-0.5.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.4.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.3.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.2.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.1.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx