max-height should not work on submenu filter, close #4975, ref #4916

This commit is contained in:
afc163 2017-02-21 15:54:14 +08:00
parent 7f404f1e20
commit fbb6cb007f
3 changed files with 18 additions and 4 deletions

View File

@ -6,7 +6,7 @@ export interface ColumnProps<T> {
key?: string;
dataIndex?: string;
render?: (text: any, record: T, index: number) => React.ReactNode;
filters?: { text: string; value: string }[];
filters?: { text: string; value: string, children?: any[] }[];
onFilter?: (value: any, record: T) => boolean;
filterMultiple?: boolean;
filterDropdown?: React.ReactNode;

View File

@ -1,5 +1,6 @@
import React from 'react';
import Menu, { SubMenu, Item as MenuItem } from 'rc-menu';
import classNames from 'classnames';
import Dropdown from '../dropdown';
import Icon from '../icon';
import Checkbox from '../checkbox';
@ -12,7 +13,7 @@ export interface FilterMenuProps {
column: {
filterMultiple?: boolean,
filterDropdown?: React.ReactNode,
filters?: string[],
filters?: { text: string; value: string, children?: any[] }[],
filterDropdownVisible?: boolean,
onFilterDropdownVisibleChange?: (visible: boolean) => any,
};
@ -112,6 +113,11 @@ export default class FilterMenu extends React.Component<FilterMenuProps, any> {
);
}
hasSubMenu() {
const { column: { filters = [] } } = this.props;
return filters.some(item => !!(item.children && item.children.length > 0));
}
renderMenus(items) {
return items.map(item => {
if (item.children && item.children.length > 0) {
@ -149,6 +155,9 @@ export default class FilterMenu extends React.Component<FilterMenuProps, any> {
const { column, locale, prefixCls, dropdownPrefixCls } = this.props;
// default multiple selection in filter dropdown
const multiple = ('filterMultiple' in column) ? column.filterMultiple : true;
const dropdownMenuClass = classNames({
[`${dropdownPrefixCls}-menu-without-submenu`]: !this.hasSubMenu(),
});
const menus = column.filterDropdown ? (
<FilterDropdownMenuWrapper>
{column.filterDropdown}
@ -159,6 +168,7 @@ export default class FilterMenu extends React.Component<FilterMenuProps, any> {
multiple={multiple}
onClick={this.handleMenuItemClick}
prefixCls={`${dropdownPrefixCls}-menu`}
className={dropdownMenuClass}
onSelect={this.setSelectedKeys}
onDeselect={this.setSelectedKeys}
selectedKeys={this.state.selectedKeys}

View File

@ -373,8 +373,12 @@
border: 0;
box-shadow: none;
border-radius: @border-radius-base @border-radius-base 0 0;
max-height: 400px;
overflow-x: hidden;
// https://github.com/ant-design/ant-design/issues/4916
&-without-submenu {
max-height: 400px;
overflow-x: hidden;
}
&-item > label + span {
padding: 0;