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
-
-
-
- {{text}}
-
-
-
- Action 一 {{record.name}}
-
- Delete
-
-
- More actions
-
-
-
-
-
-
-```
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
-
-
-
- {{text}}
-
-
-
- Action 一 {{record.name}}
-
- Delete
-
-
- More actions
-
-
-
-
-
-
-```
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
+
+
+
+
+
+
+
+ record.address.indexOf(value) === 0"
+ />
+
+
+
+
+
+```
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
+
+
+
Add
+
+
+
+
+
+ onDelete(record.key)">
+ Delete
+
+
+
+
+
+
+
+```
+
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 }
}