1.0.0 • Published 2 years ago

@alilc/pro-table v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

title

deep-table

intro component

API

参数名说明类型默认值
widthtable 宽度Number/String-
heighttable 高度Number/String-
loading表格是否在加载中Booleanfalse
device渲染视图 可选值 'desktop', 'tablet', 'desktop'String'desktop'
data表格展示的数据源Array[]
onFetchData动态加载数据Function-
columns列配置项Array
mobileMode移动端模式, 可选值'normal', 'card'String'normal'
actionBartable 顶部操作按钮组Array[]
isPagination是否显示分页Booleantrue
pagination翻页器配置项Object-
showMiniPager顶部是否显示迷你版翻页器 仅pc端支持Boolean-
actionColumntable 操作列Array[]
actionTitle操作列标题titleString-
actionType操作按钮的类型 可选值 'link' , 'button'String-
actionFixed操作列是否固定, 可选值 'none', 'right'String-
actionWidth操作列宽度Number/String-
showActionBar是否显示顶部操作按钮Boolean-
actionBar顶部操作按钮配置Array[]
showSearch是否显示搜索项Boolean-
searchBarPlaceholder搜索项 PlaceholderString-
showCustomColumn是否显示自定义列Boolean-
showLinkBar是否显示外链条Boolean-
linkBar外链条配置项Array[]
customBarItem自定义栏配置Function-
actionHidden隐藏操作动作Boolean-
rowOrder行排序配置Object-
mobileExpandViewMode手机端存在嵌套表格时的展示模式,可选值'normal'嵌套内容直接在行里面收缩展示,'detail'嵌套内容由点击单行进入详情展示String-
primaryKeydataSource当中数据的主键,如果给定的数据源中的属性不包含该主键,会造成选择状态全部选中String'id'
theme表格主题 表格是否具有边框: border, 表格是否是斑马线: zebra, 可选值: 'zebra', 'border', 'split',String'split'
hasHeader表格是否具有头部Booleantrue
fixedHeader表头是否固定,该属性配合maxBodyHeight使用,当内容区域的高度超过maxBodyHeight的时候,在内容区域会出现滚动条Boolean-
maxBodyHeight最大内容区域的高度,在fixedHeader为true的时候,超过这个高度会出现滚动条Number/String-
stickyHeader表头是否是stickyBoolean-
isTree开启Table的tree模式, 接收的数据格式中包含children则渲染成tree tableBoolean-
indent在tree模式下的缩进尺寸, 仅在isTree为true时候有效Number-
showRowSelector是否启用选择模式Boolean-
onSelectFunction(selected:Boolean, record:Object, records:Array) 用户手动选择/取消选择某行的回调Function-
onSelectAllFunction(selected:Boolean, records:Array) 用户手动选择/取消选择所有行的回调Function-
rowSelector选择selection的模式, 可选值 'checkboxSelector', 'radioSelector'String'checkboxSelector'
isRowSelectorDisabled选择行是否禁用Function-
onRowClick点击表格每一行触发的事件签名:Function(record: Object, index: Number, e: Event) => void参数:record: {Object} 该行所对应的数据index: {Number} 该行所对应的序列e: {Event} DOM事件对象Function() => {}
onRowMouseEnter悬浮在表格每一行的时候触发的事件签名:Function(record: Object, index: Number, e: Event) => void参数:record: {Object} 该行所对应的数据index: {Number} 该行所对应的序列e: {Event} DOM事件对象Function() => {}
onRowMouseLeave离开表格每一行的时候触发的事件签名:Function(record: Object, index: Number, e: Event) => void参数:record: {Object}该行所对应的数据index: {Number} 该行所对应的序 e: {Event} DOM事件对象Function() => {}
onResizeChange重设列尺寸的时候触发的事件签名:Function(dataIndex: String, value: Number) => void参数:dataIndex: {String} 指定重设的字段value: {Number} 列宽变动的数值Function() => {}
onColumnsChange自定义列变更时的回调Function(columns) => {}
loadingComponent自定义 Loading 组件请务必传递 props, 使用方式: loadingComponent={props => <Loading {...props}/>}签名:Functio(props: Object) => void参数:props: {Object} 当前点击行的keyFunction-
expandedRowIndent额外渲染行的缩进Array-
hasExpandedRowCtrl是否显示点击展开额外渲染行的+号按钮Boolean-
expandedRowRender额外渲染行的渲染函数签名:Function(record: Object, index: Number) => Element参数:record: {Object} 该行所对应的数据index: {Number} 该行所对应的序列返回值: {Element} 渲染内容Function-
onRowOpen在额外渲染行或者Tree展开或者收起的时候触发的事件签名:Function(openRowKeys: Array, currentRowKey: String, expanded: Boolean, currentRecord: Object) => void参数:openRowKeys: {Array} 展开的渲染行的keycurrentRowKey: {String} 当前点击的渲染行的keyexpanded: {Boolean} 当前点击是展开还是收起currentRecord: {Object} 当前点击额外渲染行的记录Function-
onShowSearch显示搜索框之后的回调,仅移动端生效。签名:Function(table) => voidFunction-
onHideSearch隐藏搜索框之后的回调,仅移动端生效。签名:Function(table) => voidFunction-

移动端卡片模式专用

参数名说明类型默认值
mobileDefaultCardColumns移动端卡片模式 最多显示内容条数Number
mobileActionsStyle移动端卡片模式 操作列是否使用button模式,为false的情况下,显示的是右上角...模式Booleanfalse

pagination 翻页器 API

参数名说明类型默认值
size分页组件大小 可选值: 'small', 'medium', 'large'Enum'medium'
type分页组件类型 可选值: 'normal', 'simple', 'mini'Enum'normal'
shape前进后退按钮样式 可选值: 'normal', 'arrow-only', 'arrow-prev-only', 'no-border'Enum'normal'
pageShowCount页码显示的数量,更多的使用...代替Number5
pageSize一页中的记录数Number10
pageSizeSelector每页显示选择器类型 可选值: false, 'filter', 'dropdown'Enumfalse
pageSizeList每页显示选择器可选值Array/Array5, 10, 20
pageNumberRender自定义页码渲染函数,函数作用于页码button以及当前页/总页数的数字渲染签名:Function(index: Number) => ReactNode参数:index: {Number} 分页的页码,从1开始返回值: {ReactNode} 返回渲染结果Functionindex => index
pageSizePosition每页显示选择器在组件中的位置 可选值: 'start', 'end'Enum'start'
useFloatLayout存在每页显示选择器时是否使用浮动布局Booleanfalse
hideOnlyOnePage当分页数为1时,是否隐藏分页器Booleanfalse
showJumptype 设置为 normal 时,在页码数超过5页后,会显示跳转输入框与按钮,当设置 showJump 为 false 时,不再显示该跳转区域Booleantrue
link设置页码按钮的跳转链接,它的值为一个包含 {page} 的模版字符串,如:http://www.taobao.com/{page}String-
popupProps弹层组件属性,透传给PopupObject-
paginationPosition翻页器显示位置 可选值: 'left', 'right'String'right'

数据源配置例子

{
    "data":[
        {
            "contractDate" : {
                "start" : 1534942658570,
                "end" : 1534944858570,
            },
            "entryDate" : 1534942658570,
            "name" : "王小",
            "id" : 1,
            "salary" : 35000,
            "email" : "xw_1@abc.com",
            "moneyRange" : {
                "lower" : 108,
                "upper" : 944,
            },
        }
        ...
    ],
    "currentPage":1,
    "totalCount":30,
}

columns 配置的例子

"columns" : [
                {
                  //分组
                  isGroup: true,
                  title: 'xxxx',
                  children: [
                    {/*{},*/}
                    {/*{}*/}
                  ]
                },
                {
                    "dataKey" : "name", //value的字段名
                    "editType" : "text",//编译状态下的编辑类型,目前支持select,text,radio,date,custom(自定义编辑)
                    "dataType" : "text",//渲染格式化的类型,目前支持text,timestamp,cascadeTimestamp,money,moneyRange
                    "width" : 150,
                    "title" : "姓名",//标题b
                    "align" : "right", //对齐
                    "sortable" : true, //可排序
                    "hidden" : false,//是否隐藏列
                    "highlight" : true,//是否着重突出显示,字体加粗,仅限手机端
                     "editProps" : {    //编辑状态下的配置
                        rules: [{  //校验规则,当saveRow的时候会调用
                            required: true,
                            message: 'can not be empty',
                            trigger: ['blur','onChange']
                        }]
                     },
                    "canEdit":(rowData)=>{//动态控制列是否可以编辑
                        return true;
                    },
                },
                {
                     "dataKey" : "sex",
                    "editType" : "radio",
                     "width" : 150,
                     "title" : "性别",
                     "editProps" : {
                         "dataSource" : [ //
                                {label:'男', value:'男'},
                                  {label:'女', value:'女'},
                    ]
                    },
                 },
                {
                     "dataKey" : "level",
                    "editType" : "select",
                     "width" : 150,
                     "title" : "级别",
                     "editProps" : {
                         "dataSource" : [
                                {label:'高级', value:'高级'},
                                  {label:'中级', value:'中级'},
                                {label:'初级', value:'初级'},
                    ]
                    },
                 },
                {
                    "dataKey" : "entryDate",
                    "editType" : "date",
                    "dataType" : "timestamp",
                    "width" : 180,
                    "title" : "入职日期",
                    "timeFormatter" : "YYYY-MM-DD",//
                },
                {
                    "dataKey" : "salary",
                    "dataType" : "money",
                    "width" : 150,
                    "title" : "月薪",
                    "editType" : "custom",
                    "editProps" : {
                        renderField:(props)=>{  //定义如何渲染自定义编辑组件
                            return <Input {...props}/>;
                        },
                        rules: [{  //
                            required: true,
                            message: 'can not be empty',
                            trigger: []
                        }]
                     },
                },
                {
                    "dataKey" : "test1",
                    "width" : 150,
                    "title" : "自定义列",
                    "render" : function (value, index, rowData) {  //自定义渲染
                        return "我是自定义列";
                    },
                },
                {
                    "dataKey" : "contractDate",
                    "dataType" : "cascadeTimestamp", //
                    "width" : 200,
                    "title" : "合同日期",
                    "timeFormatter" : "YYYY-MM-DD",
                },
            ],

actionBar 配置的例子

    "actionBar" : [
        {
            "title" : "操作1",
            "callback" : function () {
                console.log('操作1', arguments);
            },
        },
        {
            "title" : "操作2",
            "callback" : function () {
                console.log('操作2', arguments);
            },
        },
    ],

actionColumn 配置的例子

    "actionColumn" : [
         {
             "title" : "编辑",
             "callback" :  (rowData)=> {
                 return me.tableRef.current.getInstance().editRow(rowData);
             },
             "device":["desktop"]
         },
         {
             "title" : "保存",
             "callback" : (rowData)=> {
                 return me.tableRef.current.getInstance().saveRow(rowData); //必须return Promise,因为校验是异步过程
             },
             "mode":"EDIT"
         },
         {
             "title" : "重置",
             "callback" : (rowData)=> {
                 return me.tableRef.current.getInstance().resetRow(rowData);
             },
             "mode":"EDIT"
         },
         {
             "title" : "详情",
             "callback" : function () {
                 console.log('详情', arguments);
             },
         },
         {
             "title" : "删除",
             "callback" : function () {
                 console.log('删除', arguments);
             },
         },
         {
             "title" : "复制",
             "callback" : function () {
                 console.log('复制', arguments);
             },
         },
         {
             "title" : "下架",
             "callback" : function () {
                 console.log('下架', arguments);
             },
             "isDisabled" : function (item, index, actionRowData) {
                 console.log('isDisabled', arguments);
                 return true;
             },
              "mode":"EDIT"
         },
     ],

actionBar 配置的例子

    "linkBar" : [
        {
            "title" : "外链1",
            "callback" : function () {
                console.log("外链1", arguments);
            },
        },
        {
            "title" : "外链2",
            "callback" : function () {
                console.log("外链2", arguments);
            },
        },
    ],

行排序配置例子

    "rowOrder" : {
        "defaultValue" : {
            "text" : '排序方式一',
            "value" : '123',
        },
        "items" : [
            {
                "text" : '排序方式一',
                "value" : '123',
            },
            {
                "text" : '排序方式二',
                "value" : '456',
            },
        ],
        "onChange" : function (data) {
            console.log(data);
        },
    },

自定义栏配置例子

    "customBarItem" : {
        "render" : function () {
            return (
                <div style={{color : 'red'}} onClick={(e) => {
                    console.log(e);
                }}>自定义内容</div>
            );
        },
        "rightRender": () { },
        "bottomRender": () {}
    },

混合模式 配置的例子

    props:{
        "expandedRowRender" : (record, index) => {
            return (
                <div style={{lineHeight : '22px'}}>
                    我是展开的内容 <br/>
                    我是展开的内容 <br/>
                </div>
            );
        },
        "expandedRowIndent" : [2, 2],
        "onRowOpen" : (openRowKeys, currentRowKey, expanded, currentRecord) => {
            console.log(openRowKeys, currentRowKey, expanded, currentRecord)
        },
    }

pagination 配置的例子

 'pagination' : {
        'size' : "medium",
        'type' : "normal",
        'shape' : "arrow-only",
        'pageSize' : 10,
        'pageSizeSelector' : false,
        'pageSizeList' : "5,10,20",
        'pageSizePosition' : "end",
        "paginationPosition" : "right",
        'hideOnlyOnePage' : false,
        'showJump' : true,
    }