在点击或悬停时以弹出窗口显示额外内容。
此组件用于通用弹出框内容。仅当 下拉菜单组件不符合您的需求时才使用它。
<flux:dropdown> <flux:button icon="adjustments-horizontal" icon:variant="micro" icon:class="text-zinc-400" icon-trailing="chevron-down" icon-trailing:variant="micro" icon-trailing:class="text-zinc-400" > Options </flux:button> <flux:popover class="flex flex-col gap-4"> <flux:radio.group wire:model="sort" label="Sort by" label:class="text-zinc-500 dark:text-zinc-400"> <flux:radio value="active" label="Recently active" /> <flux:radio value="posted" label="Date posted" checked /> </flux:radio.group> <flux:separator variant="subtle" /> <flux:radio.group wire:model="view" label="View as" label:class="text-zinc-500 dark:text-zinc-400"> <flux:radio value="list" label="List" checked /> <flux:radio value="gallery" label="Gallery" /> </flux:radio.group> <flux:separator variant="subtle" /> <flux:button variant="subtle" size="sm" class="justify-start -m-2 px-2!">Reset to default</flux:button> </flux:popover></flux:dropdown>
在下拉框上使用 hover 属性来在悬停在触发元素上时显示弹出框。
目前,您只能使用 button 元素作为触发元素。
@calebporzio
<flux:dropdown hover position="bottom" align="start" offset="-16" gap="10"> <button type="button" class="flex items-center gap-3"> <flux:avatar size="sm" name="Caleb Porzio" src="https://unavatar.io/x/calebporzio" /> <flux:heading>Caleb Porzio</flux:heading> </button> <flux:popover class="flex flex-col gap-3 rounded-xl shadow-xl"> <flux:avatar size="xl" name="Caleb Porzio" src="https://unavatar.io/x/calebporzio" /> <div> <flux:heading size="lg">Caleb Porzio</flux:heading> <div class="flex items-center gap-2"> <flux:text size="lg">@calebporzio</flux:text> <flux:badge>Follows you</flux:badge> </div> </div> <div class="flex items-center gap-4"> <flux:text class="flex gap-1"><flux:heading>775</flux:heading> following</flux:text> <flux:text class="flex gap-1"><flux:heading>50.2k</flux:heading> followers</flux:text> </div> <div class="flex gap-2"> <flux:button variant="outline" size="sm" icon="check" icon:class="opacity-75" class="flex-1">Following</flux:button> <flux:button variant="primary" size="sm" icon="chat-bubble-left-right" icon:class="opacity-75" class="flex-1">Message</flux:button> </div> </flux:popover></flux:dropdown>
使用下拉框组件上的 position 和 align 属性来控制弹出框的位置。
<flux:dropdown position="top" align="start"> <flux:button>...</flux:button> <flux:popover>...</flux:popover></flux:dropdown><flux:dropdown position="right" align="center"> <flux:button>...</flux:button> <flux:popover>...</flux:popover></flux:dropdown><flux:dropdown position="left" align="center"> <flux:button>...</flux:button> <flux:popover>...</flux:popover></flux:dropdown><flux:dropdown position="bottom" align="end"> <flux:button>...</flux:button> <flux:popover>...</flux:popover></flux:dropdown>
gap 属性控制触发器和弹出框之间的距离,而 offset 沿着对齐轴移动弹出框。
<!-- Gap --><flux:dropdown gap="16"> <flux:button>Gap: 16px</flux:button> <flux:popover>...</flux:popover></flux:dropdown><!-- Offset --><flux:dropdown offset="32"> <flux:button>Offset: 32px</flux:button> <flux:popover>...</flux:popover></flux:dropdown>
可选择的分类列表。
<flux:dropdown> <flux:button icon="tag" icon:variant="micro" icon:class="text-zinc-400" > Categories <x-slot name="iconTrailing"> <flux:badge size="sm" class="-mr-1"> <span x-text="$wire.categories.length" class="tabular-nums"> </span> </flux:badge> </x-slot> </flux:button> <flux:popover class="max-w-[18rem] flex flex-col gap-4"> <flux:checkbox.group variant="pills" wire:model="categories"> <flux:checkbox value="fantasy" label="Fantasy" /> <flux:checkbox value="science-fiction" label="Science fiction" /> <flux:checkbox value="horror" label="Horror" /> <flux:checkbox value="mystery" label="Mystery" /> <flux:checkbox value="romance" label="Romance" /> <flux:checkbox value="autobiography" label="Autobiography" /> <flux:checkbox value="thriller" label="Thriller" /> <flux:checkbox value="poetry" label="Poetry" /> <flux:checkbox value="children" label="Children" /> </flux:checkbox.group> <flux:separator variant="subtle" /> <flux:button variant="subtle" size="sm" class="justify-start -m-2 !px-2" wire:click="$set('categories', [])" > Clear all </flux:button> </flux:popover></flux:dropdown>
带有单选选项和文本输入的反馈表单。
<flux:dropdown> <flux:button icon="chat-bubble-oval-left" icon:variant="micro" icon:class="text-zinc-300"> Feedback </flux:button> <flux:popover class="min-w-[30rem] flex flex-col gap-4"> <flux:radio.group variant="buttons" class="*:flex-1"> <flux:radio icon="bug-ant" checked>Bug report</flux:radio> <flux:radio icon="light-bulb">Suggestion</flux:radio> <flux:radio icon="question-mark-circle">Question</flux:radio> </flux:radio.group> <div class="relative"> <flux:textarea rows="8" class="dark:bg-transparent!" placeholder="Please include reproduction steps. You may attach images or video files." /> <div class="absolute bottom-3 left-3 flex items-center gap-2"> <flux:button variant="filled" size="xs" icon="face-smile" icon:variant="outline" icon:class="text-zinc-400 dark:text-zinc-300" /> <flux:button variant="filled" size="xs" icon="paper-clip" icon:class="text-zinc-400 dark:text-zinc-300" /> </div> </div> <div class="flex gap-2 justify-end"> <flux:button variant="filled" size="sm" kbd="esc" class="w-28">Cancel</flux:button> <flux:button size="sm" kbd="⏎" class="w-28">Submit</flux:button> </div> </flux:popover></flux:dropdown>
关于事件的详细信息。
<flux:dropdown position="bottom center"> <button type="button" class="w-54 rounded-lg p-2 flex items-center gap-2 bg-zinc-100 hover:bg-zinc-200"> <div class="self-stretch w-0.5 bg-zinc-800 rounded-full"></div> <div> <flux:heading>Team sync</flux:heading> <flux:text class="mt-1">10:00 AM</flux:text> </div> </button> <flux:popover class="w-80 p-0 data-open:flex flex-col"> <div class="p-4"> <flux:heading>Team sync</flux:heading> <flux:text class="mt-2">Let's review the progress made last week and define the priorities for the next</flux:text> <flux:radio.group variant="segmented" class="mt-3"> <flux:radio value="going" label="Going" checked /> <flux:radio value="not-going" label="Not going" /> <flux:radio value="maybe" label="Maybe" /> </flux:radio.group> </div> <flux:separator /> <div class="p-4 flex gap-2"> <flux:icon.users variant="micro" class="text-zinc-400" /> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="flex gap-2"> <flux:heading>Guests</flux:heading> </div> <flux:text><flux:link href="#" variant="subtle">Invite</flux:link></flux:text> </div> <div class="flex items-center gap-3 mt-2"> <flux:avatar.group> <flux:avatar size="xs" circle src="https://unavatar.io/x/calebporzio" /> <flux:avatar size="xs" circle src="https://unavatar.io/github/hugosaintemarie" /> <flux:avatar size="xs" circle src="https://unavatar.io/github/joshhanley" /> </flux:avatar.group> <flux:text>1 maybe, 1 awaiting</flux:text> </div> </div> </div> <flux:separator /> <div class="p-4 flex gap-2"> <flux:icon.clock variant="micro" class="text-zinc-400" /> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="flex gap-2"> <flux:heading>10:00 AM</flux:heading> <flux:icon.arrow-right variant="micro" class="text-zinc-400" /> <flux:heading>11:00 AM</flux:heading> </div> <flux:text><flux:link href="#" variant="subtle">Edit</flux:link></flux:text> </div> <div class="flex gap-3 mt-2"> <flux:text>May 29 2025</flux:text> <flux:text>·</flux:text> <flux:text class="flex items-center gap-1.5"> <flux:icon.arrow-path-rounded-square variant="micro" class="text-zinc-400" /> Every weekday </flux:text> </div> </div> </div> <flux:separator /> <div class="p-4 flex gap-2"> <flux:icon.map-pin variant="micro" class="text-zinc-400" /> <div class="flex-1"> <div class="flex items-center justify-between"> <flux:heading>Location</flux:heading> <flux:text><flux:link href="#" variant="subtle">Edit</flux:link></flux:text> </div> <flux:text class="mt-2">Paris HQ, 13 rue de la Prairie 75018</flux:text> </div> </div> </flux:popover></flux:dropdown>
管理弹出框定位和交互的容器组件。所有弹出框的必需包装器。
|
属性
|
描述
|
|---|---|
| position |
弹出框相对于触发元素的位置。选项:top、right、bottom(默认)、left。
|
| align |
弹出框相对于触发元素的对齐方式。选项:start(默认)、center、end。
|
| hover |
如果存在,弹出框将在悬停时打开而不是点击。对工具提示和快速预览很有用。
|
| wire:model |
将打开/关闭状态绑定到 Livewire 属性以实现编程控制。
|
|
插槽
|
描述
|
|---|---|
| default |
必须包含恰好一个触发元素(按钮、链接等),后跟一个 flux:popover 组件。
|
|
属性
|
描述
|
|---|---|
| data-flux-dropdown |
应用于根元素以进行样式设置和识别。
|
| data-open |
当弹出框当前打开时应用。
|
在浮动覆盖层中显示内容的容器组件。必须在 flux:dropdown 组件中使用以实现定位和交互。
|
属性
|
描述
|
|---|---|
| class |
应用于弹出框容器的额外 CSS 类。对于设置宽度约束很有用,如 max-w-sm 或 w-80。
|
|
插槽
|
描述
|
|---|---|
| default |
要在弹出框内显示的内容。可以包含任何 HTML 或 Flux 组件。
|
|
属性
|
描述
|
|---|---|
| data-flux-popover |
应用于根元素以进行样式设置和识别。
|