@bhplugin/vue3-数据表
零依赖 Vue 3 数据表组件,包含客户端/服务器侧页,排序,过滤,行选择,以及自定义单元格渲染等功能.
示例
文档演示文稿( D)
安装
国家预防机制
npm install @bhplugin/vue3-datatable --save
雅伦
yarn add @bhplugin/vue3-datatable
使用量
<template>
<vue3-datatable :rows="rows" :columns="cols" :sortable="true" :columnFilter="true"> </vue3-datatable>
</template>
<script setup lang="ts">
import { ref } from "vue";
import Vue3Datatable from "@bhplugin/vue3-datatable";
import type { IColumnDefinition } from "@bhplugin/vue3-datatable";
import "@bhplugin/vue3-datatable/dist/style.css";
const cols = ref<IColumnDefinition[]>([
{ field: "id", title: "ID", isUnique: true, type: "number", filter: false },
{ field: "name", title: "Name" },
{ field: "email", title: "Email" },
{ field: "age", title: "Age", type: "number" },
{ field: "dob", title: "Date of Birth", type: "date" },
{ field: "isActive", title: "Active", type: "bool" },
{ field: "address.city", title: "City" },
]);
const rows = ref<Array<Record<string, unknown>>>([
{ id: 1, name: "John Doe", email: "[email protected]", age: 28, dob: "1997-05-15", isActive: true, address: { city: "New York" } },
{ id: 2, name: "Jane Smith", email: "[email protected]", age: 34, dob: "1991-11-22", isActive: false, address: { city: "London" } },
// ...
]);
</script>
道具
| Prop | 类型 | 默认 | 说明 |
| 栏 (必须) | IColumnDefinition[] | [] | 表格栏定义 |
| 行数 (必须) | Record[] | [] | 表格行数据 |
| 是服务器模式 | boolean | false | 启用服务器侧模式( 残疾客户端排序/ filter/ pgination) |
| 共计 | number | 0 | 总行数( 在服务器模式下需要) |
| 皮肤 | string | "bh-table-striped bh-table-hover" | 表皮类 : bh-table-striped, (中文(简体) ), bh-table-hover, (中文(简体) ), bh-table-bordered, (中文(简体) ), bh-table-compact |
| 装入 | boolean | false | 显示加载覆盖/ skeleton |
| 有检查框 | boolean | false | 显示行选择的复选框列 |
| 搜索 | string | "" | 全局搜索字符串 |
| 页 次 | number | 1 | 当前页面( 基于 1 个) |
| 页面大小 | number | 10 | 每页行数 |
| 页面大小选项 | number[] | [10, 20, 30, 50, 100] | 页面大小下拉选项 |
| 显示页码 | boolean | true | 显示页面大小 |
| 行分类 | string | Function | "" | 自定义行类(字符串或 (row) => string(中文(简体) ) |
| 单元格分类 | string | Function | "" | 自定义单元格类(字符串或 (row) => string(中文(简体) ) |
| 可排序 | boolean | false | 启用列排序 |
| 排序颜色 | string | "" | 初始排序列字段 |
| 排序方向 | 'asc' | 'desc' | "asc" | 初始排序方向 |
| 分栏 | boolean | false | 启用每栏过滤输入 |
| 列数 | Record<string, string> | null | 过滤条件的i18n标签(见下文) |
| 标记 | boolean | true | 显示页形 |
| 显示数字 | boolean | true | 显示页码按钮 |
| 显示数字 | number | 5 | 最大可见页码按钮 |
| 显示第一页 | boolean | true | 显示第一页按钮 |
| 显示最后页 | boolean | true | 显示最后一页按钮 |
| 页形信息 | string | "Showing {0} to {1} of {2} entries" | 插件信息模板( E){0} =开始, {1} =结束, {2} =共计) |
| 无数据关联 | string | "No data available" | 空状态文本 |
| 骨架 | number | 10 | 装入时的骨架行数 |
| 粘结页眉 | boolean | false | 粘贴表头 |
| 高度 | string | "500px" | 可滚动高度( 仅限 stickyHeader(中文(简体) ) |
| 粘接第一相册 | boolean | false | 粘贴第一列 |
| 克隆页眉InFooter | boolean | false | 克隆头为页脚行 |
| 选择RowOnClick | boolean | false | 点击切换行选择 |
列缩放键
{
no_filter: 'No filter',
contain: 'Contain', not_contain: 'Not contain',
equal: 'Equal', not_equal: 'Not equal',
start_with: 'Starts with', end_with: 'Ends with',
greater_than: 'Greater than', greater_than_equal: 'Greater than or equal',
less_than: 'Less than', less_than_equal: 'Less than or equal',
is_null: 'Is null', is_not_null: 'Not null',
all: 'All', true: 'True', false: 'False' // boolean column filter labels
}
栏定义
| Prop | 类型 | 默认 | 说明 |
| 是独一无二的 | boolean | false | 标记为唯一行标识符( 用于选择密钥) |
| 字段 | string | "" | 数据字段路径( 支持点标记 : address.city(中文(简体) ) |
| 标题 | string | "" | 列头文字 |
| 价值 | string | "" | 初始过滤值 |
| 条件 | IFilterCondition | "" | 默认过滤条件( E)contain 用于字符串, equal 数字/ 日期, 布尔为空) |
| 类型 | string | "string" | 列类型 : string, (中文(简体) ), number, (中文(简体) ), date, (中文(简体) ), bool |
| 宽度 | string | "" | 列宽( 例如 ), "200px"(中文(简体) ) |
| 微风 | string | "" | 最小列宽 |
| 最大宽度 | string | "" | 最大列宽 |
| 隐藏 | boolean | false | 从渲染中隐藏列 |
| 过滤器 | boolean | true | 启用列过滤器 |
| 搜索 | boolean | true | 全局搜索中包含 |
| 排序 | boolean | true | 启用排序 |
| (简体中文) | boolean | false | 列包含原始 HTML |
| 单元格渲染器 | Function | - 说吧 | 自定义单元格渲染器 : (row) => '<strong>html</strong>' (自动化) |
| 页眉分类 | string | "" | 自定义信头单元格类 |
| 单元格分类 | string | "" | 自定义细胞类 |
活动
| 活动 | 有效载荷 | 说明 |
| 更改服务器 | IServerChangeResponse | 仅服务器模式——具有完整状态的聚合事件(页面、排序、搜索、过滤器、更改 类型) |
| 页面变化 | number | 用户点击了 pagination 按钮( 静默于程序重排) |
| 页面变更 | number | 页面大小下降已更改 |
| 排序变化 | ISortChangeResponse | 应用的列排序( 不重设页面) |
| 过滤变化 | IColumnDefinition[] | 列过滤值或条件已更改 |
| 搜索变化 | string | 全局搜索文件已更改 |
| 选择行 | Record[] | 行选择已更改( 只有用户交互) |
| 划线 | Record | 单行点击 |
| 线条 DBClick | Record | 双击行 |
| 重设 | - 说吧 | reset() 被调用——仅在重置时发生,所有其他被压制 |
活动规则
- 排序对 没有 重置页面
- 过滤/ 搜索/ 页面大小重排到第 1 页, 但只发布特定事件( 不)
pageChange(中文(简体) )
pageChange 仅来自明确用户 pagination 点击的点火
- 重置期间,仅限
reset (+ 数) changeServer (在服务器模式中) 发出——所有其他事件被压制
方法
| 方法 | 说明 |
| 重设( c) | 重置所有状态( 选择、 过滤、 搜索、 排序、 页面) |
| 获得FilteredRows () | 返回所有已过滤行 |
| 获取可视Rows () | 返回当前页面可见行 |
| 获取 ColumnFilters () | 以当前过滤状态返回列定义 |
| 获取选中的Rows () | 返回所有所选行 |
| 清除选中的Rows () | 取消所有行的选择 |
| 选择Row( 索引) | 按索引选择行 |
| 未选择Row( 索引) | 按索引删除行 |
| 是 RowSecret( 索引) | 检查是否选中行 |
槽数
自定义单元格渲染( 按列字段命名)
<vue3-datatable :rows="rows" :columns="cols">
<template #name="{ value }">
<strong>{{ value.name }}</strong>
</template>
</vue3-datatable>
<template #firstArrow> « </template>
<template #previousArrow> ‹ </template>
<template #nextArrow> › </template>
<template #lastArrow> » </template>
状态空位
<template #noData>
<div>No records found.</div>
</template>
服务器模式示例
<vue3-datatable
:rows="rows"
:columns="cols"
:loading="loading"
:totalRows="totalRows"
:isServerMode="true"
:pageSize="10"
:sortable="true"
:columnFilter="true"
@page-change="onPageChange"
@page-size-change="onPageSizeChange"
@sort-change="onSortChange"
@filter-change="onFilterChange"
@search-change="onSearchChange"
/>
更改日志
更改日志
许可证
@bhplugin/vue3-数据表 是一个开源软件,根据该软件许可 麻省理工学院许可证。 。 。 .
我们的其他插件
支助