Компонент InputControl
в WordPress является экспериментальным и предоставляет возможность ввода и редактирования текста в интерфейсе. Он предназначен для того, чтобы со временем заменить TextControl
или быть объединенным с ним. Давайте рассмотрим, как использовать этот компонент и подробно разберем все его параметры.
Импорт компонента InputControl
Так как компонент InputControl
находится на этапе эксперимента, его следует импортировать как __experimentalInputControl
из @wordpress/components
:
import { __experimentalInputControl as InputControl } from '@wordpress/components';
import { useState } from 'react';
Пример использования InputControl
Вот базовый пример использования компонента InputControl
. Мы создадим простое текстовое поле, значение которого будет изменяться с помощью функции onChange
.
const Example = () => {
const [inputValue, setInputValue] = useState('');
return (
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue ?? '')}
/>
);
};
В этом примере мы создали переменную состояния inputValue
с помощью useState
, а также настроили onChange
для обновления значения в InputControl
.
Подробное описание параметров InputControl
Компонент InputControl
предоставляет широкие возможности настройки. Вот все его параметры:
- disabled — Отключает поле ввода, делая его недоступным для редактирования. Полезно для случаев, когда необходимо отобразить значение без возможности изменения.
- Тип:
Boolean
- Обязательный: Нет
- Значение по умолчанию:
false
- Тип:
<InputControl
value="Пример текста"
disabled={true}
/>
- isPressEnterToChange — Если установлено в
true
, изменение значения будет происходить только при нажатии клавиши ENTER. Также изменение будет срабатывать при потере фокуса (событиеonBlur
), например, при переходе на другой элемент с помощью клавиши TAB.- Тип:
Boolean
- Обязательный: Нет
- Значение по умолчанию:
false
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
isPressEnterToChange={true}
/>
- hideLabelFromVision — Делает метку (
label
) видимой только для экранных читалок, скрывая её из визуального интерфейса. Удобно для улучшения доступности, когда визуальная метка не требуется.- Тип:
Boolean
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
label="Скрытая метка"
hideLabelFromVision={true}
/>
- label — Устанавливает текст метки для поля ввода, обеспечивая понятность интерфейса для пользователей.
- Тип:
String
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
label="Имя пользователя"
/>
- labelPosition — Задаёт позицию метки относительно поля ввода. Поддерживаемые значения:
top
,side
,bottom
,edge
.- Тип:
String
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
label="Электронная почта"
labelPosition="side"
/>
- onChange — Функция, вызываемая при изменении значения в поле. Принимает текущее значение в качестве аргумента и является обязательной.
- Тип:
Function
- Обязательный: Да
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
/>
- prefix — Отображает элемент слева от текстового поля, что позволяет, например, добавить символ валюты или иконку.
- Тип:
React.ReactNode
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
prefix="💰"
/>
- size — Определяет размер поля ввода. Поддерживаемые значения:
default
иsmall
.- Тип:
String
- Обязательный: Нет
- Значение по умолчанию:
default
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
suffix="км/ч"
/>
- suffix — Добавляет элемент справа от текстового поля, что позволяет, например, отображать единицы измерения.
- Тип:
React.ReactNode
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
suffix="км/ч"
/>
- type — Определяет тип HTML-элемента
input
. По умолчанию —text
. Поддерживает любые допустимые значения типаinput
.- Тип:
String
- Обязательный: Нет
- Значение по умолчанию:
"text"
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
type="email"
/>
- value — Текущее значение поля ввода. Оно связывается с состоянием компонента, обеспечивая контроль над значением.
- Тип:
String
- Обязательный: Нет
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
/>
- __next40pxDefaultSize — Экспериментальный параметр, позволяющий активировать новую высоту поля (40px), которая станет стандартной в будущем. Пока что этот параметр отключен по умолчанию.
- Тип:
Boolean
- Обязательный: Нет
- Значение по умолчанию:
false
- Тип:
<InputControl
value={inputValue}
onChange={(newValue) => setInputValue(newValue)}
__next40pxDefaultSize={true}
/>
Заключение
Компонент InputControl
в WordPress представляет собой мощный инструмент для создания и настройки текстовых полей ввода. Он предоставляет гибкость и поддержку различных параметров, таких как метки, префиксы, суффиксы, контроль размера и другие возможности. Благодаря этим параметрам разработчики могут легко адаптировать InputControl
к потребностям интерфейса и обеспечивать высокий уровень доступности и пользовательского опыта.