UNPKG

@yandex/ui

Version:

Yandex UI components

130 lines (95 loc) 4.67 kB
# TabsMenu <a href='https://github.yandex-team.ru/search-interfaces/frontend/tree/master/packages/lego-components/src/TabsMenu' target='_blank'><img src='https://badger.yandex-team.ru/custom/[Исходники]/[Github ][green]/badge.svg' /></a> <a href='https://search.yandex-team.ru/stsearch?text=TabsMenu.ts&facet.queue=ISL&facet.type=bug&facet.status=128' target='_blank'><img src='https://badger.yandex-team.ru/custom/[Известные проблемы]/[Startrek][blue]/badge.svg' /></a> <!-- description:start --> Компонент для создания горизонтального меню. <!-- description:end --> ## Когда использовать С помощью компонента можно создать: - статическое меню с ссылками на другие страницы; - меню с использованием собственного JS-кода (например, чтобы сделать пункт меню активным); - переключатель для вкладок `TabsPanes`. ## Пример использования Конфигурация темы на уровне проекта: ```ts // src/lib/theme.ts import { configureRootTheme } from '@yandex-lego/components/Theme' import { theme } from '@yandex-lego/components/Theme/presets/default' configureRootTheme({ theme }) ``` Использование с нужным набором модификаторов: ```ts // src/App.ts import React, { useState } from 'react' import { compose } from '@bem-react/core' import { TabsMenu as TabsMenuDesktop, withSizeM, withLayoutHoriz, withViewDefault, } from '@yandex-lego/components/TabsMenu/desktop' const TabsMenu = compose( withSizeM, withViewDefault, withLayoutHoriz, )(TabsMenuDesktop) const App = () => { const [activeTab, setActiveTab] = useState('tab1') return ( <TabsMenu size="m" view="default" layout="horiz" activeTab={activeTab} tabs={[ { id: 'tab1', onClick: () => setActiveTab('tab1'), content: 'Tab 1' }, { id: 'tab2', onClick: () => setActiveTab('tab2'), content: 'Tab 2' }, ]} /> ) } ``` Использование с полным набором модификаторов: ```ts // src/App.ts import React, { useState } from 'react' import { TabsMenu } from '@yandex-lego/components/TabsMenu/desktop/bundle' const App = () => { const [activeTab, setActiveTab] = useState('tab1') return ( <TabsMenu size="m" view="default" layout="horiz" activeTab={activeTab} tabs={[ { id: 'tab1', onClick: () => setActiveTab('tab1'), content: 'Tab 1' }, { id: 'tab2', onClick: () => setActiveTab('tab2'), content: 'Tab 2' }, ]} /> ) } ``` ## Примеры ### Вид меню Чтобы изменить вид меню, установите свойство `view` в значение `"default"`. {{%story::desktop:navigation-tabsmenu-desktop--view%}} ### Стилевое оформление Чтобы изменить стилевое оформление меню, установите свойство `theme` в значение `"normal"`. {{%story::desktop:navigation-tabsmenu-desktop--theme%}} ### Размер меню Чтобы задать размер горизонтального меню, установите свойство `size` в одно из следующих значений: `"m"`, `"s"`. {{%story::desktop:navigation-tabsmenu-desktop--size%}} ### Адаптивность Чтобы включить адаптивность, установите свойство `adaptive` и обработчик `onChange`. > ⚠️ Данная функциональность находится в стадии доработок и может быть изменена в будущем. {{%story::desktop:navigation-tabsmenu-desktop--adaptive%}} ## Свойства <!-- props:start --> | Свойство | Тип | Описание | | ---------- | ----------------------------- | ----------------------------------------- | | activeTab? | `string` | Идентификатор активного пункта меню | | tabs | `ITabsMenuTabProps[]` | Массив пунктов меню | | innerRef? | `RefObject<HTMLUListElement>` | Ссылка на корневой DOM-элемент компонента | | className? | `string` | Дополнительный класс | <!-- props:end -->