From 8ea4bb28aec27d3a96256b99bf868c8b56814f36 Mon Sep 17 00:00:00 2001
From: Tyh2001 <1469442737@qq.com>
Date: Wed, 20 Dec 2023 20:40:20 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20table=20=E6=96=B0=E5=A2=9E=20select=20?=
=?UTF-8?q?=E5=92=8C=20on-select=20=E9=85=8D=E7=BD=AE=E9=A1=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/components/table.md | 37 +++++----
.../fighting-design/table/src/interface.ts | 7 ++
packages/fighting-design/table/src/props.ts | 9 ++-
packages/fighting-design/table/src/table.vue | 81 +++++++++++++++++--
start/src/App.vue | 51 +++++++++++-
5 files changed, 159 insertions(+), 26 deletions(-)
diff --git a/docs/components/table.md b/docs/components/table.md
index de9476c406..68fca4e2f4 100644
--- a/docs/components/table.md
+++ b/docs/components/table.md
@@ -663,19 +663,21 @@
## Attributes
-| 参数 | 说明 | 类型 | 可选值 | 默认值 |
-| --------------- | ------------------ | ------------------------------------ | ----------------------- | ------ |
-| `data` | 数据列表 | array | —— | —— |
-| `columns` | 标题数据 | array | —— | —— |
-| `align` | 内容对齐方式 | TableAlign | `left` `center` `right` | left |
-| `border` | 是否显示边框 | boolean | —— | false |
-| `num` | 是否显示序号 | boolean | —— | false |
-| `zebra` | 是否显示斑马纹 | boolean | —— | false |
-| `zebra-color` | 自定义斑马纹颜色 | string | —— | —— |
-| `height` | 自定义表格内容高度 | string / number | —— | —— |
-| `bg-color` | 自定义背景颜色 | string | —— | —— |
-| `head-bg-color` | 自定义头部背景颜色 | string | —— | —— |
-| `show-head` | 是否展示头部 | boolean | —— | true |
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| --------------- | -------------------- | -------------------------------------- | ----------------------- | ------ |
+| `data` | 数据列表 | array | —— | —— |
+| `columns` | 标题数据 | array | —— | —— |
+| `align` | 内容对齐方式 | TableAlign | `left` `center` `right` | left |
+| `border` | 是否显示边框 | boolean | —— | false |
+| `num` | 是否显示序号 | boolean | —— | false |
+| `zebra` | 是否显示斑马纹 | boolean | —— | false |
+| `zebra-color` | 自定义斑马纹颜色 | string | —— | —— |
+| `height` | 自定义表格内容高度 | string / number | —— | —— |
+| `bg-color` | 自定义背景颜色 | string | —— | —— |
+| `head-bg-color` | 自定义头部背景颜色 | string | —— | —— |
+| `show-head` | 是否展示头部 | boolean | —— | true |
+| `select` | 是否可多选 | boolean | —— | false |
+| `on-select` | 选中值改变触发的回调 | TableSelect | —— | —— |
## Slots
@@ -696,7 +698,8 @@ import type {
TableAlign,
TableDate,
TableRenderReturn,
- TableColumns
+ TableColumns,
+ TableSelect
} from 'fighting-design'
```
@@ -762,6 +765,12 @@ type TableRenderData = (
) => TableRenderReturn
```
+### TableSelect
+
+```ts
+type TableSelect = (value: TableData) => void
+```
+
## Contributors
diff --git a/packages/fighting-design/table/src/interface.ts b/packages/fighting-design/table/src/interface.ts
index 5983cebca8..6ecf2cd4f8 100644
--- a/packages/fighting-design/table/src/interface.ts
+++ b/packages/fighting-design/table/src/interface.ts
@@ -75,3 +75,10 @@ export interface TableColumns {
width?: number | string | undefined
render?: TableRenderData
}
+
+/**
+ * 选择器改变触发的回调类型
+ *
+ * @param { Array } values 选中的数据集合
+ */
+export type TableSelect = (value: TableData) => void
diff --git a/packages/fighting-design/table/src/props.ts b/packages/fighting-design/table/src/props.ts
index 1cea0411ae..24f50e8302 100644
--- a/packages/fighting-design/table/src/props.ts
+++ b/packages/fighting-design/table/src/props.ts
@@ -2,7 +2,8 @@ import {
setBooleanProp,
setStringProp,
setStringNumberProp,
- setArrayProp
+ setArrayProp,
+ setFunctionProp
} from '../../_utils'
import type { ExtractPropTypes } from 'vue'
import type { TableAlign, TableData, TableColumns } from './interface'
@@ -23,6 +24,8 @@ export const Props = {
}),
/** 是否显示边框 */
border: setBooleanProp(),
+ /** 是否可选择 */
+ select: setBooleanProp(),
/** 是否显示序号 */
num: setBooleanProp(),
/** 是否显示斑马纹 */
@@ -38,7 +41,9 @@ export const Props = {
/** 自定义头部背景颜色 */
headBgColor: setStringProp(),
/** 是否展示头部 */
- showHead: setBooleanProp(true)
+ showHead: setBooleanProp(true),
+ /** 切换选项触发的回调 */
+ onSelect: setFunctionProp()
} as const
/** table 组件 props 类型 */
diff --git a/packages/fighting-design/table/src/table.vue b/packages/fighting-design/table/src/table.vue
index deebbbba40..d14b0f31f9 100644
--- a/packages/fighting-design/table/src/table.vue
+++ b/packages/fighting-design/table/src/table.vue
@@ -1,21 +1,24 @@
@@ -62,7 +118,7 @@
-
+