Sha256: 70e31b7a8880c6d9fdbf8c22fae8a1d729afab9be816490269016cc7e2ffb88d

Contents?: true

Size: 851 Bytes

Versions: 9

Compression:

Stored size: 851 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

9 entries across 9 versions & 1 rubygems

Version Path
kaze-0.17.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.16.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.15.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.14.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.13.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.12.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.11.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.10.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx
kaze-0.9.0 stubs/inertia-react-ts/app/javascript/Components/TextInput.tsx