import type { ChangeEvent, FormEvent, } from 'react'; import type { ElementRef } from '../../lib/teact/teact'; import { memo } from '../../lib/teact/teact'; import { IS_TAURI } from '../../util/browser/globalEnvironment'; import buildClassName from '../../util/buildClassName'; import useLang from '../../hooks/useLang'; type OwnProps = { ref?: ElementRef; id?: string; className?: string; value?: string; label?: string; error?: string; success?: string; disabled?: boolean; readOnly?: boolean; placeholder?: string; autoComplete?: string; maxLength?: number; tabIndex?: number; teactExperimentControlled?: boolean; inputMode?: 'text' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; onChange?: (e: ChangeEvent) => void; onInput?: (e: FormEvent) => void; onKeyPress?: (e: React.KeyboardEvent) => void; onKeyDown?: (e: React.KeyboardEvent) => void; onBlur?: (e: React.FocusEvent) => void; onPaste?: (e: React.ClipboardEvent) => void; onClick?: (e: React.MouseEvent) => void; }; const InputText = ({ ref, id, className, value, label, error, success, disabled, readOnly, placeholder, autoComplete, inputMode, maxLength, tabIndex, teactExperimentControlled, onChange, onInput, onKeyPress, onKeyDown, onBlur, onPaste, onClick, }: OwnProps) => { const lang = useLang(); const labelText = error || success || label; const fullClassName = buildClassName( 'input-group', value && 'touched', error ? 'error' : success && 'success', disabled && 'disabled', readOnly && 'disabled', labelText && 'with-label', className, ); return (
{labelText && ( )}
); }; export default memo(InputText);