From c74523aa6696b93ffae8cf566ba3e54b210e6194 Mon Sep 17 00:00:00 2001 From: tjz <415800467@qq.com> Date: Sun, 1 Apr 2018 22:33:01 +0800 Subject: [PATCH] add table demo --- components/table/createBodyRow.jsx | 5 +- components/table/demo/EditableCell.vue | 45 ++++++ components/table/demo/ajax.md | 16 +- components/table/demo/basic.4.md | 76 ---------- components/table/demo/basic.5.md | 76 ---------- components/table/demo/colspan-rowspan.md | 20 +-- components/table/demo/custom-filter-panel.md | 141 ++++++++++++++++++ components/table/demo/edit-cell.md | 145 +++++++++++++++++++ components/table/filterDropdown.jsx | 6 +- components/table/index.jsx | 6 +- components/table/interface.js | 2 +- components/vc-table/index.js | 2 +- components/vc-table/src/TableCell.jsx | 4 +- 13 files changed, 364 insertions(+), 180 deletions(-) create mode 100644 components/table/demo/EditableCell.vue delete mode 100644 components/table/demo/basic.4.md delete mode 100644 components/table/demo/basic.5.md create mode 100644 components/table/demo/custom-filter-panel.md create mode 100644 components/table/demo/edit-cell.md diff --git a/components/table/createBodyRow.jsx b/components/table/createBodyRow.jsx index daa106140..777bcae00 100644 --- a/components/table/createBodyRow.jsx +++ b/components/table/createBodyRow.jsx @@ -4,7 +4,10 @@ import { Store } from './createStore' const BodyRowProps = { store: Store, - rowKey: PropTypes.string, + rowKey: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + ]), prefixCls: PropTypes.string, } diff --git a/components/table/demo/EditableCell.vue b/components/table/demo/EditableCell.vue new file mode 100644 index 000000000..665811001 --- /dev/null +++ b/components/table/demo/EditableCell.vue @@ -0,0 +1,45 @@ + + \ No newline at end of file diff --git a/components/table/demo/ajax.md b/components/table/demo/ajax.md index a79a065a9..33b67468e 100644 --- a/components/table/demo/ajax.md +++ b/components/table/demo/ajax.md @@ -50,6 +50,14 @@ export default { mounted() { this.fetch(); }, + data() { + return { + data: [], + pagination: {}, + loading: false, + columns, + } + }, methods: { handleTableChange (pagination, filters, sorter) { console.log(pagination); @@ -86,14 +94,6 @@ export default { }); } }, - data() { - return { - data: [], - pagination: {}, - loading: false, - columns, - } - } } ``` diff --git a/components/table/demo/basic.4.md b/components/table/demo/basic.4.md deleted file mode 100644 index 332ec9843..000000000 --- a/components/table/demo/basic.4.md +++ /dev/null @@ -1,76 +0,0 @@ - -#### 基本用法 -简单的表格,最后一列是各种操作。 - - - -#### basic Usage -Simple table with actions. - - -```html - - -``` diff --git a/components/table/demo/basic.5.md b/components/table/demo/basic.5.md deleted file mode 100644 index 332ec9843..000000000 --- a/components/table/demo/basic.5.md +++ /dev/null @@ -1,76 +0,0 @@ - -#### 基本用法 -简单的表格,最后一列是各种操作。 - - - -#### basic Usage -Simple table with actions. - - -```html - - -``` diff --git a/components/table/demo/colspan-rowspan.md b/components/table/demo/colspan-rowspan.md index 46289664e..a5f3e45c7 100644 --- a/components/table/demo/colspan-rowspan.md +++ b/components/table/demo/colspan-rowspan.md @@ -35,10 +35,10 @@ Table cell supports `colSpan` and `rowSpan` that set in render return object. Wh const renderContent = (value, row, index) => { const obj = { children: value, - props: {}, + attrs: {}, }; if (index === 4) { - obj.props.colSpan = 0; + obj.attrs.colSpan = 0; } return obj; }; @@ -93,7 +93,7 @@ export default { } return { children: {text}, - props: { + attrs: { colSpan: 5, }, }; @@ -101,7 +101,7 @@ export default { }, { title: 'Age', dataIndex: 'age', - render: renderContent, + customRender: renderContent, }, { title: 'Home phone', colSpan: 2, @@ -109,17 +109,17 @@ export default { customRender: (value, row, index) => { const obj = { children: value, - props: {}, + attrs: {}, }; if (index === 2) { - obj.props.rowSpan = 2; + obj.attrs.rowSpan = 2; } // These two are merged into above cell if (index === 3) { - obj.props.rowSpan = 0; + obj.attrs.rowSpan = 0; } if (index === 4) { - obj.props.colSpan = 0; + obj.attrs.colSpan = 0; } return obj; }, @@ -127,11 +127,11 @@ export default { title: 'Phone', colSpan: 0, dataIndex: 'phone', - render: renderContent, + customRender: renderContent, }, { title: 'Address', dataIndex: 'address', - render: renderContent, + customRender: renderContent, }]; return { data, diff --git a/components/table/demo/custom-filter-panel.md b/components/table/demo/custom-filter-panel.md new file mode 100644 index 000000000..e9fced43e --- /dev/null +++ b/components/table/demo/custom-filter-panel.md @@ -0,0 +1,141 @@ + +#### 自定义筛选菜单 +通过 `filterDropdown`、`filterDropdownVisible` 和 `filterDropdownVisibleChange` 定义自定义的列筛选功能,并实现一个搜索列的示例。 + + + +#### Customized filter panel +Implement a customized column search example via `filterDropdown`, `filterDropdownVisible` and `filterDropdownVisibleChange`. + + +```html + + + + +``` diff --git a/components/table/demo/edit-cell.md b/components/table/demo/edit-cell.md new file mode 100644 index 000000000..56e2e2751 --- /dev/null +++ b/components/table/demo/edit-cell.md @@ -0,0 +1,145 @@ + +#### 可编辑单元格 +带单元格编辑功能的表格。 + + + +#### Editable Cells +Table with editable cells. + + +```html + + + +``` + diff --git a/components/table/filterDropdown.jsx b/components/table/filterDropdown.jsx index 203ea0515..539e365ab 100755 --- a/components/table/filterDropdown.jsx +++ b/components/table/filterDropdown.jsx @@ -162,8 +162,10 @@ export default { const dropdownSelectedClass = this.selectedKeys.length > 0 ? `${prefixCls}-selected` : '' return filterIcon ? cloneElement(filterIcon, { - title: locale.filterTitle, - className: classNames(filterIcon.className, { + attrs: { + title: locale.filterTitle, + }, + class: classNames(filterIcon.className, { [`${prefixCls}-icon`]: true, }), }) : diff --git a/components/table/index.jsx b/components/table/index.jsx index 0a5bbd559..ba0994ada 100644 --- a/components/table/index.jsx +++ b/components/table/index.jsx @@ -23,11 +23,11 @@ const Table = { const events = getEvents(element) const listeners = {} Object.keys(events).forEach(e => { - const k = `on_${e}` + const k = `on-${e}` listeners[camelize(k)] = events[e] }) - const { default: children, title } = getSlots(element) - const column = { title, ...props, style, class: cls, ...listeners } + const { default: children, ...restSlots } = getSlots(element) + const column = { ...restSlots, ...props, style, class: cls, ...listeners } if (key) { column.key = key } diff --git a/components/table/interface.js b/components/table/interface.js index e46a7a772..57e7fb151 100644 --- a/components/table/interface.js +++ b/components/table/interface.js @@ -173,7 +173,7 @@ export const SelectionBoxProps = { export const FilterMenuProps = { locale: TableLocale, selectedKeys: PropTypes.arrayOf(PropTypes.string), - column: PropTypes.shape(ColumnProps), + column: PropTypes.object, confirmFilter: PropTypes.func, prefixCls: PropTypes.string, dropdownPrefixCls: PropTypes.string, diff --git a/components/vc-table/index.js b/components/vc-table/index.js index 356b5a1fa..09e6c095c 100644 --- a/components/vc-table/index.js +++ b/components/vc-table/index.js @@ -23,7 +23,7 @@ const Table = { const events = getEvents(element) const listeners = {} Object.keys(events).forEach(e => { - const k = `on_${e}` + const k = `on-${e}` listeners[camelize(k)] = events[e] }) const { default: children, title } = getSlots(element) diff --git a/components/vc-table/src/TableCell.jsx b/components/vc-table/src/TableCell.jsx index 70d07a1ba..6f95a0a8a 100644 --- a/components/vc-table/src/TableCell.jsx +++ b/components/vc-table/src/TableCell.jsx @@ -66,7 +66,8 @@ export default { if (customRender) { text = customRender(text, record, index) if (this.isInvalidRenderCellText(text)) { - tdProps.attrs = text.attrs || text.props || {} + tdProps.attrs = text.attrs || {} + tdProps.props = text.props || {} colSpan = tdProps.attrs.colSpan rowSpan = tdProps.attrs.rowSpan text = text.children @@ -93,7 +94,6 @@ export default { if (rowSpan === 0 || colSpan === 0) { return null } - if (column.align) { tdProps.style = { textAlign: column.align } }