import { useState, useEffect } from "react"; import "./Search.css"; import { getCN, randomId, usePadding, renderProps } from "../utils"; import { IconButton } from "../../index"; import { IconSearch } from "../../svg_icons/IconSearch"; import { IconClear } from "../../svg_icons/IconClear"; import FormField from "../../componentsDefault/FormField/FormField"; function Search({ before, after, placeholder = `Поиск`, value, onChange, label, ...props }: { [x: string]: any; }) { const [props_id, setPropsId] = useState(randomId(props.id, `input_search`)); const [afterOpen, setAfterOpen] = useState(false); const [beforeOpen, setBeforeOpen] = useState(true); const [_value, _setValue] = useState(``); useEffect(() => { if (_value) { if (_value.length >= 1) { setAfterOpen(true); } else setAfterOpen(false); } else setAfterOpen(false); }, [_value]); useEffect(() => { if (value && value.length >= 1) { if (_value.length < value.length) _setValue(value); } }, [value]); const onChangeClear = (e: any) => { e.target.value = ``; _setValue(``); onActive(false) if (onChange) onChange(e); }; const _onChange = (e: any) => { _setValue(e.target.value); if (onChange) onChange(e); }; const onActive = (e: any) => { setBeforeOpen(Boolean(e)); }; return ( ) } className={getCN([ "MYUI-Search", !beforeOpen && "MYUI-Search--active", afterOpen && "MYUI-FormField__in--before_after", !afterOpen && "MYUI-FormField__in--before", ])} after={ afterOpen && (after ? ( after ) : ( )) } onActive={onActive} > ); } export default Search;