UIKit
7.35.1
• DrawerКомпоненты
UIKit
7.35.1
AccordionActionTooltipActionsPanelAlertArrowToggleAvatarBreadcrumbsButtonCardCheckboxClipboardButtonDefinitionListDialogDisclosureDividerDrawerDropdownMenuFilePreviewHelpMarkHotkeyIconLabelLinkListLoaderMenuModalNumberInputOverlayPaginationPalettePasswordInputPinInputPlaceholderContainerPopoverPopupPortalProgressRadioRadioGroupSegmentedRadioGroupSelectSheetSkeletonSliderSpinStepperSwitchTableTabsTextTextAreaTextInputToasterTocTooltipUserUserLabel
Date Components
3.4.2
Navigation
4.0.12
resizable
disableEscapeKeyDown
disableOutsideClick
hideVeil
placement
import {Drawer} from '@gravity-ui/uikit';
Drawer - компонент, который позволяет отображать содержимое в виде боковой панели. Он может быть использован для отображения навигации, инструментов или дополнительного контента. Компонент реализован с помощью React и включает CSS-переходы для плавных анимаций.
§Использование
Ниже приводится простой пример использования компонента Drawer:
import React from 'react';
import {Drawer} from '@gravity-ui/uikit';
const App = () => {
const [isVisible, setVisible] = React.useState(false);
return (
<div>
<button onClick={() => setVisible(true)}>Open Drawer</button>
<Drawer onOpenChange={setVisible} open={isVisible}>
<p>Content of the drawer</p>
</Drawer>
</div>
);
};
export default App;
§Направление (placement)
Чтобы управлять направлением Drawer, вы можете передать свойство placement в компонент. Возможные значения: left, right, top, и bottom.
<Drawer onOpenChange={setVisible} open={isVisible} placement="left">
<p>Content of the drawer</p>
</Drawer>
<Drawer onOpenChange={setVisible} open={isVisible} placement="right">
<p>Content of the drawer</p>
</Drawer>
<Drawer onOpenChange={setVisible} open={isVisible} placement="top">
<p>Content of the drawer</p>
</Drawer>
<Drawer onOpenChange={setVisible} open={isVisible} placement="bottom">
<p>Content of the drawer</p>
</Drawer>
§Изменяемый размер (resizable)
Компонент Drawer может быть изменяемым размером, передав свойство resizable.
<Drawer onOpenChange={setVisible} open={isVisible} resizable>
<p>Content of the drawer</p>
</Drawer>
Дополнительно, вы можете использовать свойство size, чтобы управлять размером Drawer и передать обработчик onResize, чтобы сохранить измененное значение.
const [size, setSize] = useState(500);
<Drawer onOpenChange={setVisible} open={isVisible} resizable size={size} onResize={setSize}>
<p>Content of the drawer</p>
</Drawer>;
§Свойства
| Имя | Описание | Тип | Значение по умолчанию |
|---|---|---|---|
| className | Атрибут class для корневого элемента | string | |
| qa | Атрибут для тестирования (data-qa) | string | |
| style | Атрибут style для корневого элемента | React.CSSProperties | |
| aria-label | Атрибут aria-label для описания компонента Drawer | string | |
| aria-labelledby | ID элемента с видимым заголовком для Drawer | string | |
| aria-describedby | Атрибутaria-describedby для описания компонента Drawer | string | |
| aria-details | Атрибут aria-details для описания компонента Drawer | string | |
| returnFocus | Element to be focused on closing | boolean React.Ref<HTMLElement> | true |
| initialFocus | Начальный элемент для установки фокуса. Положительное число является индексом кликабельного элемента | number React.Ref<HTMLElement> | |
| placement | Сторона, откуда выезжает Drawer | string | left |
| contentClassName | Атрибут class для элемента с контентом | string | |
| children | React-контент | React.ReactNode | |
| container | DOM-элемент, в который монтируется компонент через Portal | HTMLElement | document.body |
| disableBodyScrollLock | Отключает блокировку скролла страницы при открытии | boolean | false |
| disableEscapeKeyDown | Отключает закрытие по клавише Esc | boolean | false |
| disableOutsideClick | Отключает закрытие при клике снаружи | boolean | false |
| disablePortal | Отключает использование Portal | boolean | false |
| keepMounted | Не удаляет компонент из DOM при скрытии | boolean | false |
| resizable | Включает возможность изменения размера через курсор | boolean | false |
| open | Управляет видимостью компонента | boolean | false |
| hideVeil | Скрывает шторку компонента | boolean | false |
| onOpenChange | Обработчик изменения состояния видимости | Function | |
| onTransitionIn | Обработчик начала анимации открытия | Function | |
| onTransitionOut | Обработчик начала анимации закрытия | Function | |
| onTransitionInComplete | Обработчик завершения анимации открытия | Function | |
| onTransitionOutComplete | Обработчик завершения анимации закрытия | Function | |
| onResizeEnd | Обработчик завершения изменения размера | Function | |
| onResize | Обработчик изменения размера | Function | |
| onResizeStart | Обработчик начала изменения размера | Function | |
| maxSize | Максимальная ширина или высота контента в пикселях | number | |
| minSize | Минимальная ширина или высота контента в пикселях | number | |
| size | Ширина или высота контента в пикселях. Когда передано значение auto, Drawer подстроится под размер контента | number | 'auto' |