Skip to content

Vue

Install

bash
npm install alap vue

Setup

vue
<script setup>
import { AlapProvider, AlapLink } from 'alap/vue';
import config from './alap-config';
</script>

<template>
  <AlapProvider :config="config">
    <p>Check out <AlapLink query=".coffee">cafes</AlapLink>.</p>
  </AlapProvider>
</template>

Components

Same Provider/Link/Hook pattern as React. Vue-specific differences:

  • Props passed as Vue attributes (:config, :query)
  • Events emitted as @trigger-hover, @item-hover, @item-context, etc.
  • useAlap() is a composable (call in <script setup>)

<AlapProvider>

PropTypeDefaultDescription
configAlapConfigrequiredThe link configuration
menuTimeoutnumberfrom configAuto-dismiss timeout override
defaultMenuStyleobjectDefault inline styles for all menus
defaultMenuClassNamestringDefault CSS class for all menus
PropTypeDefaultDescription
querystringrequiredExpression to evaluate
anchorIdstringAnchor ID for bare @ macro
mode'dom' | 'webcomponent' | 'popover''dom'Rendering mode
menuClassNamestringCSS class on menu container
listType'ul' | 'ol'from configList element type
maxVisibleItemsnumberfrom configScroll after N items

Events: @trigger-hover, @trigger-context, @item-hover, @item-context, @item-context-dismiss

useAlap()

MethodSignatureDescription
query()(expression, anchorId?) => string[]Expression to item IDs
resolve()(expression, anchorId?) => Array<{ id } & AlapLink>Expression to link objects
getLinks()(ids) => Array<{ id } & AlapLink>IDs to link objects

Example

vue
<script setup>
import { AlapProvider, AlapLink, useAlap } from 'alap/vue';
import config from './alap-config';

const { resolve } = useAlap();

function handleHover({ link }) {
  console.log('Hovering:', link.label, link.thumbnail);
}
</script>

<template>
  <AlapProvider :config="config">
    <p>Check out <AlapLink query=".coffee" @item-hover="handleHover">cafes</AlapLink>.</p>
    <p>Or explore <AlapLink query=".nyc + .bridge">NYC bridges</AlapLink>.</p>
  </AlapProvider>
</template>