3.7 KiB
description, links
| description | links | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A non-modal dialog that floats around a trigger element. |
|
Usage
Use a Button or any other component in the default slot of the Popover.
Then, use the #content slot to add the content displayed when the Popover is open.
::component-code
prettier: true slots: default: |
<UButton label="Open" color="neutral" variant="subtle" />
content: |
<Placeholder class="size-48 m-4 inline-flex" />
:u-button{label="Open" color="neutral" variant="subtle"}
#content :placeholder{class="size-48 m-4 inline-flex"} ::
Mode
Use the mode prop to change the mode of the Popover. Defaults to click.
::component-code
prettier: true items: mode: - click - hover props: mode: 'hover' slots: default: |
<UButton label="Open" color="neutral" variant="subtle" />
content: |
<Placeholder class="size-48 m-4 inline-flex" />
:u-button{label="Open" color="neutral" variant="subtle"}
#content :placeholder{class="size-48 m-4 inline-flex"} ::
::note
When using the hover mode, the Reka UI HoverCard component is used instead of the Popover.
::
Delay
When using the hover mode, you can use the open-delay and close-delay props to control the delay before the Popover is opened or closed.
::component-code
prettier: true ignore:
-
mode props: mode: 'hover' openDelay: 500 closeDelay: 300 slots: default: |
content: |
<Placeholder class="size-48 m-4 inline-flex" />
:u-button{label="Open" color="neutral" variant="subtle"}
#content :placeholder{class="size-48 m-4 inline-flex"} ::
Content
Use the content prop to control how the Popover content is rendered, like its align or side for example.
::component-code
prettier: true items: content.align: - start - center - end content.side: - right - left - top - bottom props: content: align: center side: bottom sideOffset: 8 slots: default: |
<UButton label="Open" color="neutral" variant="subtle" />
content: |
<Placeholder class="size-48 m-4 inline-flex" />
:u-button{label="Open" color="neutral" variant="subtle"}
#content :placeholder{class="size-48 m-4 inline-flex"} ::
Arrow
Use the arrow prop to display an arrow on the Popover.
::component-code
prettier: true ignore:
-
arrow props: arrow: true slots: default: |
content: |
<Placeholder class="size-48 m-4 inline-flex" />
:u-button{label="Open" color="neutral" variant="subtle"}
#content :placeholder{class="size-48 m-4 inline-flex"} ::
Examples
Control open state
You can control the open state by using the default-open prop or the v-model:open directive.
::component-example
name: 'popover-open-example'
::
::note
In this example, leveraging defineShortcuts, you can toggle the Popover by pressing :kbd{value="O"}.
::
With command palette
You can use a CommandPalette component inside the Popover's content.
::component-example
collapse: true name: 'popover-command-palette-example'
::
API
Props
:component-props
Slots
:component-slots
Emits
:component-emits
Theme
:component-theme