При установке фокуса на поле - плейсхолдер не отображается
В данном случае, при вставке телефона в формате +79998887766 выведет его сразу в нужном формате, за счет совпадения начальных символов маски и вставляемого значения, в остальных кейсах нужна обработка значения внутри коллбека и его возврат оттуда
Код DemoTextFieldWithBeforeMaskChangeValueexport const DemoTextFieldWithBeforeMaskChangeValue = ({ children }) => {const handleBeforeMaskChange = (value, newState) => {const { value: newMaskedValue } = newState;const isValuePasted = value && value.length > 1;return { ...newState, value: isValuePasted ? value : newMaskedValue };};return <>{children({ handleBeforeMaskChange })}</>;};
Клик по "крестику" очищает поле по умолчанию. Если установлены кастомная иконка и onCustomIconClick
, то очищение перестает работать.
В данном состоянии компонент полностью контролируется родительским, в том числе очистка поля ввода путем клика на иконку, для нее следует использовать коллбек onCustomIconClick
Код DemoControlledTextFieldexport const DemoTextFieldWithControlledValue = ({ children }) => {const [inputValue, setInputValue] = useState('');const handleChange = ({ target: { value } }) => {const valueDigits = value.replace(/[^0-9]/g, '');setInputValue(valueDigits);};return <>{children({ value: inputValue, onChange: handleChange })}</>;};
Пропс textarea, выставленный в значение true, изменяет компонент в textarea.
Поле автоматически увеличивается при вводе текста до высоты шести строк. Режим автоматического увеличения высоты отключается при ручном ресайзе поля.
При превышении переданного количества поле становится невалидным.
По умолчанию минимальная высота равна трем строкам
Остается доступен перевод строки по нажатию комбинации Shift + Enter и автоматический