mirror of
https://github.com/ant-design/ant-design.git
synced 2025-08-05 15:39:45 +08:00
chore: fix Table filter behavior when filterDropdown is undefined (#53421)
This commit is contained in:
parent
529f539a0f
commit
7688c20bdc
@ -193,6 +193,30 @@ describe('Table.filter', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// https://github.com/ant-design/ant-design/issues/49025
|
||||||
|
it('should handle filterDropdown undefined correctly', () => {
|
||||||
|
const { container } = render(
|
||||||
|
createTable({
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
...column,
|
||||||
|
filters: [
|
||||||
|
{ text: 'Boy', value: true },
|
||||||
|
{ text: 'Girl', value: false },
|
||||||
|
],
|
||||||
|
filteredValue: [true],
|
||||||
|
filterDropdown: undefined,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
// 首先点击打开筛选菜单
|
||||||
|
fireEvent.click(container.querySelector('.ant-table-filter-trigger')!);
|
||||||
|
// 检查是否正确选中了Boy选项
|
||||||
|
const boyMenuItem = container.querySelectorAll('.ant-dropdown-menu-item-selected')[0];
|
||||||
|
expect(boyMenuItem.textContent).toBe('Boy');
|
||||||
|
});
|
||||||
|
|
||||||
it('override custom filter correctly', () => {
|
it('override custom filter correctly', () => {
|
||||||
let renderSelectedKeys: React.Key[] | null = null;
|
let renderSelectedKeys: React.Key[] | null = null;
|
||||||
const filter = ({
|
const filter = ({
|
||||||
|
@ -33,12 +33,13 @@ const collectFilterStates = <RecordType extends AnyObject = AnyObject>(
|
|||||||
|
|
||||||
(columns || []).forEach((column, index) => {
|
(columns || []).forEach((column, index) => {
|
||||||
const columnPos = getColumnPos(index, pos);
|
const columnPos = getColumnPos(index, pos);
|
||||||
|
const filterDropdownIsDefined = column.filterDropdown !== undefined;
|
||||||
|
|
||||||
if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {
|
if (column.filters || filterDropdownIsDefined || 'onFilter' in column) {
|
||||||
if ('filteredValue' in column) {
|
if ('filteredValue' in column) {
|
||||||
// Controlled
|
// Controlled
|
||||||
let filteredValues = column.filteredValue;
|
let filteredValues = column.filteredValue;
|
||||||
if (!('filterDropdown' in column)) {
|
if (!filterDropdownIsDefined) {
|
||||||
filteredValues = filteredValues?.map(String) ?? filteredValues;
|
filteredValues = filteredValues?.map(String) ?? filteredValues;
|
||||||
}
|
}
|
||||||
filterStates.push({
|
filterStates.push({
|
||||||
|
Loading…
Reference in New Issue
Block a user