Skip to content

ui Slot 参考

VTableui prop 是实例级别的样式覆盖入口。每个 key 对应一个 theme slot,值为 Tailwind CSS class 字符串,会与预设默认 class 通过 cn() 智能合并。

vue
<VTable
  :columns="columns"
  :data-source="data"
  :ui="{
    th: 'bg-blue-50',
    td: 'align-top',
  }"
/>

TIP

安装并导入 @vtable-guild/vtable-guild 后,在 TypeScript 项目中 ui prop 的所有 slot key 都有自动补全。


这页不只给 ui

这页列出的 slot 和 variant,不只是 ui prop 的参考表,也对应全局 theme 的写法:

  • ui.th 对应 theme.table.slots.th
  • ui.td 对应 theme.table.slots.td
  • hoverable.true.td 对应 theme.table.variants.hoverable.true.td
  • size: 'small' 对应 theme.table.defaultVariants.size = 'small'

也就是说,这页可以当成“Table 主题系统可覆盖项总表”来看。

从 slot 表映射到全局 theme

ts
createVTableGuild({
  theme: {
    table: {
      slots: {
        th: 'bg-slate-50 text-slate-900',
        td: 'align-top',
      },
      variants: {
        hoverable: {
          true: {
            td: 'group-hover/row:bg-blue-50',
          },
        },
      },
      defaultVariants: {
        size: 'small',
      },
    },
  },
})

如果你要的是应用级统一规范,优先看 三层主题覆盖。如果你只是改单张表,再回到 ui

快速示例:修改行 hover 背景色

行 hover 效果由 hoverable variant 控制,hover 高亮通过 JS 状态驱动,能正确处理跨行合并单元格。自定义 hover 背景色推荐覆盖 CSS 变量:

方式一:覆盖 CSS 变量(推荐)

css
:root {
  --vtg-table-row-hover-bg: #e6f7ff;
}

方式二:通过 ui prop 覆盖 tdRowHover slot

vue
<VTable :columns="columns" :data-source="data" :ui="{ tdRowHover: 'bg-blue-50' }" />

方式三:通过全局 theme

ts
app.use(
  createVTableGuild({
    theme: {
      table: {
        slots: {
          tdRowHover: 'bg-blue-50',
        },
      },
    },
  }),
)

完整 Slot 列表

以下按功能分组列出所有可用的 theme slot key。它们既可用于 ui,也可用于全局 theme.table.slots

核心结构

Slot说明
root表格最外层容器。控制字体、字号、行高。
wrapper<table> 元素的滚动包裹层。
table<table> 元素。控制背景色、文字色、边框间距。
thead<thead> 元素。
tbody<tbody> 元素。
tr<tr> 元素。默认带 group/row,供子元素做 hover 匹配。
th表头单元格 <th>。控制背景、文字色、边框和分割线。
td数据单元格 <td>。控制背景、文字色、边框;hover、选中、斑马纹通过 variant 追加。

表头与单元格包装

Slot说明
headerCellInner表头单元格内部的 flex 包裹层。
bodyCellEllipsisellipsis 列内容的文本截断层。

分组表头

Slot说明
groupedHeaderTable多级表头中的内层 <table>
groupedHeaderTh分组表头 <th>
groupedHeaderTd分组表头 <td>

排序

Slot说明
thSortable可排序列的 <th> 附加样式。
sortButton排序图标容器。
sortIconDown降序图标的间距调整。
sortAreaOuter排序区最外层 flex 包裹。
sortAreaWrapper标题和排序图标之间的 flex 包裹。
sortAreaTitle排序标题文本容器。

筛选图标

Slot说明
filterIconWrapper筛选图标包裹容器。
filterIcon筛选触发图标本身。

筛选下拉面板

Slot说明
filterDropdown筛选面板根容器。
filterDropdownList筛选选项列表容器。
filterDropdownItem单个筛选项。
filterDropdownItemSelected选中项样式。
filterDropdownItemHoverhover 项样式。
filterDropdownContentWrapper选项内容包裹层。
filterDropdownActions底部操作栏。
filterDropdownSearch搜索区外层。
filterDropdownSearchField搜索输入框容器。
filterDropdownSearchIcon搜索图标。
filterDropdownSearchInput搜索输入框。
filterDropdownListEmpty空结果提示。

筛选树形结构

Slot说明
filterDropdownSwitcher树节点展开/折叠按钮。
filterDropdownSwitcherExpanded展开状态。
filterDropdownSwitcherCollapsed折叠状态。
filterDropdownSwitcherNoop不可切换节点占位。
filterDropdownTreeWrapper树列表包裹层。
filterDropdownTreeList树列表 <ul>
filterDropdownTreeItem单个树节点行。
filterDropdownTreeContentWrapper树节点内容包裹层。
filterDropdownTreeItemSelected选中节点样式。
filterDropdownTreeCheckAll“全选” 行。

空状态

Slot说明
empty空状态根容器。
emptyWrapper空状态内容包裹层。
emptyIcon空状态图标区域。
emptyText空状态文字。

加载态

Slot说明
loading覆盖整张表的 loading 遮罩层。
loadingSpinnerloading 图标。

行选中

Slot说明
tdSelected选中行的 <td> 背景。
tdRowHoverhover 时普通行的 <td> 背景。
tdRowSelectedHoverhover 时选中行的 <td> 背景叠加层。

行选择下拉

Slot说明
selectionDropdown行选择下拉面板。
selectionDropdownItem行选择下拉项。
selectionExtra行选择列头部的额外触发图标。

标题、页脚与摘要

Slot说明
title表格标题区域。
footer表格页脚区域。
summary摘要容器。
summaryRow摘要 <tr>
summaryCell摘要 <td>

固定列与固定表头

Slot说明
headerWrapper固定表头模式下的表头滚动包裹层。
bodyWrapper固定表头模式下的表体滚动包裹层。
fixedCell固定列单元格。
fixedDividerLeft左固定列分隔线。
fixedDividerRight右固定列分隔线。
fixedShadowLeft左固定列阴影层。
fixedShadowRight右固定列阴影层。
fixedShadowLeftHidden左侧阴影隐藏状态。
fixedShadowRightHidden右侧阴影隐藏状态。

展开行

Slot说明
expandIcon展开按钮基础样式。
expandIconExpanded展开状态。
expandIconCollapsed折叠状态。
expandIconSpaced不可展开行的占位符。
expandIconDisabled禁用状态。
expandIconSymbol展开图标的 symbol 容器。
expandIconSymbolExpanded展开 symbol 状态。
expandIconSymbolCollapsed折叠 symbol 状态。
expandedRow展开行 <tr>
expandedRowCell展开内容 <td>

树形展开

Slot说明
treeExpandIcon树形展开按钮基础样式。
treeExpandIconExpanded展开状态。
treeExpandIconCollapsed折叠状态。
treeExpandIconSpaced叶子节点占位。
treeExpandIconDisabled禁用状态。
treeExpandIconSymbol树形 symbol 容器。
treeExpandIconSymbolExpanded树形展开 symbol 状态。
treeExpandIconSymbolCollapsed树形折叠 symbol 状态。

列宽拖拽

Slot说明
resizeHandle列宽拖拽手柄。

Variant 列表

除了直接的 slot 覆盖,主题还通过 variant 控制条件样式。它们可以通过 props 控制,也可以通过全局 theme.table.variantstheme.table.defaultVariants 调整。

Variant默认值影响的 Slot
sizesmall / middle / largelargethtdtitlefootersummaryCell 的 padding
borderedtrue / falsefalserootthtdtbodytitlefootersummaryCell
stripedtrue / falsefalsetd,偶数行背景
hoverabletrue / falsetruetd,行 hover 背景
loadingtrue / falsetable,半透明和禁交互状态

进一步阅读