Accordion
Компонент для создания раскрывающихся/сворачивающихся блоков контента.
Структура
Обязательная обёртка для всего сворачивающегося контента - компонент Accordion
.
Заголовок для триггера разворачивающегося блока необходимо вкладывать в подкомпонент Accordion.Summary
, который
наследует все свойства компонента SimpleCell
.
Сворачивающийся контент необходимо вкладывать в подкомпонент Accordion.Content
.
Режим работы
Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.
Для использования неконтролируемого режима достаточно просто не передавать expanded
или передавать defaultExpanded
, если
требуется задать значение по умолчанию.
Используйте свойства expanded
и onChange
для контролируемого управления состоянием компонента.
// Неконтролируемое состояние, раскрыт по умолчанию
<Accordion defaultExpanded>
<Accordion.Summary>Заголовок</Accordion.Summary>
<Accordion.Content>
<Div>Контент</Div>
</Accordion.Content>
</Accordion>;
// Контролируемое состояние, раскрыт по умолчанию
const [expanded, setExpanded] = React.useState(true);
return (
<Accordion expanded={expanded} onChange={setExpanded}>
<Accordion.Summary>Заголовок</Accordion.Summary>
<Accordion.Content>
<Div>Контент</Div>
</Accordion.Content>
</Accordion>
);
Группа аккордеонов
Компонент Group
позволяет отображать несколько Accordion
.
Визуальное оформление
Иконки
Используйте свойства ExpandIcon
и CollapseIcon
для кастомизации иконок раскрытия/сворачивания.
Анимация
Компонент поддерживает следующие анимационные эффекты:
- плавное раскрытие/сворачивание контента;
- автоматический расчет высоты содержимого;
- поддержка прерывания анимации при быстром клике.
Производительность
По умолчанию контент монтируется, даже если он не развернут. Такое поведение предусмотрено с учётом серверного рендеринга и SEO.
Если внутри контента находится большая иерархия компонентов или если у вас много аккордеонов,
то для улучшения производительности передавайте свойство unmountOnCollapsed
, которое позволяет не монтировать
контент, пока он не развернут и размонтирует компонент при сворачивании.
<Accordion unmountOnCollapsed />
Доступность (a11y)
Доступность реализована на основе рекомендаций из Accordion WAI-ARIA design pattern ↗.
Свойства и методы
Accordion
Свойство | Описание |
---|---|
defaultExpanded | boolean Значение по умолчанию. По умолчанию: false |
disabled | boolean Блокировка взаимодействия с компонентом. По умолчанию: - |
expanded | boolean Управляет раскрытием и скрытием контента. По умолчанию: - |
id | string Используется для генерации id для заголовка и контента(a11y). По умолчанию: - |
onChange | ((newValue: boolean) => void) Возвращает новое значение при изменении раскрытия/сворачивания контента. По умолчанию: - |
unmountOnCollapsed | boolean Нужно ли удалять из DOM контент при сворачивании. По умолчанию: false |
Accordion.Summary
Свойство | Описание |
---|---|
activated | boolean Позволяет управлять По умолчанию: - |
activeClassName | string Deprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | number Длительность показа По умолчанию: - |
activeMode | StateModeLiteral Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
after | ReactNode Иконка 24|28 или По умолчанию: - |
badgeAfterSubtitle | ReactNode Иконка 12. Добавится справа от текста По умолчанию: - |
badgeAfterTitle | ReactNode Иконка 12 или По умолчанию: - |
badgeBeforeSubtitle | ReactNode Иконка 12. Добавится слева от текста По умолчанию: - |
badgeBeforeTitle | ReactNode Иконка 12 или По умолчанию: - |
baseClassName | string | false Deprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSProperties Deprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
before | ReactNode Иконка 28 или По умолчанию: - |
borderRadiusMode | "auto" | "inherit" Задает border-radius элементу
В режиме По умолчанию: - |
chevronSize | "s" | "m" Размер chevron. По умолчанию: - |
CollapseIcon | ElementType<any, keyof IntrinsicElements> Иконка для сворачивания контента. По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements> По умолчанию: - |
disabled | boolean Блокировка взаимодействия с компонентом. По умолчанию: - |
ExpandIcon | ElementType<any, keyof IntrinsicElements> Иконка для раскрытия контента. По умолчанию: - |
extraSubtitle | ReactNode Дополнительная строка текста под По умолчанию: - |
focusVisibleMode | FocusVisibleMode Стиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement> По умолчанию: - |
hasActive | boolean Указывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | boolean Указывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | boolean Позволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hoverClassName | string Deprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | boolean Позволяет управлять По умолчанию: - |
hoverMode | StateModeLiteral Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
iconPosition | "after" | "before" Позиция иконки. По умолчанию: after |
indicator | ReactNode Контейнер для текста справа от По умолчанию: - |
multiline | boolean Включает многострочный режим для отображения текста. По умолчанию: - |
overTitle | ReactNode Дополнительная строка текста над По умолчанию: - |
subtitle | ReactNode Дополнительная строка текста под По умолчанию: - |
unlockParentHover | boolean Позволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
Accordion.Content
Свойство | Описание |
---|---|
getRef | Ref<HTMLDivElement> По умолчанию: - |
getRootRef | Ref<HTMLDivElement> По умолчанию: - |