Use a Button or any other component in the default slot of the Popover.
Depois, use o slot #content para adicionar o conteúdo exibido quando o Popover está aberto.
<template>
<NPopover>
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Use a prop mode para alterar o modo do Popover. O padrão é click.
hover, defina a prop enable-touch para permitir que os usuários abram e fechem o Popover tocando no gatilho em dispositivos de toque, ou use o modo click para gatilhos feitos para serem tocados.<template>
<NPopover mode="hover" enable-touch>
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Ao usar o modo hover, você pode usar as props open-delay e close-delay para controlar o atraso antes de o Popover ser aberto ou fechado.
<template>
<NPopover mode="hover" :open-delay="500" :close-delay="300">
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Use a prop content para controlar como o conteúdo do Popover é renderizado, como seu align ou side, por exemplo.
<template>
<NPopover
:content="{
align: 'center',
side: 'bottom',
sideOffset: 8
}"
>
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Use a prop arrow para exibir uma seta no Popover.
<template>
<NPopover arrow>
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Use a prop modal para controlar se o Popover bloqueia a interação com o conteúdo externo. O padrão é false.
<template>
<NPopover modal>
<NButton label="Open" color="neutral" variant="subtle" />
<template #content>
<Placeholder class="size-48 m-4 inline-flex" />
</template>
</NPopover>
</template>
Use a prop dismissible para controlar se o Popover pode ser dispensado ao clicar fora dele ou pressionar escape. O padrão é true.
close:prevent será emitido quando o usuário tentar fechá-lo.Você pode controlar o estado de abertura usando a prop default-open ou a diretiva v-model:open.
defineShortcuts, você pode abrir e fechar o Popover pressionando O.Você pode usar um componente CommandPalette dentro do conteúdo do Popover.
Você pode fazer o Popover acompanhar o cursor ao passar o mouse sobre um elemento usando a prop reference:
Você pode usar o slot #anchor para posicionar o Popover em relação a um elemento personalizado.
mode é click.| Prop | Default | Type |
|---|---|---|
mode | 'click' | MThe display mode of the popover. |
content | { side: 'bottom', sideOffset: 8, collisionPadding: 8 } | PopoverContentProps & Partial<EmitsToProps<PopoverContentImplEmits>>The content of the popover. |
arrow | false | boolean | PopoverArrowProps Display an arrow alongside the popover. |
portal | true | string | false | true | HTMLElementRender the popover in a portal. |
reference | Element | VirtualElementThe reference (or anchor) element that is being referred to for positioning. If not provided will use the current component as anchor. | |
dismissible | true | boolean When |
defaultOpen | boolean The open state of the popover when it is initially rendered. Use when you do not need to control its open state. | |
open | boolean The controlled open state of the popover. | |
modal | false | boolean The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers. |
openDelay | 0 | numberThe duration from when the mouse enters the trigger until the hover card opens. |
closeDelay | 0 | numberThe duration from when the mouse leaves the trigger or content until the hover card closes. |
ui | { content?: SlotClass; arrow?: SlotClass; } |
| Slot | Type |
|---|---|
default | { open: boolean; } |
content | SlotProps<M> |
anchor | SlotProps<M> |
close só está disponível quando o mode é definido como click, porque o Reka UI a expõe para o Popover, mas não para o HoverCard.| Event | Type |
|---|---|
close:prevent | [] |
update:open | [value: boolean] |
export default defineAppConfig({
ui: {
popover: {
slots: {
content: 'bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto',
arrow: 'fill-default'
}
}
}
})
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nitro/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
popover: {
slots: {
content: 'bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto',
arrow: 'fill-default'
}
}
}
})
]
})