Компонент TabPanel
в WordPress — это React-компонент, предназначенный для организации контента по вкладкам. Он включает список вкладок и область отображения содержимого, соответствующего выбранной вкладке. Данный компонент соответствует требованиям ARIA, что делает его доступным для всех пользователей.
Использование компонента TabPanel
Компонент TabPanel
полезен для организации и навигации между связанными наборами контента на одном уровне иерархии. В каждой вкладке должен отображаться уникальный контент, объединённый общей темой.
Пример базового использования
В следующем примере TabPanel
создаёт две вкладки. При выборе вкладки, её название выводится в консоль, а также отображается соответствующее содержимое.
import { TabPanel } from '@wordpress/components';
const handleSelect = (tabName) => {
console.log('Выбрана вкладка:', tabName);
};
const MyTabPanelExample = () => (
<TabPanel
className="my-custom-tab-panel"
activeClass="active-tab"
onSelect={handleSelect}
tabs={[
{ name: 'info', title: 'Информация', className: 'info-tab' },
{ name: 'settings', title: 'Настройки', className: 'settings-tab' },
]}
>
{(tab) => <p>{tab.title} — это содержимое вкладки.</p>}
</TabPanel>
);
Свойства компонента TabPanel
Рассмотрим все параметры, которые можно использовать для настройки TabPanel
:
Свойство | Тип | По умолчанию | Описание |
---|---|---|---|
className | string | '' | CSS-класс для внешнего контейнера TabPanel . |
orientation | string | horizontal | Ориентация списка вкладок. Допустимые значения: horizontal и vertical . |
onSelect | function | noop | Функция, вызываемая при выборе вкладки. Получает tabName в качестве аргумента. |
tabs | array | обязательно | Массив объектов, описывающих вкладки. Каждый объект должен содержать свойства name и title , а также может включать className , icon , disabled и другие. |
activeClass | string | is-active | CSS-класс для активной вкладки. |
initialTabName | string | null | Имя вкладки, которая будет выбрана по умолчанию. Если не указано, выберется первая вкладка. |
selectOnMove | boolean | true | Когда true , вкладка будет выбрана при получении фокуса. Если false , активация произойдёт только по клику. |
children | (object) => Element | обязательно | Функция, рендерящая контент для выбранной вкладки. Получает объект активной вкладки как аргумент. |
Настройка начальной вкладки и ориентации
В этом примере TabPanel
отображает три вкладки, одна из которых (по имени overview
) выбрана по умолчанию. Кроме того, вкладки расположены вертикально.
import { TabPanel } from '@wordpress/components';
const MyVerticalTabPanel = () => (
<TabPanel
className="vertical-tab-panel"
activeClass="current-tab"
initialTabName="overview"
orientation="vertical"
tabs={[
{ name: 'overview', title: 'Обзор', className: 'overview-tab' },
{ name: 'details', title: 'Детали', className: 'details-tab' },
{ name: 'contact', title: 'Контакты', className: 'contact-tab' },
]}
>
{(tab) => <p>Содержимое вкладки: {tab.title}</p>}
</TabPanel>
);
В этом примере:
initialTabName
установлен наoverview
, что выбирает вкладку «Обзор» при первом рендере.orientation
имеет значениеvertical
, что делает список вкладок вертикальным.
Вкладки с иконками и управлением доступностью
Компонент TabPanel
поддерживает иконки, которые могут отображаться вместо заголовков. В данном примере иконка добавляется к вкладке «Главная», а также отключена вкладка «Справка».
import { TabPanel } from '@wordpress/components';
import { home, help } from '@wordpress/icons';
const MyIconTabPanel = () => (
<TabPanel
className="icon-tab-panel"
activeClass="selected-tab"
tabs={[
{ name: 'home', title: 'Главная', icon: home, className: 'home-tab' },
{ name: 'settings', title: 'Настройки', className: 'settings-tab' },
{ name: 'help', title: 'Справка', icon: help, className: 'help-tab', disabled: true },
]}
>
{(tab) => <p>Текущий раздел: {tab.title}</p>}
</TabPanel>
);
В данном примере:
icon
задаёт иконку вкладке «Главная», отображая её вместо текста.disabled
делает вкладку «Справка» недоступной для выбора.
Пример с выбором вкладки по наведению
Если требуется выбор вкладки при наведении, можно задать свойство selectOnMove
в false
, чтобы активация происходила только по клику.
import { TabPanel } from '@wordpress/components';
const HoverTabPanelExample = () => (
<TabPanel
className="hover-tab-panel"
selectOnMove={false}
tabs={[
{ name: 'profile', title: 'Профиль', className: 'profile-tab' },
{ name: 'notifications', title: 'Уведомления', className: 'notifications-tab' },
{ name: 'settings', title: 'Настройки', className: 'settings-tab' },
]}
>
{(tab) => <p>Раздел: {tab.title}</p>}
</TabPanel>
);
Заключение
Компонент TabPanel
в WordPress предоставляет удобный и доступный способ для организации контента по вкладкам. С помощью параметров, таких как orientation
, initialTabName
, selectOnMove
и icon
, вы можете гибко настраивать его внешний вид и поведение в зависимости от потребностей интерфейса.