diff --git a/docs/table/index.en-us.md b/docs/table/index.en-us.md
index 4bc2fc4a8d..98e0ed6ace 100644
--- a/docs/table/index.en-us.md
+++ b/docs/table/index.en-us.md
@@ -135,6 +135,7 @@ ReactDOM.render(
| alignHeader | alignment of header cell, value of align by default
**options**:
'left', 'center', 'right' | Enum | - |
| filters | generates a title filter menu in the format `[{label:'xxx', value:'xxx'}]` | Array<Object> | - |
| filterMode | whether the filtering mode is single or multiple selection
**options**:
'single', 'multiple' | Enum | 'multiple' |
+| filterProps | the props passed to Menu in filter mode, extend `Menu`'s API
**options**:
_subMenuSelectable_: {Boolean} default `false` subMenu can be selected or not
_isSelectIconRight_: {Boolean} default `false` select icon in right or not. (icon on SubMenu always in left) | Object | { subMenuSelectable: false } |
| lock | whether the lock column is supported, the options are `left`, `right`, `true` | Boolean/String | - |
| resizable | whether to support column resizing, when this value is set to true, the layout of the table will be modified to fixed | Boolean | false |
diff --git a/docs/table/index.md b/docs/table/index.md
index 898e52f28d..729ec79d5c 100644
--- a/docs/table/index.md
+++ b/docs/table/index.md
@@ -136,19 +136,20 @@ ReactDOM.render(
### Table.Column
-| 参数 | 说明 | 类型 | 默认值 |
-| ----------- | --------------------------------------------------------------------------------------------------- | ------------------------------- | -------------- |
-| dataIndex | 指定列对应的字段,支持`a.b`形式的快速取值 | String | - |
-| cell | 行渲染的逻辑
value, rowIndex, record, context四个属性只可读不可被更改
Function(value, index, record) => Element | ReactElement/ReactNode/Function | value => value |
-| title | 表头显示的内容
value, rowIndex, record, context四个属性只可读不可被更改 | ReactElement/ReactNode/Function | - |
-| sortable | 是否支持排序 | Boolean | - |
-| width | 列宽,注意在锁列的情况下一定需要配置宽度 | Number/String | - |
-| align | 单元格的对齐方式
**可选值**:
'left', 'center', 'right' | Enum | - |
-| alignHeader | 单元格标题的对齐方式, 不配置默认读取align值
**可选值**:
'left', 'center', 'right' | Enum | - |
-| filters | 生成标题过滤的菜单, 格式为`[{label:'xxx', value:'xxx'}]` | Array<Object> | - |
-| filterMode | 过滤的模式是单选还是多选
**可选值**:
'single', 'multiple' | Enum | 'multiple' |
-| lock | 是否支持锁列,可选值为`left`,`right`, `true` | Boolean/String | - |
-| resizable | 是否支持列宽调整, 当该值设为true,table的布局方式会修改为fixed. | Boolean | false |
+| 参数 | 说明 | 类型 | 默认值 |
+| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | -------------------------------- |
+| dataIndex | 指定列对应的字段,支持`a.b`形式的快速取值 | String | - |
+| cell | 行渲染的逻辑
value, rowIndex, record, context四个属性只可读不可被更改
Function(value, index, record) => Element | ReactElement/ReactNode/Function | value => value |
+| title | 表头显示的内容
value, rowIndex, record, context四个属性只可读不可被更改 | ReactElement/ReactNode/Function | - |
+| sortable | 是否支持排序 | Boolean | - |
+| width | 列宽,注意在锁列的情况下一定需要配置宽度 | Number/String | - |
+| align | 单元格的对齐方式
**可选值**:
'left', 'center', 'right' | Enum | - |
+| alignHeader | 单元格标题的对齐方式, 不配置默认读取align值
**可选值**:
'left', 'center', 'right' | Enum | - |
+| filters | 生成标题过滤的菜单, 格式为`[{label:'xxx', value:'xxx'}]` | Array<Object> | - |
+| filterMode | 过滤的模式是单选还是多选
**可选值**:
'single', 'multiple' | Enum | 'multiple' |
+| filterProps | filter 模式下传递给 Menu 菜单的属性, 默认继承 `Menu` 组件的API
**属性**:
_subMenuSelectable_: {Boolean} 默认为`false` subMenu是否可选择
_isSelectIconRight_: {Boolean} 默认为`false` 是否将选中图标居右。注意:SubMenu 上的选中图标一直居左,不受此API控制 | Object | { subMenuSelectable: false } |
+| lock | 是否支持锁列,可选值为`left`,`right`, `true` | Boolean/String | - |
+| resizable | 是否支持列宽调整, 当该值设为true,table的布局方式会修改为fixed. | Boolean | false |
### Table.ColumnGroup
diff --git a/src/table/base/cell.jsx b/src/table/base/cell.jsx
index fb690b1b16..8db9af6ef9 100644
--- a/src/table/base/cell.jsx
+++ b/src/table/base/cell.jsx
@@ -27,6 +27,7 @@ export default class Cell extends React.Component {
style: PropTypes.object,
innerStyle: PropTypes.object,
filterMode: PropTypes.oneOf(['single', 'multiple']),
+ filterMenuProps: PropTypes.object,
filters: PropTypes.array,
sortable: PropTypes.bool,
lock: PropTypes.any,
@@ -72,6 +73,7 @@ export default class Cell extends React.Component {
primaryKey,
__normalized,
filterMode,
+ filterMenuProps,
filters,
sortable,
lock,
diff --git a/src/table/base/filter.jsx b/src/table/base/filter.jsx
index 173958e44d..28d76fe19b 100644
--- a/src/table/base/filter.jsx
+++ b/src/table/base/filter.jsx
@@ -13,6 +13,7 @@ export default class Filter extends React.Component {
filters: PropTypes.array,
filterMode: PropTypes.string,
filterParams: PropTypes.object,
+ filterMenuProps: PropTypes.object,
locale: PropTypes.object,
onFilter: PropTypes.func,
prefix: PropTypes.string,
@@ -117,8 +118,16 @@ export default class Filter extends React.Component {
};
render() {
- const { filters, prefix, locale, filterMode, rtl } = this.props;
+ const {
+ filters,
+ prefix,
+ locale,
+ filterMode,
+ filterMenuProps,
+ rtl,
+ } = this.props;
const { visible, selectedKeys } = this.state;
+ const { subMenuSelectable, ...others } = filterMenuProps;
function renderMenuItem(item) {
return