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 | stringDeprecated: 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 | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: 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 | stringDeprecated: 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>По умолчанию: - |