🔥 遇见我们的新项目 t0ggles - 您终极的项目管理工具! 🔥

Popover React 组件

Popover 组件用于管理内容在 Popover 中的呈现方式。您可以使用 Popover 暂时显示信息。Popover 会一直保持可见,直到用户点击 Popover 窗口外部,或者您显式地将其关闭。

Popover 组件

以下组件包含在内

  • Popover

Popover 属性

名称类型默认值描述
angle布尔值true

呈现 Popover "angle"/"corner"

angleClassName字符串undefined

要在 "angle"/"corner" 元素上添加的附加 CSS 类

backdrop布尔值true

启用 Popover 背景(在后面半透明的深色层)

colors对象

包含 Tailwind CSS 颜色类的对象

colors.bgIos字符串'bg-ios-light-surface-3 dark:bg-ios-dark-surface-3'
colors.bgMaterial字符串'bg-md-light-surface-3 dark:bg-md-dark-surface-3'
component字符串'div'

组件的 HTML 元素

opened布尔值false

允许打开/关闭 Popover 并设置其初始状态

size字符串'w-64'

Tailwind CSS 大小类

target字符串 | HTMLElement | 引用

Popover 目标元素。Popover 将定位在这个元素周围

targetHeight数字

虚拟目标元素高度(以像素为单位)。在不使用真实目标元素(target 属性)的情况下需要

targetWidth数字

虚拟目标元素宽度(以像素为单位)。在不使用真实目标元素(target 属性)的情况下需要

targetX数字

虚拟目标元素距屏幕左侧的水平偏移量。在不使用真实目标元素(target 属性)的情况下需要

targetY数字

虚拟目标元素距屏幕顶部的垂直偏移量。在不使用真实目标元素(target 属性)的情况下需要

translucent布尔值true

在 iOS 主题中,使 Popover 背景半透明(使用 backdrop-filter: blur

onBackdropClickfunction(e)

背景元素上的点击处理程序

示例

Popover.jsx
import React, { useRef, useState } from 'react';
import {
Page,
Navbar,
NavbarBackLink,
Popover,
Block,
Link,
Button,
List,
ListItem,
} from 'konsta/react';
export default function PopoverPage() {
const [popoverOpened, setPopoverOpened] = useState(false);
const popoverTargetRef = useRef(null);
const openPopover = (targetRef) => {
popoverTargetRef.current = targetRef;
setPopoverOpened(true);
};
return (
<Page>
<Navbar
title="Popover"
right={
<Link
className="popover-navbar-link"
navbar
onClick={() => openPopover('.popover-navbar-link')}
>
Popover
</Link>
}
/>
<Block className="space-y-4">
<p>
<Button
className="popover-button"
onClick={() => openPopover('.popover-button')}
>
Open popover on me
</Button>
</p>
<p>
Mauris fermentum neque et luctus venenatis. Vivamus a sem rhoncus,
ornare tellus eu, euismod mauris. In porta turpis at semper convallis.
Duis adipiscing leo eu nulla lacinia, quis rhoncus metus condimentum.
Etiam nec malesuada nibh. Maecenas quis lacinia nisl, vel posuere
dolor. Vestibulum condimentum, nisl ac vulputate egestas, neque enim
dignissim elit, rhoncus volutpat magna enim a est. Aenean sit amet
ligula neque. Cras suscipit rutrum enim. Nam a odio facilisis,
elementum tellus non,{' '}
<Link
className="popover-link-1"
onClick={() => openPopover('.popover-link-1')}
>
popover
</Link>{' '}
tortor. Pellentesque felis eros, dictum vitae lacinia quis, lobortis
vitae ipsum. Cras vehicula bibendum lorem quis imperdiet.
</p>
<p>
In hac habitasse platea dictumst. Etiam varius, ante vel ornare
facilisis, velit massa rutrum dolor, ac porta magna magna lacinia
nunc. Curabitur{' '}
<Link
className="popover-link-2"
onClick={() => openPopover('.popover-link-2')}
>
popover!
</Link>{' '}
cursus laoreet. Aenean vel tempus augue. Pellentesque in imperdiet
nibh. Mauris rhoncus nulla id sem suscipit volutpat. Pellentesque ac
arcu in nisi viverra pulvinar. Nullam nulla orci, bibendum sed ligula
non, ullamcorper iaculis mi. In hac habitasse platea dictumst.
Praesent varius at nisl eu luctus. Cras aliquet porta est. Quisque
elementum quis dui et consectetur. Cum sociis natoque penatibus et
magnis dis parturient montes, nascetur ridiculus mus. Sed sed laoreet
purus. Pellentesque eget ante ante.
</p>
<p>
Duis et ultricies nibh. Sed facilisis turpis urna, ac imperdiet erat
venenatis eu. Proin sit amet faucibus tortor, et varius sem. Etiam
vitae lacinia neque. Aliquam nisi purus, interdum in arcu sed,
ultrices rutrum arcu. Nulla mi turpis, consectetur vel enim quis,
facilisis viverra dui. Aliquam quis convallis tortor, quis semper
ligula. Morbi ullamcorper{' '}
<Link
className="popover-link-3"
onClick={() => openPopover('.popover-link-3')}
>
one more popover
</Link>{' '}
massa at accumsan. Etiam purus odio, posuere in ligula vitae, viverra
ultricies justo. Vestibulum nec interdum nisi. Aenean ac consectetur
velit, non malesuada magna. Sed pharetra vehicula augue, vel venenatis
lectus gravida eget. Curabitur lacus tellus, venenatis eu arcu in,
interdum auctor nunc. Nunc non metus neque. Suspendisse viverra lectus
sed risus aliquet, vel accumsan dolor feugiat.
</p>
</Block>
<Popover
opened={popoverOpened}
target={popoverTargetRef.current}
onBackdropClick={() => setPopoverOpened(false)}
>
<List nested>
<ListItem
title="Item 1"
link
onClick={() => setPopoverOpened(false)}
/>
<ListItem
title="List Item 2"
link
onClick={() => setPopoverOpened(false)}
/>
<ListItem
title="Item 3"
link
onClick={() => setPopoverOpened(false)}
/>
<ListItem
title="List Item 4"
link
onClick={() => setPopoverOpened(false)}
/>
<ListItem
title="Item 5"
link
onClick={() => setPopoverOpened(false)}
/>
</List>
</Popover>
</Page>
);
}
代码许可证: MIT.
2022 © Konsta UI 由 nolimits4web.