Ant Design Table filters children column
Ребят. Всех приветствую. Возникла проблема при фильтрации групповых колонок Ant Design Table.
При помощи рекурсии нашёл все дочерние колонки и у них работает сортировка, рендер, собирается список фильтрации (всё по фен Шую). Но на групповых колонках, при попытке отфильтровать, ничего не происходит. А на обычных (не групповых колонках) работает как и должно.
Пример кода поиска дочерних колонок:
const _adapter = (
column: TableElementResponse | TableGroupElementResponse
): ColumnType<DataType> | ColumnGroupType<DataType> | undefined => {
if ("children" in column) {
const group: ColumnGroupType<DataType> = {
title: column.title,
children: column.children?.reduce((prev, child) => {
if ("children" in child || keys.includes(child.key)) {
const childAdapt = _adapter(child)
if (childAdapt) return [...prev, childAdapt]
else return prev
}
return prev
}, [] as ColumnsType<DataType>),
}
if (group.children.length) return group
else return undefined
}
else {
const render = _render(column)
const sorter: CompareFn<DataType> = (a: any, b: any) => {
const sorter: string = column.key
return a[sorter] > b[sorter] ? 1 : -1
}
const onFiltersFunc = (key: string) => {
return (
value: string | number | boolean | any,
record: DataType
): boolean => {
console.log(value)
return value === record[key]
}
}
if (keys.includes(column.key))
return {
key: column.key,
dataIndex: column.key,
title: column.title,
render,
sorter,
filters: flar[column.key],
// onFilter: onFiltersFunc(column.key),
onFilter: (value: any, record) => {
console.log(value)
record[column.key].indexOf(value.toString()) === 0},
// ...getColumnSearchProps(column.key),
align: column.align as ("left" | "right" | "center"),
width: column.width,
}
}
Подскажите, пожалуйста, кто сталкивался с подобным?
Работает всё. Но при выборе из списка значений в фильтрации, у не групповых колонок всё работает, а у групповых колонок даже не показывает в консоли что был выбор значения фильтрации. Ошибок даже не выдаёт.
Сейчас увидел, что выводит ошибку при изменении параметров у дочерних колонок
Uncaught TypeError: record[column.key].indexOf is not a function
at onFilter (adapters.tsx:118:51)
at index.js:133:16
at Array.some (<anonymous>)
at index.js:129:56
at Array.filter (<anonymous>)
at index.js:129:26
at Array.reduce (<anonymous>)
at getFilterData (index.js:120:23)
at triggerOnChange (InternalTable.js:126:26)
at onFilterChange (InternalTable.js:156:5)