Skip to content

ui Slot 参考 ​

VTable 的 ui 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> 元素的滚动包裹层。
rootAutoHeightscroll.y: 'auto' 时叠加在 root 上的自动高度布局(填满父容器)。
wrapperAutoHeightscroll.y: 'auto' 时叠加在 wrapper 上的自动高度布局(吃剩余高度)。
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> 附加样式。
thSorted已激活排序的列 <th> 背景。
tdSorted已激活排序的列 <td> 背景。
sortButton排序图标容器。
sortIconDown降序图标的间距调整。
sortAreaOuter排序区最外层 flex 包裹。
sortAreaWrapper标题和排序图标之间的 flex 包裹。
sortAreaTitle排序标题文本容器。

筛选图标 ​

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

筛选下拉面板 ​

Slot说明
filterDropdown筛选面板根容器。
filterDropdownList筛选选项列表容器。
filterDropdownItem单个筛选项。
filterDropdownItemSelected选中项样式。
filterDropdownItemSelectedSingle单选(filterMultiple: false)下的选中项附加样式。
filterDropdownItemHoverhover 项样式。
filterDropdownContentWrapper选项内容包裹层。
filterDropdownActions底部操作栏。
filterDropdownResetButton底部「重置」按钮的附加样式。
filterDropdownConfirmButton底部「确定」按钮的附加样式。
filterDropdownSearch搜索区外层。
filterDropdownSearchField搜索输入框容器。
filterDropdownSearchIcon搜索图标。
filterDropdownSearchInput搜索输入框。
filterDropdownListEmpty空结果提示。

筛选树形结构 ​

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

空状态 ​

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

加载态 ​

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

行选中 ​

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

行拖拽排序 ​

Slot说明
trDragging拖拽中的行 <tr>。
trDropAbove放置目标行(插入到其上方)的 <tr> 指示线。
trDropBelow放置目标行(插入到其下方)的 <tr> 指示线。

行选择下拉 ​

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.variants 和 theme.table.defaultVariants 调整。

Variant值默认值影响的 Slot
sizesmall / middle / largelargeth、td、title、footer、summaryCell 的 padding
borderedtrue / falsefalseroot、th、td、tbody、title、footer、summaryCell
stripedtrue / falsefalsetd,偶数行背景
hoverabletrue / falsetruetd,行 hover 背景
loadingtrue / false无table,半透明和禁交互状态

进一步阅读 ​