Tab-Group
tab选项切换组,支持作为路由tab进行切换
基础展示
Preview
Code
我是文档
<script setup lang="ts">
// 初始化tab值
const tabValue = ref('/docs')
// tab组件
const items = [
{ label: '首页', value: '/', content: '我是首页' },
{ label: '文档', value: '/docs', content: '我是文档' },
{ label: '组件', value: '/docs/components', content: '我是组件' },
]
</script>
<template>
<div class="h-56 flex flex-center flex-col gap-5">
<ObTabGroup v-model="tabValue" :items />
</div>
</template>
组件变体
Preview
Code
<script setup lang="ts">
// 初始化tab值
const tabValue = ref('/docs')
// tab组件
const items = [
{ label: '首页', value: '/' },
{ label: '文档', value: '/docs' },
{ label: '组件', value: '/docs/components' },
]
</script>
<template>
<div class="h-auto flex flex-center flex-col gap-5 py-5">
<ObTabGroup v-model="tabValue" :items variant="primary" />
<ObTabGroup v-model="tabValue" :items variant="success" />
<ObTabGroup v-model="tabValue" :items variant="danger" />
<ObTabGroup v-model="tabValue" :items variant="warning" />
<ObTabGroup v-model="tabValue" :items variant="info" />
</div>
</template>
尺寸设置
Preview
Code
<script setup lang="ts">
// 初始化tab值
const tabValue = ref('/docs')
// tab组件
const items = [
{ label: '首页', value: '/' },
{ label: '文档', value: '/docs' },
{ label: '组件', value: '/docs/components' },
]
</script>
<template>
<div class="h-auto flex flex-center flex-col gap-5 py-5">
<ObTabGroup v-model="tabValue" :items size="large" />
<ObTabGroup v-model="tabValue" :items size="middle" />
<ObTabGroup v-model="tabValue" :items size="small" />
</div>
</template>
规范插槽
Preview
Code
MY IS DOCS
<script setup lang="ts">
// 初始化tab值
const tabValue = ref('docs')
// tab组件
const items = [
{ label: 'home', value: 'home', content: 'my is home' },
{ label: 'docs', value: 'docs', content: 'my is docs' },
{ label: 'cpns', value: 'cpns', content: 'my is cpns' },
]
</script>
<template>
<div class="h-56 flex flex-center flex-col gap-5">
<ObTabGroup v-model="tabValue" :items>
<!-- 规范label -->
<template #label="{ item }">
{{ item.label.toUpperCase() }}
</template>
<!-- 规范value -->
<template #value="{ item }">
<div class="bg-danger p-8 text-white">
{{ item.content.toUpperCase() }}
</div>
</template>
</ObTabGroup>
</div>
</template>
值插槽
Preview
Code
我是文档的 label
<script setup lang="ts">
// 初始化tab值
const tabValue = ref('docs')
// tab组件
const items = [
{ label: '首页', value: 'home', content: '我是首页' },
{ label: '我是文档的 label', value: 'docs', content: '我是文档的 value' },
{ label: '组件', value: 'components', content: '我是组件的 value' },
]
</script>
<template>
<div class="h-56 flex flex-center flex-col gap-5">
<ObTabGroup v-model="tabValue" :items>
<template #label-docs="{ item }">
{{ item.content }}
</template>
<template #label-components="{ item }">
{{ item.content }}
</template>
<template #value-docs="{ item }">
{{ item.label }}
</template>
</ObTabGroup>
</div>
</template>
Props
sizeenum
middle
small
, middle
, large
variantenum
primary
primary
, success
, info
, warning
, danger
disabledboolean
false
loadingboolean
false
classstring
defaultValuestring
items required ITabGroupLabelItem[]
boxClassstring
labelClassstring
routerboolean
false
ITabGroupLabelItem
label required any
value required string
contentany
样式
Code
/**
* ObTabGroup - 样式
*/
export default obCva<ITabGroupProps>('relative flex gap-2 rounded-large bg-lightGray p-1.5 font-bold before:absolute before:invisible before:left-0 before:rounded-xl before:content-empty before:transition-all', {
variants: {
size: {
small: 'text-xs',
middle: 'text-sm',
large: 'text-lg',
},
variant: {
primary: 'before:bg-primary',
success: 'before:bg-success',
info: 'bg-transparent before:bg-mediumGray',
warning: 'before:bg-warning',
danger: 'before:bg-danger',
},
},
})
/**
* ObTabGroup - Label 样式
*/
export const labelStyle = obCva<ITabGroupProps>('z-1 min-w-15 text-center rounded-normal bg-transparent p-x-5 py-2 c-black transition-all', {
variants: {
variant: {
primary: 'data-[active=true]:bg-primary data-[active=true]:c-white',
success: 'data-[active=true]:bg-success data-[active=true]:c-white',
info: 'data-[active=true]:bg-mediumGray data-[active=true]:c-black',
warning: 'data-[active=true]:bg-warning data-[active=true]:c-white',
danger: 'data-[active=true]:bg-danger data-[active=true]:c-white',
},
},
})