Skip to content

AbpTabList ​

AbpTabList 显示页签导航,页面持有选中名称和面板内容。

切换面板 ​

vue
<template>
  <AbpTabList v-model="selected" :items="tabs" orientation="horizontal" aria-label="Book details" />
  <section
    role="tabpanel"
    :aria-label="selected === 'details' ? 'Details' : 'History'"
    class="py-3"
  >
    <p v-if="selected === 'details'">Title: 1984</p>
    <p v-else>No changes recorded.</p>
  </section>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { AbpTabList, type AbpTabItem } from '@lsw-abpvue/components';
const selected = ref('details');
const tabs: AbpTabItem[] = [
  { name: 'details', text: { key: 'Demo::Details', defaultValue: 'Details' } },
  { name: 'history', text: { key: 'Demo::History', defaultValue: 'History' } },
];
</script>

每个页签有稳定 name,text 是本地化 key 或带后备文字的 key。模型保存名称,不保存数组下标。

方向与键盘 ​

默认纵向适合设置导航与内容并排,横向适合内容上方的紧凑导航。纵向使用上下键,横向使用左右键并考虑文字方向,Home 和 End 选择首尾。

初始值必须对应可见名称。如果权限变化移除了已选页签,页面应选择另一个可见名称。没有选中项时,所有页签可能都不在正常 Tab 焦点顺序内。

渲染内容 ​

组件不自动挂载面板,页面应像示例一样显示有可访问名称的内容区域。自定义 label 插槽提供 item,增加徽标、图标时仍需保留有意义的文字。

希望每次访问都重新加载时,可以通过 v-if 只挂载当前面板。需要切换后保留未保存编辑时,应自行设计状态或缓存策略。个人资料与设置贡献组件参见资料与设置页签。

属性、事件与插槽 ​

源码

类型来自公开契约,默认表达式来自当前实现。短横线表示没有显式默认值;省略的可选布尔属性通常为 false。

Props ​

名称类型必填默认值
itemsreadonly T[]是—
orientation'vertical' | 'horizontal' | undefined否'vertical'
ariaLabelstring | undefined否undefined
modelValuestring否''

Events ​

名称参数
update:modelValue[value: string]

Slots ​

名称上下文
label(context: { item: T }) => unknown

非官方社区项目,采用 MIT 许可证,与 Volosoft 无关。