Skip to content

usePopoverPosition

Popover/tooltip positioning hook. Supports 12 directional positions with automatic boundary detection and flipping.

Usage

ts
import { ref } from 'vue'
import { usePopoverPosition } from 'see-u-ui'

const triggerRef = ref(null)
const popoverRef = ref(null)

const { popoverStyle, arrowStyle, updatePosition } = usePopoverPosition({
  triggerRef,
  popoverRef,
  position: ref('top'),
  offset: ref(12)
})

Supported Positions

top-left    top    top-right
left-top                   right-top
left                       right
left-bottom                right-bottom
bottom-left bottom bottom-right

API

usePopoverPosition(options)

ParamTypeDefaultDescription
options.triggerRefRef<HTMLElement | null>Trigger element
options.popoverRefRef<HTMLElement | null>Popover element
options.positionMaybeRef<PopoverPosition>Position
options.offsetMaybeRef<number>12Offset (rpx)
options.arrowSizeMaybeRef<number>10Arrow size (rpx)

Returns:

PropertyTypeDescription
computedPositionRef<PopoverPosition>Computed position (may flip)
popoverStyleComputedRef<CSSProperties>Popover positioning styles
arrowStyleComputedRef<CSSProperties>Arrow styles
updatePosition() => voidManual recalculation
triggerRectRef<Rect>Trigger element rect

TIP

Auto-flips to opposite side when overflowing viewport (16px padding). rpx values auto-convert to px.

Liao ICP No. 2025070134