ModalCardBase
Базовый компонент для создания модальных карточек с гибким содержимым.
Используется как основа для ModalCard.
Связанные компоненты:
Ключевые элементы
Визуальные компоненты
Иконка
Задаётся свойством icon. Рекомендуется использовать:
- контурные иконки размером
56px(<Icon56...Outline />); - аватары размером
72px(<Avatar size={72} src={...} />).
Текстовые блоки
- Свойство
titleотвечает за основной заголовок. - Свойство
descriptionотвечает за поясняющий текст.
Интерактивные элементы
- Свойство
actionsиспользуется для задания группы кнопок (Button). - Свойство
outsideButtonsиспользуется для дополнительных элементов управления (только для десктопа). Рекомендуется использовать компонентModalOutsideButton
Блокировка закрытия
Свойство preventClose отключает закрытие по нажатию, свайпу или клавише ESC.
Размеры и адаптивность
Компонент автоматически адаптируется под все устройства, но с помощью свойство size можно определить
максимальную ширину для десктопа (по умолчанию 450px).
Кнопка для закрытия
Через свойство dismissButtonMode=inside|outside|none можно задать вид кнопки закрытия.
Согласно нашим дизайн-гайдам, dismissButtonMode=outside отображается только для compact-режима (десктопная и планшетные версии).
Для iOS всегда будет применяться dismissButtonMode=inside в regular-режиме (мобильная версия).
Отступы между контентом и кнопками действий (actions)
По умолчанию верхний отступ от кнопок действий actions равняется 16px. Согласно дизайн-системе отступ может быть
больше в зависимости от того какие данные отображаются внутри ModalCardBase.
Если необходимо увеличить отступ, то передавайте в actions компонент Spacing.
Доступность (a11y)
Если ModalCardBase является модальным окном, то ему, или его родителю,
надо добавить аттрибуты role="dialog" и aria-modal="true", чтобы пользователи клавиатуры или скринридера
не могли выйти за пределы модального окна пока оно не закрылось.
Также у ModalCardBase обязательно должно быть имя — краткое название. Благодаря этому пользователи вспомогательных
технологий знают, что это за элемент и какое у него содержимое.
Задать имя можно с помощью следующих способов:
- используя свойство
title. Тогда следует также передатьaria-labelledbyиtitleIdтак, чтобы они имели одинаковые значения, чтобы можно было связатьtitleи модальное окно. Мы не делаем этого автоматически потому что не можем быть уверены на каком уровне будут заданыroleиaria-modal; - используя свойство
aria-label; - используя свойство
aria-labelledby. Если не использовать свойствоtitle, то можно передатьidлюбого контейнера с текстом;
Чтобы кнопка для закрытия была доступной для ассистивных технологий, мы передаем в нее скрытый визуально текст,
который сможет прочитать скринридер. Для изменения текста, передайте его в dismissLabel.
Свойства и методы
| Свойство | Описание |
|---|---|
actions | ReactNodeКнопки-действия. Принимает
Для набора кнопок используйте
По умолчанию: - |
description | ReactNodeОписание. По умолчанию: - |
descriptionComponent | ElementType<any, keyof IntrinsicElements>Позволяет поменять тег используемый для описания. По умолчанию: span |
dismissButtonMode | "none" | "inside" | "outside"Расположение кнопки закрытия (внутри и вне Доступно только в На ⚠️ ВНИМАНИЕ: использование По умолчанию: outside |
dismissLabel | stringТекст кнопки закрытия. Делает ее доступной для ассистивных технологий. По умолчанию: Закрыть |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
icon | ReactNodeИконка. Может быть компонентом иконки, например, По умолчанию: - |
modalDismissButtonTestId | stringПередает атрибут По умолчанию: - |
onClose | VoidFunctionОбработчик закрытия модального окна. По умолчанию: - |
outsideButtons | ReactNodeУправляющие элементы под кнопкой закрытия. Доступно только в По умолчанию: - |
preventClose | booleanПозволяет отключить возможность закрытия модальной страницы (смахивание, клавиша ⚠️ ВНИМАНИЕ: использование этой опции негативно сказывается на пользовательском опыте. По умолчанию: - |
size | numberЗадаёт контенту максимальную ширину для десктопной версии. По умолчанию: - |
title | ReactNodeЗаголовок карточки. По умолчанию: - |
titleComponent | ElementType<any, keyof IntrinsicElements>Позволяет поменять тег используемый для заголовка. По умолчанию: span |
titleId | stringПозволяет задать id для заголовка. Используется, чтобы связать модальное окно и title через aria-labelledby, тем самым задав модальному окну имя через title. По умолчанию: - |