Компонент NumberControl
в WordPress — это экспериментальный элемент для ввода числовых значений, предоставляющий дополнительные возможности по сравнению с обычным полем ввода типа number
. Он позволяет управлять значением с помощью кнопок, мыши, клавиш и поддерживает функции, такие как контроль диапазона значений, шаг и настройка действий при удержании клавиши Shift
.
Пример использования NumberControl
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
import { useState } from 'react';
const ExampleComponent = () => {
const [value, setValue] = useState(10);
return (
<NumberControl
label="Введите значение:"
onChange={(newValue) => setValue(newValue)}
value={value}
min={5}
max={100}
step={5}
shiftStep={20}
isShiftStepEnabled={true}
isDragEnabled={true}
dragDirection="e"
spinControls="custom"
/>
);
};
Описание параметров (Props) компонента NumberControl
1. dragDirection
- Описание: Определяет направление оси для изменения значения при перетаскивании.
- Возможные значения:
'n'
(север),'e'
(восток),'s'
(юг),'w'
(запад). - Тип:
string
- Обязательный: Нет
- Значение по умолчанию:
'n'
2. dragThreshold
- Описание: Определяет количество пикселей, на которое нужно сдвинуть мышь перед изменением значения (если
isDragEnabled
установлено вtrue
). - Тип:
number
- Обязательный: Нет
- Значение по умолчанию:
10
3. spinControls
- Описание: Тип кнопок для быстрого увеличения и уменьшения значения.
- Возможные значения:
'none'
— не отображать кнопки.'native'
— использовать стандартные HTML-кнопки.'custom'
— использовать кнопки с иконками «плюс» и «минус».
- Тип:
string
- Обязательный: Нет
- Значение по умолчанию:
'native'
4. isDragEnabled
- Описание: Включает возможность изменения значения при перетаскивании мышью.
- Тип:
boolean
- Обязательный: Нет
- Значение по умолчанию:
false
5. isShiftStepEnabled
- Описание: Позволяет изменять значение с увеличенным шагом при удержании клавиши
Shift
и нажатии стрелок вверх/вниз. - Тип:
boolean
- Обязательный: Нет
- Значение по умолчанию:
true
6. label
- Описание: Текст для отображения метки рядом с полем ввода.
- Тип:
string
- Обязательный: Нет
7. labelPosition
- Описание: Положение метки относительно поля ввода.
- Возможные значения:
'top'
,'side'
,'bottom'
,'edge'
. - Тип:
string
- Обязательный: Нет
8. max
- Описание: Максимально допустимое значение.
- Тип:
number
- Обязательный: Нет
- Значение по умолчанию:
Infinity
9. min
- Описание: Минимально допустимое значение.
- Тип:
number
- Обязательный: Нет
- Значение по умолчанию:
-Infinity
10. onChange
- Описание: Функция, вызываемая при изменении значения. Получает два аргумента:
newValue
(новое значение) иextra
(объект, содержащий событие браузера). - Тип:
(newValue, extra) => void
- Обязательный: Нет
11. required
- Описание: Указывает, что значение должно быть валидным числом в диапазоне
min
иmax
. При значенииfalse
допускается пустая строка как допустимое значение. - Тип:
boolean
- Обязательный: Нет
- Значение по умолчанию:
false
12. shiftStep
- Описание: Шаг для увеличения значения при удержании клавиши
Shift
. Этот шаг умножается на стандартный шаг (step
). - Тип:
number
- Обязательный: Нет
- Значение по умолчанию:
10
13. step
- Описание: Значение, на которое изменяется число при инкременте или декременте. Может быть установлено как
'any'
, чтобы отключить проверку на кратность шагу. - Тип:
number | "any"
- Обязательный: Нет
- Значение по умолчанию:
1
14. __next40pxDefaultSize
- Описание: Экспериментальная функция, включающая новый размер по умолчанию, который будет применен в будущем.
- Тип:
boolean
- Обязательный: Нет
- Значение по умолчанию:
false
Пример с настройкой диапазона значений и шагом
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
import { useState } from 'react';
const RangeExample = () => {
const [value, setValue] = useState(50);
return (
<NumberControl
label="Установите значение (от 10 до 100):"
onChange={(newValue) => setValue(newValue)}
value={value}
min={10}
max={100}
step={5}
/>
);
};
Пример с пользовательскими кнопками инкремента и использованием drag
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
import { useState } from 'react';
const DragExample = () => {
const [value, setValue] = useState(20);
return (
<NumberControl
label="Перетаскивайте для изменения значения:"
onChange={(newValue) => setValue(newValue)}
value={value}
isDragEnabled={true}
dragDirection="e"
dragThreshold={15}
spinControls="custom"
step={2}
/>
);
};
Пример с шагом Shift
import { __experimentalNumberControl as NumberControl } from '@wordpress/components';
import { useState } from 'react';
const ShiftStepExample = () => {
const [value, setValue] = useState(5);
return (
<NumberControl
label="Изменение с шагом при удержании Shift:"
onChange={(newValue) => setValue(newValue)}
value={value}
step={1}
shiftStep={10}
isShiftStepEnabled={true}
/>
);
};
Заключение
Компонент NumberControl
предоставляет гибкие возможности для числового ввода, включая контроль значений через мышь, клавиши и дополнительные параметры.