Skip to content
On this page

Usage

Zoom Avant is really simple to use. But if you want more control, you can access to differents slots and props to cover all your needs.

Basic

This example cover the basic of Zoom Avant. The ZAvant component is the root element. After that you can build with ZAvantItem and put on it your links or a submenu with ZAvantMenu

template
<template>
  <ZAvant>
    <ZAvantItem>
      <ZAvantMenu next="Go to level 1" back="Back to root">
        <ZAvantItem>Hello</ZAvantItem>
        <ZAvantItem>world</ZAvantItem>
        <ZAvantItem>
          <ZAvantMenu next="Go to level 2" back="Back to level 1">
            <ZAvantItem>Hello</ZAvantItem>
            <ZAvantItem>world</ZAvantItem>
          </ZAvantMenu>
        </ZAvantItem>
      </ZAvantMenu>
    </ZAvantItem>
    <ZAvantItem>
      <a href="#">Bonjour le monde</a>
    </ZAvantItem>
  </ZAvant>
</template>

Advanced

This exemple is more complexe using props and slots. You can check the components page for more information.

template
<template>
  <ZAvant :dynamic-height="true">
    <ZAvantItem>
      <ZAvantMenu next="Item 0 1">
        <ZAvantItem>Item 1 1</ZAvantItem>
        <ZAvantItem>Item 1 2</ZAvantItem>
        <ZAvantItem>Item 1 3</ZAvantItem>
      </ZAvantMenu>
    </ZAvantItem>
    <ZAvantItem>
      <ZAvantMenu next="Item 0 2" back="Back to root">
        <ZAvantItem>Item 2 1</ZAvantItem>
        <ZAvantItem>Item 2 2</ZAvantItem>
        <ZAvantItem>Item 2 2</ZAvantItem>
        <ZAvantItem>
          <ZAvantMenu>
            <template #next>
              <span>Item 2 3</span>
            </template>
            <template #back>
              <span>Back to 1</span>
            </template>
            <template #default>
              <ZAvantItem>
                <a href="#">Item 2 4</a>
              </ZAvantItem>
              <ZAvantItem>
                <a href="#">Item 2 5</a>
              </ZAvantItem>
            </template>
          </ZAvantMenu>
        </ZAvantItem>
      </ZAvantMenu>
    </ZAvantItem>
    <ZAvantItem>
      <a href="#">Item 0 3</a>
    </ZAvantItem>
  </ZAvant>
</template>

Control programatically

You can control the Drilldown programatically with the v-model property. You need to pass an array with number values.

With this, you can reset the drilldown, start the drilldown at an another place or make a global back button outside the component.

template
<script lang="ts" setup>
const model = ref<number[]>([])
</script>

<template>
  <div>
    <p>Model : {{ model.join(' | ') }}</p>
    <ZAvant :dynamic-height="true" v-model="model">
      <ZAvantItem>
        <ZAvantMenu next="Item 1">
          <ZAvantItem>Item 1 1</ZAvantItem>
          <ZAvantItem>Item 1 2</ZAvantItem>
          <ZAvantItem>Item 1 3</ZAvantItem>
        </ZAvantMenu>
      </ZAvantItem>
      <ZAvantItem>
        <ZAvantMenu next="Item 2" back="Back to root">
          <ZAvantItem>Item 2 1</ZAvantItem>
          <ZAvantItem>Item 2 2</ZAvantItem>
          <ZAvantItem>Item 2 2</ZAvantItem>
          <ZAvantItem>
            <ZAvantMenu>
              <template #next>
                <span>Item 2 3</span>
              </template>
              <template #back>
                <span>Back to 1</span>
              </template>
              <template #default>
                <ZAvantItem>
                  <a href="#">Item 2 4</a>
                </ZAvantItem>
                <ZAvantItem>
                  <a href="#">Item 2 5</a>
                </ZAvantItem>
              </template>
            </ZAvantMenu>
          </ZAvantItem>
        </ZAvantMenu>
      </ZAvantItem>
      <ZAvantItem>
        <a href="#">Item 3</a>
      </ZAvantItem>
    </ZAvant>
    <button style="display: block" @click="model = [2, 1]">
      Go to target element
    </button>
    <button style="display: block" @click="model.pop()">
      Outside back button
    </button>
  </div>
</template>

Released under the GPL3 License.