Popover
Компонент, предназначенный для отображения части пользовательского интерфейса во всплывающем окне.
Функциональность
Компонент позволяет отобразить всплывающее окно, позиционированное рядом с якорным элементом.
В качестве якорного используется элемент, переданный в свойство children
.
Механизм вызова всплывающего окна
Свойство trigger
определяет способ взаимодействия, при котором всплывающее окно будет отображаться или скрываться.
-
"click"
– показ/скрытие происходит при нажатии на якорный элемент;Загружается... -
"hover"
– показ происходит при наведении мыши на якорных элемент, скрытие - при отведении;Загружается... -
"focus"
– показ происходит при фокусе на якорном элементе, скрытие - при потере фокуса;Загружается... -
"manual"
– показ/скрытие контролируется только через свойствоshown
. Обработчик, переданный в свойствоonShownChange
, будет вызываться при нажатии за пределами якорного и всплывающего элементов, а также по кнопкеESC
.Загружается...
Хук usePopover
Вы можете использовать хук usePopover
, который позволяет устанавливать якорный элемент для Popover
,
не прокидывая его в качестве children
.
Доступность (a11y)
Старайтесь сопровождать элемент текстовым описанием для корректной работы скринридеров. Для этого необходимо вручную передавать некоторые параметры.
- у всплывающего элемента обязательно должен быть указан
role
↗. Зачастую это либо"tooltip"
↗, либо"dialog"
↗; - у якорного элемента, в зависимости от
role
всплывающего элемента, должны быть заданы атрибутыaria-*
. Какие именно можно ознакомиться в документации конкретногоrole
.
Свойства и методы
Свойство | Описание |
---|---|
arrow | boolean Отображать ли стрелку, указывающую на якорный элемент. По умолчанию: - |
arrowHeight | number Высота стрелки. Складывается с По умолчанию: - |
ArrowIcon | ComponentType<SVGAttributes<SVGSVGElement>> Пользовательская SVG иконка. Требования:
По умолчанию: - |
arrowPadding | number Безопасная зона вокруг стрелки, чтобы та не выходила за края контента. По умолчанию: - |
arrowProps | PopoverArrowProps Позволяет набросить на стрелку пользовательские атрибуты. По умолчанию: - |
autoFocus | boolean | "root" Управление автоматическим фокусом при открытии всплывающего элемента. По умолчанию: - |
children | ReactElement<unknown, string | JSXElementConstructor<any>> Целевой элемент. Всплывающее окно появится возле него. По умолчанию: - |
closeAfterClick | boolean При По умолчанию: - |
content | ReactNode | FloatingContentRenderProp Содержимое всплывающего окна. При передаче контента в виде render prop ↗,
в аргументе функции можно получить метод По умолчанию: - |
customMiddlewares | { name: string; options?: any; fn: (state: { placement: Placement; platform: Platform; strategy: Strategy; x: number; y: number; initialPlacement: Placement; middlewareData: MiddlewareData; rects: ElementRects; elements: Elements; }) => Promisable<...>; }[] Массив кастомных модификаторов для Popper (необходимо мемоизировать). По умолчанию: - |
defaultShown | boolean Начальное состояние всплывающего элемента. По умолчанию: - |
disableCloseOnClickOutside | boolean Отключает закрытие нажатием на область вне целевого и всплывающего элемента. По умолчанию: - |
disableCloseOnEscKey | boolean Отключает закрытие нажатием на кнопку ESC. По умолчанию: - |
disabled | boolean Блокирует изменение состояния. По умолчанию: - |
disableFlipMiddleware | boolean Указанное значение По умолчанию: - |
disableFocusTrap | boolean Позволяет отключить захват фокуса. По умолчанию: - |
disableInteractive | boolean Отключает взаимодействие со всплывающим элементом. По умолчанию: - |
getRootRef | Ref<HTMLDivElement> По умолчанию: - |
hideWhenReferenceHidden | boolean Принудительно скрывает компонент если целевой элемент вышел за область видимости. По умолчанию: - |
hoverDelay | number | [number, number] Количество миллисекунд, после которых произойдёт показ/скрытие всплывающего элемента при наведении. По умолчанию: - |
keepMounted | boolean Используется для того, чтобы не удалять всплывающий элемент из DOM дерева при скрытии. По умолчанию: - |
noStyling | boolean Отключает у всплывающего элемента стилизацию по умолчанию. У
У
Используется в случае, если необходимо стилизовать по своему. Для По умолчанию: - |
offsetByCrossAxis | number Отступ по вспомогательной оси. По умолчанию: - |
offsetByMainAxis | number Отступ по главной оси. По умолчанию: - |
onPlacementChange | OnPlacementChange В зависимости от области видимости, позиция может смениться на более оптимальную, чтобы всплывающий элемент вместился в эту область видимости. По умолчанию: - |
onReferenceHiddenChange | ((hidden: boolean) => void) Событие скрытия / раскрытия компонента при использовании свойства По умолчанию: - |
onShownChange | OnShownChange Вызывается при каждом изменении видимости всплывающего элемента. По умолчанию: - |
onShownChanged | OnShownChange Вызывается при каждом изменении видимости всплывающего элемента, но после завершении анимации. По умолчанию: - |
placement | PlacementWithAuto По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства. По умолчанию: - |
restoreFocus | RestoreFocusType Нужно ли после закрытия всплывающего элемента возвращать фокус на предыдущий активный элемент. По умолчанию: - |
sameWidth | boolean Выставлять ширину равной target элементу. По умолчанию: - |
shown | boolean Если передан, то всплывающий элемент будет показано/скрыто в зависимости от значения свойства. По умолчанию: - |
strategy | Strategy Стратегия позиционирования всплывающего элемента.
По умолчанию: - |
trigger | TriggerType Механика вызова всплывающего элемента.
По умолчанию: - |
usePortal | boolean | HTMLElement | RefObject<HTMLElement> По умолчанию используется document.body. По умолчанию: - |
zIndex | string | number Перебивает zIndex заданный по умолчанию. По умолчанию: - |