对于语言方面组件是默认使用 英语 因为 element-plus 默认是使用英语,不引用中文包的主要原因是避免增大体积。
组件内部语言跟随 element-plus。 部分 提示文字 语言,组件内部也支持 中、英 文,如果你需要支持更多语言或者更改组件内部
的语言,可以在 use(PowerfulTable, { local: 您的语言变量 }) 替换。也可以参考我们提供的 demo 实现。
此插件已 el-plus-powerful-table 作为基础,进行重构。部分功能将领先 el-plus-powerful-table 基础版本。
el-plus-powerful-table 的 ts 版本
vue3.0 的 element-plus 二次开发表格组件
- 以下【内部组件】为该文件夹中
packages/components/src下的组件
- 3.0.0 版本
-
- 删除
component-event事件
- 删除
-
_TYPE类型的key改为枚举
- 修复部分已知bug
- 升级
element-plus依赖
- 调整
data支持function类型为({row: Row, index: number, props: [当前data的父级配置项]}) => _TYPE[type]。正常使用type = 'href'时data自主推断不受影响,type为函数时参照下面示例
{
prop: 'price',
type: (row: Lists) => (row.brand == 'Audi' ? 'input' : 'text'),
data: setData<'input', Lists>(({ row }) => {
return {
slot: 'append',
symbol: (row.price as number) > 150 ? '万' : '萬',
style: { width: '100%' },
property: {
placeholder: '售价',
},
}
}),
},- 修复
type = undefined | text时,仅传递line不传递develop时line失效 - 调整
type支持function类型为(row: Row, index: number) => keyof _TYPE | undefined。正常使用type = 'href'时data自主推断不受影响
// 1. 在实际应用中type为函数时无法准确推断data类型,此时可以使用 as unknown as 'href' 推断类型
{
type: ((row: Lists) =>
row.brand == 'Audi' ? 'href' : undefined) as unknown as 'href',
prop: 'href',
text: '型号:',
// data 推断除类型为 SetDataType<"href", Lists> | SetDataType<keyof _TYPE<any>, Lists> | undefined
data: {
}
}
// 2. 或者使用 setData 函数收窄类型
{
type: (row: Lists) => (row.brand == 'Audi' ? 'href' : undefined),
prop: 'href',
text: '型号:',
data: setData<'href', Lists>({
text: (row: any) => row.name,
}),
}- 调整即使
scope.row[prop.prop]没有值时,但是filters存在,不进行空渲染
- 修复
tag类型时,值不为string | array时解析出错
- 强制绑定内部自定义的
css - 修复更新依赖后导致的类型错误
- 需要支持
responseKey为空的情况 - 取消对
scss的强制依赖
- 修复
btn-plus组件中btn-left和btn-right样式问题
- 修复类型
- 更改类型,在声明
header时,props下属性data属性在不使用setData函数时同样可以获得智能提示。已使用setData不受影响
const header = [{
label: '性别',
props: {
type: 'text',
prop: 'gender',
data: { // 该类型会被推断为 (SetDataType<"input", Lists> & SetDataType<T, Lists>) | undefined
develop: true,
// 输入 l 时会提示 line 属性
},
}
}]- 修复类型错误
- 修复已知
bug - 修复类型错误
- 捆绑样式,全局引入情况下无需单独引入样式文件
- 修复已知
bug
- 修改暴露的
resetList、getListData函数支持传递参数 - 修复已知
bug
- 修复
header配置项中props下属性filters的情况下,当前的相应的数据存在值的情况则不会被filters过滤
示例说明
const list = [{status: 0},{status: 1}]
const header = [{
label: '性别',
props: {
prop:'status',
filters: [
{
text: '男',
value: 1
},
{
text: '女',
value: 0
}
],
}
}]
// [修复]:第二条数据的 status 将不会进行过滤的情况- 修复
type = text时0不会显示
- 类型补充提示
PowerfulTableHeaderProps下render函数类型支持返回JSX.Element
"image" | "text" | "switch" | "video" | "input" | "iconfont" | "tag" | "rate" | "textarea"类型中data属性下新增on可选属性
- 更改
PowerfulTableExpose类型为只读 -
PowerfulTableExpose类型下添加props、injectProps
-
- 修复
PowerfulTableExpose 类型下 headerLists 类型为ComputedRef<PowerfulTableHeader<Row>[]>但是实际类型为PowerfulTableHeader<Row>[]。更改后类型为PowerfulTableHeader<Row>[]
- 修复
- 更改
list-request.responseKey属性默认值'data.data.result'为'data.result' - 更改
list-request.listsKey属性默认值'lists'为'rows'
BtnList补充click属性- 组件销毁前清除监听事件
- 新增
type = 'btn'时,添加click属性,需要注意的事,存在click属性时将不会触发beforeClick属性 - 优化了内部组件
button文件中的class由原来的class={item.text ? '' : 'no-margin'}改成空。 - 新增全局组件注入
emptyElement - 新增全局组件注入
listRequest,以及在Props属性上添加。 - 组件添加暴露数据,类型为
PowerfulTableExpose
- 解决切换批量操作点击确定后选择的批量操作类型永远是第一个
bug component-event自定义事件参数返回更改, 由原来的{ componentName: string, eventType: string }改为{ componentName: string, eventType: string, index: number, prop: PowerfulTableHeaderProps<any>[] | PowerfulTableHeaderProps<any>, row: any }
- 解决没有类型提示
bug
- 取消将
@element-plus/icons添加到es和lib
- 删除
btnConfig.Config以及InjectProps中btnSlot参数 - 修复
btn-left以及btn-right插槽无效bug
- 修复鼠标悬浮组件没有类型提示
bug
- 修复
treeProps为undefined问题 - 修复类型为
tag时,数据为undefined报错 type = 'text'data中的customFilterFun属性值更改为formattingPowerfulTableHeaderProps类型上新增属性customFilter自定义过滤
- 修改自定义过滤头部渲染逻辑
- 修复未全局安装
element-plus时引发组件不能使用bug - 删除内部组件
input的onClick事件, 因为和onFocus重合 - 删除内部组件
rate的onClick事件,因为ElRate上不存在onClick
- 修复
lib | es文件夹内.d.ts文件中引入的typings文件路径找不到
- 更改打包配置
btn-plus文件重构(vue改成tsx)-
btnConfig新增属性btnRightList类型为BtnList[]
-
- 类型
BtnList新增属性tip beforeClick property
- 类型
-
删除
btn-plus组件中BtnConfig.BtnList的type icon showTip tipContent -
删除 内部组件
data部分属性(由于提供的属性不完整和element-plus存在差异,全部提供则感觉有点冗余,推荐使用property属性。内部组件只会保存部分默认值,但是可以通过property传参替换) -
image删除lazy zIndex style fit。保留部分默认值fit = 'cover',lazy, preview-teleported = true(el-image中lazy preview-teleported默认false)
-
input删除type placeholder disabled rows。保留部分默认值rows = 3
-
href删除type placeholder rows disabled。 保留部分默认值type = 'primary',underline = false
-
rate删除max colors iconClass allowHalf showText showScore texts property。 保留部分默认值disabled = false
-
switch删除activeColor inactiveColor inactiveText activeText activeValue inactiveValue disabled isConfirmTip confirmTip beforeFunction保留部分默认值inactiveValue = '0',activeValue = '1'
-
tag删除closable type effect hit保留部分默认值type = ''
-
video删除poster loop保留部分默认值controls = true,loop = false
-
button删除icon disabled type emit isTooltip isConfirmTip confirmTip保留部分默认值type = 'primary'。添加beforeClick tipProperty属性
-
内部组件
property支持函数类型 -
componentProps属性更改为property -
type类型为video新增property扩展属性 -
BtnConfig.BtnList新增property扩展属性 -
内部组件新增自定义事件,详情看
type == 'XX'(XX 为某个类型), 内部组件传递到powerful-table组件由component-event抛出 -
type = 'text'data中的customFilterFun属性值更改 -
修改 组件
InjectProps类型中local的类型。注入的local属性现在主要是用于 替换或者扩展组件内部提示文字 -
优化
button在表格中样式 -
修改
selectable默认不允许勾选问题 -
header表格头部数据属性中filters更改为defaultFilter.hidden更改为defaultShow -
props单元格数据filter更改为filters -
删除 组件
props中的local -
使用
vite进行构建 -
- 构建库模式优化,生成
es、cjs两种模式
- 构建库模式优化,生成
-
element-plus版本更新到2.0+ -
新增 props
property -
type为btn、image、input、rate、switch、tag的data中新增componentProp扩展参数 -
href类型更改为link -
link的data中新增属性icon
-
link的data中text没有值时将显示prop数据在页面上
-
input类型新增type同el-input type -
修复
rate类型中locale警告 -
优化
link的data中target属性类型固定 -
修复
Failed to resolve component: PTBtnPlus警告
- 新增支持内置组件导出
PT开头:例如:PTImage,PTButton -
- 主要用于
powerful-table-draggable组件的引用
- 主要用于
switch、btn类型新增属性-
isConfirmTip是否开启点击时确认框提示
-
isConfirmTip确认框提示文字
- 优化
el-pagination small属性随组件或全局size属性更改 - 解决鼠标悬浮在组件上没有类型
- 新增表格顶部按钮功能
-
- 新增配置项 传送门
-
- 新增插槽
btn-leftbtn-right
- 新增插槽
header新增属性-
isShowOrFilterColumn是否开启过滤或者显示隐藏列的开关
-
selectable行是否可以选中
prop新增属性-
filtersType过滤类型
-
filterItem指定过滤项
- 解决数据选中
bug - 优化部分样式问题
- 优化
props类型从数组 改为 数组或者对象均可 - 按钮配置优化
-
- 可配置二维数组
-
- 删除
emit
- 删除
-
- 新增
isTooltip是否显示提示
- 新增
-
- 新增
params,isMore属性。params自定义传入数据,将会在点击按钮时返回。例如:
- 新增
示例说明
{
{
;('update')
}
}
// index.vue
;<powerfulTable v-on:btnClick="handleOperate"></powerfulTable>
// row 当前行数据 params 自定义传入的数据 index 当前行的下标
const handleOperate = ({ row, params, index }) => ({})isMore 用来判断是否将当前对象数据 显示为 更多按钮
{
;[
{
type: 'btn',
prop: 'btn',
data: [
{
tip: '编辑',
type: 'info',
icon: markRaw(Edit),
text: '编辑',
// showBtn: false,
// isTooltip: true,
params: {
emit: 'update',
},
},
[
{
tip: '更多',
isMore: true,
type: 'success',
icon: markRaw(Edit),
},
{
tip: '编辑',
type: 'text',
icon: markRaw(Edit),
params: 'update',
},
{
tip: '更多a',
isMore: true, // 这个将不会被引用到
type: 'success',
icon: markRaw(Edit),
},
{
tip: '删除',
type: 'text',
icon: markRaw(Delete),
params: 'remove',
},
],
{
tip: '删除',
type: 'danger',
icon: markRaw(Delete),
showBtn: (e: any) => {
return true
},
params: {
emit: 'remove',
},
},
],
},
]
}- 删除
child字段 - 新增全局组件注入
locale和size