ToggleControl — это компонент интерфейса пользователя в WordPress, предназначенный для создания переключателей. Он полезен для включения или отключения различных настроек, например, фоновых свойств, параметров видимости и других функций.

Основные особенности ToggleControl
Компонент ToggleControl рендерит простой переключатель с возможностью настройки, что делает его удобным инструментом для создания удобных интерфейсов. Он поддерживает такие свойства, как label для текста метки, help для вспомогательного текста, checked для состояния переключателя, и другие, что позволяет гибко управлять его поведением.
Пример базового использования
import { useState } from 'react';
import { ToggleControl } from '@wordpress/components';
const ExampleToggleControl = () => {
    const [isFeatureEnabled, setIsFeatureEnabled] = useState(false);
    return (
        <ToggleControl
            label="Включить новую функцию"
            help={isFeatureEnabled ? 'Функция включена.' : 'Функция отключена.'}
            checked={isFeatureEnabled}
            onChange={(newState) => setIsFeatureEnabled(newState)}
        />
    );
};
В этом примере ToggleControl используется для активации функции. Переключение обновляет состояние isFeatureEnabled, а вспомогательный текст help показывает, включена ли функция.
Основные параметры (Props) компонента ToggleControl
1. label
Тип: string
Описание: Определяет текст метки для переключателя. Это свойство не является обязательным, но добавление метки улучшает удобство использования компонента.
<ToggleControl
    label="Анимация заголовка"
/>2. help
Тип: string | React.Element | Function
Описание: Определяет вспомогательный текст под переключателем, который может быть статичным или динамически меняться в зависимости от состояния. Если передается функция, она принимает текущее состояние checked и возвращает строку, соответствующую этому состоянию.
import { useState } from 'react';
import { ToggleControl } from '@wordpress/components';
const HelpToggleControlExample = () => {
    const [isBold, setIsBold] = useState(false);
    return (
        <ToggleControl
            label="Текст жирный"
            help={() => (isBold ? 'Текст теперь жирный' : 'Текст не жирный')}
            checked={isBold}
            onChange={setIsBold}
        />
    );
};
3. checked
Тип: boolean
Описание: Определяет начальное состояние переключателя. Если true, переключатель установлен; если false, отключен. Это свойство можно изменить, чтобы сделать компонент управляемым или неуправляемым.
<ToggleControl
    label="Уведомления"
    checked={true}
/>
4. disabled
Тип: boolean
Описание: Если true, делает компонент недоступным для взаимодействия, а также применяет соответствующие стили. Это полезно для отключения функций, которые недоступны в текущих условиях.
<ToggleControl
    label="Изменение доступно"
    disabled={true}
    help="Переключатель временно отключен"
/>
5. onChange
Тип: function
Описание: Функция, вызываемая при изменении состояния переключателя. Получает в качестве аргумента текущее состояние checked, что позволяет гибко управлять реакцией на переключение.
import { useState } from 'react';
import { ToggleControl } from '@wordpress/components';
const OnChangeExample = () => {
    const [isEmailEnabled, setIsEmailEnabled] = useState(false);
    const handleToggle = (newValue) => {
        setIsEmailEnabled(newValue);
        console.log(`Уведомления по email: ${newValue ? 'включены' : 'отключены'}`);
    };
    return (
        <ToggleControl
            label="Уведомления по email"
            checked={isEmailEnabled}
            onChange={handleToggle}
        />
    );
};
6. className
Тип: string
Описание: Устанавливает CSS-класс для компонента, что позволяет задавать уникальные стили. Классы components-base-control и components-toggle-control добавляются по умолчанию.
<ToggleControl
    label="Фиксированное положение"
    className="custom-toggle-style"
/>
7. __nextHasNoMarginBottom
Тип: boolean
Описание: Если установлено в true, компонент отображается без нижнего поля. Это важно для новых стилей, которые могут стать стандартом в будущих версиях WordPress.
<ToggleControl
    label="Автоматическая синхронизация"
    __nextHasNoMarginBottom={true}
/>
Полный пример использования ToggleControl
В этом примере создается интерфейс с тремя переключателями, каждый из которых включает или отключает разные настройки.
import { useState } from 'react';
import { ToggleControl } from '@wordpress/components';
const AdvancedToggleControlExample = () => {
    const [isAutoSaveEnabled, setIsAutoSaveEnabled] = useState(false);
    const [isDarkMode, setIsDarkMode] = useState(false);
    const [isNotificationsOn, setIsNotificationsOn] = useState(true);
    return (
        <div>
            <ToggleControl
                label="Автосохранение"
                help={isAutoSaveEnabled ? 'Автосохранение включено.' : 'Автосохранение отключено.'}
                checked={isAutoSaveEnabled}
                onChange={setIsAutoSaveEnabled}
            />
            <ToggleControl
                label="Тёмная тема"
                help={isDarkMode ? 'Темный режим активирован.' : 'Светлый режим активирован.'}
                checked={isDarkMode}
                onChange={setIsDarkMode}
                className="dark-mode-toggle"
            />
            <ToggleControl
                label="Уведомления"
                help={isNotificationsOn ? 'Вы будете получать уведомления.' : 'Уведомления отключены.'}
                checked={isNotificationsOn}
                onChange={setIsNotificationsOn}
                disabled={!isDarkMode}
            />
        </div>
    );
};
Заключение
Компонент ToggleControl в WordPress — это удобный способ создания переключателей для управления различными параметрами.
