Popup

维护者:
amje
GitHub
open
hasArrow
placement
import {Popup} from '@gravity-ui/uikit';

您可以使用在 Popup 页面上方显示浮动内容。严格来说,它是 浮动用户界面的 包装,带有一些默认值。要管理 Popup 可见性,请使用该 open 属性。 Popup 子组件在组件内部呈 Portal 现。要禁用此行为,请使用该 disablePortal 属性。

要指定浮动元素的锚点,可以使用该 anchorElement 属性。

const [buttonElement, setButtonElement] = React.useState(null);
const [open, setOpen] = React.useState(false);

<Button ref={setButtonElement} onClick={() => setOpen((prevOpen) => !prevOpen)}>
  Toggle Popup
</Button>
<Popup anchorElement={buttonElement} open={open} placement="bottom">
  Content
</Popup>

放置

使用该 placement 属性管理锚元素周围 Popup 的位置。 默认情况下, Popup 使用 f lip 中间件 来防止溢出。 如果将该属性设置为数组,则第一个元素将用作默认放置值,其余元素将用作 备用放置值。 使用值 auto 来使用 AutoPlacement 中间件 而不是 flip 也是可以接受的。 auto-start auto-end

Anchor
Top Start
Top
Top End
Right Start
Right
Right End
Bottom End
Bottom
Bottom Start
Left End
Left
Left Start
const [boxElement, setBoxElement] = React.useState(null);

<div ref={setBoxElement} />
<Popup open anchorElement={boxElement} placement="top-start">Top Start</Popup>
<Popup open anchorElement={boxElement} placement="top">Top</Popup>
<Popup open anchorElement={boxElement} placement="top-end">Top End</Popup>
<Popup open anchorElement={boxElement} placement="right-start">Right Start</Popup>
<Popup open anchorElement={boxElement} placement="right">Right</Popup>
<Popup open anchorElement={boxElement} placement="right-end">Right End</Popup>
<Popup open anchorElement={boxElement} placement="bottom-end">Bottom End</Popup>
<Popup open anchorElement={boxElement} placement="bottom">Bottom</Popup>
<Popup open anchorElement={boxElement} placement="bottom-start">Bottom Start</Popup>
<Popup open anchorElement={boxElement} placement="left-end">Left End</Popup>
<Popup open anchorElement={boxElement} placement="left">Left</Popup>
<Popup open anchorElement={boxElement} placement="left-start">Left Start</Popup>

属性

姓名描述类型默认
anchorElement锚元素。也可以是一个 VirtualElementPopupAnchorElement
咏叹调描述者aria-describedby 属性。如果你有标签和描述节点,请使用它string
aria-labelaria-label 属性。仅当你没有任何可见的字幕时才使用它string
aria-labelledbyaria-labelledby 属性。如果你有可见的字幕,则更可取string
儿童任何 React 内容React.ReactNode
classNameclass 根节点的 HTML 属性string
disableEscapeKeyDown禁用触发关闭 Escbooleanfalse
disableFocusOut禁用对焦时触发关闭booleanfalse
disableOutsideClick禁用外部点击时触发关闭booleanfalse
disablePortal禁用儿童 Portal 使用booleanfalse
disableTransition禁用弹出窗口出现/消失的动画booleanfalse
floatingClassName应用于 Floating UI 元素的附加类string
floatingContextFloating UI 提供互动的上下文FloatingRootContext
floatingInteractions覆盖 Floating UI 交互数组<ElementProps>
floatingMiddlewaresFloating UI 中间件。如果设置,它们将完全覆盖默认的中间件。数组<Middleware>
floatingStyles应用于 Floating UI 元素的样式React.CSSProperties
focusOrder对焦圈的顺序数组<“参考”| '浮动'| '内容'>['content']
hasArrow渲染指向锚点的箭头booleanfalse
idid HTML 属性string
initialFocus要重点关注的初始元素。正数是 tabbable 元素的索引。number React.Ref<HTMLElement>
keepMountedPopup 隐藏后不会从 DOM 中移除booleanfalse
情态动词的启用对焦捕捉行为booleanfalse
抵消Floating UI 偏移值PopupOffset4
onOpenChange处理 Popup 未平仓变更事件Function
onTransitionIn启动时打开弹出动画Function
onTransitionInComplete完成后打开弹出动画Function
onTransitionOut开始时关闭弹出动画Function
onTransitionOutComplete完成后关闭弹出动画Function
打开管理 Popup 可见性booleanfalse
放置Floating UI 放置Placement 阵列<Placement> 自动 启动自动结束 ``
qa测试属性 (data-qa)string
returnFocus要重点关闭的元素boolean React.Ref<HTMLElement>true
角色弹出窗口的可访问性角色string
战略Floating UI 定位策略absolute fixedabsolute
风格style 根节点的 HTML 属性React.CSSProperties

CSS API

姓名描述
--g-popup-background-color背景颜色
--g-popup-border-color边框颜色
--g-popup-border-width边框宽度