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 @@