floating-ui-vue-skilld
floating-ui/floating-ui @floating-ui/vue@1.1.11
Tags: latest: 1.1.11
References: Docs
API Changes
This section documents version-specific API changes for @floating-ui/vue — prioritize the v1.0.0 major release and subsequent minor updates.
-
BREAKING:
xandycoordinates now default to0instead ofnullsince v1.0.0. UseisPositionedto check if layout is ready source -
NEW:
floatingStyles— Returns a pre-configuredstyleobject for the floating element (position, top, left, transform) since v1.0.0 source -
NEW:
MaybeReadonlyRefOrGetter—useFloatingoptions now support getters (e.g.,() => props.placement) and refs since v1.1.0 source -
NEW:
isPositioned— Boolean ref returned byuseFloatingthat indicates if the floating element has been positioned since v0.2.0 source -
NEW:
openoption — Optional boolean ref inuseFloatingto synchronizeisPositionedwith the element's open state since v0.2.0 source -
IMPROVED:
ArrowOptions.element— Widened type toMaybeElement<Element>to improve compatibility with Vue Template Refs since v1.0.2 source -
NEW:
whileElementsMounted— Preferred option foruseFloatingto handle theautoUpdatelifecycle automatically since v1.0.0 source -
NEW:
update()— Function returned byuseFloatingto manually trigger a position recalculation since v0.2.0 source -
NEW: Template Ref support for
arrow()— Theelementoption inarrowmiddleware now natively accepts Vue refs since v0.x/v1.0.0 source
Also changed: exports .d.mts types v1.0.3 · isPositioned false when open false fix v1.1.5 · MaybeReadonlyRefOrGetter legacy Vue support v1.1.1
Best Practices
-
Use
whileElementsMounted: autoUpdateto ensure the floating element stays anchored during scroll, resize, or layout changes. This handles the full lifecycle of positioning listeners automatically source -
Always return the cleanup function when passing a custom function to
whileElementsMounted(e.g., when providing custom options toautoUpdate) source
useFloating(reference, floating, {
whileElementsMounted(reference, floating, update) {
return autoUpdate(reference, floating, update, {animationFrame: true});
},
});
-
Prefer
v-iffor floating elements when usingwhileElementsMounted. If usingv-show, avoid thewhileElementsMountedprop and manage theautoUpdatelifecycle manually via watchers to prevent performance leaks when the element is hidden source -
Use the
isPositionedref to coordinate side effects that require the final position, such as focusing an input or scrolling an element into view source
const {isPositioned} = useFloating(reference, floating, {open});
watch(isPositioned, (positioned) => {
if (positioned) {
inputRef.value?.focus();
}
});
-
Pass getter functions or
Refs touseFloatingoptions (likeplacementormiddleware) to enable reactivity. Since v1.1.0, these options supportMaybeReadonlyRefOrGettersource -
Utilize a wrapper element to support CSS transform animations while maintaining the performant
transform: truepositioning (default). The outer element handles positioning, while the inner element handles the animation source -
Synchronize positioning state by passing an
openref touseFloating. This ensuresisPositionedis reset and correctly updated across multiple open/close cycles, especially if the reference element moves source -
Pass template refs directly from
ref(null)touseFloatingand middleware likearrow(). The library automatically unwraps these and waits for the elements to mount before computing coordinates source -
Enable
animationFrame: trueinautoUpdateoptions if the reference element is moved via CSS transforms or other non-layout-triggering animations to maintain perfect anchoring source
More from harlan-zw/vue-ecosystem-skills
vue-skilld
The progressive JavaScript framework for building modern web UI. ALWAYS use when editing or working with *.vue files or code importing \"vue\". Consult for debugging, best practices, or modifying vue, core.
193quasar-skilld
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time. ALWAYS use when writing code importing \"quasar\". Consult for debugging, best practices, or modifying quasar.
189pinia-skilld
Intuitive, type safe and flexible Store for Vue. ALWAYS use when writing code importing \"pinia\". Consult for debugging, best practices, or modifying pinia.
159vue-i18n-skilld
Internationalization plugin for Vue.js. ALWAYS use when writing code importing \"vue-i18n\". Consult for debugging, best practices, or modifying vue-i18n, vue i18n.
153vuetify-skilld
Vue Material Component Framework. ALWAYS use when writing code importing \"vuetify\". Consult for debugging, best practices, or modifying vuetify.
138pinia-colada-skilld
The smart data fetching layer for Vue.js. ALWAYS use when writing code importing \"@pinia/colada\". Consult for debugging, best practices, or modifying @pinia/colada, pinia/colada, pinia colada, pinia-colada.
128