Skip to content

HJ29/vue3-tabs

Repository files navigation

vue3-tabs

A touch swipe tab for vue 3.

Demo

Demo

Demo Code

Install

yarn add vue3-tabs
npm i --save vue3-tabs

Register Global Component

import { createApp } from 'vue';
import App from './App.vue'
import Tabs from 'vue3-tabs';

const app = createApp(App);
app.use(Tabs);
app.mount('#app')

Register Local Component

import { Tabs, Tab, TabPanels, TabPanel } from 'vue3-tabs';

export default {
  components: {
    Tabs,
    Tab,
    TabPanels,
    TabPanel
  },
};

Example

<template>
  <h3>Basic Example</h3>
  <tabs
    v-model="selectedTab"
  >
    <tab
      class="tab"
      v-for="(tab, i) in tabs"
      :key="`t${i}`"
      :val="tab"
      :label="tab"
      :indicator="true"
    />
  </tabs>
  <tab-panels
    v-model="selectedTab"
    :animate="true"
  >
    <tab-panel
      v-for="(tab, i) in tabs"
      :key="`tp${i}`"
      :val="tab"
    >
      {{ tab }}
    </tab-panel>
  </tab-panels>
</template>

<script lang="ts">
import { defineComponent, reactive, toRefs } from 'vue';

const tabs = ['A', 'B', 'C'];

export default defineComponent({
  name: 'Example',
  setup() {
    const state = reactive({
      selectedTab: tabs[1]
    });
    return {
      tabs,
      ...toRefs(state)
    };
  }
});
</script>

<style scoped>
.tab {
  padding: 10px 20px;
}
</style>

Components

Tabs

Props
Name Type Required Default Notes
:model-value | v-model string | number | null yes null value emit
Events
Name Description
@update:modelValue event emit when tab change
Slots
Name Tag Description
v-slot:default <tab /> <tab /> as children

Tab

Props
Name Type Required Default Notes
:val string | number yes null value to indicate active
:label string no null label
:indicator boolean no false show default active indicator

TabPanels

Props
Name Type Required Default Notes
:model-value | v-model string | number | null yes null value emit
:animate boolean no false smooth change effect
not working with ios
:swipeable boolean no false swipe to change tab
:threshold number no 50 minimum pixel to swipe to change tab
only work when swipeable = true
Events
Name Description
@update:modelValue event emit when tab change
@on-animation-end event emit switch animation end
Slots
Name Tag Description
v-slot:default <tab-panel /> <tab-panel /> as children

TabPanel

Props
Name Type Required Default Notes
:val string | number yes null value to indicate active

Project setup

yarn

Compiles and hot-reloads for development

yarn serve

Compiles and minifies for production

yarn build

Customize configuration

See Configuration Reference.

About

A touch swipe tabs for vue 3

Resources

Stars

Watchers

Forks

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy